Merge
authorduke
Wed, 05 Jul 2017 17:35:13 +0200
changeset 8249 c3d31a2ce7c6
parent 8248 09e47b898040 (current diff)
parent 8219 4a1c655bfb69 (diff)
child 8250 a36beda9b9de
Merge
hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/LowMemoryDetectorThread.java
jdk/make/sun/jkernel/FILES_c_windows.gmk
jdk/make/sun/jkernel/FILES_java.gmk
jdk/make/sun/jkernel/Makefile
jdk/src/share/classes/java/io/TempFileHelper.java
jdk/src/share/classes/java/nio/file/FileRef.java
jdk/src/share/classes/java/nio/file/attribute/Attributes.java
jdk/src/share/classes/java/nio/file/attribute/FileStoreSpaceAttributeView.java
jdk/src/share/classes/java/nio/file/attribute/FileStoreSpaceAttributes.java
jdk/src/share/classes/sun/jkernel/BackgroundDownloader.java
jdk/src/share/classes/sun/jkernel/Bundle.java
jdk/src/share/classes/sun/jkernel/BundleCheck.java
jdk/src/share/classes/sun/jkernel/ByteArrayToFromHexDigits.java
jdk/src/share/classes/sun/jkernel/DigestOutputStream.java
jdk/src/share/classes/sun/jkernel/DownloadManager.java
jdk/src/share/classes/sun/jkernel/KernelError.java
jdk/src/share/classes/sun/jkernel/Mutex.java
jdk/src/share/classes/sun/jkernel/StandaloneByteArrayAccess.java
jdk/src/share/classes/sun/jkernel/StandaloneMessageDigest.java
jdk/src/share/classes/sun/jkernel/StandaloneSHA.java
jdk/src/share/demo/zipfs
jdk/src/windows/native/sun/jkernel/DownloadDialog.cpp
jdk/src/windows/native/sun/jkernel/DownloadDialog.h
jdk/src/windows/native/sun/jkernel/DownloadHelper.cpp
jdk/src/windows/native/sun/jkernel/DownloadHelper.h
jdk/src/windows/native/sun/jkernel/graphics/bullet.bmp
jdk/src/windows/native/sun/jkernel/graphics/cautionshield32.bmp
jdk/src/windows/native/sun/jkernel/graphics/java-icon.ico
jdk/src/windows/native/sun/jkernel/graphics/masthead.bmp
jdk/src/windows/native/sun/jkernel/graphics/warningmasthead.bmp
jdk/src/windows/native/sun/jkernel/kernel.cpp
jdk/src/windows/native/sun/jkernel/kernel.def
jdk/src/windows/native/sun/jkernel/kernel.h
jdk/src/windows/native/sun/jkernel/kernel.rc
jdk/src/windows/native/sun/jkernel/kernel_de.rc
jdk/src/windows/native/sun/jkernel/kernel_en.rc
jdk/src/windows/native/sun/jkernel/kernel_es.rc
jdk/src/windows/native/sun/jkernel/kernel_fr.rc
jdk/src/windows/native/sun/jkernel/kernel_it.rc
jdk/src/windows/native/sun/jkernel/kernel_ja.rc
jdk/src/windows/native/sun/jkernel/kernel_ko.rc
jdk/src/windows/native/sun/jkernel/kernel_pt_BR.rc
jdk/src/windows/native/sun/jkernel/kernel_sv.rc
jdk/src/windows/native/sun/jkernel/kernel_zh.rc
jdk/src/windows/native/sun/jkernel/kernel_zh_TW.rc
jdk/src/windows/native/sun/jkernel/resource.h
jdk/src/windows/native/sun/jkernel/stdafx.cpp
jdk/src/windows/native/sun/jkernel/stdafx.h
jdk/src/windows/native/sun/jkernel/version.rc
jdk/test/java/nio/file/Files/ContentType.java
jdk/test/java/nio/file/Files/CreateFileTree.java
jdk/test/java/nio/file/Files/ForceLoad.java
jdk/test/java/nio/file/Files/META-INF/services/java.nio.file.spi.FileTypeDetector
jdk/test/java/nio/file/Files/MaxDepth.java
jdk/test/java/nio/file/Files/PrintFileTree.java
jdk/test/java/nio/file/Files/SimpleFileTypeDetector.java
jdk/test/java/nio/file/Files/SkipSiblings.java
jdk/test/java/nio/file/Files/TerminateWalk.java
jdk/test/java/nio/file/Files/WalkWithSecurity.java
jdk/test/java/nio/file/Files/denyAll.policy
jdk/test/java/nio/file/Files/grantAll.policy
jdk/test/java/nio/file/Files/grantTopOnly.policy
jdk/test/java/nio/file/Files/walk_file_tree.sh
jdk/test/java/nio/file/Path/CheckPermissions.java
jdk/test/java/nio/file/Path/CopyAndMove.java
jdk/test/java/nio/file/Path/DeleteOnClose.java
jdk/test/java/nio/file/Path/FileAttributes.java
jdk/test/java/nio/file/Path/InterruptCopy.java
jdk/test/java/nio/file/Path/Links.java
jdk/test/java/nio/file/Path/PassThroughFileSystem.java
jdk/test/java/nio/file/Path/SBC.java
jdk/test/java/nio/file/Path/TemporaryFiles.java
jdk/test/java/nio/file/Path/delete_on_close.sh
jdk/test/java/nio/file/attribute/FileStoreAttributeView/Basic.java
--- a/.hgtags-top-repo	Tue Feb 15 12:34:33 2011 -0800
+++ b/.hgtags-top-repo	Wed Jul 05 17:35:13 2017 +0200
@@ -103,3 +103,4 @@
 b566d490905691787f8931f69947a92c67c6d5e4 jdk7-b126
 bd70f76b0309068f157ae759c36eac8f2c6d098e jdk7-b127
 57d702105b23fb90e40beaf00f8f8aeae5e249e7 jdk7-b128
+a6b015b59fbc2518762c17ccc35702f03ef7713a jdk7-b129
--- a/corba/.hgtags	Tue Feb 15 12:34:33 2011 -0800
+++ b/corba/.hgtags	Wed Jul 05 17:35:13 2017 +0200
@@ -103,3 +103,4 @@
 d7532bcd3742f1576dd07ff9fbb535c9c9a276e9 jdk7-b126
 64775e83f4df894355f45555f50c410de6727b4e jdk7-b127
 9baa8f94a11d6c5cab3f9f0e5a20106326d0932e jdk7-b128
+66fa0fcc779296c99746b09efce6109944f82f30 jdk7-b129
--- a/corba/make/common/Defs.gmk	Tue Feb 15 12:34:33 2011 -0800
+++ b/corba/make/common/Defs.gmk	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1995, 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
@@ -63,8 +63,8 @@
 # Localizations for the different parts of the product beyond English
 #
 
-JRE_LOCALES   = de es fr it ja ko sv zh_CN zh_TW zh_HK
-PLUGIN_LOCALES = de es fr it ja ko sv zh_CN zh_TW zh_HK
+JRE_LOCALES   = de es fr it ja ko pt_BR sv zh_CN zh_TW zh_HK
+PLUGIN_LOCALES = de es fr it ja ko pt_BR sv zh_CN zh_TW zh_HK
 JDK_LOCALES  = ja zh_CN
 
 #
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_de.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_de.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2005, 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
@@ -23,85 +23,85 @@
 # questions.
 #
 
-orbd.usage=Syntax: {0} <Optionen> \n\nwobei folgende <Optionen> m\u00f6glich sind:\n  -port                  Aktivierungsport, an dem der ORBD gestartet werden sollte, Standardvorgabe 1049 (optional)\n  -defaultdb             Verzeichnis f\u00fcr ORBD-Dateien, Standardvorgabe "./orb.db" (optional)\n  -serverid              Server-ID f\u00fcr ORBD, Standardvorgabe 1 (optional)\n  -ORBInitialPort        Anfangsport (erforderlich)\n  -ORBInitialHost        Anf\u00e4nglicher Rechnername (erforderlich)\n
+orbd.usage=Verwendung: {0} <Optionen> \n\nwobei folgende <Optionen> m\u00F6glich sind:\n  -port                  Aktivierungsport, an dem der ORBD gestartet werden sollte, Standardwert 1049 (optional)\n  -defaultdb             Verzeichnis f\u00FCr ORBD-Dateien, Standardwert "./orb.db" (optional)\n  -serverid              Server-ID f\u00FCr ORBD, Standardwert 1 (optional)\n  -ORBInitialPort        Anfangsport (erforderlich)\n  -ORBInitialHost        Anf\u00E4nglicher HostName (erforderlich)\n
 
-servertool.usage=Syntax: {0} <Optionen> \n\nwobei folgende <Optionen> m\u00f6glich sind:\n  -ORBInitialPort        Anfangsport (erforderlich)\n  -ORBInitialHost        Anf\u00e4nglicher Rechnername (erforderlich)\n
-servertool.banner=\n\nWillkommen beim Java IDL-Server-Tool \nBitte geben Sie an der Eingabeaufforderung Befehle ein. \n
-servertool.shorthelp=\n\n\tVerf\u00fcgbare Befehle: \n\t------------------- \n
-servertool.baddef=Fehlerhafte Serverdefinition: {0}
-servertool.nosuchserver=\tDer Server wurde nicht gefunden.
-servertool.helddown=\tServer ist au\u00dfer Betrieb.
-servertool.nosuchorb=\tUng\u00fcltige ORB
-servertool.serverup=\tServer ist bereits in Betrieb.
-servertool.appname=\tAnwendungsname     - {0}
+servertool.usage=Verwendung: {0} <Optionen> \n\nwobei folgende <Optionen> m\u00F6glich sind:\n  -ORBInitialPort        Anfangsport (erforderlich)\n  -ORBInitialHost        Anf\u00E4nglicher HostName (erforderlich)\n
+servertool.banner=\n\nWillkommen beim Java IDL-Servertool \nGeben Sie die entsprechenden Befehle im Prompt ein \n
+servertool.shorthelp=\n\n\tVerf\u00FCgbare Befehle: \n\t------------------- \n
+servertool.baddef=Ung\u00FCltige Serverdefinition: {0}
+servertool.nosuchserver=\tServer wurde nicht gefunden.
+servertool.helddown=\tServer ist au\u00DFer Betrieb.
+servertool.nosuchorb=\tUng\u00FCltiger ORB.
+servertool.serverup=\tServer ist bereits hochgefahren.
+servertool.appname=\tapplicationName     - {0}
 servertool.name=\tName      - {0}
-servertool.classpath=\tKlassenpfad - {0}
-servertool.args=\tArgs      - {0}
-servertool.vmargs=\tVmargs    - {0}
+servertool.classpath=\tclasspath - {0}
+servertool.args=\targs      - {0}
+servertool.vmargs=\tvmargs    - {0}
 servertool.serverid=\tServer-ID - {0}
-servertool.servernotrunning=\tServer l\u00e4uft nicht.
-servertool.register=\n\n\tregister -server <Serverklassenname> \n\t         -applicationName <alternativer Servername> \n\t         -classpath <Klassenpfad f\u00fcr Server> \n\t         -args <Argumente f\u00fcr Server> \n\t         -vmargs <Argumente f\u00fcr Server Java VM>\n
+servertool.servernotrunning=\tServer wird nicht ausgef\u00FChrt.
+servertool.register=\n\n\tregister -server <Serverklassenname> \n\t         -applicationName <alternativer Servername> \n\t         -classpath <Classpath f\u00FCr Server> \n\t         -args <Argumente f\u00FCr Server> \n\t         -vmargs <Argumente f\u00FCr Server Java VM>\n
 servertool.register1=aktivierbaren Server registrieren
-servertool.register2=\tServer registriert (serverid = {0})
-servertool.register3=\tServer registriert, aber au\u00dfer Betrieb (serverid = {0})
-servertool.register4=\tServer bereits registriert (serverid = {0})
+servertool.register2=\tServer registriert (serverid = {0}).
+servertool.register3=\tServer registriert, aber au\u00DFer Betrieb (serverid = {0}).
+servertool.register4=\tServer bereits registriert (serverid = {0}).
 
 servertool.unregister=\n\tunregister [ -serverid <Server-ID> | -applicationName <Name> ] \n
-servertool.unregister1=Registrierung eines registrierten Servers l\u00f6schen
-servertool.unregister2=\tServer-Registrierung gel\u00f6scht
+servertool.unregister1=Registrierung eines registrierten Servers aufheben
+servertool.unregister2=\tServerregistrierung aufgehoben.
 
-servertool.locate=\n\tlocate [ -serverid <Server-ID> | -applicationName <Name> ] [ <-endpointType <Endpunkttyp> ] \n
-servertool.locate1=Finden von Ports eines speziellen Typs bei einem registrierten Server
+servertool.locate=\n\tlocate [ -serverid <Server-ID> | -applicationName <Name> ] [ <-endpointType <endpointType> ] \n
+servertool.locate1=Ports eines speziellen Typs f\u00FCr einen registrierten Server finden
 servertool.locate2=\n\n\tHostname {0} \n\n\t\tPort\t\tPorttyp\t\tORB-ID\n\t\t----\t\t-------\t\t------\n
 servertool.locateorb=\n\tlocateperorb [ -serverid <Server-ID> | -applicationName <Name> ] [ -orbid <ORB-Name> ]\n
-servertool.locateorb1=Finden von Ports eines speziellen ORBs bei einem registrierten Server
-servertool.locateorb2=\n\n\tHostname {0} \n\n\t\tPort\t\tPorttyp\t\tORB-ID\n\t\t----\t\t-------\t\t------\n
+servertool.locateorb1=Ports f\u00FCr einen speziellen ORB bei einem registrierten Server finden
+servertool.locateorb2=\n\n\tHostname {0} \n\n\t\tPort\t\tPortType\t\tORB-ID\n\t\t----\t\t-------\t\t------\n
 servertool.getserverid=\n\tgetserverid [ -applicationName <Name> ] \n
-servertool.getserverid1=\u00dcbergeben der Server-ID f\u00fcr einen Anwendungsnamen
-servertool.getserverid2=\tServer-ID f\u00fcr Anwendungsname {0} ist {1}.
+servertool.getserverid1=Server-ID f\u00FCr applicationName zur\u00FCckgeben
+servertool.getserverid2=\tServer-ID f\u00FCr applicationName {0} ist {1}
 
 servertool.list=\n\tlist\n
-servertool.list1=Auflisten aller registrierten Server
-servertool.list2=\n\tServer-ID\tServer-Klassenname\t\tServer-Anwendung\n\t---------\t------------------\t\t----------------\n
+servertool.list1=alle registrierten Server auflisten
+servertool.list2=\n\tServer-ID\tServerklassenname\t\tServeranwendung\n\t---------\t-----------------\t\t------------------\n
 servertool.listactive=\n\tlistactive
-servertool.listactive1=Auflisten der gegenw\u00e4rtig aktiven Server
+servertool.listactive1=derzeit aktive Server auflisten
 servertool.listappnames=\tlistappnames\n
-servertool.listappnames1=Auflisten der gegenw\u00e4rtig definierten Anwendungsnamen
-servertool.listappnames2=Gegenw\u00e4rtig definierte Serveranwendungsnamen:
+servertool.listappnames1=derzeit definierte applicationNames auflisten
+servertool.listappnames2=Derzeit definierte Server-applicationNames:
 
 servertool.shutdown=\n\tshutdown [ -serverid <Server-ID> | -applicationName <Name> ]\n
-servertool.shutdown1=Herunterfahren eines registrierten Servers
-servertool.shutdown2=\tServer erfolgreich heruntergefahren
+servertool.shutdown1=registrierten Server herunterfahren
+servertool.shutdown2=\tServer erfolgreich heruntergefahren.
 servertool.startserver=\n\tstartup [ -serverid <Server-ID> | -applicationName <Name> ]\n
-servertool.startserver1=Hochfahren eines registrierten Servers
-servertool.startserver2=\tServer erfolgreich hochgefahren
+servertool.startserver1=registrierten Server starten
+servertool.startserver2=\tServer erfolgreich hochgefahren.
 
 servertool.quit=\n\tquit\n
-servertool.quit1=Dieses Tool beenden
+servertool.quit1=dieses Tool beenden
 
 servertool.help=\thelp\n\tOR\n\thelp <Befehlsname>\n
-servertool.help1=Hilfe anfordern
+servertool.help1=Hilfe abrufen
 
-servertool.orbidmap=\tSyntax: orblist [ -serverid <Server-ID> | -applicationName <Name> ]\n
+servertool.orbidmap=\\Verwendung: orblist [ -serverid <Server-ID> | -applicationName <Name> ]\n
 servertool.orbidmap1=Liste von ORB-Namen und ihren Zuordnungen
 servertool.orbidmap2=\n\tORB-ID\t\tORB-Name\n\t------\t\t--------\n
-pnameserv.success=St\u00e4ndiger Namensserver erfolgreich hochgefahren
+pnameserv.success=Persistenter NameServer erfolgreich gestartet
 
 
-bootstrap.usage=Syntax: {0} <Optionen> \n\nwobei folgende <Optionen> m\u00f6glich sind:\n  -ORBInitialPort        Erster Port (erforderlich)\n  -InitialServicesFile   Datei mit Liste von Anfangsdiensten (erforderlich)\n
-bootstrap.success=Ein Port wird auf {0} eingestellt, und Dienste werden von {1} gelesen
-bootstrap.filenotreadable=Die Datei {0} kann nicht gelesen werden.
-bootstrap.filenotfound=Die Datei {0} wurde nicht gefunden.
-bootstrap.exception=Beim Speichern von Eigenschaften in Datei {0} wurde eine Ausnahme aufgefangen: Ausnahme {1}.
+bootstrap.usage=Verwendung: {0} <Optionen> \n\nwobei folgende <Optionen> m\u00F6glich sind:\n  -ORBInitialPort        Anf\u00E4nglicher Port (erforderlich)\n  -InitialServicesFile   Datei mit Liste von anf\u00E4nglichen Services (erforderlich)\n
+bootstrap.success=Port wird auf {0} gesetzt, Services werden aus {1} gelesen
+bootstrap.filenotreadable=Datei {0} kann nicht gelesen werden
+bootstrap.filenotfound=Datei {0} wurde nicht gefunden
+bootstrap.exception=Beim Speichern von Eigenschaften in Datei {0} wurde eine Ausnahme abgefangen: Ausnahme {1}
 
-tnameserv.exception=Beim Hochfahren des Bootstrap-Dienstes auf Port {0} wurde eine Ausnahme aufgefangen.
-tnameserv.usage=Versuchen Sie, einen anderen Port mit den Befehlszeilenargumenten -ORBInitialPort <Portnummer> zu verwenden.
-tnameserv.invalidhostoption=ORBInitialHost ist keine g\u00fcltige Option f\u00fcr NameService
-tnameserv.orbinitialport0=ORBInitialPort 0 ist keine g\u00fcltige Option f\u00fcr NameService
-tnameserv.hs1=Anf\u00e4nglicher Namenskontext:\n{0}
-tnameserv.hs2=\u00dcbergangsnamensserver: Port f\u00fcr anf\u00e4ngliche Objektreferenzen wird eingestellt auf: {0}
-tnameserv.hs3=Bereit
+tnameserv.exception=Beim Hochfahren des Bootstrap-Services auf Port {0} wurde eine Ausnahme abgefangen
+tnameserv.usage=Verwenden Sie einen anderen Port mit den Befehlszeilenargumenten -ORBInitialPort <Portnummer>
+tnameserv.invalidhostoption=ORBInitialHost ist keine g\u00FCltige Option f\u00FCr NameService
+tnameserv.orbinitialport0=ORBInitialPort 0 ist keine g\u00FCltige Option f\u00FCr NameService
+tnameserv.hs1=Anf\u00E4nglicher Namenskontext:\n{0}
+tnameserv.hs2=TransientNameServer: Port f\u00FCr anf\u00E4ngliche Objektreferenzen wird auf {0} gesetzt
+tnameserv.hs3=Bereit.
 
-orbd.commfailure=\nORBD konnte nicht gestartet werden, weil ORBinitialPort bereits verwendet wird
-orbd.internalexception=\ORBD konnte wegen einer internen Ausnahme nicht gestartet werden. \nM\u00f6gliche Ursachen: \n1. Der angegebene ORBInitialPort oder ORBActivationPort wird bereits verwendet \n2. Keine Berechtigung zum Schreiben von orb.db 
+orbd.commfailure=\nStart von ORBD nicht erfolgreich, da ORBinitialPort bereits verwendet wird
+orbd.internalexception=\nStart von ORBD aufgrund einer internen Ausnahme nicht erfolgreich. \nM\u00F6gliche Ursachen: \n1. Der angegebene ORBInitialPort oder ORBActivationPort wird bereits verwendet \n2. Keine Berechtigung zum Schreiben von orb.db 
 
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_es.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_es.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2005, 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
@@ -23,24 +23,24 @@
 # questions.
 #
 
-orbd.usage=Sintaxis: {0} <opciones> \n\ndonde <opciones> incluye:\n  -port                  Puerto de activaci\u00f3n en el que se debe iniciar el ORBD, el predeterminado es el 1049 (opcional)\n  -defaultdb             Directorio para los archivos de ORBD, el predeterminado es "./orb.db" (opcional)\n  -serverid              Identificador de servidor para ORBD, el predeterminado es 1 (opcional)\n  -ORBInitialPort        Puerto inicial (necesario)\n  -ORBInitialHost        Nombre de sistema inicial (necesario)\n
+orbd.usage=Sintaxis: {0} <opciones> \n\ndonde <opciones> incluye:\n  -port                  Puerto de activaci\u00F3n en el que se debe iniciar el ORBD, por defecto es el 1049 (opcional)\n  -defaultdb             Directorio para los archivos de ORBD, por defecto es "./orb.db" (opcional)\n  -serverid              Identificador de servidor para ORBD, por defecto es 1 (opcional)\n  -ORBInitialPort        Puerto inicial (necesario)\n  -ORBInitialHost        Nombre de host inicial (necesario)\n
 
-servertool.usage=Sintaxis: {0} <opciones> \n\ndonde <opciones> incluye:\n  -ORBInitialPort        Puerto inicial (necesario)\n  -ORBInitialHost        Nombre de sistema inicial (necesario)\n
-servertool.banner=\n\nBienvenido Java IDL Server Tool \nescriba los comandos en el indicador \n
+servertool.usage=Sintaxis: {0} <opciones> \n\ndonde <opciones> incluye:\n  -ORBInitialPort        Puerto inicial (necesario)\n  -ORBInitialHost        Nombre de host inicial (necesario)\n
+servertool.banner=\n\nBienvenido a Java IDL Server Tool \nescriba los comandos en la petici\u00F3n de datos \n
 servertool.shorthelp=\n\n\tComandos disponibles: \n\t------------------- \n
-servertool.baddef=Definici\u00f3n de servidor incorrecta: {0}
+servertool.baddef=Definici\u00F3n de servidor incorrecta: {0}
 servertool.nosuchserver=\tno se ha encontrado el servidor.
 servertool.helddown=\tel servidor se mantiene desconectado.
-servertool.nosuchorb=\tORB no v\u00e1lido.
-servertool.serverup=\tel servidor ya est\u00e1 conectado.
-servertool.appname=\tnombre de aplicaci\u00f3n     - {0}
-servertool.name=\tnombre      - {0}
-servertool.classpath=\truta de clase - {0}
-servertool.args=\targumentos      - {0}
-servertool.vmargs=\targumentos de MV    - {0}
-servertool.serverid=\tidentificador de servidor - {0}
-servertool.servernotrunning=\tel servidor no se est\u00e1 ejecutando.
-servertool.register=\n\n\tregister -server <nombre de clase de servidor> \n\t         -applicationName <nombre de servidor alternativo> \n\t         -classpath <ruta de clase al servidor> \n\t         -args <argumentos para el servidor> \n\t         -vmargs <argumentos para la MV Java del servidor>\n
+servertool.nosuchorb=\tORB no v\u00E1lido.
+servertool.serverup=\tel servidor ya est\u00E1 conectado.
+servertool.appname=\tapplicationName     - {0}
+servertool.name=\tname      - {0}
+servertool.classpath=\tclasspath - {0}
+servertool.args=\targs      - {0}
+servertool.vmargs=\tvmargs    - {0}
+servertool.serverid=\tserver id - {0}
+servertool.servernotrunning=\tel servidor no se est\u00E1 ejecutando.
+servertool.register=\n\n\tregister -server <nombre de clase de servidor> \n\t         -applicationName <nombre de servidor alternativo> \n\t         -classpath <classpath al servidor> \n\t         -args <argumentos para el servidor> \n\t         -vmargs <argumentos para la MV Java del servidor>\n
 servertool.register1=registrar un servidor que se pueda activar
 servertool.register2=\tservidor registrado (identificador de servidor = {0}).
 servertool.register3=\tservidor registrado pero desconectado (identificador de servidor = {0}).
@@ -51,57 +51,57 @@
 servertool.unregister2=\tanulado el registro del servidor.
 
 servertool.locate=\n\tlocate [ -serverid <identificador de servidor> | -applicationName <nombre> ] [ <-endpointType <tipo de punto final> ] \n
-servertool.locate1=localizar puertos de un tipo espec\u00edfico para un servidor registrado
-servertool.locate2=\n\n\tNombre de sistema {0} \n\n\t\tPuerto\t\tTipo de puerto\t\tIdentificador ORB\n\t\t----\t\t---------\t\t------\n
+servertool.locate1=localizar puertos de un tipo espec\u00EDfico para un servidor registrado
+servertool.locate2=\n\n\tNombre de host {0} \n\n\t\tPuerto\t\tTipo de puerto\t\tIdentificador ORB\n\t\t----\t\t---------\t\t------\n
 servertool.locateorb=\n\tlocateperorb [ -serverid <identificador de servidor> | -applicationName <nombre> ] [ -orbid <nombre de ORB> ]\n
-servertool.locateorb1=localizar puertos para un ORB espec\u00edfico del servidor registrado
-servertool.locateorb2=\n\n\tNombre de sistema {0} \n\n\t\tPuerto\t\tTipo de puerto\t\tIdentificador de ORB\n\t\t----\t\t--------\t\t------\n
+servertool.locateorb1=localizar puertos para un ORB espec\u00EDfico del servidor registrado
+servertool.locateorb2=\n\n\tNombre de host {0} \n\n\t\tPuerto\t\tTipo de puerto\t\tIdentificador de ORB\n\t\t----\t\t--------\t\t------\n
 servertool.getserverid=\n\tgetserverid [ -applicationName <nombre> ] \n
-servertool.getserverid1=devolver el identificador de servidor para un nombre de aplicaci\u00f3n
-servertool.getserverid2=\tIdentificador de servidor para el nombre de aplicaci\u00f3n {0} es {1}
+servertool.getserverid1=devolver el identificador de servidor para un valor de applicationName
+servertool.getserverid2=\tEl identificador de servidor para applicationName {0} es {1}
 
-servertool.list=\n\tlista\n
+servertool.list=\n\tlist\n
 servertool.list1=enumerar todos los servidores registrados
-servertool.list2=\n\tIdentificador de servidor\tNombre de clase del servidor\t\tAplicaci\u00f3n de servidor\n\t-------------------------\t----------------------------\t\t----------------------\n
+servertool.list2=\n\tIdentificador de servidor\tNombre de clase del servidor\t\tAplicaci\u00F3n de servidor\n\t-------------------------\t----------------------------\t\t----------------------\n
 servertool.listactive=\n\tlistactive
 servertool.listactive1=enumerar los servidores actualmente activos
 servertool.listappnames=\tlistappnames\n
-servertool.listappnames1=enumerar los nombres de aplicaci\u00f3n actualmente definidos
-servertool.listappnames2=Nombres de aplicaci\u00f3n de servidor actualmente definidos:
+servertool.listappnames1=enumerar los nombres de aplicaci\u00F3n actualmente definidos
+servertool.listappnames2=Nombres de aplicaci\u00F3n de servidor actualmente definidos:
 
 servertool.shutdown=\n\tshutdown [ -serverid <identificador de servidor> | -applicationName <nombre> ]\n
 servertool.shutdown1=apagar un servidor registrado
-servertool.shutdown2=\tservidor apagado satisfactoriamente.
+servertool.shutdown2=\tservidor apagado correctamente.
 servertool.startserver=\n\tstartup [ -serverid <identificador de servidor> | -applicationName <nombre> ]\n
 servertool.startserver1=iniciar un servidor registrado
-servertool.startserver2=\tservidor iniciado satisfactoriamente.
+servertool.startserver2=\tservidor iniciado correctamente.
 
-servertool.quit=\n\tsalir\n
+servertool.quit=\n\tquit\n
 servertool.quit1=salir de esta herramienta
 
 servertool.help=\thelp\n\tO\n\thelp <nombre de comando>\n
 servertool.help1=obtener ayuda
 
 servertool.orbidmap=\tSintaxis: orblist [ -serverid <identificador de servidor> | -applicationName <nombre> ]\n
-servertool.orbidmap1=lista de nombres de ORB y su reasignaci\u00f3n
+servertool.orbidmap1=lista de nombres de ORB y su asignaci\u00F3n
 servertool.orbidmap2=\n\tIdentificador de ORB\t\tNombre de ORB\n\t------\t\t--------\n
-pnameserv.success=Servidor de nombres constante iniciado satisfactoriamente
+pnameserv.success=NameServer constante iniciado correctamente
 
 
 bootstrap.usage=Sintaxis: {0} <opciones> \n\ndonde <opciones> incluye:\n  -ORBInitialPort        Puerto inicial (necesario)\n  -InitialServicesFile   Archivo que contiene una lista de los servicios iniciales (necesario)\n
-bootstrap.success=estableciendo puerto en {0} y leyendo servicios de {1}
+bootstrap.success=definiendo puerto en {0} y leyendo servicios de {1}
 bootstrap.filenotreadable=el archivo {0} no se puede leer
 bootstrap.filenotfound=no se ha encontrado el archivo {0}
-bootstrap.exception=se ha interceptado una excepci\u00f3n al guardar las propiedades en el archivo {0}: Excepci\u00f3n {1}
+bootstrap.exception=se ha obtenido una excepci\u00F3n al guardar las propiedades en el archivo {0}: Excepci\u00F3n {1}
 
-tnameserv.exception=se ha interceptado una excepci\u00f3n al iniciar el servicio de rutina de carga en el puerto {0}
-tnameserv.usage=intente utilizar un puerto distinto con argumentos de l\u00ednea de comandos -ORBInitialPort <n.\u00ba de puerto>
-tnameserv.invalidhostoption=ORBInitialHost no es una opci\u00f3n v\u00e1lida para NameService
-tnameserv.orbinitialport0=ORBInitialPort 0 no es una opci\u00f3n v\u00e1lida para NameService
-tnameserv.hs1=Contexto de asignaci\u00f3n de nombres inicial:\n{0}
-tnameserv.hs2=TransientNameServer: estableciendo puerto para referencias a objeto iniciales en: {0}
+tnameserv.exception=se ha obtenido una excepci\u00F3n al iniciar el servicio de inicializaci\u00F3n de datos en el puerto {0}
+tnameserv.usage=intente utilizar un puerto distinto con argumentos de l\u00EDnea de comandos -ORBInitialPort <n.\u00BA de puerto>
+tnameserv.invalidhostoption=ORBInitialHost no es una opci\u00F3n v\u00E1lida para NameService
+tnameserv.orbinitialport0=ORBInitialPort 0 no es una opci\u00F3n v\u00E1lida para NameService
+tnameserv.hs1=Contexto de Nomenclatura Inicial:\n{0}
+tnameserv.hs2=TransientNameServer: definiendo puerto para referencias a objeto iniciales en: {0}
 tnameserv.hs3=Listo.
 
-orbd.commfailure=\nORBD no puede iniciarse porque ORBinitialPort ya est\u00e1 en uso
-orbd.internalexception=\nORBD no puede iniciarse debido a una excepci\u00f3n interna. \nCausas posibles: \n1. El ORBInitialPort o el ORBActivationPort especificado ya est\u00e1 en uso \n2. No tiene permiso de escritura para orb.db 
+orbd.commfailure=\nORBD no puede iniciarse porque ORBinitialPort ya est\u00E1 en uso
+orbd.internalexception=\nORBD no puede iniciarse debido a una excepci\u00F3n interna. \nCausas posibles: \n1. El ORBInitialPort o el ORBActivationPort especificado ya est\u00E1 en uso \n2. No tiene permiso de escritura para orb.db 
 
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_fr.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_fr.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2005, 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
@@ -23,58 +23,58 @@
 # questions.
 #
 
-orbd.usage=Syntaxe : {0} <options> \n\no\u00f9 <options> comprend :\n  -port                  Port d''activation o\u00f9 le ORBD doit \u00eatre d\u00e9marr\u00e9, 1049 par d\u00e9faut (facultatif)\n  -defaultdb             R\u00e9pertoire des fichiers ORBD, par d\u00e9faut "./orb.db" (facultatif)\n  -serverid              ID de serveur pour ORBD, 1 (facultatif)\n  -ORBInitialPort        Port initial (requis)\n  -ORBInitialHost        Nom d''h\u00f4te initial (requis)\n
+orbd.usage=Syntaxe : {0} <options> \n\no\u00F9 <options> comprend :\n  -port                  Port d''activation o\u00F9 l''ORBD doit \u00EAtre d\u00E9marr\u00E9, 1049 par d\u00E9faut (facultatif)\n  -defaultdb             R\u00E9pertoire des fichiers ORBD, par d\u00E9faut "./orb.db" (facultatif)\n  -serverid              ID de serveur pour ORBD, 1 par d\u00E9faut (facultatif)\n  -ORBInitialPort        Port initial (obligatoire)\n  -ORBInitialHost        Nom d''h\u00F4te initial (obligatoire)\n
 
-servertool.usage=Syntaxe : {0} <options> \n\no\u00f9 <options> comprend :\n  -ORBInitialPort        Port initial (requis)\n  -ORBInitialHost        Nom d''h\u00f4te initial (requis)\n
-servertool.banner=\n\nBienvenue dans l'outil Java IDL Server Tool \nSp\u00e9cifiez des commandes \u00e0 l'invite \n
+servertool.usage=Syntaxe : {0} <options> \n\no\u00F9 <options> comprend :\n  -ORBInitialPort        Port initial (obligatoire)\n  -ORBInitialHost        Nom d''h\u00F4te initial (obligatoire)\n
+servertool.banner=\n\nBienvenue dans l'outil Java IDL Server Tool \nSp\u00E9cifiez des commandes \u00E0 l'invite \n
 servertool.shorthelp=\n\n\tCommandes disponibles : \n\t------------------- \n
-servertool.baddef=D\u00e9finition de serveur non valide : {0}
+servertool.baddef=D\u00E9finition de serveur incorrecte : {0}
 servertool.nosuchserver=\tce serveur est introuvable.
 servertool.helddown=\tserveur interrompu.
 servertool.nosuchorb=\tORB non valide.
-servertool.serverup=\tle serveur fonctionne d\u00e9j\u00e0.
-servertool.appname=\tNom d''application     - {0}
-servertool.name=\tnom      - {0}
+servertool.serverup=\tle serveur fonctionne d\u00E9j\u00E0.
+servertool.appname=\tapplicationName     - {0}
+servertool.name=\tname      - {0}
 servertool.classpath=\tclasspath - {0}
 servertool.args=\targs      - {0}
 servertool.vmargs=\tvmargs    - {0}
-servertool.serverid=\tserver id - {0}
-servertool.servernotrunning=\tLe serveur ne fonctionne pas.
-servertool.register=\n\n\tregister -server <nom de classe de serveur> \n\t         -applicationName <deuxi\u00e8me nom de serveur> \n\t         -classpath <chemin de classe au serveur> \n\t         -args <arguments au serveur> \n\t         -vmargs <arguments au serveur Java VM>\n
+servertool.serverid=\tID de serveur - {0}
+servertool.servernotrunning=\tle serveur ne fonctionne pas.
+servertool.register=\n\n\tregister -server <nom de classe de serveur> \n\t         -applicationName <deuxi\u00E8me nom de serveur> \n\t         -classpath <variable d'environnement CLASSPATH du serveur> \n\t         -args <arguments au serveur> \n\t         -vmargs <arguments au serveur Java VM>\n
 servertool.register1=inscrire un serveur activable
 servertool.register2=\tserveur inscrit (ID serveur = {0}).
 servertool.register3=\tserveur inscrit mais interrompu (ID serveur = {0}).
-servertool.register4=\tserveur d\u00e9j\u00e0 inscrit (ID serveur = {0}).
+servertool.register4=\tserveur d\u00E9j\u00E0 inscrit (ID serveur = {0}).
 
 servertool.unregister=\n\tunregister [ -serverid <ID serveur> | -applicationName <nom> ] \n
-servertool.unregister1=d\u00e9sinscrire un serveur inscrit
-servertool.unregister2=\tserveur d\u00e9sinscrit.
+servertool.unregister1=d\u00E9sinscrire un serveur inscrit
+servertool.unregister2=\tserveur d\u00E9sinscrit.
 
-servertool.locate=\n\tlocate [ -serverid <ID serveur> | -applicationName <nom> ] [ <-endpointType <type de point d'extr\u00e9mit\u00e9> ] \n
-servertool.locate1=rep\u00e9rer des ports de type sp\u00e9cifique d'un serveur inscrit
-servertool.locate2=\n\n\tNom d''h\u00f4te {0} \n\n\t\tPort\t\tType de port\t\tID ORB\n\t\t----\t\t---------\t\t------\n
+servertool.locate=\n\tlocate [ -serverid <ID serveur> | -applicationName <nom> ] [ <-endpointType <type de point d'extr\u00E9mit\u00E9> ] \n
+servertool.locate1=rep\u00E9rer des ports de type sp\u00E9cifique d'un serveur inscrit
+servertool.locate2=\n\n\tNom d''h\u00F4te {0} \n\n\t\tPort\t\tType de port\t\tID ORB\n\t\t----\t\t---------\t\t------\n
 servertool.locateorb=\n\tlocateperorb [ -serverid <ID serveur> | -applicationName <nom> ] [ -orbid <nom ORB> ]\n
-servertool.locateorb1=rep\u00e9rer les ports d'un ORB sp\u00e9cifique de serveurs inscrits
-servertool.locateorb2=\n\n\tNom d''h\u00f4te {0} \n\n\t\tPort\t\tType de port\t\tID ORB\n\t\t----\t\t--------\t\t------\n
+servertool.locateorb1=rep\u00E9rer les ports d'un ORB sp\u00E9cifique de serveur inscrit
+servertool.locateorb2=\n\n\tNom d''h\u00F4te {0} \n\n\t\tPort\t\tType de port\t\tID ORB\n\t\t----\t\t--------\t\t------\n
 servertool.getserverid=\n\tgetserverid [ -applicationName <nom> ] \n
-servertool.getserverid1=renvoyer l'ID serveur pour un applicationName
-servertool.getserverid2=\tL''ID serveur de applicationName {0} est {1}
+servertool.getserverid1=renvoyer l'ID serveur pour un nom d'application
+servertool.getserverid2=\tL''ID serveur du nom d''application {0} est {1}
 
-servertool.list=\n\tlist
+servertool.list=\n\tlist\n
 servertool.list1=lister tous les serveurs inscrits
 servertool.list2=\n\tID serveur\tNom de classe serveur\t\tApplication serveur\n\t---------\t-----------------\t\t------------------\n
 servertool.listactive=\n\tlistactive
 servertool.listactive1=lister les serveurs actifs
 servertool.listappnames=\tlistappnames\n
-servertool.listappnames1=lister les noms d'application d\u00e9finis
-servertool.listappnames2=noms d'application du serveur d\u00e9finis :
+servertool.listappnames1=lister les noms d'application d\u00E9finis
+servertool.listappnames2=Noms d'application du serveur d\u00E9finis :
 
 servertool.shutdown=\n\tshutdown [ -serverid <ID serveur> | -applicationName <nom> ]\n
-servertool.shutdown1=arr\u00eater un serveur inscrit
-servertool.shutdown2=\tserveur arr\u00eat\u00e9.
+servertool.shutdown1=arr\u00EAter un serveur inscrit
+servertool.shutdown2=\tserveur arr\u00EAt\u00E9.
 servertool.startserver=\n\tstartup [ -serverid <ID serveur> | -applicationName <nom> ]\n
-servertool.startserver1=d\u00e9marrer un serveur inscrit
-servertool.startserver2=\tserveur d\u00e9marr\u00e9.
+servertool.startserver1=d\u00E9marrer un serveur inscrit
+servertool.startserver2=\tserveur d\u00E9marr\u00E9.
 
 servertool.quit=\n\tquit\n
 servertool.quit1=fermer cet outil
@@ -83,25 +83,25 @@
 servertool.help1=afficher l'aide
 
 servertool.orbidmap=\tSyntaxe : orblist [ -serverid <ID serveur> | -applicationName <nom> ]\n
-servertool.orbidmap1=liste des noms orb et de leur mappage
+servertool.orbidmap1=liste des noms ORB et de leur mappage
 servertool.orbidmap2=\n\tID ORB\t\tNom ORB\n\t------\t\t--------\n
-pnameserv.success=NameServer persistant d\u00e9marr\u00e9
+pnameserv.success=NameServer persistant d\u00E9marr\u00E9
 
 
-bootstrap.usage=Syntaxe : {0} <options> \n\no\u00f9 <options> comprend :\n  -ORBInitialPort        Port initial (requis)\n  -InitialServicesFile   Fichier contenant la liste des services initiaux (requis)\n
+bootstrap.usage=Syntaxe : {0} <options> \n\no\u00F9 <options> comprend :\n  -ORBInitialPort        Port initial (obligatoire)\n  -InitialServicesFile   Fichier contenant la liste des services initiaux (obligatoire)\n
 bootstrap.success=configuration du port sur {0} et lecture des services de {1}
 bootstrap.filenotreadable=le fichier {0} n''est pas lisible
 bootstrap.filenotfound=fichier {0} introuvable
-bootstrap.exception=erreur d\u00e9tect\u00e9e pendant l''enregistrement des propri\u00e9t\u00e9s dans le fichier {0} : Erreur {1}
+bootstrap.exception=exception d\u00E9tect\u00E9e lors de l''enregistrement des propri\u00E9t\u00E9s dans le fichier {0}. Exception : {1}
 
-tnameserv.exception=Erreur d\u00e9tect\u00e9e pendant le d\u00e9marrage du service d''amor\u00e7age sur le port {0}
-tnameserv.usage=essayez un autre port avec les arguments de ligne de commande -ORBInitialPort <num\u00e9ro de port>
+tnameserv.exception=exception d\u00E9tect\u00E9e lors du d\u00E9marrage du service bootstrap sur le port {0}
+tnameserv.usage=essayez un autre port avec les arguments de ligne de commande -ORBInitialPort <num\u00E9ro de port>
 tnameserv.invalidhostoption=ORBInitialHost n'est pas une option valide pour NameService
 tnameserv.orbinitialport0=ORBInitialPort 0 n'est pas une option valide pour NameService
-tnameserv.hs1=Contexte d''appellation initial :\n{0}
-tnameserv.hs2=TransientNameServer : configuration du port pour des r\u00e9f\u00e9rences d''objet initial \u00e0 : {0}
-tnameserv.hs3=Pr\u00eat.
+tnameserv.hs1=Contexte de d\u00E9nomination initial :\n{0}
+tnameserv.hs2=TransientNameServer : configuration du port pour des r\u00E9f\u00E9rences d''objet initial sur {0}
+tnameserv.hs3=Pr\u00EAt.
 
-orbd.commfailure=\nLe d\u00e9marrage de ORBD a \u00e9chou\u00e9 car ORBinitialPort est d\u00e9j\u00e0 utilis\u00e9
-orbd.internalexception=\nLe d\u00e9marrage de ORBD a \u00e9chou\u00e9 \u00e0 cause d'une exception interne. \nCauses possibles\u00a0: \n1. Le ORBInitialPort ou le ORBActivationPort sp\u00e9cifi\u00e9 est d\u00e9j\u00e0 utilis\u00e9 \n2. Pas d'autorisation en \u00e9criture permettant d'\u00e9crire orb.db 
+orbd.commfailure=\nLe d\u00E9marrage d'ORBD a \u00E9chou\u00E9 car ORBinitialPort est d\u00E9j\u00E0 utilis\u00E9
+orbd.internalexception=\nLe d\u00E9marrage d'ORBD a \u00E9chou\u00E9 en raison d'une exception interne. \nCauses possibles\u00A0: \n1. L'\u00E9l\u00E9ment ORBInitialPort ou ORBActivationPort sp\u00E9cifi\u00E9 est d\u00E9j\u00E0 utilis\u00E9 \n2. Aucune autorisation en \u00E9criture permettant d'\u00E9crire orb.db 
 
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_it.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_it.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2005, 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
@@ -23,28 +23,28 @@
 # questions.
 #
 
-orbd.usage=Utilizzo: {0} <opzioni> \n\ndove <opzioni> comprende:\n  -port                  Porta di attivazione da cui avviare ORBD, default 1049 (opzionale)\n  -defaultdb             Directory per i file ORBD, default "./orb.db" (opzionale)\n  -serverid              Id server per ORBD, default 1 (opzionale)\n  -ORBInitialPort        Porta iniziale (richiesta)\n  -ORBInitialHost       Nome host iniziale (richiesto)\n
+orbd.usage=Utilizzo: {0} <opzioni> \n\ndove <opzioni> include:\n  -port                  Porta di attivazione da cui avviare ORBD, valore predefinito 1049 (opzionale)\n  -defaultdb             Directory per i file ORBD, valore predefinito "./orb.db" (opzionale)\n  -serverid              ID server per ORBD, valore predefinito 1 (opzionale)\n  -ORBInitialPort        Porta iniziale (richiesta)\n  -ORBInitialHost       HostName iniziale (richiesto)\n
 
-servertool.usage=Utilizzo: {0} <opzioni> \n\ndove <opzioni> comprende:\n  -ORBInitialPort        Porta iniziale (richiesta)\n  -ORBInitialHost        Nome host iniziale (richiesto)\n
-servertool.banner=\n\nBenvenuti a Java IDL Server Tool     \nimmettere i comandi quando richiesto \n
+servertool.usage=Utilizzo: {0} <opzioni> \n\ndove <opzioni> include:\n  -ORBInitialPort        Porta iniziale (richiesta)\n  -ORBInitialHost        HostName iniziale (richiesto)\n
+servertool.banner=\n\nBenvenuti in Java IDL Server Tool     \nimmettere i comandi quando richiesto \n
 servertool.shorthelp=\n\n\tComandi disponibili:\n\t-------------------- \n
 servertool.baddef=Definizione server errata: {0}
 servertool.nosuchserver=\timpossibile trovare il server indicato.
-servertool.helddown=\til server \u00e8 mantenuto inattivo.
+servertool.helddown=\til server \u00E8 mantenuto inattivo.
 servertool.nosuchorb=\tORB non valido.
-servertool.serverup=\til server \u00e8 gi\u00e0 attivo.
-servertool.appname=\tNomeApplicazione     - {0}
+servertool.serverup=\til server \u00E8 gi\u00E0 attivo.
+servertool.appname=\tapplicationName     - {0}
 servertool.name=\tnome      - {0}
 servertool.classpath=\tclasspath - {0}
 servertool.args=\targom      - {0}
 servertool.vmargs=\targomvm    - {0}
-servertool.serverid=\tid server - {0}
-servertool.servernotrunning=\til server non \u00e8 in funzione.
+servertool.serverid=\tID server - {0}
+servertool.servernotrunning=\til server non \u00E8 in funzione.
 servertool.register=\n\n\tregister -server <nome classe server> \n\t         -applicationName <nome server alternativo> \n\t         -classpath <classpath per il server> \n\t         -args <argom per il server> \n\t         -vmargs <argom per la Java VM del server>\n
 servertool.register1=registra un server attivabile
 servertool.register2=\tserver registrato (idserver = {0}).
 servertool.register3=\tserver registrato ma mantenuto inattivo (idserver = {0}).
-servertool.register4=\tserver gi\u00e0 registrato (idserver = {0}).
+servertool.register4=\tserver gi\u00E0 registrato (idserver = {0}).
 
 servertool.unregister=\n\tunregister [ -serverid <id server> | -applicationName <nome> ] \n
 servertool.unregister1=rimuovi un server registrato.
@@ -55,19 +55,19 @@
 servertool.locate2=\n\n\tNome host {0} \n\n\t\tPorta\t\tTipo porta\t\tId ORB\n\t\t-----\t\t----------\t\t------\n
 servertool.locateorb=\n\tlocateperorb [ -serverid <id server> | -applicationName <nome> ] [ -orbid <nome ORB> ]\n
 servertool.locateorb1=individua le porte per un orb specifico di un server registrato
-servertool.locateorb2=\n\n\tNome host {0} \n\n\t\tPorta\t\tTipoPorta\t\tId ORB\n\t\t-----\t\t---------\t\t------\n
+servertool.locateorb2=\n\n\tNome host {0} \n\n\t\tPorta\t\tPortType\t\tId ORB\n\t\t-----\t\t---------\t\t------\n
 servertool.getserverid=\n\tgetserverid [ -applicationName <nome> ] \n
 servertool.getserverid1=restituisce l'id server per un applicationName
-servertool.getserverid2=\tL''ID server per applicationName {0} \u00e8 {1}
+servertool.getserverid2=\tL''ID server per applicationName {0} \u00E8 {1}
 
-servertool.list=\n\tlist\n
+servertool.list=\n\tlista\n
 servertool.list1=elenca tutti i server registrati
 servertool.list2=\n\tID server\tNome classe server\t\tApplicazione server\n\t---------\t------------------\t\t-------------------\n
 servertool.listactive=\n\tlistactive
-servertool.listactive1=elenca i server attualmente attivi
+servertool.listactive1=elenca i server attivi al momento
 servertool.listappnames=\tlistappnames\n
-servertool.listappnames1=elenca gli applicationName attualmente definiti
-servertool.listappnames2=applicationName del server attualmente definiti:
+servertool.listappnames1=elenca applicationNames definiti al momento
+servertool.listappnames2=applicationNames del server definiti al momento:
 
 servertool.shutdown=\n\tshutdown [ -serverid <id server> | -applicationName <nome> ]\n
 servertool.shutdown1=arresta un server registrato
@@ -76,32 +76,32 @@
 servertool.startserver1=avvia un server registrato
 servertool.startserver2=\tserver avviato correttamente.
 
-servertool.quit=\n\tquit\n
+servertool.quit=\n\tesci\n
 servertool.quit1=esci dall'applicazione corrente
 
 servertool.help=\thelp\n\tOR\n\thelp <nome comando>\n
-servertool.help1=get help
+servertool.help1=Guida
 
 servertool.orbidmap=\tUtilizzo: orblist [ -serverid <id server> | -applicationName <nome> ]\n
-servertool.orbidmap1=elenco dei nomi orb e relativa mappatura
+servertool.orbidmap1=lista nomi orb e relativa mappatura
 servertool.orbidmap2=\n\tId ORB\t\tNome ORB\n\t------\t\t--------\n
 pnameserv.success=NameServer persistente avviato correttamente
 
 
-bootstrap.usage=Utilizzo: {0} <opzioni> \n\ndove <opzioni> comprende:\n  -ORBInitialPort        Porta iniziale (richiesta)\n  -InitialServicesFile   File contenente l''elenco dei servizi iniziali (richiesto)\n
+bootstrap.usage=Utilizzo: {0} <opzioni> \n\ndove <opzioni> include:\n  -ORBInitialPort        Porta iniziale (richiesta)\n  -InitialServicesFile   File contenente la lista dei servizi iniziali (richiesto)\n
 bootstrap.success=impostazione porta su {0} e lettura servizi da {1} in corso
-bootstrap.filenotreadable=il file {0} non \u00e8 leggibile
+bootstrap.filenotreadable=il file {0} non \u00E8 leggibile
 bootstrap.filenotfound=impossibile trovare il file {0}
-bootstrap.exception=rilevata un''eccezione durante il salvataggio delle propriet\u00e0 nel file {0}: eccezione {1}
+bootstrap.exception=rilevata un''eccezione durante il salvataggio delle propriet\u00E0 nel file {0}: eccezione {1}
 
 tnameserv.exception=rilevata un''eccezione durante l''avvio del servizio di bootstrap sulla porta {0}
 tnameserv.usage=utilizzare un'altra porta con gli argomenti di riga di comando -ORBInitialPort <n.porta>
-tnameserv.invalidhostoption=ORBInitialHost non \u00e8 un'opzione valida per NameService
-tnameserv.orbinitialport0=ORBInitialPort 0 non \u00e8 un'opzione valida per NameService
+tnameserv.invalidhostoption=ORBInitialHost non \u00E8 un'opzione valida per NameService
+tnameserv.orbinitialport0=ORBInitialPort 0 non \u00E8 un'opzione valida per NameService
 tnameserv.hs1=Contesto di denominazione iniziale:\n{0}
 tnameserv.hs2=TransientNameServer: impostazione della porta per i riferimenti degli oggetti iniziali a: {0}
 tnameserv.hs3=Pronto.
 
-orbd.commfailure=\nImpossibile avviare ORBD perch\u00e9 ORBinitialPort \u00e8 gi\u00e0 in uso
-orbd.internalexception=\nImpossibile avviare ORBD a causa di un'eccezione interna. \neCause possibili: \n1. ORBInitialPort o ORBActivationPort specificato gi\u00e0 in uso \n2. Mancanza dei permessi di scrittura per orb.db 
+orbd.commfailure=\nImpossibile avviare ORBD perch\u00E9 ORBinitialPort \u00E8 gi\u00E0 in uso
+orbd.internalexception=\nImpossibile avviare ORBD a causa di un'eccezione interna. \neCause possibili: \n1. ORBInitialPort o ORBActivationPort specificato gi\u00E0 in uso \n2. Non esistono autorizzazioni per scrivere orb.db 
 
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_ja.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_ja.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2005, 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
@@ -23,85 +23,85 @@
 # questions.
 #
 
-orbd.usage=\u4f7f\u3044\u65b9: {0} <options> \n\n<options> \u306b\u306f\u6b21\u306e\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002\n  -port                  ORBD \u306e\u8d77\u52d5\u30dd\u30fc\u30c8\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306f 1049 (\u30aa\u30d7\u30b7\u30e7\u30f3)\n  -defaultdb             ORBD \u30d5\u30a1\u30a4\u30eb\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306f "./orb.db" (\u30aa\u30d7\u30b7\u30e7\u30f3)\n  -serverid              ORBD \u306e\u30b5\u30fc\u30d0 Id\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306f 1 (\u30aa\u30d7\u30b7\u30e7\u30f3)\n  -ORBInitialPort        \u521d\u671f\u30dd\u30fc\u30c8 (\u5fc5\u9808)\n  -ORBInitialHost        \u521d\u671f\u30db\u30b9\u30c8\u540d (\u5fc5\u9808)\n
+orbd.usage=\u4F7F\u7528\u65B9\u6CD5: {0} <options> \n\n<options>\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002\n -port           ORBD\u306E\u8D77\u52D5\u30DD\u30FC\u30C8\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306F1049(\u30AA\u30D7\u30B7\u30E7\u30F3)\n -defaultdb        ORBD\u30D5\u30A1\u30A4\u30EB\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306F"./orb.db"(\u30AA\u30D7\u30B7\u30E7\u30F3)\n -serverid        ORBD\u306E\u30B5\u30FC\u30D0\u30FCId\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306F1(\u30AA\u30D7\u30B7\u30E7\u30F3)\n -ORBInitialPort     \u521D\u671F\u30DD\u30FC\u30C8(\u5FC5\u9808)\n -ORBInitialHost     \u521D\u671F\u30DB\u30B9\u30C8\u540D(\u5FC5\u9808)\n
 
-servertool.usage=\u4f7f\u3044\u65b9: {0} <options> \n\n<options> \u306b\u306f\u6b21\u306e\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002\n  -ORBInitialPort        \u521d\u671f\u30dd\u30fc\u30c8 (\u5fc5\u9808)\n  -ORBInitialHost        \u521d\u671f\u30db\u30b9\u30c8\u540d (\u5fc5\u9808)\n
-servertool.banner=\n\nJava IDL Server Tool \u3078\u3088\u3046\u3053\u305d\n\u30d7\u30ed\u30f3\u30d7\u30c8\u306b\u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 \n
-servertool.shorthelp=\n\n\t\u4f7f\u7528\u53ef\u80fd\u306a\u30b3\u30de\u30f3\u30c9: \n\t------------------- \n
-servertool.baddef=\u4e0d\u6b63\u306a\u30b5\u30fc\u30d0\u5b9a\u7fa9: {0}
-servertool.nosuchserver=\t\u6307\u5b9a\u3055\u308c\u305f\u30b5\u30fc\u30d0\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
-servertool.helddown=\t\u30b5\u30fc\u30d0\u306f\u505c\u6b62\u3057\u3066\u3044\u307e\u3059\u3002
-servertool.nosuchorb=\tORB \u304c\u7121\u52b9\u3067\u3059\u3002
-servertool.serverup=\t\u30b5\u30fc\u30d0\u306f\u8d77\u52d5\u3057\u3066\u3044\u307e\u3059\u3002
-servertool.appname=\tapplicationName     - {0}
-servertool.name=\tname      - {0}
+servertool.usage=\u4F7F\u7528\u65B9\u6CD5: {0} <options> \n\n<options>\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002\n -ORBInitialPort     \u521D\u671F\u30DD\u30FC\u30C8(\u5FC5\u9808)\n -ORBInitialHost     \u521D\u671F\u30DB\u30B9\u30C8\u540D(\u5FC5\u9808)\n
+servertool.banner=\n\nJava IDL Server Tool\u3078\u3088\u3046\u3053\u305D\n\u30D7\u30ED\u30F3\u30D7\u30C8\u306B\u30B3\u30DE\u30F3\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\n
+servertool.shorthelp=\n\n\t\u4F7F\u7528\u53EF\u80FD\u306A\u30B3\u30DE\u30F3\u30C9: \n\t------------------- \n
+servertool.baddef=\u4E0D\u6B63\u306A\u30B5\u30FC\u30D0\u30FC\u5B9A\u7FA9: {0}
+servertool.nosuchserver=\t\u6307\u5B9A\u3055\u308C\u305F\u30B5\u30FC\u30D0\u30FC\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
+servertool.helddown=\t\u30B5\u30FC\u30D0\u30FC\u306F\u505C\u6B62\u3057\u3066\u3044\u307E\u3059\u3002
+servertool.nosuchorb=\tORB\u304C\u7121\u52B9\u3067\u3059\u3002
+servertool.serverup=\t\u30B5\u30FC\u30D0\u30FC\u306F\u8D77\u52D5\u3057\u3066\u3044\u307E\u3059\u3002
+servertool.appname=\tapplicationName   - {0}
+servertool.name=\tname    - {0}
 servertool.classpath=\tclasspath - {0}
-servertool.args=\targs      - {0}
-servertool.vmargs=\tvmargs    - {0}
+servertool.args=\targs    - {0}
+servertool.vmargs=\tvmargs  - {0}
 servertool.serverid=\tserver id - {0}
-servertool.servernotrunning=\t\u30b5\u30fc\u30d0\u306f\u7a3c\u52d5\u3057\u3066\u3044\u307e\u305b\u3093\u3002
-servertool.register=\n\n\tregister -server <server class name> \n\t         -applicationName <alternate server name> \n\t         -classpath <classpath to server> \n\t         -args <args to server> \n\t         -vmargs <args to server Java VM>\n
-servertool.register1=\u8d77\u52d5\u53ef\u80fd\u306a\u30b5\u30fc\u30d0\u3092\u767b\u9332\u3057\u307e\u3059\u3002
-servertool.register2=\t\u767b\u9332\u3055\u308c\u305f\u30b5\u30fc\u30d0 (serverid = {0})\u3002
-servertool.register3=\t\u767b\u9332\u3055\u308c\u3066\u3044\u308b\u304c\u8d77\u52d5\u3057\u3066\u3044\u306a\u3044\u30b5\u30fc\u30d0 (serverid = {0})\u3002
-servertool.register4=\t\u767b\u9332\u6e08\u307f\u306e\u30b5\u30fc\u30d0 (serverid = {0})\u3002
+servertool.servernotrunning=\t\u30B5\u30FC\u30D0\u30FC\u306F\u7A3C\u50CD\u3057\u3066\u3044\u307E\u305B\u3093\u3002
+servertool.register=\n\n\tregister -server <server class name> \n\t      -applicationName <alternate server name> \n\t      -classpath <classpath to server> \n\t      -args <args to server> \n\t      -vmargs <args to server Java VM>\n
+servertool.register1=\u8D77\u52D5\u53EF\u80FD\u306A\u30B5\u30FC\u30D0\u30FC\u3092\u767B\u9332\u3057\u307E\u3059
+servertool.register2=\t\u767B\u9332\u3055\u308C\u305F\u30B5\u30FC\u30D0\u30FC(serverid={0})\u3002
+servertool.register3=\t\u767B\u9332\u3055\u308C\u3066\u3044\u308B\u304C\u8D77\u52D5\u3057\u3066\u3044\u306A\u3044\u30B5\u30FC\u30D0\u30FC(serverid={0})\u3002
+servertool.register4=\t\u767B\u9332\u6E08\u306E\u30B5\u30FC\u30D0\u30FC(serverid={0})\u3002
 
-servertool.unregister=\n\tunregister [ -serverid <server id> | -applicationName <name> ] \n
-servertool.unregister1=\u767b\u9332\u3055\u308c\u305f\u30b5\u30fc\u30d0\u306e\u767b\u9332\u3092\u89e3\u9664\u3057\u307e\u3059\u3002
-servertool.unregister2=\t\u30b5\u30fc\u30d0\u306e\u767b\u9332\u304c\u89e3\u9664\u3055\u308c\u307e\u3057\u305f\u3002
+servertool.unregister=\n\tunregister [ -serverid <server id> | -applicationName <name> ]\n
+servertool.unregister1=\u767B\u9332\u3055\u308C\u305F\u30B5\u30FC\u30D0\u30FC\u306E\u767B\u9332\u3092\u89E3\u9664\u3057\u307E\u3059
+servertool.unregister2=\t\u30B5\u30FC\u30D0\u30FC\u306E\u767B\u9332\u304C\u89E3\u9664\u3055\u308C\u307E\u3057\u305F\u3002
 
-servertool.locate=\n\tlocate [ -serverid <server id> | -applicationName <name> ] [ <-endpointType <endpointType> ] \n
-servertool.locate1=\u767b\u9332\u3055\u308c\u305f\u30b5\u30fc\u30d0\u306e\u7279\u5b9a\u30bf\u30a4\u30d7\u306e\u30dd\u30fc\u30c8\u3092\u691c\u51fa\u3057\u307e\u3059\u3002
-servertool.locate2=\n\n\t\u30db\u30b9\u30c8\u540d {0} \n\n\t\t\u30dd\u30fc\u30c8\t\t\u30dd\u30fc\u30c8\u30bf\u30a4\u30d7\t\tORB ID\n\t\t------\t\t------------\t\t------\n
+servertool.locate=\n\tlocate [ -serverid <server id> | -applicationName <name> ] [ <-endpointType <endpointType> ]\n
+servertool.locate1=\u767B\u9332\u3055\u308C\u305F\u30B5\u30FC\u30D0\u30FC\u306E\u7279\u5B9A\u30BF\u30A4\u30D7\u306E\u30DD\u30FC\u30C8\u3092\u691C\u51FA\u3057\u307E\u3059
+servertool.locate2=\n\n\t\u30DB\u30B9\u30C8\u540D{0}\n\n\t\t\u30DD\u30FC\u30C8\t\t\u30DD\u30FC\u30C8\u30FB\u30BF\u30A4\u30D7\t\tORB ID\n\t\t------\t\t------------\t\t------\n
 servertool.locateorb=\n\tlocateperorb [ -serverid <server id> | -applicationName <name> ] [ -orbid <ORB name> ]\n
-servertool.locateorb1=\u767b\u9332\u3055\u308c\u305f\u30b5\u30fc\u30d0\u306e\u7279\u5b9a ORB \u306e\u30dd\u30fc\u30c8\u3092\u691c\u51fa\u3057\u307e\u3059\u3002
-servertool.locateorb2=\n\n\t\u30db\u30b9\u30c8\u540d {0} \n\n\t\t\u30dd\u30fc\u30c8\t\t\u30dd\u30fc\u30c8\u30bf\u30a4\u30d7\t\tORB ID\n\t\t------\t\t------------\t\t------\n
-servertool.getserverid=\n\tgetserverid [ -applicationName <name> ] \n
-servertool.getserverid1=applicationName \u306e\u30b5\u30fc\u30d0 ID \u3092\u8fd4\u3057\u307e\u3059\u3002
-servertool.getserverid2=\tapplicationName {0} \u306e\u30b5\u30fc\u30d0 ID \u306f {1} \u3067\u3059\u3002
+servertool.locateorb1=\u767B\u9332\u3055\u308C\u305F\u30B5\u30FC\u30D0\u30FC\u306E\u7279\u5B9AORB\u306E\u30DD\u30FC\u30C8\u3092\u691C\u51FA\u3057\u307E\u3059
+servertool.locateorb2=\n\n\t\u30DB\u30B9\u30C8\u540D{0}\n\n\t\t\u30DD\u30FC\u30C8\t\t\u30DD\u30FC\u30C8\u30FB\u30BF\u30A4\u30D7\t\tORB ID\n\t\t------\t\t------------\t\t------\n
+servertool.getserverid=\n\tgetserverid [ -applicationName <name> ]\n
+servertool.getserverid1=applicationName\u306E\u30B5\u30FC\u30D0\u30FCID\u3092\u8FD4\u3057\u307E\u3059
+servertool.getserverid2=\tapplicationName {0}\u306E\u30B5\u30FC\u30D0\u30FCID\u306F{1}\u3067\u3059
 
-servertool.list=\n\t\u30ea\u30b9\u30c8\u3092\u8868\u793a\u3057\u307e\u3059\u3002\n
-servertool.list1=\u767b\u9332\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u30b5\u30fc\u30d0\u306e\u30ea\u30b9\u30c8\u3092\u8868\u793a\u3057\u307e\u3059\u3002
-servertool.list2=\n\t\u30b5\u30fc\u30d0 Id\t\u30b5\u30fc\u30d0\u306e\u30af\u30e9\u30b9\u540d\t\t\u30b5\u30fc\u30d0\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\n\t---------\t----------------\t\t----------------------\n
-servertool.listactive=\n\t\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u30b5\u30fc\u30d0\u306e\u30ea\u30b9\u30c8\u3092\u8868\u793a\u3057\u307e\u3059\u3002
-servertool.listactive1=\u73fe\u5728\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u30b5\u30fc\u30d0\u306e\u30ea\u30b9\u30c8\u3092\u8868\u793a\u3057\u307e\u3059\u3002
-servertool.listappnames=\tapplicationNames \u306e\u30ea\u30b9\u30c8\u3092\u8868\u793a\u3057\u307e\u3059\u3002\n
-servertool.listappnames1=\u73fe\u5728\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b applicationNames \u306e\u30ea\u30b9\u30c8\u3092\u8868\u793a\u3057\u307e\u3059\u3002
-servertool.listappnames2=\u73fe\u5728\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u30b5\u30fc\u30d0 applicationNames:
+servertool.list=\n\t\u30EA\u30B9\u30C8\u3092\u8868\u793A\u3057\u307E\u3059\n
+servertool.list1=\u767B\u9332\u3055\u308C\u305F\u3059\u3079\u3066\u306E\u30B5\u30FC\u30D0\u30FC\u306E\u30EA\u30B9\u30C8\u3092\u8868\u793A\u3057\u307E\u3059
+servertool.list2=\n\t\u30B5\u30FC\u30D0\u30FCID\t\u30B5\u30FC\u30D0\u30FC\u306E\u30AF\u30E9\u30B9\u540D\t\t\u30B5\u30FC\u30D0\u30FC\u30FB\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\n\t---------\t----------------\t\t----------------------\n
+servertool.listactive=\n\t\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30B5\u30FC\u30D0\u30FC\u306E\u30EA\u30B9\u30C8\u3092\u8868\u793A\u3057\u307E\u3059
+servertool.listactive1=\u73FE\u5728\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30B5\u30FC\u30D0\u30FC\u306E\u30EA\u30B9\u30C8\u3092\u8868\u793A\u3057\u307E\u3059
+servertool.listappnames=\tapplicationNames\u306E\u30EA\u30B9\u30C8\u3092\u8868\u793A\u3057\u307E\u3059\n
+servertool.listappnames1=\u73FE\u5728\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308BapplicationNames\u306E\u30EA\u30B9\u30C8\u3092\u8868\u793A\u3057\u307E\u3059
+servertool.listappnames2=\u73FE\u5728\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308B\u30B5\u30FC\u30D0\u30FCapplicationNames:
 
 servertool.shutdown=\n\tshutdown [ -serverid <server id> | -applicationName <name> ]\n
-servertool.shutdown1=\u767b\u9332\u3055\u308c\u305f\u30b5\u30fc\u30d0\u3092\u505c\u6b62\u3057\u307e\u3059\u3002
-servertool.shutdown2=\t\u30b5\u30fc\u30d0\u306e\u505c\u6b62\u306b\u6210\u529f\u3057\u307e\u3057\u305f\u3002
+servertool.shutdown1=\u767B\u9332\u3055\u308C\u305F\u30B5\u30FC\u30D0\u30FC\u3092\u505C\u6B62\u3057\u307E\u3059
+servertool.shutdown2=\t\u30B5\u30FC\u30D0\u30FC\u306E\u505C\u6B62\u306B\u6210\u529F\u3057\u307E\u3057\u305F\u3002
 servertool.startserver=\n\tstartup [ -serverid <server id> | -applicationName <name> ]\n
-servertool.startserver1=\u767b\u9332\u3055\u308c\u305f\u30b5\u30fc\u30d0\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002
-servertool.startserver2=\t\u30b5\u30fc\u30d0\u306e\u8d77\u52d5\u306b\u6210\u529f\u3057\u307e\u3057\u305f\u3002
+servertool.startserver1=\u767B\u9332\u3055\u308C\u305F\u30B5\u30FC\u30D0\u30FC\u3092\u8D77\u52D5\u3057\u307E\u3059
+servertool.startserver2=\t\u30B5\u30FC\u30D0\u30FC\u306E\u8D77\u52D5\u306B\u6210\u529F\u3057\u307E\u3057\u305F\u3002
 
-servertool.quit=\n\tquit\n
-servertool.quit1=\u3053\u306e\u30c4\u30fc\u30eb\u3092\u7d42\u4e86\u3057\u307e\u3059\u3002
+servertool.quit=\n\t\u7D42\u4E86\u3057\u307E\u3059\n
+servertool.quit1=\u3053\u306E\u30C4\u30FC\u30EB\u3092\u7D42\u4E86\u3057\u307E\u3059
 
-servertool.help=\thelp\n\t\u307e\u305f\u306f\n\thelp <command name>\n
-servertool.help1=\u30d8\u30eb\u30d7\u3092\u8868\u793a\u3057\u307e\u3059\u3002
+servertool.help=\thelp\n\t\u307E\u305F\u306F\n\thelp <command name>\n
+servertool.help1=\u30D8\u30EB\u30D7\u3092\u8868\u793A\u3057\u307E\u3059
 
-servertool.orbidmap=\t\u4f7f\u3044\u65b9: orblist [ -serverid <server id> | -applicationName <name> ]\n
-servertool.orbidmap1=ORB \u540d\u304a\u3088\u3073\u305d\u306e\u30de\u30c3\u30d4\u30f3\u30b0\u306e\u30ea\u30b9\u30c8
-servertool.orbidmap2=\n\tORB Id\t\tORB \u540d\n\t------\t\t--------\n
-pnameserv.success=\u6301\u7d9a NameServer \u306e\u8d77\u52d5\u306b\u6210\u529f\u3057\u307e\u3057\u305f\u3002
+servertool.orbidmap=\t\u4F7F\u7528\u65B9\u6CD5: orblist [ -serverid <server id> | -applicationName <name> ]\n
+servertool.orbidmap1=ORB\u540D\u304A\u3088\u3073\u305D\u306E\u30DE\u30C3\u30D4\u30F3\u30B0\u306E\u30EA\u30B9\u30C8
+servertool.orbidmap2=\n\tORB ID\t\tORB\u540D\n\t------\t\t--------\n
+pnameserv.success=\u6301\u7D9ANameServer\u306E\u8D77\u52D5\u306B\u6210\u529F\u3057\u307E\u3057\u305F
 
 
-bootstrap.usage=\u4f7f\u3044\u65b9: {0} <options> \n\n<options> \u306b\u306f\u6b21\u306e\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002\n  -ORBInitialPort        \u521d\u671f\u30dd\u30fc\u30c8 (\u5fc5\u9808)\n  -InitialServicesFile   \u521d\u671f\u30b5\u30fc\u30d3\u30b9\u30ea\u30b9\u30c8\u3092\u542b\u3080\u30d5\u30a1\u30a4\u30eb (\u5fc5\u9808)\n
-bootstrap.success=\u30dd\u30fc\u30c8\u3092 {0} \u306b\u8a2d\u5b9a\u3057\u3001{1} \u304b\u3089\u30b5\u30fc\u30d3\u30b9\u3092\u8aad\u307f\u8fbc\u307f\u307e\u3059\u3002
-bootstrap.filenotreadable=\u30d5\u30a1\u30a4\u30eb {0} \u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3002
-bootstrap.filenotfound=\u30d5\u30a1\u30a4\u30eb {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
-bootstrap.exception=\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u30d5\u30a1\u30a4\u30eb {0} \u306b\u4fdd\u5b58\u4e2d\u306b\u4f8b\u5916\u3092\u30ad\u30e3\u30c3\u30c1\u3057\u307e\u3057\u305f: \u4f8b\u5916 {1}
+bootstrap.usage=\u4F7F\u7528\u65B9\u6CD5: {0} <options> \n\n<options>\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002\n -ORBInitialPort     \u521D\u671F\u30DD\u30FC\u30C8(\u5FC5\u9808)\n -InitialServicesFile  \u521D\u671F\u30B5\u30FC\u30D3\u30B9\u30FB\u30EA\u30B9\u30C8\u3092\u542B\u3080\u30D5\u30A1\u30A4\u30EB(\u5FC5\u9808)\n
+bootstrap.success=\u30DD\u30FC\u30C8\u3092{0}\u306B\u8A2D\u5B9A\u3057\u3001{1}\u304B\u3089\u30B5\u30FC\u30D3\u30B9\u3092\u8AAD\u307F\u8FBC\u307F\u307E\u3059
+bootstrap.filenotreadable=\u30D5\u30A1\u30A4\u30EB{0}\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093
+bootstrap.filenotfound=\u30D5\u30A1\u30A4\u30EB{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
+bootstrap.exception=\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u30D5\u30A1\u30A4\u30EB{0}\u306B\u4FDD\u5B58\u4E2D\u306B\u4F8B\u5916\u3092\u6355\u6349\u3057\u307E\u3057\u305F: \u4F8B\u5916{1}
 
-tnameserv.exception=\u30dd\u30fc\u30c8 {0} \u3067\u30d6\u30fc\u30c8\u30b9\u30c8\u30e9\u30c3\u30d7\u30b5\u30fc\u30d3\u30b9\u3092\u8d77\u52d5\u4e2d\u306b\u4f8b\u5916\u3092\u30ad\u30e3\u30c3\u30c1\u3057\u307e\u3057\u305f\u3002
-tnameserv.usage=\u30b3\u30de\u30f3\u30c9\u884c\u5f15\u6570 -ORBInitialPort <portno> \u3092\u4f7f\u3063\u3066\u5225\u306e\u30dd\u30fc\u30c8\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-tnameserv.invalidhostoption=ORBInitialHost \u306f NameService \u306b\u6709\u52b9\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-tnameserv.orbinitialport0=ORBInitialPort 0 \u306f NameService \u306b\u6709\u52b9\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-tnameserv.hs1=\u521d\u671f\u30cd\u30fc\u30df\u30f3\u30b0\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8:\n{0}
-tnameserv.hs2=TransientNameServer: \u521d\u671f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u53c2\u7167\u306e\u30dd\u30fc\u30c8\u3092 {0} \u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002
-tnameserv.hs3=\u6e96\u5099\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002
+tnameserv.exception=\u30DD\u30FC\u30C8{0}\u3067\u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u30FB\u30B5\u30FC\u30D3\u30B9\u3092\u8D77\u52D5\u4E2D\u306B\u4F8B\u5916\u3092\u6355\u6349\u3057\u307E\u3057\u305F
+tnameserv.usage=\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u5F15\u6570-ORBInitialPort<portno>\u3092\u4F7F\u7528\u3057\u3066\u5225\u306E\u30DD\u30FC\u30C8\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044
+tnameserv.invalidhostoption=ORBInitialHost\u306FNameService\u306B\u6709\u52B9\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u306F\u3042\u308A\u307E\u305B\u3093
+tnameserv.orbinitialport0=ORBInitialPort 0\u306FNameService\u306B\u6709\u52B9\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u306F\u3042\u308A\u307E\u305B\u3093
+tnameserv.hs1=\u521D\u671F\u30CD\u30FC\u30DF\u30F3\u30B0\u30FB\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8:\n{0}
+tnameserv.hs2=TransientNameServer: \u521D\u671F\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u53C2\u7167\u306E\u30DD\u30FC\u30C8\u3092{0}\u306B\u8A2D\u5B9A\u3057\u307E\u3059
+tnameserv.hs3=\u6E96\u5099\u304C\u5B8C\u4E86\u3057\u307E\u3057\u305F\u3002
 
-orbd.commfailure=\nORBinitialPort \u304c\u4f7f\u7528\u4e2d\u3067\u3042\u308b\u305f\u3081\u3001ORBD \u306e\u8d77\u52d5\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002
-orbd.internalexception=\n\u5185\u90e8\u4f8b\u5916\u306e\u305f\u3081\u306b ORBD \u306e\u8d77\u52d5\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\n\u8003\u3048\u3089\u308c\u308b\u539f\u56e0: \n1. \u6307\u5b9a\u3055\u308c\u305f ORBInitialPort \u307e\u305f\u306f ORBActivationPort \u304c\u4f7f\u7528\u4e2d\n2. orb.db \u3078\u306e\u66f8\u304d\u8fbc\u307f\u6a29\u9650\u304c\u306a\u3044 
+orbd.commfailure=\nORBinitialPort\u304C\u4F7F\u7528\u4E2D\u3067\u3042\u308B\u305F\u3081\u3001ORBD\u306E\u8D77\u52D5\u306B\u5931\u6557\u3057\u307E\u3057\u305F
+orbd.internalexception=\n\u5185\u90E8\u4F8B\u5916\u306E\u305F\u3081\u306BORBD\u306E\u8D77\u52D5\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\n\u8003\u3048\u3089\u308C\u308B\u539F\u56E0: \n1. \u6307\u5B9A\u3055\u308C\u305FORBInitialPort\u307E\u305F\u306FORBActivationPort\u304C\u4F7F\u7528\u4E2D\n2. orb.db\u3078\u306E\u66F8\u8FBC\u307F\u6A29\u9650\u304C\u306A\u3044 
 
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_ko.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_ko.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2005, 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
@@ -23,85 +23,85 @@
 # questions.
 #
 
-orbd.usage=\uc0ac\uc6a9\ubc95: {0} <\uc635\uc158> \n\n<\uc635\uc158>\uc5d0 \ub4e4\uc5b4\uac00\ub294 \ud56d\ubaa9\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.\n  -port                  ORBD\uac00 \uc2dc\uc791\ub418\uc5b4\uc57c \ud558\ub294 \ud65c\uc131 \ud3ec\ud2b8\ub85c \uae30\ubcf8\uac12\uc740 1049\uc785\ub2c8\ub2e4(\uc120\ud0dd \uc0ac\ud56d).\n  -defaultdb             ORBD \ud30c\uc77c\uc758 \ub514\ub809\ud1a0\ub9ac. \uae30\ubcf8\uac12\uc740 "./orb.db"\uc785\ub2c8\ub2e4(\uc120\ud0dd \uc0ac\ud56d).\n  -serverid              ORBD\uc758 \uc11c\ubc84 ID. \uae30\ubcf8\uac12\uc740 1 \uc785\ub2c8\ub2e4(\uc120\ud0dd \uc0ac\ud56d).\n  -ORBInitialPort        \ucd08\uae30 \ud3ec\ud2b8(\ud544\uc218)\n  -ORBInitialHost        \ucd08\uae30 \ud638\uc2a4\ud2b8\uba85(\ud544\uc218)\n
+orbd.usage=\uC0AC\uC6A9\uBC95: {0} <options> \n\n\uC5EC\uAE30\uC11C <options>\uB294 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4.\n  -port                  ORBD\uAC00 \uC2DC\uC791\uB418\uC5B4\uC57C \uD558\uB294 \uD65C\uC131 \uD3EC\uD2B8\uB85C, \uAE30\uBCF8\uAC12\uC740 1049\uC785\uB2C8\uB2E4(\uC120\uD0DD \uC0AC\uD56D).\n  -defaultdb             ORBD \uD30C\uC77C\uC758 \uB514\uB809\uD1A0\uB9AC\uB85C, \uAE30\uBCF8\uAC12\uC740 "./orb.db"\uC785\uB2C8\uB2E4(\uC120\uD0DD \uC0AC\uD56D).\n  -serverid              ORBD\uC758 \uC11C\uBC84 ID\uB85C, \uAE30\uBCF8\uAC12\uC740 1 \uC785\uB2C8\uB2E4(\uC120\uD0DD \uC0AC\uD56D).\n  -ORBInitialPort        \uCD08\uAE30 \uD3EC\uD2B8\uC785\uB2C8\uB2E4(\uD544\uC218).\n  -ORBInitialHost        \uCD08\uAE30 HostName\uC785\uB2C8\uB2E4(\uD544\uC218).\n
 
-servertool.usage=\uc0ac\uc6a9\ubc95: {0} <\uc635\uc158> \n\n<\uc635\uc158>\uc5d0 \ub4e4\uc5b4\uac00\ub294 \ud56d\ubaa9\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.\n  -ORBInitialPort        \ucd08\uae30 \ud3ec\ud2b8(\ud544\uc218)\n  -ORBInitialHost        \ucd08\uae30 \ud638\uc2a4\ud2b8\uba85(\ud544\uc218)\n
-servertool.banner=\n\nJava IDL \uc11c\ubc84 \ub3c4\uad6c\uc785\ub2c8\ub2e4\n\ud504\ub86c\ud504\ud2b8\uc5d0 \uba85\ub839\uc5b4\ub97c \uc785\ub825\ud558\uc2ed\uc2dc\uc624\n
-servertool.shorthelp=\n\n\t\uc0ac\uc6a9 \uac00\ub2a5\ud55c \uba85\ub839\uc5b4:  \n\t------------------- \n
-servertool.baddef=\uc798\ubabb\ub41c \uc11c\ubc84 \uc815\uc758: {0}
-servertool.nosuchserver=\t\ud574\ub2f9 \uc11c\ubc84\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
-servertool.helddown=\t\uc11c\ubc84\uac00 \ub2e4\uc6b4\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
-servertool.nosuchorb=\t\uc798\ubabb\ub41c ORB.
-servertool.serverup=\t\uc11c\ubc84\uac00 \uc774\ubbf8 \uac00\ub3d9\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
-servertool.appname=\t\uc751\uc6a9\ud504\ub85c\uadf8\ub7a8 \uc774\ub984     - {0}
-servertool.name=\t\uc774\ub984      - {0}
+servertool.usage=\uC0AC\uC6A9\uBC95: {0} <options> \n\n\uC5EC\uAE30\uC11C <options>\uB294 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4.\n  -ORBInitialPort        \uCD08\uAE30 \uD3EC\uD2B8\uC785\uB2C8\uB2E4(\uD544\uC218).\n  -ORBInitialHost        \uCD08\uAE30 HostName\uC785\uB2C8\uB2E4(\uD544\uC218).\n
+servertool.banner=\n\nJava IDL \uC11C\uBC84 \uD234 \uC2DC\uC791 \n\uD504\uB86C\uD504\uD2B8\uC5D0 \uBA85\uB839\uC744 \uC785\uB825\uD558\uC2ED\uC2DC\uC624.\n
+servertool.shorthelp=\n\n\t\uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uBA85\uB839: \n\t------------------- \n
+servertool.baddef=\uC798\uBABB\uB41C \uC11C\uBC84 \uC815\uC758: {0}
+servertool.nosuchserver=\t\uD574\uB2F9 \uC11C\uBC84\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+servertool.helddown=\t\uC11C\uBC84\uC758 \uC791\uB3D9\uC774 \uC911\uC9C0\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+servertool.nosuchorb=\tORB\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
+servertool.serverup=\t\uC11C\uBC84\uAC00 \uC774\uBBF8 \uC791\uB3D9 \uC911\uC785\uB2C8\uB2E4.
+servertool.appname=\tapplicationName     - {0}
+servertool.name=\tname      - {0}
 servertool.classpath=\tclasspath - {0}
 servertool.args=\targs      - {0}
 servertool.vmargs=\tvmargs    - {0}
-servertool.serverid=\t\uc11c\ubc84 ID - {0}
-servertool.servernotrunning=\t\uc11c\ubc84\uac00 \uc2e4\ud589 \uc911\uc774 \uc544\ub2d9\ub2c8\ub2e4.
-servertool.register=\n\n\tregister -server <\uc11c\ubc84 \ud074\ub798\uc2a4 \uc774\ub984> \n\t         -applicationName <\ub300\uccb4 \uc11c\ubc84 \uc774\ub984> \n\t         -classpath <\uc11c\ubc84\uc758 classpath> \n\t         -args <\uc11c\ubc84 \uc778\uc790> \n\t         -vmargs <\uc11c\ubc84 Java VM \uc778\uc790>\n
-servertool.register1=\ud65c\uc131 \uac00\ub2a5 \uc11c\ubc84 \ub4f1\ub85d
-servertool.register2=\t\uc11c\ubc84\uac00 \ub4f1\ub85d\ub418\uc5c8\uc2b5\ub2c8\ub2e4(serverid = {0}).
-servertool.register3=\t\uc11c\ubc84\uac00 \ub4f1\ub85d\ub418\uc5c8\uc9c0\ub9cc \ub2e4\uc6b4\ub418\uc5c8\uc2b5\ub2c8\ub2e4(serverid = {0}).
-servertool.register4=\t\uc11c\ubc84\uac00 \uc774\ubbf8 \ub4f1\ub85d\ub418\uc5c8\uc2b5\ub2c8\ub2e4(serverid = {0}).
+servertool.serverid=\tserver id - {0}
+servertool.servernotrunning=\t\uC11C\uBC84\uAC00 \uC2E4\uD589 \uC911\uC774 \uC544\uB2D9\uB2C8\uB2E4.
+servertool.register=\n\n\tregister -server <server class name> \n\t         -applicationName <alternate server name> \n\t         -classpath <classpath to server> \n\t         -args <args to server> \n\t         -vmargs <args to server Java VM>\n
+servertool.register1=\uD65C\uC131 \uAC00\uB2A5 \uC11C\uBC84 \uB4F1\uB85D
+servertool.register2=\t\uC11C\uBC84\uAC00 \uB4F1\uB85D\uB418\uC5C8\uC2B5\uB2C8\uB2E4(serverid = {0}).
+servertool.register3=\t\uC11C\uBC84\uAC00 \uB4F1\uB85D\uB418\uC5C8\uC9C0\uB9CC \uC791\uB3D9\uC774 \uC911\uC9C0\uB418\uC5C8\uC2B5\uB2C8\uB2E4(serverid = {0}).
+servertool.register4=\t\uC11C\uBC84\uAC00 \uC774\uBBF8 \uB4F1\uB85D\uB418\uC5C8\uC2B5\uB2C8\uB2E4(serverid = {0}).
 
-servertool.unregister=\n\tunregister [ -serverid <\uc11c\ubc84 ID> | -applicationName <\uc774\ub984> ] \n
-servertool.unregister1=\ub4f1\ub85d\ub41c \uc11c\ubc84\uc758 \ub4f1\ub85d\uc744 \ucde8\uc18c\ud569\ub2c8\ub2e4
-servertool.unregister2=\t\uc11c\ubc84\uac00 \ub4f1\ub85d \ucde8\uc18c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+servertool.unregister=\n\tunregister [ -serverid <server id> | -applicationName <name> ] \n
+servertool.unregister1=\uB4F1\uB85D\uB41C \uC11C\uBC84\uC758 \uB4F1\uB85D \uD574\uC81C
+servertool.unregister2=\t\uC11C\uBC84\uC758 \uB4F1\uB85D\uC774 \uD574\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
 
-servertool.locate=\n\tlocate [ -serverid <\uc11c\ubc84 ID> | -applicationName <\uc774\ub984> ] [ <-endpointType <Endpoint \uc885\ub958> ] \n
-servertool.locate1=\ub4f1\ub85d\ub41c \uc11c\ubc84\uc5d0 \ub300\ud55c \ud2b9\uc815 \uc885\ub958\uc758 \ud3ec\ud2b8\ub97c \ucc3e\uc2b5\ub2c8\ub2e4
-servertool.locate2=\n\n\t\ud638\uc2a4\ud2b8 \uc774\ub984 {0} \n\n\t\t\ud3ec\ud2b8\t\t\ud3ec\ud2b8 \uc885\ub958\t\tORB ID\n\t\t----\t\t---------\t\t------\n
-servertool.locateorb=\n\tlocateperorb [ -serverid <\uc11c\ubc84 ID> | -applicationName <\uc774\ub984> ] [ -orbid <ORB \uc774\ub984> ]\n
-servertool.locateorb1=\ub4f1\ub85d\ub41c \uc11c\ubc84\uc758 \ud2b9\uc815 ORB\uc5d0 \ub300\ud55c \ud3ec\ud2b8\ub97c \ucc3e\uc2b5\ub2c8\ub2e4
-servertool.locateorb2=\n\n\t\ud638\uc2a4\ud2b8 \uc774\ub984 {0} \n\n\t\t\ud3ec\ud2b8\t\t\ud3ec\ud2b8 \uc885\ub958\t\tORB ID\n\t\t----\t\t--------\t\t------\n
-servertool.getserverid=\n\tgetserverid [ -applicationName <\uc774\ub984> ] \n
-servertool.getserverid1=\uc9c0\uc815\ud55c \uc751\uc6a9\ud504\ub85c\uadf8\ub7a8 \uc774\ub984\uc5d0 \ub300\ud55c \uc11c\ubc84 ID\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.
-servertool.getserverid2=\t\uc751\uc6a9\ud504\ub85c\uadf8\ub7a8 \uc774\ub984 {0}\uc5d0 \ub300\ud55c \uc11c\ubc84 ID\ub294 {1}\uc785\ub2c8\ub2e4.
+servertool.locate=\n\tlocate [ -serverid <server id> | -applicationName <name> ] [ <-endpointType <endpointType> ] \n
+servertool.locate1=\uB4F1\uB85D\uB41C \uC11C\uBC84\uC5D0 \uB300\uD55C \uD2B9\uC815 \uC720\uD615\uC758 \uD3EC\uD2B8 \uCC3E\uAE30
+servertool.locate2=\n\n\t\uD638\uC2A4\uD2B8 \uC774\uB984 {0} \n\n\t\t\uD3EC\uD2B8\t\t\uD3EC\uD2B8 \uC720\uD615\t\tORB ID\n\t\t----\t\t---------\t\t------\n
+servertool.locateorb=\n\tlocateperorb [ -serverid <server id> | -applicationName <name> ] [ -orbid <ORB name> ]\n
+servertool.locateorb1=\uB4F1\uB85D\uB41C \uC11C\uBC84\uC5D0 \uB300\uD55C \uD2B9\uC815 ORB\uC758 \uD3EC\uD2B8 \uCC3E\uAE30
+servertool.locateorb2=\n\n\t\uD638\uC2A4\uD2B8 \uC774\uB984 {0} \n\n\t\t\uD3EC\uD2B8\t\tPortType\t\tORB ID\n\t\t----\t\t--------\t\t------\n
+servertool.getserverid=\n\tgetserverid [ -applicationName <name> ] \n
+servertool.getserverid1=applicationName\uC5D0 \uB300\uD55C \uC11C\uBC84 ID \uBC18\uD658
+servertool.getserverid2=\tapplicationName {0}\uC5D0 \uB300\uD55C \uC11C\uBC84 ID\uB294 {1}\uC785\uB2C8\uB2E4.
 
-servertool.list=\n\t\ubaa9\ub85d\n
-servertool.list1=\ub4f1\ub85d\ub41c \uc11c\ubc84\ub97c \ubaa8\ub450 \ub098\uc5f4\ud569\ub2c8\ub2e4.
-servertool.list2=\n\t\uc11c\ubc84 ID\t\uc11c\ubc84 \ud074\ub798\uc2a4 \uc774\ub984\t\t\uc11c\ubc84 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\n\t---------\t-----------------\t\t------------------\n
+servertool.list=\n\t\uBAA9\uB85D\n
+servertool.list1=\uB4F1\uB85D\uB41C \uC11C\uBC84 \uBAA8\uB450 \uB098\uC5F4
+servertool.list2=\n\t\uC11C\uBC84 ID\t\uC11C\uBC84 \uD074\uB798\uC2A4 \uC774\uB984\t\t\uC11C\uBC84 \uC751\uC6A9 \uD504\uB85C\uADF8\uB7A8\n\t---------\t-----------------\t\t------------------\n
 servertool.listactive=\n\tlistactive
-servertool.listactive1=\ud604\uc7ac\uc758 \ud65c\uc131 \uc11c\ubc84\ub97c \ub098\uc5f4\ud569\ub2c8\ub2e4.
+servertool.listactive1=\uD604\uC7AC \uD65C\uC131 \uC11C\uBC84 \uB098\uC5F4
 servertool.listappnames=\tlistappnames\n
-servertool.listappnames1=\ud604\uc7ac \uc815\uc758\ub41c \uc751\uc6a9\ud504\ub85c\uadf8\ub7a8 \uc774\ub984\uc744 \ub098\uc5f4\ud569\ub2c8\ub2e4.
-servertool.listappnames2=\ud604\uc7ac \uc815\uc758\ub41c \uc11c\ubc84 \uc751\uc6a9\ud504\ub85c\uadf8\ub7a8 \uc774\ub984:
+servertool.listappnames1=\uD604\uC7AC \uC815\uC758\uB41C applicationNames \uB098\uC5F4
+servertool.listappnames2=\uD604\uC7AC \uC815\uC758\uB41C \uC11C\uBC84 applicationNames:
 
-servertool.shutdown=\n\tshutdown [ -serverid <\uc11c\ubc84 ID> | -applicationName <\uc774\ub984> ]\n
-servertool.shutdown1=\ub4f1\ub85d\ub41c \uc11c\ubc84\ub97c \uc885\ub8cc\ud569\ub2c8\ub2e4.
-servertool.shutdown2=\t\uc11c\ubc84\uac00 \uc131\uacf5\uc801\uc73c\ub85c \uc885\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
-servertool.startserver=\n\tstartup [ -serverid <\uc11c\ubc84 ID> | -applicationName <\uc774\ub984> ]\n
-servertool.startserver1=\ub4f1\ub85d\ub41c \uc11c\ubc84\ub97c \uc2dc\uc791\ud569\ub2c8\ub2e4.
-servertool.startserver2=\t\uc11c\ubc84\uac00 \uc131\uacf5\uc801\uc73c\ub85c \uc2dc\uc791\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+servertool.shutdown=\n\tshutdown [ -serverid <server id> | -applicationName <name> ]\n
+servertool.shutdown1=\uB4F1\uB85D\uB41C \uC11C\uBC84 \uC885\uB8CC
+servertool.shutdown2=\t\uC11C\uBC84\uAC00 \uC131\uACF5\uC801\uC73C\uB85C \uC885\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+servertool.startserver=\n\tstartup [ -serverid <server id> | -applicationName <name> ]\n
+servertool.startserver1=\uB4F1\uB85D\uB41C \uC11C\uBC84 \uC2DC\uC791
+servertool.startserver2=\t\uC11C\uBC84\uAC00 \uC131\uACF5\uC801\uC73C\uB85C \uC2DC\uC791\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
 
 servertool.quit=\n\tquit\n
-servertool.quit1=\uc774 \ub3c4\uad6c\ub97c \uc885\ub8cc\ud569\ub2c8\ub2e4.
+servertool.quit1=\uC774 \uD234 \uC885\uB8CC
 
-servertool.help=\thelp\n\t\ub610\ub294\n\thelp <\uba85\ub839\uc5b4 \uc774\ub984>\n
-servertool.help1=\ub3c4\uc6c0\ub9d0\uc744 \ud45c\uc2dc\ud569\ub2c8\ub2e4.
+servertool.help=\thelp\n\tOR\n\thelp <command name>\n
+servertool.help1=\uB3C4\uC6C0\uB9D0 \uD45C\uC2DC
 
-servertool.orbidmap=\tUsage:orblist [ -serverid <\uc11c\ubc84 ID> | -applicationName <\uc774\ub984> ]\n
-servertool.orbidmap1=ORB \uc774\ub984\uacfc \ud574\ub2f9 \ub9e4\ud551\uc744 \ub098\uc5f4\ud569\ub2c8\ub2e4
-servertool.orbidmap2=\n\tORB ID\t\tORB \uc774\ub984\n\t------\t\t--------\n
-pnameserv.success=\uc9c0\uc18d \uc774\ub984 \uc11c\ubc84\uac00 \uc131\uacf5\uc801\uc73c\ub85c \uc2dc\uc791\ub418\uc5c8\uc2b5\ub2c8\ub2e4
+servertool.orbidmap=\t\uC0AC\uC6A9\uBC95: orblist [ -serverid <server id> | -applicationName <name> ]\n
+servertool.orbidmap1=ORB \uC774\uB984\uACFC \uD574\uB2F9 \uB9E4\uD551 \uB098\uC5F4
+servertool.orbidmap2=\n\tORB ID\t\tORB \uC774\uB984\n\t------\t\t--------\n
+pnameserv.success=\uC9C0\uC18D NameServer\uAC00 \uC131\uACF5\uC801\uC73C\uB85C \uC2DC\uC791\uB428
 
 
-bootstrap.usage=\uc0ac\uc6a9\ubc95: {0} <\uc635\uc158> \n\n<\uc635\uc158>\uc5d0 \ub4e4\uc5b4\uac00\ub294 \ud56d\ubaa9\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.\n  -ORBInitialPort        \ucd08\uae30 \ud3ec\ud2b8(\ud544\uc218)\n  -InitialServicesFile   \ucd08\uae30 \uc11c\ube44\uc2a4 \ubaa9\ub85d\uc774 \ub4e4\uc5b4 \uc788\ub294 \ud30c\uc77c(\ud544\uc218)\n
-bootstrap.success=\ud3ec\ud2b8\ub97c {0}(\uc73c)\ub85c \uc124\uc815\ud558\uace0 {1}\uc5d0\uc11c \uc11c\ube44\uc2a4\ub97c \uc77d\uc2b5\ub2c8\ub2e4
-bootstrap.filenotreadable={0} \ud30c\uc77c\uc744 \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4
-bootstrap.filenotfound={0} \ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4
-bootstrap.exception={0} \ud30c\uc77c\uc5d0 \ub4f1\ub85d \uc815\ubcf4\ub97c \uc800\uc7a5\ud558\ub294 \ub3d9\uc548 \uc608\uc678\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.\uc608\uc678 {1}
+bootstrap.usage=\uC0AC\uC6A9\uBC95: {0} <options> \n\n\uC5EC\uAE30\uC11C <options>\uB294 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4.\n  -ORBInitialPort        \uCD08\uAE30 \uD3EC\uD2B8\uC785\uB2C8\uB2E4(\uD544\uC218).\n  -InitialServicesFile   \uCD08\uAE30 \uC11C\uBE44\uC2A4 \uBAA9\uB85D\uC774 \uB4E4\uC5B4 \uC788\uB294 \uD30C\uC77C\uC785\uB2C8\uB2E4(\uD544\uC218).\n
+bootstrap.success=\uD3EC\uD2B8\uB97C {0}(\uC73C)\uB85C \uC124\uC815\uD558\uACE0 {1}\uC5D0\uC11C \uC11C\uBE44\uC2A4\uB97C \uC77D\uB294 \uC911
+bootstrap.filenotreadable={0} \uD30C\uC77C\uC744 \uC77D\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+bootstrap.filenotfound={0} \uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+bootstrap.exception={0} \uD30C\uC77C\uC5D0 \uC18D\uC131\uC744 \uC800\uC7A5\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {1} \uC608\uC678 \uC0AC\uD56D
 
-tnameserv.exception={0} \ud3ec\ud2b8\uc5d0\uc11c \ubd80\ud2b8\uc2a4\ud2b8\ub7a9 \uc11c\ube44\uc2a4\ub97c \uc2dc\uc791\ud558\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4
-tnameserv.usage=ORBInitialPort <\ud3ec\ud2b8 \ubc88\ud638> \uba85\ub839\uc904 \uc778\uc790\ub85c \ub2e4\ub978 \ud3ec\ud2b8 \uc0ac\uc6a9\uc744 \uc2dc\ub3c4\ud569\ub2c8\ub2e4
-tnameserv.invalidhostoption=ORBInitialHost\ub294 NameService\uc758 \uc720\ud6a8\ud55c \uc635\uc158\uc774 \uc544\ub2d9\ub2c8\ub2e4.
-tnameserv.orbinitialport0=ORBInitialPort 0\uc740 NameService\uc758 \uc720\ud6a8\ud55c \uc635\uc158\uc774 \uc544\ub2d9\ub2c8\ub2e4
-tnameserv.hs1=\ucd08\uae30 \uba85\ub839 \ucee8\ud14d\uc2a4\ud2b8:\n{0}
-tnameserv.hs2=TransientNameServer:\ucd08\uae30 \uac1d\uccb4 \ucc38\uc870\ub97c \uc704\ud55c \ud3ec\ud2b8 \uc124\uc815: {0} {0}
-tnameserv.hs3=\uc900\ube44\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+tnameserv.exception={0} \uD3EC\uD2B8\uC5D0\uC11C \uBD80\uD2B8\uC2A4\uD2B8\uB7A9 \uC11C\uBE44\uC2A4\uB97C \uC2DC\uC791\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
+tnameserv.usage=-ORBInitialPort <portno> \uBA85\uB839\uD589 \uC778\uC218\uB85C \uB2E4\uB978 \uD3EC\uD2B8 \uC0AC\uC6A9 \uC2DC\uB3C4
+tnameserv.invalidhostoption=ORBInitialHost\uB294 NameService\uC5D0 \uB300\uD574 \uC801\uD569\uD55C \uC635\uC158\uC774 \uC544\uB2D9\uB2C8\uB2E4.
+tnameserv.orbinitialport0=ORBInitialPort 0\uC740 NameService\uC5D0 \uB300\uD574 \uC801\uD569\uD55C \uC635\uC158\uC774 \uC544\uB2D9\uB2C8\uB2E4.
+tnameserv.hs1=\uCD08\uAE30 \uC774\uB984 \uC9C0\uC815 \uCEE8\uD14D\uC2A4\uD2B8:\n{0}
+tnameserv.hs2=TransientNameServer: \uCD08\uAE30 \uAC1D\uCCB4 \uCC38\uC870\uB97C \uC704\uD55C \uD3EC\uD2B8\uB97C {0}(\uC73C)\uB85C \uC124\uC815\uD558\uB294 \uC911
+tnameserv.hs3=\uC900\uBE44\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
 
-orbd.commfailure=\nORBinitialPort\uac00 \uc774\ubbf8 \uc0ac\uc6a9 \uc911\uc774\ubbc0\ub85c ORBD\ub97c \uc2dc\uc791\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-orbd.internalexception=\n\ub0b4\ubd80 \uc624\ub958\ub85c \uc778\ud574 ORBD\ub97c \uc2dc\uc791\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.\n\uac00\ub2a5\ud55c \uc774\uc720: \n1. \uc9c0\uc815\ud55c ORBInitialPort \ub610\ub294 ORBActivationPort\uac00 \uc774\ubbf8 \uc0ac\uc6a9 \uc911\uc785\ub2c8\ub2e4.\n2. orb.db\uc744 \uc791\uc131\ud560 \uc4f0\uae30 \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. 
+orbd.commfailure=\nORBinitialPort\uAC00 \uC774\uBBF8 \uC0AC\uC6A9 \uC911\uC774\uC5B4\uC11C ORBD \uC2DC\uC791\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+orbd.internalexception=\n\uB0B4\uBD80 \uC608\uC678 \uC0AC\uD56D\uC73C\uB85C \uC778\uD574 ORBD \uC2DC\uC791\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. \n\uAC00\uB2A5\uD55C \uC6D0\uC778: \n1. \uC9C0\uC815\uB41C ORBInitialPort \uB610\uB294 ORBActivationPort\uAC00 \uC774\uBBF8 \uC0AC\uC6A9 \uC911\uC785\uB2C8\uB2E4.\n2. orb.db\uB97C \uC4F8 \uC218 \uC788\uB294 \uC4F0\uAE30 \uAD8C\uD55C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. 
 
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_pt_BR.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_pt_BR.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
-
-# Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+#
+# Copyright (c) 2000, 2005, 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
@@ -23,85 +23,85 @@
 # questions.
 #
 
-orbd.usage=Uso: {0} <options> \n\nem que <options> inclui:\n  -port                  porta de ativa\u00e7\u00e3o na qual o ORBD deve ser iniciado, padr\u00e3o 1049 (opcional)\n  -defaultdb             diret\u00f3rio dos arquivos ORBD, padr\u00e3o "./orb.db" (opcional)\n  -serverid              id do servidor para ORBD, padr\u00e3o 1 (opcional)\n  -ORBInitialPort        porta inicial (necess\u00e1rio)\n  -ORBInitialHost        nome de host inicial (necess\u00e1rio)\n
+orbd.usage=Uso: {0} <options> \n\nem que <options> inclui:\n  -port                  porta de ativa\u00E7\u00E3o na qual o ORBD deve ser iniciado, default 1049 (opcional)\n  -defaultdb             diret\u00F3rio dos arquivos ORBD, default "./orb.db" (opcional)\n  -serverid              id do servidor para ORBD, default 1 (opcional)\n  -ORBInitialPort        porta inicial (necess\u00E1rio)\n  -ORBInitialHost        nome de host inicial (necess\u00E1rio)\n
 
-servertool.usage=Uso: {0} <options> \n\nem que <options> inclui:\n  -ORBInitialPort        porta inicial (necess\u00e1rio)\n  -ORBInitialHost        nome de host inicial (necess\u00e1rio)\n
-servertool.banner=\n\nBem-vindo a ferramenta de servidor IDL Java \ninsira os comandos no prompt \n
-servertool.shorthelp=\n\n\tComandos dispon\u00edveis: \n\t------------------- \n
-servertool.baddef=Servidor mal definido: {0}
-servertool.nosuchserver=\tservidor n\u00e3o encontrado.
-servertool.helddown=\to servidor est\u00e1 em espera.
-servertool.nosuchorb=\tORB inv\u00e1lido.
-servertool.serverup=\to servidor j\u00e1 est\u00e1 ativo.
+servertool.usage=Uso: {0} <options> \n\nem que <options> inclui:\n  -ORBInitialPort        porta inicial (necess\u00E1rio)\n  -ORBInitialHost        nome de host inicial (necess\u00E1rio)\n
+servertool.banner=\n\nBem-vindo \u00E0 Ferramenta de Servidor IDL Java \ninsira os comandos no prompt \n
+servertool.shorthelp=\n\n\tComandos Dispon\u00EDveis: \n\t------------------- \n
+servertool.baddef=Defini\u00E7\u00E3o do servidor inv\u00E1lida: {0}
+servertool.nosuchserver=\tservidor n\u00E3o encontrado.
+servertool.helddown=\to servidor est\u00E1 em espera.
+servertool.nosuchorb=\tORB inv\u00E1lido.
+servertool.serverup=\to servidor j\u00E1 est\u00E1 ativo.
 servertool.appname=\tapplicationName     - {0}
 servertool.name=\tname      - {0}
 servertool.classpath=\tclasspath - {0}
 servertool.args=\targs      - {0}
 servertool.vmargs=\tvmargs    - {0}
 servertool.serverid=\tserver id - {0}
-servertool.servernotrunning=\to servidor n\u00e3o est\u00e1 em execu\u00e7\u00e3o.
+servertool.servernotrunning=\to servidor n\u00E3o est\u00E1 em execu\u00E7\u00E3o.
 servertool.register=\n\n\tregister -server <server class name> \n\t         -applicationName <alternate server name> \n\t         -classpath <classpath to server> \n\t         -args <args to server> \n\t         -vmargs <args to server Java VM>\n
-servertool.register1=registra um servidor ativ\u00e1vel
+servertool.register1=registra um servidor ativ\u00E1vel
 servertool.register2=\tservidor registrado (serverid = {0}).
 servertool.register3=\tservidor registrado, mas em espera (serverid = {0}).
-servertool.register4=\tservidor j\u00e1 registrado (serverid = {0}).
+servertool.register4=\tservidor j\u00E1 registrado (serverid = {0}).
 
 servertool.unregister=\n\tunregister [ -serverid <server id> | -applicationName <name> ] \n
 servertool.unregister1=cancela o registro de um servidor registrado
-servertool.unregister2=\tservidor n\u00e3o registrado.
+servertool.unregister2=\tservidor n\u00E3o registrado.
 
 servertool.locate=\n\tlocate [ -serverid <server id> | -applicationName <name> ] [ <-endpointType <endpointType> ] \n
-servertool.locate1=localiza portas de tipo espec\u00edfico para um servidor registrado
-servertool.locate2=\n\n\tNome do host {0} \n\n\t\tPorta\t\tTipo de porta\t\tId do ORB\n\t\t----\t\t---------\t\t------\n
+servertool.locate1=localiza portas de tipo espec\u00EDfico para um servidor registrado
+servertool.locate2=\n\n\tNome do Host {0} \n\n\t\tPorta\t\tTipo de Porta\t\tId do ORB\n\t\t----\t\t---------\t\t------\n
 servertool.locateorb=\n\tlocateperorb [ -serverid <server id> | -applicationName <name> ] [ -orbid <ORB name> ]\n
-servertool.locateorb1=localiza portas para um orb espec\u00edfico de servidor registrado
-servertool.locateorb2=\n\n\tNome do host {0} \n\n\t\tPorta\t\tTipo de porta\t\tId do ORB\n\t\t----\t\t--------\t\t------\n
+servertool.locateorb1=localiza portas para um orb espec\u00EDfico de servidor registrado
+servertool.locateorb2=\n\n\tNome do Host {0} \n\n\t\tPorta\t\tTipo de Porta\t\tId do ORB\n\t\t----\t\t--------\t\t------\n
 servertool.getserverid=\n\tgetserverid [ -applicationName <name> ] \n
 servertool.getserverid1=retorna o id do servidor de um applicationName
-servertool.getserverid2=\tID do servidor de applicationName {0} \u00e9 {1}
+servertool.getserverid2=\tID do Servidor de applicationName {0} \u00E9 {1}
 
 servertool.list=\n\tlist\n
 servertool.list1=lista todos os servidores registrados
-servertool.list2=\n\tId do servidor\tNome de classe do servidor\t\tAplicativo do servidor\n\t---------\t-----------------\t\t------------------\n
+servertool.list2=\n\tId do Servidor\tNome de Classe do Servidor\t\tAplica\u00E7\u00E3o do Servidor\n\t---------\t-----------------\t\t------------------\n
 servertool.listactive=\n\tlistactive
 servertool.listactive1=lista os servidores atualmente ativos
 servertool.listappnames=\tlistappnames\n
 servertool.listappnames1=lista os applicationNames atualmente definidos
-servertool.listappnames2=applicationNames do servidor atualmente definidos:
+servertool.listappnames2=applicationNames do servidor definidos atualmente:
 
 servertool.shutdown=\n\tshutdown [ -serverid <server id> | -applicationName <name> ]\n
-servertool.shutdown1=desliga um servidor registrado
-servertool.shutdown2=\tservidor desligado com \u00eaxito.
+servertool.shutdown1=faz shutdown de um servidor registrado
+servertool.shutdown2=\tshutdown do servidor bem-sucedido.
 servertool.startserver=\n\tstartup [ -serverid <server id> | -applicationName <name> ]\n
 servertool.startserver1=inicia um servidor registrado
-servertool.startserver2=\tservidor iniciado com \u00eaxito.
+servertool.startserver2=\tservidor iniciado com \u00EAxito.
 
 servertool.quit=\n\tquit\n
 servertool.quit1=sai desta ferramenta
 
 servertool.help=\thelp\n\tOR\n\thelp <command name>\n
-servertool.help1=obt\u00e9m ajuda
+servertool.help1=obt\u00E9m ajuda
 
 servertool.orbidmap=\tUso: orblist [ -serverid <server id> | -applicationName <name> ]\n
 servertool.orbidmap1=lista de nomes de orb e seus mapeamentos
 servertool.orbidmap2=\n\tId de ORB\t\tNome de ORB\n\t------\t\t--------\n
-pnameserv.success=NameServer persistente iniciado com \u00eaxito
+pnameserv.success=NameServer Persistente Iniciado com \u00CAxito
 
 
-bootstrap.usage=Uso: {0} <options> \n\nem que <options> inclui:\n  -ORBInitialPort        porta inicial (necess\u00e1rio)\n  -InitialServicesFile   arquivo que cont\u00e9m a lista de servi\u00e7os iniciais (necess\u00e1rio)\n
-bootstrap.success=configurando porta para {0} e lendo servi\u00e7os de {1}
-bootstrap.filenotreadable=o arquivo {0} n\u00e3o \u00e9 leg\u00edvel
-bootstrap.filenotfound=arquivo {0} n\u00e3o encontrado
-bootstrap.exception=exce\u00e7\u00e3o capturada ao salvar as propriedades no arquivo {0}: Exce\u00e7\u00e3o {1}
+bootstrap.usage=Uso: {0} <options> \n\nem que <options> inclui:\n  -ORBInitialPort        porta inicial (necess\u00E1rio)\n  -InitialServicesFile   arquivo que cont\u00E9m a lista de servi\u00E7os iniciais (necess\u00E1rio)\n
+bootstrap.success=definindo porta para {0} e lendo servi\u00E7os de {1}
+bootstrap.filenotreadable=o arquivo {0} n\u00E3o \u00E9 leg\u00EDvel
+bootstrap.filenotfound=arquivo {0} n\u00E3o encontrado
+bootstrap.exception=exce\u00E7\u00E3o capturada ao salvar as propriedades no Arquivo {0}: exce\u00E7\u00E3o {1}
 
-tnameserv.exception=uma exce\u00e7\u00e3o capturada ao iniciar o servi\u00e7o de inicializa\u00e7\u00e3o na porta {0}
-tnameserv.usage=tente usar outra porta com os argumentos de linha de comando -ORBInitialPort <portno>
-tnameserv.invalidhostoption=ORBInitialHost n\u00e3o \u00e9 uma op\u00e7\u00e3o v\u00e1lida para NameService
-tnameserv.orbinitialport0=ORBInitialPort 0 n\u00e3o \u00e9 uma op\u00e7\u00e3o v\u00e1lida para NameService
-tnameserv.hs1=Contexto de nomea\u00e7\u00e3o inicial:\n{0}
-tnameserv.hs2=TransientNameServer: definindo porta para as refer\u00eancias de objeto iniciais: {0}
+tnameserv.exception=uma exce\u00E7\u00E3o capturada ao iniciar o servi\u00E7o de inicializa\u00E7\u00E3o na porta {0}
+tnameserv.usage=tente usar outra porta com os argumentos de linha de comandos -ORBInitialPort <portno>
+tnameserv.invalidhostoption=ORBInitialHost n\u00E3o \u00E9 uma op\u00E7\u00E3o v\u00E1lida para NameService
+tnameserv.orbinitialport0=ORBInitialPort 0 n\u00E3o \u00E9 uma op\u00E7\u00E3o v\u00E1lida para NameService
+tnameserv.hs1=Contexto de Nomea\u00E7\u00E3o Inicial:\n{0}
+tnameserv.hs2=TransientNameServer: definindo porta para as refer\u00EAncias de objeto iniciais: {0}
 tnameserv.hs3=Pronto.
 
-orbd.commfailure=\nFalha ao iniciar ORBD porque ORBinitialPort j\u00e1 est\u00e1 em uso
-orbd.internalexception=\nFalha ao iniciar ORBD devido a uma exce\u00e7\u00e3o interna. \nPoss\u00edveis causas: \n1. ORBInitialPort especificado ou ORBActivationPort j\u00e1 em uso \n2. Sem permiss\u00e3o de grava\u00e7\u00e3o para gravar orb.db 
+orbd.commfailure=\nFalha ao iniciar ORBD porque ORBinitialPort j\u00E1 est\u00E1 em uso
+orbd.internalexception=\nFalha ao iniciar ORBD devido a uma exce\u00E7\u00E3o interna. \nPoss\u00EDveis causas: \n1. ORBInitialPort especificado ou ORBActivationPort j\u00E1 em uso \n2. Sem permiss\u00E3o de grava\u00E7\u00E3o para gravar orb.db 
 
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_sv.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_sv.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2005, 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
@@ -23,85 +23,85 @@
 # questions.
 #
 
-orbd.usage=G\u00f6r s\u00e5 h\u00e4r: {0} <alternativ> \n\nd\u00e4r <alternativ> omfattar:\n  -port                  Aktiveringsport d\u00e4r ORBD ska startas, standard 1049 (valfritt)\n  -defaultdb             Katalog f\u00f6r ORBD-filer, standard "./orb.db" (valfritt)\n  -serverid              Server-ID f\u00f6r ORBD, standard 1 (valfritt)\n  -ORBInitialPort        Initialport (obligatoriskt)\n  -ORBInitialHost        Initialt v\u00e4rdnamn (obligatoriskt)\n
+orbd.usage=Syntax: {0} <alternativ> \n\nd\u00E4r <alternativ> inkluderar:\n  -port                  Aktiveringsport d\u00E4r ORBD ska startas, standard 1049 (valfritt)\n  -defaultdb             Katalog f\u00F6r ORBD-filer, standard "./orb.db" (valfritt)\n  -serverid              Server-id f\u00F6r ORBD, standard 1 (valfritt)\n  -ORBInitialPort        Ursprunglig port (obligatoriskt)\n  -ORBInitialHost        Ursprungligt v\u00E4rdnamn (obligatoriskt)\n
 
-servertool.usage=G\u00f6r s\u00e5 h\u00e4r: {0} <alternativ> \n\nd\u00e4r <alternativ> omfattar:\n  -ORBInitialPort        Initialport (obligatoriskt)\n  -ORBInitialHost        Initialt v\u00e4rdnamn (obligatoriskt)\n
-servertool.banner=\n\nV\u00e4lkommen till Java IDL Server Tool \nskriv kommandona vid prompten \n
-servertool.shorthelp=\n\n\tTillg\u00e4ngliga kommandon: \n\t------------------- \n
-servertool.baddef=D\u00e5lig serverdefinition: {0}
-servertool.nosuchserver=\tn\u00e5gon s\u00e5dan server kan inte hittas.
-servertool.helddown=\tserver h\u00e5lls nere.
+servertool.usage=Syntax: {0} <alternativ> \n\nd\u00E4r <alternativ> inkluderar:\n  -ORBInitialPort        Ursprunglig port (obligatoriskt)\n  -ORBInitialHost        Ursprungligt v\u00E4rdnamn (obligatoriskt)\n
+servertool.banner=\n\nV\u00E4lkommen till Java IDL Server Tool \nange kommandona vid kommandoraden \n
+servertool.shorthelp=\n\n\tTillg\u00E4ngliga kommandon: \n\t------------------- \n
+servertool.baddef=Felaktig serverdefinition: {0}
+servertool.nosuchserver=\tn\u00E5gon s\u00E5dan server kan inte hittas.
+servertool.helddown=\tservern h\u00E5lls avst\u00E4ngd.
 servertool.nosuchorb=\togiltig ORB.
-servertool.serverup=\tserver \u00e4r redan uppe.
+servertool.serverup=\tserver \u00E4r redan startad
 servertool.appname=\tapplicationName     - {0}
 servertool.name=\tnamn      - {0}
 servertool.classpath=\tclasspath - {0}
 servertool.args=\targs      - {0}
 servertool.vmargs=\tvmargs    - {0}
 servertool.serverid=\tserver id - {0}
-servertool.servernotrunning=\tserver k\u00f6rs inte.
-servertool.register=\n\n\tregister -server <serverklassnamn> \n\t         -applicationName <alternativt servernamn> \n\t         -classpath <klass\u00f6kv\u00e4g till server> \n\t         -args <argument till server> \n\t         -vmargs <argument till server-JVM>\n
+servertool.servernotrunning=\tserver k\u00F6rs inte.
+servertool.register=\n\n\tregister -server <serverklassnamn> \n\t         -applicationName <alternativt servernamn> \n\t         -classpath <klass\u00F6kv\u00E4g till server> \n\t         -args <argument till server> \n\t         -vmargs <argument till server-JVM>\n
 servertool.register1=registrera en aktiverbar server
 servertool.register2=\tserver registrerad (serverid = {0}).
-servertool.register3=\tserver registrerad men h\u00e5lls nere (serverid = {0}).
+servertool.register3=\tserver registrerad men h\u00E5lls avst\u00E4ngd(serverid = {0}).
 servertool.register4=\tserver har redan registrerats (serverid = {0}).
 
 servertool.unregister=\n\tunregister [ -serverid <server-id> | -applicationName <namn> ] \n
 servertool.unregister1=avregistrera en registrerad server
-servertool.unregister2=\tserver oregistrerad.
+servertool.unregister2=\tserver avregistrerad.
 
-servertool.locate=\n\tlocate [ -serverid <server-id> | -applicationName <namn> ] [ <-endpointType <endpointtyp> ] \n
-servertool.locate1=lokaliserar portar av en viss typ f\u00f6r en registrerad server
-servertool.locate2=\n\n\tV\u00e4rdnamn {0} \n\n\t\tPort\t\tPorttyp\t\tORB-ID\n\t\t----\t\t---------\t\t------\n
+servertool.locate=\n\tlocate [ -serverid <server-id> | -applicationName <namn> ] [ <-endpointType <slutpunktstyp> ] \n
+servertool.locate1=hitta portar av en viss typ f\u00F6r en registrerad server
+servertool.locate2=\n\n\tV\u00E4rdnamn {0} \n\n\t\tPort\t\tPorttyp\t\tORB-id\n\t\t----\t\t---------\t\t------\n
 servertool.locateorb=\n\tlocateperorb [ -serverid <server-id> | -applicationName <namn> ] [ -orbid <ORB-namn> ]\n
-servertool.locateorb1=lokaliserar portar f\u00f6r en viss ORB f\u00f6r en registrerad server
-servertool.locateorb2=\n\n\tV\u00e4rdnamn {0} \n\n\t\tPort\t\tPorttyp\t\tORB-ID\n\t\t----\t\t--------\t\t------\n
+servertool.locateorb1=hitta portar f\u00F6r en viss ORB f\u00F6r en registrerad server
+servertool.locateorb2=\n\n\tV\u00E4rdnamn {0} \n\n\t\tPort\t\tPorttyp\t\tORB-id\n\t\t----\t\t--------\t\t------\n
 servertool.getserverid=\n\tgetserverid [ -applicationName <namn> ] \n
-servertool.getserverid1=returnerar server-id f\u00f6r ett applicationName
-servertool.getserverid2=\tServer-ID f\u00f6r applicationName {0} \u00e4r {1}
+servertool.getserverid1=returnerar server-id f\u00F6r ett applicationName
+servertool.getserverid2=\tServer-id f\u00F6r applicationName {0} \u00E4r {1}
 
 servertool.list=\n\tlist_\n
 servertool.list1=listar alla registrerade servrar
-servertool.list2=\n\tServer Id\tServer Class Name\t\tServer Application\n\t---------\t-----------------\t\t------------------\n
+servertool.list2=\n\tServer-id\tServerklassnamn\t\tServerapplikation\n\t---------\t-----------------\t\t------------------\n
 servertool.listactive=\n\tlistactive
-servertool.listactive1=listar alla f\u00f6r tillf\u00e4llet aktiva servrar
+servertool.listactive1=listar alla f\u00F6r tillf\u00E4llet aktiva servrar
 servertool.listappnames=\tlistappnames\n
-servertool.listappnames1=listar de applicationNames som f\u00f6r tillf\u00e4llet \u00e4r definierade
-servertool.listappnames2=Aktuella definierade server-applicationNames:
+servertool.listappnames1=listar de applicationNames som f\u00F6r tillf\u00E4llet \u00E4r definierade
+servertool.listappnames2=Definierade applikationsnamn f\u00F6r servern:
 
 servertool.shutdown=\n\tshutdown [ -serverid <server-id> | -applicationName <namn> ]\n
-servertool.shutdown1=st\u00e4nger en registrerad server
-servertool.shutdown2=\tserver har st\u00e4ngts av.
+servertool.shutdown1=st\u00E4nger av en registrerad server
+servertool.shutdown2=\tserver har st\u00E4ngts av.
 servertool.startserver=\n\tstartup [ -serverid <server-id> | -applicationName <namn> ]\n
 servertool.startserver1=startar en registrerad server
 servertool.startserver2=\tserver har startats.
 
 servertool.quit=\n\tquit\n
-servertool.quit1=avsluta det h\u00e4r verktyget
+servertool.quit1=avsluta det h\u00E4r verktyget
 
-servertool.help=\thelp\n\tOR\n\thelp <kommandonamn>\n
-servertool.help1=get help
+servertool.help=\thelp\n\tELLER\n\thelp <kommandonamn>\n
+servertool.help1=f\u00E5 hj\u00E4lp
 
-servertool.orbidmap=\tG\u00f6r s\u00e5 h\u00e4r: orblist [ -serverid <server-id> | -applicationName <namn> ]\n
-servertool.orbidmap1=lista \u00f6ver ORB-namn och deras mappning
-servertool.orbidmap2=\n\tORB-ID\t\tORB-namn\n\t------\t\t--------\n
-pnameserv.success=Namnservern har startats utan problem
+servertool.orbidmap=\tSyntax: orblist [ -serverid <server-id> | -applicationName <namn> ]\n
+servertool.orbidmap1=lista \u00F6ver ORB-namn och deras mappning
+servertool.orbidmap2=\n\tORB-id\t\tORB-namn\n\t------\t\t--------\n
+pnameserv.success=Den best\u00E4ndiga namnservern har startats
 
 
-bootstrap.usage=G\u00f6r s\u00e5 h\u00e4r: {0} <alternativ> \n\nd\u00e4r <alternativ> omfattar:\n  -ORBInitialPort        Initialport (obligatoriskt)\n  -InitialServicesFile   En fil som inneh\u00e5ller en lista \u00f6ver initiala tj\u00e4nster (obligatoriskt)\n
-bootstrap.success=s\u00e4tter porten till {0} och l\u00e4ser tj\u00e4nster fr\u00e5n {1}
-bootstrap.filenotreadable=filen {0} g\u00e5r inte att l\u00e4sa
-bootstrap.filenotfound=filen {0} g\u00e5r inte att hitta
-bootstrap.exception=p\u00e5tr\u00e4ffade undantag medan egenskaper sparades i filen {0}: Undantag {1}
+bootstrap.usage=Syntax: {0} <alternativ> \n\nd\u00E4r <alternativ> inkluderar:\n  -ORBInitialPort        Ursprunglig port (obligatoriskt)\n  -InitialServicesFile   En fil som inneh\u00E5ller en lista \u00F6ver ursprungliga tj\u00E4nster (obligatoriskt)\n
+bootstrap.success=st\u00E4ller in porten till {0} och l\u00E4ser tj\u00E4nster fr\u00E5n {1}
+bootstrap.filenotreadable=filen {0} kan inte l\u00E4sas
+bootstrap.filenotfound=filen {0} hittas inte
+bootstrap.exception=p\u00E5tr\u00E4ffade undantag medan egenskaper sparades i filen {0}: Undantag {1}
 
-tnameserv.exception=p\u00e5tr\u00e4ffade ett undantagsfel n\u00e4r starttj\u00e4nsten startades vid porten {0}
-tnameserv.usage=f\u00f6rs\u00f6k att anv\u00e4nda en annan port med kommandoradsargument -ORBInitialPort <portnr>
-tnameserv.invalidhostoption=ORBInitialHost \u00e4r inte ett giltigt alternativ f\u00f6r NameService
-tnameserv.orbinitialport0=ORBInitialPort 0 \u00e4r inte ett giltigt alternativ f\u00f6r NameService
-tnameserv.hs1=Initial namngivningskontext:\n{0}
-tnameserv.hs2=TransientNameServer: anger port f\u00f6r initiala objektreferenser till: {0}
-tnameserv.hs3=Klar.
+tnameserv.exception=p\u00E5tr\u00E4ffade ett undantag n\u00E4r starttj\u00E4nsten startades vid porten {0}
+tnameserv.usage=f\u00F6rs\u00F6k att anv\u00E4nda en annan port med kommandoradsargument -ORBInitialPort <portnr>
+tnameserv.invalidhostoption=ORBInitialHost \u00E4r inte ett giltigt alternativ f\u00F6r NameService
+tnameserv.orbinitialport0=ORBInitialPort 0 \u00E4r inte ett giltigt alternativ f\u00F6r NameService
+tnameserv.hs1=Ursprunglig namngivningskontext:\n{0}
+tnameserv.hs2=TransientNameServer: st\u00E4ller in port f\u00F6r ursprungliga objektreferenser till: {0}
+tnameserv.hs3=Redo.
 
-orbd.commfailure=\nMisslyckades starta ORBD f\u00f6r att ORBinitialport anv\u00e4ndas redan
-orbd.internalexception=\nMisslyckades starta ORBD p\u00e5 grund av internt undantag. \nM\u00f6jliga Orsakar: \n1. Anget ORBInitialPort or ORBAktiveringsPort anv\u00e4ndas redan \n2. No Write Tillst\u00e5nd att skriva orb.db 
+orbd.commfailure=\nKunde inte starta ORBD eftersom ORBinitialport redan anv\u00E4nds
+orbd.internalexception=\nKunde inte starta ORBD p\u00E5 grund av internt undantag. \nM\u00F6jliga orsaker: \n1. Angivet ORBInitialPort eller ORBActivationPort anv\u00E4ndas redan \n2. Ingen beh\u00F6righet att skriva till orb.db 
 
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_zh_CN.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_zh_CN.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2005, 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
@@ -23,85 +23,85 @@
 # questions.
 #
 
-orbd.usage=\u7528\u6cd5\uff1a{0} <\u9009\u9879> \n\n\u5176\u4e2d\uff0c<\u9009\u9879> \u5305\u62ec\uff1a\n  -port                  \u6fc0\u6d3b\u542f\u52a8 ORBD \u7684\u7aef\u53e3\uff0c\u7f3a\u7701\u503c\u4e3a 1049 (\u53ef\u9009)\n  -defaultdb             ORBD \u6587\u4ef6\u7684\u76ee\u5f55\uff0c\u7f3a\u7701\u503c\u4e3a "./orb.db" (\u53ef\u9009)\n  -serverid              ORBD \u7684\u670d\u52a1\u5668\u6807\u8bc6\u7b26\uff0c\u7f3a\u7701\u503c\u4e3a 1 (\u53ef\u9009)\n  -ORBInitialPort        \u521d\u59cb\u7aef\u53e3\uff08\u5fc5\u9700\uff09\n  -ORBInitialHost        \u521d\u59cb\u4e3b\u673a\u540d\u79f0\uff08\u5fc5\u9700\uff09\n
+orbd.usage=\u7528\u6CD5: {0} <\u9009\u9879> \n\n\u5176\u4E2D, <\u9009\u9879> \u5305\u62EC: \n  -port                  \u6FC0\u6D3B\u542F\u52A8 ORBD \u7684\u7AEF\u53E3, \u9ED8\u8BA4\u503C\u4E3A 1049 (\u53EF\u9009)\n  -defaultdb             ORBD \u6587\u4EF6\u7684\u76EE\u5F55, \u9ED8\u8BA4\u503C\u4E3A "./orb.db" (\u53EF\u9009)\n  -serverid              ORBD \u7684\u670D\u52A1\u5668 ID, \u9ED8\u8BA4\u503C\u4E3A 1 (\u53EF\u9009)\n  -ORBInitialPort        \u521D\u59CB\u7AEF\u53E3 (\u5FC5\u9700)\n  -ORBInitialHost        \u521D\u59CB HostName (\u5FC5\u9700)\n
 
-servertool.usage=\u7528\u6cd5\uff1a {0} <\u9009\u9879> \n\n\u5176\u4e2d\uff0c<\u9009\u9879> \u5305\u62ec\uff1a\n  -ORBInitialPort        \u521d\u59cb\u7aef\u53e3\uff08\u5fc5\u9700\uff09\n  -ORBInitialHost        \u521d\u59cb\u4e3b\u673a\u540d\u79f0\uff08\u5fc5\u9700\uff09\n
-servertool.banner=\n\n\u6b22\u8fce\u4f7f\u7528 Java IDL \u670d\u52a1\u5668\u5de5\u5177 \n\u8bf7\u5728\u63d0\u793a\u5904\u8f93\u5165\u547d\u4ee4 \n
-servertool.shorthelp=\n\n\t\u53ef\u7528\u547d\u4ee4\uff1a\n\t------------------- \n
-servertool.baddef=\u9519\u8bef\u7684\u670d\u52a1\u5668\u5b9a\u4e49\uff1a {0}
-servertool.nosuchserver=\t\u627e\u4e0d\u5230\u8fd9\u79cd\u670d\u52a1\u5668\u3002
-servertool.helddown=\t\u670d\u52a1\u5668\u5df2\u88ab\u5173\u95ed\u3002
-servertool.nosuchorb=\t\u65e0\u6548\u7684\u5bf9\u8c61\u8bf7\u6c42\u4ee3\u7406\u7a0b\u5e8f (ORB)\u3002
-servertool.serverup=\t\u670d\u52a1\u5668\u5df2\u5f00\u542f\u3002
+servertool.usage=\u7528\u6CD5: {0} <\u9009\u9879> \n\n\u5176\u4E2D, <\u9009\u9879> \u5305\u62EC: \n  -ORBInitialPort        \u521D\u59CB\u7AEF\u53E3 (\u5FC5\u9700)\n  -ORBInitialHost        \u521D\u59CB HostName (\u5FC5\u9700)\n
+servertool.banner=\n\n\u6B22\u8FCE\u4F7F\u7528 Java IDL \u670D\u52A1\u5668\u5DE5\u5177 \n\u8BF7\u5728\u63D0\u793A\u5904\u8F93\u5165\u547D\u4EE4 \n
+servertool.shorthelp=\n\n\t\u53EF\u7528\u547D\u4EE4: \n\t------------------- \n
+servertool.baddef=\u9519\u8BEF\u7684\u670D\u52A1\u5668\u5B9A\u4E49: {0}
+servertool.nosuchserver=\t\u627E\u4E0D\u5230\u8FD9\u79CD\u670D\u52A1\u5668\u3002
+servertool.helddown=\t\u670D\u52A1\u5668\u5DF2\u88AB\u5173\u95ED\u3002
+servertool.nosuchorb=\t\u65E0\u6548\u7684\u5BF9\u8C61\u8BF7\u6C42\u4EE3\u7406\u7A0B\u5E8F (ORB)\u3002
+servertool.serverup=\t\u670D\u52A1\u5668\u5DF2\u5728\u8FD0\u884C\u3002
 servertool.appname=\tapplicationName     - {0}
 servertool.name=\tname      - {0}
 servertool.classpath=\tclasspath - {0}
 servertool.args=\targs      - {0}
 servertool.vmargs=\tvmargs    - {0}
-servertool.serverid=\t\u670d\u52a1\u5668\u6807\u8bc6\u7b26 - {0}
-servertool.servernotrunning=\t\u670d\u52a1\u5668\u6ca1\u6709\u8fd0\u884c\u3002
-servertool.register=\n\n\tregister -server<\u670d\u52a1\u5668\u7c7b\u540d\u79f0> \n\t         -applicationName <\u5907\u7528\u670d\u52a1\u5668\u540d\u79f0> \n\t         -classpath <\u5230\u670d\u52a1\u5668\u7684\u7c7b\u8def\u5f84> \n\t         -args <\u670d\u52a1\u5668\u7684\u53c2\u6570> \n\t         -vmargs <\u670d\u52a1\u5668 Java VM \u7684\u53c2\u6570>\n
-servertool.register1=\u6ce8\u518c\u4e00\u4e2a\u53ef\u6fc0\u6d3b\u7684\u670d\u52a1\u5668
-servertool.register2=\t\u5df2\u6ce8\u518c\u670d\u52a1\u5668 (serverid = {0})\u3002
-servertool.register3=\t\u5df2\u6ce8\u518c\u670d\u52a1\u5668\uff0c\u4f46\u5df2\u88ab\u5173\u95ed (serverid = {0})\u3002
-servertool.register4=\t\u670d\u52a1\u5668\u5df2\u6ce8\u518c (serverid = {0})\u3002
+servertool.serverid=\t\u670D\u52A1\u5668 ID - {0}
+servertool.servernotrunning=\t\u670D\u52A1\u5668\u6CA1\u6709\u8FD0\u884C\u3002
+servertool.register=\n\n\tregister -server<\u670D\u52A1\u5668\u7C7B\u540D\u79F0> \n\t         -applicationName <\u5907\u7528\u670D\u52A1\u5668\u540D\u79F0> \n\t         -classpath <\u670D\u52A1\u5668\u7684\u7C7B\u8DEF\u5F84> \n\t         -args <\u670D\u52A1\u5668\u7684\u53C2\u6570> \n\t         -vmargs <\u670D\u52A1\u5668 Java VM \u7684\u53C2\u6570>\n
+servertool.register1=\u6CE8\u518C\u4E00\u4E2A\u53EF\u6FC0\u6D3B\u7684\u670D\u52A1\u5668
+servertool.register2=\t\u5DF2\u6CE8\u518C\u670D\u52A1\u5668 (serverid = {0})\u3002
+servertool.register3=\t\u5DF2\u6CE8\u518C\u670D\u52A1\u5668, \u4F46\u5DF2\u88AB\u5173\u95ED (serverid = {0})\u3002
+servertool.register4=\t\u670D\u52A1\u5668\u5DF2\u6CE8\u518C (serverid = {0})\u3002
 
 servertool.unregister=\n\tunregister [ -serverid <server id> | -applicationName <name> ] \n
-servertool.unregister1=\u53d6\u6d88\u670d\u52a1\u5668\u6ce8\u518c
-servertool.unregister2=\t\u670d\u52a1\u5668\u672a\u6ce8\u518c\u3002
+servertool.unregister1=\u6CE8\u9500\u5DF2\u6CE8\u518C\u7684\u670D\u52A1\u5668
+servertool.unregister2=\t\u670D\u52A1\u5668\u5DF2\u6CE8\u9500\u3002
 
 servertool.locate=\n\tlocate [ -serverid <server id> | -applicationName <name> ] [ <-endpointType <endpointType> ] \n
-servertool.locate1=\u4e3a\u5df2\u6ce8\u518c\u670d\u52a1\u5668\u5b9a\u4f4d\u7279\u5b9a\u7c7b\u578b\u7684\u7aef\u53e3
-servertool.locate2=\n\n\t\u4e3b\u673a\u540d\u79f0 {0} \n\n\t\t\u7aef\u53e3\t\t\u7aef\u53e3\u7c7b\u578b\t\tORB \u6807\u8bc6\n\t\t----\t\t---------\t\t------\n
+servertool.locate1=\u4E3A\u5DF2\u6CE8\u518C\u670D\u52A1\u5668\u5B9A\u4F4D\u7279\u5B9A\u7C7B\u578B\u7684\u7AEF\u53E3
+servertool.locate2=\n\n\t\u4E3B\u673A\u540D\u79F0 {0} \n\n\t\t\u7AEF\u53E3\t\t\u7AEF\u53E3\u7C7B\u578B\t\tORB \u6807\u8BC6\n\t\t----\t\t---------\t\t------\n
 servertool.locateorb=\n\tlocateperorb [ -serverid <server id> | -applicationName <name> ] [ -orbid <ORB name> ]\n
-servertool.locateorb1=\u4e3a\u5df2\u6ce8\u518c\u670d\u52a1\u5668\u7684\u7279\u5b9a\u5bf9\u8c61\u8bf7\u6c42\u4ee3\u7406\u7a0b\u5e8f\u5b9a\u4f4d\u7aef\u53e3\u3002
-servertool.locateorb2=\n\n\t\u4e3b\u673a\u540d\u79f0 {0} \n\n\t\t\u7aef\u53e3\t\t\u7aef\u53e3\u7c7b\u578b\t\tORB \u6807\u8bc6\n\t\t----\t\t--------\t\t------\n
+servertool.locateorb1=\u4E3A\u5DF2\u6CE8\u518C\u670D\u52A1\u5668\u7684\u7279\u5B9A\u5BF9\u8C61\u8BF7\u6C42\u4EE3\u7406\u7A0B\u5E8F\u5B9A\u4F4D\u7AEF\u53E3\u3002
+servertool.locateorb2=\n\n\t\u4E3B\u673A\u540D\u79F0 {0} \n\n\t\t\u7AEF\u53E3\t\t\u7AEF\u53E3\u7C7B\u578B\t\tORB \u6807\u8BC6\n\t\t----\t\t--------\t\t------\n
 servertool.getserverid=\n\tgetserverid [ -applicationName <name> ] \n
-servertool.getserverid1=\u8fd4\u56de\u5e94\u7528\u7a0b\u5e8f\u540d\u79f0\u7684\u670d\u52a1\u5668\u6807\u8bc6\u7b26
-servertool.getserverid2=\t\u5e94\u7528\u7a0b\u5e8f\u540d\u79f0 {0} \u7684\u670d\u52a1\u5668\u6807\u8bc6\u7b26\u662f {1}
+servertool.getserverid1=\u8FD4\u56DE applicationName \u7684\u670D\u52A1\u5668 ID
+servertool.getserverid2=\tapplicationName {0} \u7684\u670D\u52A1\u5668 ID \u662F {1}
 
 servertool.list=\n\t\u5217\u8868\n
-servertool.list1=\u5217\u51fa\u6240\u6709\u5df2\u6ce8\u518c\u670d\u52a1\u5668
-servertool.list2=\n\t\u670d\u52a1\u5668\u6807\u8bc6\u7b26\t\t\u670d\u52a1\u5668\u7c7b\u540d\u79f0\t\t\t\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f\n\t---------\t-----------------\t------------------\n
+servertool.list1=\u5217\u51FA\u6240\u6709\u5DF2\u6CE8\u518C\u670D\u52A1\u5668
+servertool.list2=\n\t\u670D\u52A1\u5668 ID\t\u670D\u52A1\u5668\u7C7B\u540D\u79F0\t\t\u670D\u52A1\u5668\u5E94\u7528\u7A0B\u5E8F\n\t---------\t-----------------\t\t------------------\n
 servertool.listactive=\n\tlistactive
-servertool.listactive1=\u5217\u51fa\u5f53\u524d\u6d3b\u52a8\u7684\u670d\u52a1\u5668
+servertool.listactive1=\u5217\u51FA\u5F53\u524D\u6D3B\u52A8\u7684\u670D\u52A1\u5668
 servertool.listappnames=\tlistappnames\n
-servertool.listappnames1=\u5217\u51fa\u5f53\u524d\u5b9a\u4e49\u7684\u5e94\u7528\u7a0b\u5e8f\u540d\u79f0
-servertool.listappnames2=\u5f53\u524d\u5b9a\u4e49\u7684\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f\u540d\u79f0\uff1a
+servertool.listappnames1=\u5217\u51FA\u5F53\u524D\u5B9A\u4E49\u7684 applicationName
+servertool.listappnames2=\u5F53\u524D\u5B9A\u4E49\u7684\u670D\u52A1\u5668 applicationName: 
 
 servertool.shutdown=\n\tshutdown [ -serverid <server id> | -applicationName <name> ]\n
-servertool.shutdown1=\u5173\u95ed\u4e00\u4e2a\u5df2\u6ce8\u518c\u670d\u52a1\u5668
-servertool.shutdown2=\t\u670d\u52a1\u5668\u6210\u529f\u5173\u95ed\u3002
+servertool.shutdown1=\u5173\u95ED\u4E00\u4E2A\u5DF2\u6CE8\u518C\u670D\u52A1\u5668
+servertool.shutdown2=\t\u670D\u52A1\u5668\u6210\u529F\u5173\u95ED\u3002
 servertool.startserver=\n\tstartup [ -serverid <server id> | -applicationName <name> ]\n
-servertool.startserver1=\u542f\u52a8\u4e00\u4e2a\u5df2\u6ce8\u518c\u670d\u52a1\u5668
-servertool.startserver2=\t\u670d\u52a1\u5668\u6210\u529f\u542f\u52a8\u3002
+servertool.startserver1=\u542F\u52A8\u4E00\u4E2A\u5DF2\u6CE8\u518C\u670D\u52A1\u5668
+servertool.startserver2=\t\u670D\u52A1\u5668\u6210\u529F\u542F\u52A8\u3002
 
-servertool.quit=\n\t\u9000\u51fa\n
-servertool.quit1=\u9000\u51fa\u6b64\u5de5\u5177
+servertool.quit=\n\t\u9000\u51FA\n
+servertool.quit1=\u9000\u51FA\u6B64\u5DE5\u5177
 
 servertool.help=\thelp\n\t\u6216\n\thelp <command name>\n
-servertool.help1=\u53d6\u5f97\u5e2e\u52a9
+servertool.help1=\u83B7\u53D6\u5E2E\u52A9
 
-servertool.orbidmap=\t\u7528\u6cd5\uff1aorblist [ -serverid <server id> | -applicationName <name> ]\n
-servertool.orbidmap1=\u5bf9\u8c61\u8bf7\u6c42\u4ee3\u7406\u7a0b\u5e8f (orb) \u540d\u79f0\u53ca\u5176\u6620\u5c04\u5217\u8868
-servertool.orbidmap2=\n\tORB \u6807\u8bc6\t\tORB \u540d\u79f0\n\t------\t\t--------\n
-pnameserv.success=\u6301\u4e45\u6027\u540d\u79f0\u670d\u52a1\u5668\u6210\u529f\u542f\u52a8
+servertool.orbidmap=\t\u7528\u6CD5: orblist [ -serverid <server id> | -applicationName <name> ]\n
+servertool.orbidmap1=\u5BF9\u8C61\u8BF7\u6C42\u4EE3\u7406\u7A0B\u5E8F (orb) \u540D\u79F0\u53CA\u5176\u6620\u5C04\u5217\u8868
+servertool.orbidmap2=\n\tORB \u6807\u8BC6\t\tORB \u540D\u79F0\n\t------\t\t--------\n
+pnameserv.success=\u6301\u4E45\u6027\u540D\u79F0\u670D\u52A1\u5668\u6210\u529F\u542F\u52A8
 
 
-bootstrap.usage=\u7528\u6cd5\uff1a{0} <\u9009\u9879> \n\n\u5176\u4e2d\uff0c<\u9009\u9879> \u5305\u62ec\uff1a\n  -ORBInitialPort        \u521d\u59cb\u7aef\u53e3\uff08\u5fc5\u9700\uff09\n  -InitialServicesFile   \u5305\u542b\u521d\u59cb\u670d\u52a1\u5217\u8868\u7684\u6587\u4ef6\uff08\u5fc5\u9700\uff09\n
-bootstrap.success=\u5c06\u7aef\u53e3\u8bbe\u7f6e\u4e3a{0}\u5e76\u4ece{1}\u8bfb\u53d6\u670d\u52a1
-bootstrap.filenotreadable=\u4e0d\u53ef\u8bfb\u53d6\u6587\u4ef6 {0}
-bootstrap.filenotfound=\u6ca1\u6709\u627e\u5230\u6587\u4ef6{0}
-bootstrap.exception=\u5c06\u5c5e\u6027\u4fdd\u5b58\u5230\u6587\u4ef6{0}\u65f6\u53d1\u751f\u5f02\u5e38\uff1a\u5f02\u5e38 {1}
+bootstrap.usage=\u7528\u6CD5: {0} <\u9009\u9879> \n\n\u5176\u4E2D, <\u9009\u9879> \u5305\u62EC: \n  -ORBInitialPort        \u521D\u59CB\u7AEF\u53E3 (\u5FC5\u9700)\n  -InitialServicesFile   \u5305\u542B\u521D\u59CB\u670D\u52A1\u5217\u8868\u7684\u6587\u4EF6 (\u5FC5\u9700)\n
+bootstrap.success=\u5C06\u7AEF\u53E3\u8BBE\u7F6E\u4E3A{0}\u5E76\u4ECE{1}\u8BFB\u53D6\u670D\u52A1
+bootstrap.filenotreadable=\u6587\u4EF6{0}\u4E0D\u53EF\u8BFB\u53D6
+bootstrap.filenotfound=\u6CA1\u6709\u627E\u5230\u6587\u4EF6{0}
+bootstrap.exception=\u5C06\u5C5E\u6027\u4FDD\u5B58\u5230\u6587\u4EF6{0}\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF: \u5F02\u5E38\u9519\u8BEF{1}
 
-tnameserv.exception=\u542f\u52a8{0}\u7aef\u53e3\u4e0a\u7684\u81ea\u5f15\u5bfc\u7a0b\u5e8f\u670d\u52a1\u65f6\u53d1\u751f\u5f02\u5e38
-tnameserv.usage=\u5c1d\u8bd5\u5229\u7528\u547d\u4ee4\u884c\u53c2\u6570\u4f7f\u7528\u4e0d\u540c\u7684\u7aef\u53e3 -ORBInnitialPort <portno>
-tnameserv.invalidhostoption=ORBInitialHost \u4e0d\u662f\u540d\u79f0\u670d\u52a1\u5668\u7684\u6709\u6548\u9009\u9879
-tnameserv.orbinitialport0=ORBInitialPort 0 \u4e0d\u662f\u540d\u79f0\u670d\u52a1\u5668\u7684\u6709\u6548\u9009\u9879
-tnameserv.hs1=\u521d\u59cb\u7684\u547d\u540d\u8303\u56f4\uff1a\n{0}
-tnameserv.hs2=TransientNameServer: \u5c06\u521d\u59cb\u5bf9\u8c61\u5f15\u7528\u7aef\u53e3\u8bbe\u7f6e\u4e3a\uff1a{0}
-tnameserv.hs3=\u51c6\u5907\u5c31\u7eea\u3002
+tnameserv.exception=\u542F\u52A8{0}\u7AEF\u53E3\u4E0A\u7684\u5F15\u5BFC\u7A0B\u5E8F\u670D\u52A1\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF
+tnameserv.usage=\u5C1D\u8BD5\u5229\u7528\u547D\u4EE4\u884C\u53C2\u6570 -ORBInitialPort <portno> \u4F7F\u7528\u4E0D\u540C\u7684\u7AEF\u53E3
+tnameserv.invalidhostoption=ORBInitialHost \u4E0D\u662F NameService \u7684\u6709\u6548\u9009\u9879
+tnameserv.orbinitialport0=ORBInitialPort 0 \u4E0D\u662F NameService \u7684\u6709\u6548\u9009\u9879
+tnameserv.hs1=\u521D\u59CB\u7684\u547D\u540D\u4E0A\u4E0B\u6587: \n{0}
+tnameserv.hs2=TransientNameServer: \u5C06\u521D\u59CB\u5BF9\u8C61\u5F15\u7528\u7AEF\u53E3\u8BBE\u7F6E\u4E3A: {0}
+tnameserv.hs3=\u51C6\u5907\u5C31\u7EEA\u3002
 
-orbd.commfailure=\n\u7531\u4e8e ORBinitialPort \u5df2\u5728\u4f7f\u7528\u4e2d\uff0c\u542f\u52a8 ORBD \u5931\u8d25
-orbd.internalexception=\n\u5185\u90e8\u5f02\u5e38\uff0c\u542f\u52a8 ORBD \u5931\u8d25\u3002 \n\u53ef\u80fd\u539f\u56e0\uff1a\n1. \u6307\u5b9a\u7684 ORBInitialPort \u6216 ORBActivationPort \u5df2\u5728\u4f7f\u7528\u4e2d \n2. \u6ca1\u6709\u5199 orb.db \u7684\u5199\u5165\u6743\u9650 
+orbd.commfailure=\n\u7531\u4E8E ORBinitialPort \u5DF2\u5728\u4F7F\u7528\u4E2D, \u65E0\u6CD5\u542F\u52A8 ORBD
+orbd.internalexception=\n\u7531\u4E8E\u5185\u90E8\u5F02\u5E38\u9519\u8BEF, \u65E0\u6CD5\u542F\u52A8 ORBD\u3002\n\u53EF\u80FD\u539F\u56E0: \n1. \u6307\u5B9A\u7684 ORBInitialPort \u6216 ORBActivationPort \u5DF2\u5728\u4F7F\u7528\u4E2D \n2. \u6CA1\u6709\u5199\u5165 orb.db \u7684\u6743\u9650 
 
--- a/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_zh_TW.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_zh_TW.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2005, 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
@@ -23,85 +23,85 @@
 # questions.
 #
 
-orbd.usage=\u7528\u6cd5\uff1a{0} <options> \n\n\u5176\u4e2d <options> \u5305\u62ec\uff1a\n  -port                  ORBD \u61c9\u88ab\u555f\u52d5\u7684\u555f\u52d5\u57e0\u6240\u5728\uff0c\u9810\u8a2d\u70ba 1049 (\u53ef\u9078)\n  -defaultdb             ORBD \u6a94\u6848\u7684\u76ee\u9304\uff0c\u9810\u8a2d "./orb.db" (\u53ef\u9078)\n  -serverid              ORBD \u4f3a\u670d\u5668 Id\uff0c\u9810\u8a2d\u70ba 1 (\u53ef\u9078)\n  -ORBInitialPort        \u8d77\u59cb\u57e0\uff08\u5fc5\u8981\uff09\n  -ORBInitialHost        \u8d77\u59cb\u4e3b\u6a5f\u540d\u7a31\uff08\u5fc5\u8981\uff09\n
+orbd.usage=\u7528\u6CD5: {0} <options> \n\n\u5176\u4E2D <options> \u5305\u62EC: \n  -port                  ORBD \u61C9\u88AB\u555F\u52D5\u7684\u555F\u52D5\u9023\u63A5\u57E0\u6240\u5728\uFF0C\u9810\u8A2D\u70BA 1049 (\u53EF\u9078)\n  -defaultdb             ORBD \u6A94\u6848\u7684\u76EE\u9304\uFF0C\u9810\u8A2D "./orb.db" (\u53EF\u9078)\n  -serverid              ORBD \u4F3A\u670D\u5668 Id\uFF0C\u9810\u8A2D\u70BA 1 (\u53EF\u9078)\n  -ORBInitialPort        \u8D77\u59CB\u9023\u63A5\u57E0 (\u5FC5\u8981)\n  -ORBInitialHost        \u8D77\u59CB\u4E3B\u6A5F\u540D\u7A31 (\u5FC5\u8981)\n
 
-servertool.usage=\u7528\u6cd5\uff1a {0} <options> \n\nwhere <options> \u5305\u62ec\uff1a\n  -ORBInitialPort        \u8d77\u59cb\u57e0\uff08\u5fc5\u8981\uff09\n  -ORBInitialHost        \u8d77\u59cb\u4e3b\u6a5f\u540d\u7a31\uff08\u5fc5\u8981\uff09\n
-servertool.banner=\n\n\u6b61\u8fce\u4f86\u5230 Java IDL \u4f3a\u670d\u5668\u5de5\u5177 \n\u8acb\u5728\u63d0\u793a\u8655\u8f38\u5165\u6307\u4ee4 \n
-servertool.shorthelp=\n\n\t\u73fe\u6709\u7684\u6307\u4ee4\uff1a\n\t------------------- \n
-servertool.baddef=\u932f\u8aa4\u7684\u4f3a\u670d\u5668\u5b9a\u7fa9\uff1a {0}
-servertool.nosuchserver=\t\u627e\u4e0d\u5230\u9019\u500b\u4f3a\u670d\u5668\u3002
-servertool.helddown=\t\u4f3a\u670d\u5668\u4e0d\u5728\u5de5\u4f5c\u72c0\u614b\u3002
+servertool.usage=\u7528\u6CD5: {0} <options> \n\nwhere <options> \u5305\u62EC:\n  -ORBInitialPort        \u8D77\u59CB\u9023\u63A5\u57E0 (\u5FC5\u8981)\n  -ORBInitialHost        \u8D77\u59CB\u4E3B\u6A5F\u540D\u7A31 (\u5FC5\u8981)\n
+servertool.banner=\n\n\u6B61\u8FCE\u4F7F\u7528 Java IDL \u4F3A\u670D\u5668\u5DE5\u5177 \n\u8ACB\u5728\u63D0\u793A\u8655\u8F38\u5165\u547D\u4EE4 \n
+servertool.shorthelp=\n\n\t\u53EF\u7528\u7684\u547D\u4EE4: \n\t------------------- \n
+servertool.baddef=\u932F\u8AA4\u7684\u4F3A\u670D\u5668\u5B9A\u7FA9: {0}
+servertool.nosuchserver=\t\u627E\u4E0D\u5230\u9019\u500B\u4F3A\u670D\u5668\u3002
+servertool.helddown=\t\u4F3A\u670D\u5668\u4E0D\u5728\u5DE5\u4F5C\u72C0\u614B\u3002
 servertool.nosuchorb=\t\u7121\u6548\u7684 ORB.
-servertool.serverup=\t\u4f3a\u670d\u5668\u5df2\u5728\u5de5\u4f5c\u72c0\u614b\u3002
+servertool.serverup=\t\u4F3A\u670D\u5668\u5DF2\u5728\u5DE5\u4F5C\u72C0\u614B\u3002
 servertool.appname=\tapplicationName     - {0}
-servertool.name=\t\u540d\u7a31      - {0}
+servertool.name=\tname      - {0}
 servertool.classpath=\tclasspath - {0}
 servertool.args=\targs      - {0}
 servertool.vmargs=\tvmargs    - {0}
-servertool.serverid=\t\u4f3a\u670d\u5668 id - {0}
-servertool.servernotrunning=\t\u4f3a\u670d\u5668\u672a\u904b\u4f5c\u3002
-servertool.register=\n\n\tregister -server<server class name> \n\t         -applicationName <alternate server name> \n\t         -classpath <classpath to server> \n\t         -args <args to server> \n\t         -vmargs <args to server Java VM>\n
-servertool.register1=\u8a3b\u518a\u4e00\u500b\u53ef\u555f\u52d5\u7684\u4f3a\u670d\u5668
-servertool.register2=\t\u5df2\u8a3b\u518a\u904e\u7684\u4f3a\u670d\u5668 (serverid = {0})\u3002
-servertool.register3=\t\u5df2\u8a3b\u518a\u904e\u7684\u4f3a\u670d\u5668\uff0c\u4f46\u4e0d\u5728\u5de5\u4f5c\u72c0\u614b (serverid = {0})\u3002
-servertool.register4=\t\u4f3a\u670d\u5668\u5df2\u8a3b\u518a (serverid = {0})\u3002
+servertool.serverid=\tserver id - {0}
+servertool.servernotrunning=\t\u4F3A\u670D\u5668\u672A\u57F7\u884C\u3002
+servertool.register=\n\n\tregister -server <server class name> \n\t         -applicationName <alternate server name> \n\t         -classpath <classpath to server> \n\t         -args <args to server> \n\t         -vmargs <args to server Java VM>\n
+servertool.register1=\u8A3B\u518A\u4E00\u500B\u53EF\u555F\u52D5\u7684\u4F3A\u670D\u5668
+servertool.register2=\t\u5DF2\u8A3B\u518A\u904E\u7684\u4F3A\u670D\u5668 (serverid = {0})\u3002
+servertool.register3=\t\u5DF2\u8A3B\u518A\u904E\u7684\u4F3A\u670D\u5668\uFF0C\u4F46\u4E0D\u5728\u5DE5\u4F5C\u72C0\u614B (serverid = {0})\u3002
+servertool.register4=\t\u4F3A\u670D\u5668\u5DF2\u8A3B\u518A (serverid = {0})\u3002
 
 servertool.unregister=\n\tunregister [ -serverid <server id> | -applicationName <name> ] \n
-servertool.unregister1=\u672a\u8a3b\u518a\u4e00\u500b\u5df2\u8a3b\u518a\u904e\u7684\u4f3a\u670d\u5668
-servertool.unregister2=\t\u4f3a\u670d\u5668\u672a\u8a3b\u518a\u3002
+servertool.unregister1=\u5C07\u5DF2\u8A3B\u518A\u7684\u4F3A\u670D\u5668\u53D6\u6D88\u8A3B\u518A
+servertool.unregister2=\t\u4F3A\u670D\u5668\u5DF2\u53D6\u6D88\u8A3B\u518A\u3002
 
 servertool.locate=\n\tlocate [ -serverid <server id> | -applicationName <name> ] [ <-endpointType <endpointType> ] \n
-servertool.locate1=\u91dd\u5c0d\u4e00\u500b\u5df2\u8a3b\u518a\u904e\u7684\u4f3a\u670d\u5668\u5c0b\u627e\u7279\u5b9a\u985e\u578b\u7684\u9023\u63a5\u57e0
-servertool.locate2=\n\n\t\u4e3b\u6a5f\u540d\u7a31 {0} \n\n\t\tPort\t\tPort Type\t\tORB Id\n\t\t----\t\t---------\t\t------\n
+servertool.locate1=\u91DD\u5C0D\u4E00\u500B\u5DF2\u8A3B\u518A\u904E\u7684\u4F3A\u670D\u5668\u5C0B\u627E\u7279\u5B9A\u985E\u578B\u7684\u9023\u63A5\u57E0
+servertool.locate2=\n\n\t\u4E3B\u6A5F\u540D\u7A31 {0} \n\n\t\t\u9023\u63A5\u57E0\t\t\u9023\u63A5\u57E0\u985E\u578B\t\tORB Id\n\t\t----\t\t---------\t\t------\n
 servertool.locateorb=\n\tlocateperorb [ -serverid <server id> | -applicationName <name> ] [ -orbid <ORB name> ]\n
-servertool.locateorb1=\u91dd\u5c0d\u5df2\u8a3b\u518a\u904e\u7684\u4f3a\u670d\u5668\u7684\u7279\u5b9a orb \u5c0b\u627e\u9023\u63a5\u57e0\u3002
-servertool.locateorb2=\n\n\t\u4e3b\u6a5f\u540d\u7a31 {0} \n\n\t\tPort\t\tPortType\t\tORB Id\n\t\t----\t\t--------\t\t------\n
+servertool.locateorb1=\u91DD\u5C0D\u5DF2\u8A3B\u518A\u904E\u7684\u4F3A\u670D\u5668\u7684\u7279\u5B9A orb \u5C0B\u627E\u9023\u63A5\u57E0\u3002
+servertool.locateorb2=\n\n\t\u4E3B\u6A5F\u540D\u7A31 {0} \n\n\t\t\u9023\u63A5\u57E0\t\t\u9023\u63A5\u57E0\u985E\u578B\t\tORB Id\n\t\t----\t\t--------\t\t------\n
 servertool.getserverid=\n\tgetserverid [ -applicationName <name> ] \n
-servertool.getserverid1=\u91dd\u5c0d\u4e00\u500b applicationName \u50b3\u56de\u4f3a\u670d\u5668\u8b58\u5225\u78bc
-servertool.getserverid2=\tapplicationName \u7684\u4f3a\u670d\u5668\u8b58\u5225\u78bc {0} \u70ba {1}
+servertool.getserverid1=\u50B3\u56DE applicationName \u7684\u4F3A\u670D\u5668\u8B58\u5225\u78BC
+servertool.getserverid2=\tapplicationName \u7684\u4F3A\u670D\u5668\u8B58\u5225\u78BC {0} \u70BA {1}
 
-servertool.list=\n\t\u6e05\u55ae\n
-servertool.list1=\u5217\u51fa\u6240\u6709\u8a3b\u518a\u904e\u7684\u4f3a\u670d\u5668
-servertool.list2=\n\t\u4f3a\u670d\u5668\u8b58\u5225\u78bc\t\u4f3a\u670d\u5668\u985e\u5225\u540d\u7a31\t\t\u4f3a\u670d\u5668\u61c9\u7528\u7a0b\u5f0f\n\t---------\t-----------------\t\t------------------\n
+servertool.list=\n\tlist\n
+servertool.list1=\u5217\u51FA\u6240\u6709\u8A3B\u518A\u904E\u7684\u4F3A\u670D\u5668
+servertool.list2=\n\t\u4F3A\u670D\u5668\u8B58\u5225\u78BC\t\u4F3A\u670D\u5668\u985E\u5225\u540D\u7A31\t\t\u4F3A\u670D\u5668\u61C9\u7528\u7A0B\u5F0F\n\t---------\t-----------------\t\t------------------\n
 servertool.listactive=\n\tlistactive
-servertool.listactive1=\u5217\u51fa\u73fe\u5728\u555f\u52d5\u7684\u4f3a\u670d\u5668
+servertool.listactive1=\u5217\u51FA\u76EE\u524D\u4F7F\u7528\u4E2D\u7684\u4F3A\u670D\u5668
 servertool.listappnames=\tlistappnames\n
-servertool.listappnames1=\u5217\u51fa\u73fe\u5728\u88ab\u5b9a\u7fa9\u7684 applicationNames
-servertool.listappnames2=\u73fe\u5728\u5b9a\u7fa9\u7684\u4f3a\u670d\u5668 applicationNames\uff1a
+servertool.listappnames1=\u5217\u51FA\u76EE\u524D\u5B9A\u7FA9\u7684 applicationNames
+servertool.listappnames2=\u76EE\u524D\u5B9A\u7FA9\u7684\u4F3A\u670D\u5668 applicationNames:
 
 servertool.shutdown=\n\tshutdown [ -serverid <server id> | -applicationName <name> ]\n
-servertool.shutdown1=\u95dc\u9589\u4e00\u500b\u8a3b\u518a\u904e\u7684\u4f3a\u670d\u5668
-servertool.shutdown2=\t\u4f3a\u670d\u5668\u95dc\u9589\u6210\u529f\u3002
+servertool.shutdown1=\u95DC\u9589\u4E00\u500B\u8A3B\u518A\u904E\u7684\u4F3A\u670D\u5668
+servertool.shutdown2=\t\u4F3A\u670D\u5668\u95DC\u9589\u6210\u529F\u3002
 servertool.startserver=\n\tstartup [ -serverid <server id> | -applicationName <name> ]\n
-servertool.startserver1=\u958b\u555f\u4e00\u500b\u8a3b\u518a\u904e\u7684\u4f3a\u670d\u5668
-servertool.startserver2=\t\u4f3a\u670d\u5668\u958b\u555f\u6210\u529f\u3002
+servertool.startserver1=\u555F\u52D5\u4E00\u500B\u8A3B\u518A\u904E\u7684\u4F3A\u670D\u5668
+servertool.startserver2=\t\u4F3A\u670D\u5668\u555F\u52D5\u6210\u529F\u3002
 
-servertool.quit=\n\t\u96e2\u958b\n
-servertool.quit1=\u96e2\u958b\u9019\u500b\u5de5\u5177
+servertool.quit=\n\tquit\n
+servertool.quit1=\u96E2\u958B\u9019\u500B\u5DE5\u5177
 
-servertool.help=\t\u5e6b\u52a9\n\tOR\n\thelp <command name>\n
-servertool.help1=\u53d6\u5f97\u5e6b\u52a9
+servertool.help=\thelp\n\t\u6216\n\thelp <command name>\n
+servertool.help1=\u53D6\u5F97\u8AAA\u660E
 
-servertool.orbidmap=\t\u7528\u6cd5\uff1a orblist [ -serverid <server id> | -applicationName <name> ]\n
-servertool.orbidmap1=orb \u540d\u7a31\u53ca\u5176\u5c0d\u6620\u6e05\u55ae
-servertool.orbidmap2=\n\tORB Id\t\tORB \u540d\u7a31\n\t------\t\t--------\n
-pnameserv.success=\u6c38\u4e45\u6027 NameServer \u958b\u555f\u6210\u529f
+servertool.orbidmap=\t\u7528\u6CD5: orblist [ -serverid <server id> | -applicationName <name> ]\n
+servertool.orbidmap1=orb \u540D\u7A31\u53CA\u5176\u5C0D\u6620\u6E05\u55AE
+servertool.orbidmap2=\n\tORB Id\t\tORB \u540D\u7A31\n\t------\t\t--------\n
+pnameserv.success=\u6C38\u4E45\u6027 NameServer \u555F\u52D5\u6210\u529F
 
 
-bootstrap.usage=\u7528\u6cd5\uff1a {0} <options> \n\n\u5176\u4e2d <options> \u5305\u62ec\uff1a\n  -ORBInitialPort        \u8d77\u59cb\u57e0\uff08\u5fc5\u8981\uff09\n  -InitialServicesFile   \u542b\u6709\u8d77\u555f\u670d\u52d9\u6e05\u55ae\u7684\u6a94\u6848\uff08\u5fc5\u8981\uff09\n
-bootstrap.success=\u8a2d\u5b9a\u9023\u63a5\u57e0\u81f3 {0} \u4e26\u5f9e {1} \u8b80\u53d6\u670d\u52d9
-bootstrap.filenotreadable=\u6a94\u6848 {0} \u7121\u6cd5\u8b80\u53d6
-bootstrap.filenotfound=\u6a94\u6848 {0} \u672a\u627e\u5230
-bootstrap.exception=\u5c07\u5c6c\u6027\u5132\u5b58\u81f3\u6a94\u6848 {0} \u6642\u767c\u751f\u7570\u5e38\uff1a\u7570\u5e38 {1}
+bootstrap.usage=\u7528\u6CD5: {0} <options> \n\n\u5176\u4E2D <options> \u5305\u62EC: \n  -ORBInitialPort        \u8D77\u59CB\u9023\u63A5\u57E0 (\u5FC5\u8981)\n  -InitialServicesFile   \u542B\u6709\u8D77\u59CB\u670D\u52D9\u6E05\u55AE\u7684\u6A94\u6848 (\u5FC5\u8981)\n
+bootstrap.success=\u8A2D\u5B9A\u9023\u63A5\u57E0\u81F3 {0} \u4E26\u5F9E {1} \u8B80\u53D6\u670D\u52D9
+bootstrap.filenotreadable=\u6A94\u6848 {0} \u7121\u6CD5\u8B80\u53D6
+bootstrap.filenotfound=\u627E\u4E0D\u5230\u6A94\u6848 {0}
+bootstrap.exception=\u5C07\u5C6C\u6027\u5132\u5B58\u81F3\u6A94\u6848 {0} \u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1: \u7570\u5E38\u72C0\u6CC1 {1}
 
-tnameserv.exception=\u958b\u555f {0} \u9023\u63a5\u57e0\u4e0a\u7684\u555f\u52d5\u7a0b\u5f0f\u670d\u52d9\u6642\uff0c\u767c\u751f\u7570\u5e38
-tnameserv.usage=\u8a66\u8457\u5229\u7528\u542b\u6709\u6307\u4ee4\u884c\u5f15\u6578\u7684\u4e0d\u540c\u9023\u63a5\u57e0 -ORBInitialPort <portno>
-tnameserv.invalidhostoption=ORBInitialHost \u4e0d\u662f NameService \u7684\u6709\u6548\u9078\u9805
-tnameserv.orbinitialport0=ORBInitialPort 0 \u4e0d\u662f NameService \u7684\u6709\u6548\u9078\u9805
-tnameserv.hs1=\u8d77\u59cb\u547d\u540d\u5167\u6587\uff1a\n{0}
-tnameserv.hs2=TransientNameServer: \u91dd\u5c0d\u8d77\u59cb\u7269\u4ef6\u53c3\u7167\uff0c\u8a2d\u5b9a\u9023\u63a5\u57e0\u81f3\uff1a{0}
-tnameserv.hs3=\u5c31\u7dd2\u3002
+tnameserv.exception=\u958B\u555F {0} \u9023\u63A5\u57E0\u4E0A\u7684\u555F\u52D5\u5B89\u88DD\u670D\u52D9\u6642\uFF0C\u767C\u751F\u7570\u5E38\u72C0\u6CC1
+tnameserv.usage=\u5617\u8A66\u4EE5\u547D\u4EE4\u884C\u5F15\u6578\u4F86\u4F7F\u7528\u4E0D\u540C\u9023\u63A5\u57E0 -ORBInitialPort <portno>
+tnameserv.invalidhostoption=ORBInitialHost \u4E0D\u662F NameService \u7684\u6709\u6548\u9078\u9805
+tnameserv.orbinitialport0=ORBInitialPort 0 \u4E0D\u662F NameService \u7684\u6709\u6548\u9078\u9805
+tnameserv.hs1=\u8D77\u59CB\u547D\u540D\u76F8\u95DC\u8CC7\u8A0A\u74B0\u5883: \n{0}
+tnameserv.hs2=TransientNameServer: \u91DD\u5C0D\u8D77\u59CB\u7269\u4EF6\u53C3\u7167\uFF0C\u8A2D\u5B9A\u9023\u63A5\u57E0\u81F3: {0}
+tnameserv.hs3=\u5C31\u7DD2\u3002
 
-orbd.commfailure=\n\u56e0\u70ba ORBinitialPort \u5728\u4f7f\u7528\u4e2d\uff0c\u6240\u4ee5\u7121\u6cd5\u555f\u52d5 ORBD\u3002
-orbd.internalexception=\n\u56e0\u70ba\u5167\u90e8\u767c\u751f\u7570\u5e38\uff0c\u6240\u4ee5\u7121\u6cd5\u555f\u52d5 ORBD\u3002 \n\u53ef\u80fd\u7684\u539f\u56e0\uff1a \n1. \u6307\u5b9a\u7684 ORBInitialPort \u6216 ORBActivationPort \u5728\u4f7f\u7528\u4e2d\u3002 \n2. \u6c92\u6709\u5beb\u5165 orb.db \u7684\u8a31\u53ef\u6b0a\u3002 
+orbd.commfailure=\n\u56E0\u70BA ORBinitialPort \u5728\u4F7F\u7528\u4E2D\uFF0C\u6240\u4EE5\u7121\u6CD5\u555F\u52D5 ORBD\u3002
+orbd.internalexception=\n\u56E0\u70BA\u5167\u90E8\u767C\u751F\u7570\u5E38\uFF0C\u6240\u4EE5\u7121\u6CD5\u555F\u52D5 ORBD\u3002 \n\u53EF\u80FD\u7684\u539F\u56E0: \n1. \u6307\u5B9A\u7684 ORBInitialPort \u6216 ORBActivationPort \u5728\u4F7F\u7528\u4E2D\u3002 \n2. \u6C92\u6709\u5BEB\u5165 orb.db \u7684\u6B0A\u9650\u3002 
 
--- a/hotspot/.hgtags	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/.hgtags	Wed Jul 05 17:35:13 2017 +0200
@@ -146,3 +146,5 @@
 d535bf4c12355a2897e918da9f8910c0aceec4fb hs20-b07
 102466e70debc4b907afbd7624e34ddb1aafee9f jdk7-b127
 9a5762f448595794d449a8e17342abd81a3fadaf jdk7-b128
+ae4b185f2ed14af7bab610738c333840598cdcc4 jdk7-b129
+ae4b185f2ed14af7bab610738c333840598cdcc4 hs21-b01
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/LowMemoryDetectorThread.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2003, 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.
- *
- */
-
-package sun.jvm.hotspot.runtime;
-
-import java.io.*;
-
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.types.*;
-
-public class LowMemoryDetectorThread extends JavaThread {
-  public LowMemoryDetectorThread(Address addr) {
-    super(addr);
-  }
-
-  public boolean isJavaThread() { return false; }
-  public boolean isHiddenFromExternalView() { return true; }
-  public boolean isLowMemoryDetectorThread() { return true; }
-
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/ServiceThread.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2003, 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.
+ *
+ */
+
+package sun.jvm.hotspot.runtime;
+
+import java.io.*;
+
+import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.types.*;
+
+public class ServiceThread extends JavaThread {
+  public ServiceThread(Address addr) {
+    super(addr);
+  }
+
+  public boolean isJavaThread() { return false; }
+  public boolean isHiddenFromExternalView() { return true; }
+  public boolean isServiceThread() { return true; }
+
+}
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/Thread.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/Thread.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -111,7 +111,7 @@
   public boolean   isJvmtiAgentThread()        { return false; }
   public boolean   isWatcherThread()           { return false; }
   public boolean   isConcurrentMarkSweepThread() { return false; }
-  public boolean   isLowMemoryDetectorThread() { return false; }
+  public boolean   isServiceThread()           { return false; }
 
   /** Memory operations */
   public void oopsDo(AddressVisitor oopVisitor) {
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/Threads.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/Threads.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -107,14 +107,14 @@
         // for now, use JavaThread itself. fix it later with appropriate class if needed
         virtualConstructor.addMapping("SurrogateLockerThread", JavaThread.class);
         virtualConstructor.addMapping("JvmtiAgentThread", JvmtiAgentThread.class);
-        virtualConstructor.addMapping("LowMemoryDetectorThread", LowMemoryDetectorThread.class);
+        virtualConstructor.addMapping("ServiceThread", ServiceThread.class);
     }
 
     public Threads() {
     }
 
     /** NOTE: this returns objects of type JavaThread, CompilerThread,
-      JvmtiAgentThread, and LowMemoryDetectorThread.
+      JvmtiAgentThread, and ServiceThread.
       The latter four are subclasses of the former. Most operations
       (fetching the top frame, etc.) are only allowed to be performed on
       a "pure" JavaThread. For this reason, {@link
@@ -143,7 +143,7 @@
             return thread;
         } catch (Exception e) {
             throw new RuntimeException("Unable to deduce type of thread from address " + threadAddr +
-            " (expected type JavaThread, CompilerThread, LowMemoryDetectorThread, JvmtiAgentThread, or SurrogateLockerThread)", e);
+            " (expected type JavaThread, CompilerThread, ServiceThread, JvmtiAgentThread, or SurrogateLockerThread)", e);
         }
     }
 
--- a/hotspot/make/Makefile	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/make/Makefile	Wed Jul 05 17:35:13 2017 +0200
@@ -73,6 +73,7 @@
   include defs.make
 endif
 
+include $(GAMMADIR)/make/altsrc.make
 
 ifneq ($(ALT_OUTPUTDIR),)
   ALT_OUT=ALT_OUTPUTDIR=$(ALT_OUTPUTDIR)
@@ -361,7 +362,8 @@
 $(EXPORT_INCLUDE_DIR)/%: $(HS_SRC_DIR)/share/vm/prims/%
 	$(install-file)
 
-$(EXPORT_INCLUDE_DIR)/$(JDK_INCLUDE_SUBDIR)/jni_md.h:  $(HS_SRC_DIR)/cpu/$(HS_ARCH)/vm/jni_$(HS_ARCH).h
+HS_JNI_ARCH_SRC=$(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(HS_ARCH)/vm/jni_$(HS_ARCH).h)
+$(EXPORT_INCLUDE_DIR)/$(JDK_INCLUDE_SUBDIR)/jni_md.h: $(HS_JNI_ARCH_SRC)
 	$(install-file)
 
 $(EXPORT_INCLUDE_DIR)/%: $(HS_SRC_DIR)/share/vm/services/%
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/make/altsrc.make	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,92 @@
+#
+# Copyright (c) 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.
+#  
+#
+
+# This file defines variables and macros which are used in the makefiles to 
+# allow distributions to augment or replace common hotspot code with 
+# distribution-specific source files.
+
+# Requires: GAMMADIR
+# Provides:
+#   variables: HS_COMMON_SRC, HS_ALT_SRC, HS_COMMON_SRC_REL, and HS_ALT_SRC_REL
+#   functions: altsrc-equiv, if-has-altsrc, altsrc, altsrc-replace
+
+HS_COMMON_SRC_REL=src
+
+# This needs to be changed to a more generic location, but we keep it as this 
+# for now for compatibility
+HS_ALT_SRC_REL=src/closed
+
+HS_COMMON_SRC=$(GAMMADIR)/$(HS_COMMON_SRC_REL)
+HS_ALT_SRC=$(GAMMADIR)/$(HS_ALT_SRC_REL)
+
+
+## altsrc-equiv 
+# 
+# Convert a common source path to an alternative source path
+#
+# Parameter: An absolute path into the common sources
+# Result: The matching path to the alternate-source location
+#
+altsrc-equiv=$(subst $(HS_COMMON_SRC)/,$(HS_ALT_SRC)/,$(1))
+
+
+## if-has-altsrc
+#
+# Conditional macro to test for the existence of an alternate source path
+#
+# Parameter: An absolute path into the common sources
+# Parameter: Result if the alternative-source location exists
+# Parameter: Result if the alternative-source location does not exist
+# Result: expands to parameter 2 or 3 depending on existence of alternate source
+#
+if-has-altsrc=$(if $(wildcard $(call altsrc-equiv,$(1))),$(2),$(3))
+
+
+## altsrc
+#
+# Converts common source path to alternate source path if the alternate 
+# path exists, otherwise evaluates to nul (empty string)
+# 
+# Parameter: An absolute path into the common sources
+# Result: The equivalent path to the alternate-source location, if such a 
+#         location exists on the filesystem.  Otherwise it expands to empty.
+# 
+altsrc=$(call if-has-altsrc,$(1),$(call altsrc-equiv,$(1)))
+
+## commonsrc
+# 
+# Returns parameter.
+#
+commonsrc=$(1)
+
+
+## altsrc-replace
+#
+# Converts a common source path to an alternate source path if the alternate
+# source path exists.  Otherwise it evaluates to the input common source path.
+#
+# Parameter: An absolute path into the common sources
+# Result: A path to either the common or alternate sources
+#
+altsrc-replace=$(call if-has-altsrc,$(1),$(call altsrc-equiv,$(1)),$(1))
--- a/hotspot/make/hotspot_version	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/make/hotspot_version	Wed Jul 05 17:35:13 2017 +0200
@@ -35,7 +35,7 @@
 
 HS_MAJOR_VER=21
 HS_MINOR_VER=0
-HS_BUILD_NUMBER=01
+HS_BUILD_NUMBER=02
 
 JDK_MAJOR_VER=1
 JDK_MINOR_VER=7
--- a/hotspot/make/jprt.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/make/jprt.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -44,6 +44,11 @@
 
 jprt.sync.push=false
 
+# Note: we want both embedded releases and regular releases to build and test
+#       all platforms so that regressions are not introduced (eg. change to
+#       common code by SE breaks PPC/ARM; change to common code by SE-E breaks
+#       sparc etc.
+
 # Define the Solaris platforms we want for the various releases
 
 jprt.my.solaris.sparc.jdk7=solaris_sparc_5.10
@@ -55,6 +60,8 @@
 jprt.my.solaris.sparc.jdk6u14=solaris_sparc_5.8
 jprt.my.solaris.sparc.jdk6u18=solaris_sparc_5.8
 jprt.my.solaris.sparc.jdk6u20=solaris_sparc_5.8
+jprt.my.solaris.sparc.ejdk7=${jprt.my.solaris.sparc.jdk7}
+jprt.my.solaris.sparc.ejdk6=${jprt.my.solaris.sparc.jdk6}
 jprt.my.solaris.sparc=${jprt.my.solaris.sparc.${jprt.tools.default.release}}
 
 jprt.my.solaris.sparcv9.jdk7=solaris_sparcv9_5.10
@@ -66,6 +73,8 @@
 jprt.my.solaris.sparcv9.jdk6u14=solaris_sparcv9_5.8
 jprt.my.solaris.sparcv9.jdk6u18=solaris_sparcv9_5.8
 jprt.my.solaris.sparcv9.jdk6u20=solaris_sparcv9_5.8
+jprt.my.solaris.sparcv9.ejdk7=${jprt.my.solaris.sparcv9.jdk7}
+jprt.my.solaris.sparcv9.ejdk6=${jprt.my.solaris.sparcv9.jdk6}
 jprt.my.solaris.sparcv9=${jprt.my.solaris.sparcv9.${jprt.tools.default.release}}
 
 jprt.my.solaris.i586.jdk7=solaris_i586_5.10
@@ -77,6 +86,8 @@
 jprt.my.solaris.i586.jdk6u14=solaris_i586_5.8
 jprt.my.solaris.i586.jdk6u18=solaris_i586_5.8
 jprt.my.solaris.i586.jdk6u20=solaris_i586_5.8
+jprt.my.solaris.i586.ejdk7=${jprt.my.solaris.i586.jdk7}
+jprt.my.solaris.i586.ejdk6=${jprt.my.solaris.i586.jdk6}
 jprt.my.solaris.i586=${jprt.my.solaris.i586.${jprt.tools.default.release}}
 
 jprt.my.solaris.x64.jdk7=solaris_x64_5.10
@@ -88,6 +99,8 @@
 jprt.my.solaris.x64.jdk6u14=solaris_x64_5.10
 jprt.my.solaris.x64.jdk6u18=solaris_x64_5.10
 jprt.my.solaris.x64.jdk6u20=solaris_x64_5.10
+jprt.my.solaris.x64.ejdk7=${jprt.my.solaris.x64.jdk7}
+jprt.my.solaris.x64.ejdk6=${jprt.my.solaris.x64.jdk6}
 jprt.my.solaris.x64=${jprt.my.solaris.x64.${jprt.tools.default.release}}
 
 jprt.my.linux.i586.jdk7=linux_i586_2.6
@@ -99,6 +112,8 @@
 jprt.my.linux.i586.jdk6u14=linux_i586_2.4
 jprt.my.linux.i586.jdk6u18=linux_i586_2.4
 jprt.my.linux.i586.jdk6u20=linux_i586_2.4
+jprt.my.linux.i586.ejdk7=linux_i586_2.6
+jprt.my.linux.i586.ejdk6=linux_i586_2.6
 jprt.my.linux.i586=${jprt.my.linux.i586.${jprt.tools.default.release}}
 
 jprt.my.linux.x64.jdk7=linux_x64_2.6
@@ -110,8 +125,45 @@
 jprt.my.linux.x64.jdk6u14=linux_x64_2.4
 jprt.my.linux.x64.jdk6u18=linux_x64_2.4
 jprt.my.linux.x64.jdk6u20=linux_x64_2.4
+jprt.my.linux.x64.ejdk7=${jprt.my.linux.x64.jdk7}
+jprt.my.linux.x64.ejdk6=${jprt.my.linux.x64.jdk6}
 jprt.my.linux.x64=${jprt.my.linux.x64.${jprt.tools.default.release}}
 
+jprt.my.linux.ppc.jdk7=linux_ppc_2.6
+jprt.my.linux.ppc.jdk7b107=linux_ppc_2.6
+jprt.my.linux.ppc.jdk7temp=linux_ppc_2.6
+jprt.my.linux.ppc.ejdk6=linux_ppc_2.6
+jprt.my.linux.ppc.ejdk7=linux_ppc_2.6
+jprt.my.linux.ppc=${jprt.my.linux.ppc.${jprt.tools.default.release}}
+
+jprt.my.linux.ppcv2.jdk7=linux_ppcv2_2.6
+jprt.my.linux.ppcv2.jdk7b107=linux_ppcv2_2.6
+jprt.my.linux.ppcv2.jdk7temp=linux_ppcv2_2.6
+jprt.my.linux.ppcv2.ejdk6=linux_ppcv2_2.6
+jprt.my.linux.ppcv2.ejdk7=linux_ppcv2_2.6
+jprt.my.linux.ppcv2=${jprt.my.linux.ppcv2.${jprt.tools.default.release}}
+
+jprt.my.linux.ppcsflt.jdk7=linux_ppcsflt_2.6
+jprt.my.linux.ppcsflt.jdk7b107=linux_ppcsflt_2.6
+jprt.my.linux.ppcsflt.jdk7temp=linux_ppcsflt_2.6
+jprt.my.linux.ppcsflt.ejdk6=linux_ppcsflt_2.6
+jprt.my.linux.ppcsflt.ejdk7=linux_ppcsflt_2.6
+jprt.my.linux.ppcsflt=${jprt.my.linux.ppcsflt.${jprt.tools.default.release}}
+
+jprt.my.linux.armvfp.jdk7=linux_armvfp_2.6
+jprt.my.linux.armvfp.jdk7b107=linux_armvfp_2.6
+jprt.my.linux.armvfp.jdk7temp=linux_armvfp_2.6
+jprt.my.linux.armvfp.ejdk6=linux_armvfp_2.6
+jprt.my.linux.armvfp.ejdk7=linux_armvfp_2.6
+jprt.my.linux.armvfp=${jprt.my.linux.armvfp.${jprt.tools.default.release}}
+
+jprt.my.linux.armsflt.jdk7=linux_armsflt_2.6
+jprt.my.linux.armsflt.jdk7b107=linux_armsflt_2.6
+jprt.my.linux.armsflt.jdk7temp=linux_armsflt_2.6
+jprt.my.linux.armsflt.ejdk6=linux_armsflt_2.6
+jprt.my.linux.armsflt.ejdk7=linux_armsflt_2.6
+jprt.my.linux.armsflt=${jprt.my.linux.armsflt.${jprt.tools.default.release}}
+
 jprt.my.windows.i586.jdk7=windows_i586_5.1
 jprt.my.windows.i586.jdk7b107=windows_i586_5.0
 jprt.my.windows.i586.jdk7temp=windows_i586_5.0
@@ -121,6 +173,8 @@
 jprt.my.windows.i586.jdk6u14=windows_i586_5.0
 jprt.my.windows.i586.jdk6u18=windows_i586_5.0
 jprt.my.windows.i586.jdk6u20=windows_i586_5.0
+jprt.my.windows.i586.ejdk7=${jprt.my.windows.i586.jdk7}
+jprt.my.windows.i586.ejdk6=${jprt.my.windows.i586.jdk6}
 jprt.my.windows.i586=${jprt.my.windows.i586.${jprt.tools.default.release}}
 
 jprt.my.windows.x64.jdk7=windows_x64_5.2
@@ -132,11 +186,13 @@
 jprt.my.windows.x64.jdk6u14=windows_x64_5.2
 jprt.my.windows.x64.jdk6u18=windows_x64_5.2
 jprt.my.windows.x64.jdk6u20=windows_x64_5.2
+jprt.my.windows.x64.ejdk7=${jprt.my.windows.x64.jdk7}
+jprt.my.windows.x64.ejdk6=${jprt.my.windows.x64.jdk6}
 jprt.my.windows.x64=${jprt.my.windows.x64.${jprt.tools.default.release}}
 
 # Standard list of jprt build targets for this source tree
 
-jprt.build.targets= \
+jprt.build.targets.standard= \
     ${jprt.my.solaris.sparc}-{product|fastdebug|debug}, \
     ${jprt.my.solaris.sparcv9}-{product|fastdebug|debug}, \
     ${jprt.my.solaris.i586}-{product|fastdebug|debug}, \
@@ -146,6 +202,30 @@
     ${jprt.my.windows.i586}-{product|fastdebug|debug}, \
     ${jprt.my.windows.x64}-{product|fastdebug|debug}
 
+jprt.build.targets.embedded= \
+    ${jprt.my.linux.i586}-{product|fastdebug|debug}, \
+    ${jprt.my.linux.ppc}-{product|fastdebug}, \
+    ${jprt.my.linux.ppcv2}-{product|fastdebug}, \
+    ${jprt.my.linux.ppcsflt}-{product|fastdebug}, \
+    ${jprt.my.linux.armvfp}-{product|fastdebug}, \
+    ${jprt.my.linux.armsflt}-{product|fastdebug}
+
+jprt.build.targets.all=${jprt.build.targets.standard}, \
+    ${jprt.build.targets.embedded}
+
+jprt.build.targets.jdk7=${jprt.build.targets.all}
+jprt.build.targets.jdk7temp=${jprt.build.targets.all}
+jprt.build.targets.jdk7b107=${jprt.build.targets.all}
+jprt.build.targets.jdk6=${jprt.build.targets.standard}
+jprt.build.targets.jdk6perf=${jprt.build.targets.standard}
+jprt.build.targets.jdk6u10=${jprt.build.targets.standard}
+jprt.build.targets.jdk6u14=${jprt.build.targets.standard}
+jprt.build.targets.jdk6u18=${jprt.build.targets.standard}
+jprt.build.targets.jdk6u20=${jprt.build.targets.standard}
+jprt.build.targets.ejdk6=${jprt.build.targets.all}
+jprt.build.targets.ejdk7=${jprt.build.targets.all}
+jprt.build.targets=${jprt.build.targets.${jprt.tools.default.release}}
+
 # Subset lists of test targets for this source tree
 
 jprt.my.solaris.sparc.test.targets= \
@@ -372,9 +452,14 @@
     ${jprt.my.windows.x64}-product-c2-jbb_G1, \
     ${jprt.my.windows.x64}-product-c2-jbb_ParOldGC
 
-# The complete list of test targets for jprt
+# Testing for actual embedded builds is different to standard
+jprt.my.linux.i586.test.targets.embedded = \
+    linux_i586_2.6-product-c1-scimark
 
-jprt.test.targets = \
+# The complete list of test targets for jprt
+# Note: no PPC or ARM tests at this stage
+
+jprt.test.targets.standard = \
   ${jprt.my.solaris.sparc.test.targets}, \
   ${jprt.my.solaris.sparcv9.test.targets}, \
   ${jprt.my.solaris.i586.test.targets}, \
@@ -384,15 +469,41 @@
   ${jprt.my.windows.i586.test.targets}, \
   ${jprt.my.windows.x64.test.targets}
 
+jprt.test.targets.embedded= 		\
+  ${jprt.my.linux.i586.test.targets.embedded}, \
+  ${jprt.my.solaris.sparc.test.targets}, \
+  ${jprt.my.solaris.sparcv9.test.targets}, \
+  ${jprt.my.solaris.i586.test.targets}, \
+  ${jprt.my.solaris.x64.test.targets}, \
+  ${jprt.my.linux.x64.test.targets}, \
+  ${jprt.my.windows.i586.test.targets}, \
+  ${jprt.my.windows.x64.test.targets}
+
+
+jprt.test.targets.jdk7=${jprt.test.targets.standard}
+jprt.test.targets.jdk7temp=${jprt.test.targets.standard}
+jprt.test.targets.jdk7b105=${jprt.test.targets.standard}
+jprt.test.targets.jdk6=${jprt.test.targets.standard}
+jprt.test.targets.jdk6perf=${jprt.test.targets.standard}
+jprt.test.targets.jdk6u10=${jprt.test.targets.standard}
+jprt.test.targets.jdk6u14=${jprt.test.targets.standard}
+jprt.test.targets.jdk6u18=${jprt.test.targets.standard}
+jprt.test.targets.jdk6u20=${jprt.test.targets.standard}
+jprt.test.targets.ejdk6=${jprt.test.targets.embedded}
+jprt.test.targets.ejdk7=${jprt.test.targets.embedded}
+jprt.test.targets=${jprt.test.targets.${jprt.tools.default.release}}
+
 # The default test/Makefile targets that should be run
 
 #jprt.make.rule.test.targets=*-product-*-packtest
 
-jprt.make.rule.test.targets = \
+jprt.make.rule.test.targets.standard.client = \
   ${jprt.my.solaris.sparc}-*-c1-clienttest, \
   ${jprt.my.solaris.i586}-*-c1-clienttest, \
   ${jprt.my.linux.i586}-*-c1-clienttest, \
-  ${jprt.my.windows.i586}-*-c1-clienttest, \
+  ${jprt.my.windows.i586}-*-c1-clienttest
+
+jprt.make.rule.test.targets.standard.server = \
   ${jprt.my.solaris.sparc}-*-c2-servertest, \
   ${jprt.my.solaris.sparcv9}-*-c2-servertest, \
   ${jprt.my.solaris.i586}-*-c2-servertest, \
@@ -402,3 +513,23 @@
   ${jprt.my.windows.i586}-*-c2-servertest, \
   ${jprt.my.windows.x64}-*-c2-servertest
 
+jprt.make.rule.test.targets.standard = \
+  ${jprt.make.rule.test.targets.standard.client}, \
+  ${jprt.make.rule.test.targets.standard.server}
+
+jprt.make.rule.test.targets.embedded = \
+  ${jprt.make.rule.test.targets.standard.client}
+
+jprt.make.rule.test.targets.jdk7=${jprt.make.rule.test.targets.standard}
+jprt.make.rule.test.targets.jdk7temp=${jprt.make.rule.test.targets.standard}
+jprt.make.rule.test.targets.jdk7b107=${jprt.make.rule.test.targets.standard}
+jprt.make.rule.test.targets.jdk6=${jprt.make.rule.test.targets.standard}
+jprt.make.rule.test.targets.jdk6perf=${jprt.make.rule.test.targets.standard}
+jprt.make.rule.test.targets.jdk6u10=${jprt.make.rule.test.targets.standard}
+jprt.make.rule.test.targets.jdk6u14=${jprt.make.rule.test.targets.standard}
+jprt.make.rule.test.targets.jdk6u18=${jprt.make.rule.test.targets.standard}
+jprt.make.rule.test.targets.jdk6u20=${jprt.make.rule.test.targets.standard}
+jprt.make.rule.test.targets.ejdk6=${jprt.make.rule.test.targets.embedded}
+jprt.make.rule.test.targets.ejdk7=${jprt.make.rule.test.targets.embedded}
+jprt.make.rule.test.targets=${jprt.make.rule.test.targets.${jprt.tools.default.release}}
+
--- a/hotspot/make/linux/Makefile	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/make/linux/Makefile	Wed Jul 05 17:35:13 2017 +0200
@@ -208,7 +208,7 @@
 TARGETS_SHARK     = $(addsuffix shark,$(TARGETS))
 
 BUILDTREE_MAKE    = $(GAMMADIR)/make/$(OSNAME)/makefiles/buildtree.make
-BUILDTREE_VARS    = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OSNAME) ARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH)
+BUILDTREE_VARS    = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OSNAME) SRCARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH)
 BUILDTREE_VARS   += HOTSPOT_RELEASE_VERSION=$(HOTSPOT_RELEASE_VERSION) HOTSPOT_BUILD_VERSION=$(HOTSPOT_BUILD_VERSION) JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION)
 
 BUILDTREE         = $(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_VARS)
--- a/hotspot/make/linux/makefiles/adlc.make	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/make/linux/makefiles/adlc.make	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 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
@@ -39,8 +39,9 @@
 
 SOURCE.AD = $(OUTDIR)/$(OS)_$(Platform_arch_model).ad 
 
-SOURCES.AD = $(GAMMADIR)/src/cpu/$(ARCH)/vm/$(Platform_arch_model).ad \
-	     $(GAMMADIR)/src/os_cpu/$(OS)_$(ARCH)/vm/$(OS)_$(Platform_arch_model).ad 
+SOURCES.AD = \
+  $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(ARCH)/vm/$(Platform_arch_model).ad) \
+  $(call altsrc-replace,$(HS_COMMON_SRC)/os_cpu/$(OS)_$(ARCH)/vm/$(OS)_$(Platform_arch_model).ad)
 
 EXEC	= $(OUTDIR)/adlc
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/make/linux/makefiles/arm.make	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,10 @@
+#
+# Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+# ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+#
+
+Obj_Files += linux_arm.o
+
+LIBS += $(EXT_LIBS_PATH)/sflt_glibc.a 
+
+CFLAGS += -DVM_LITTLE_ENDIAN
--- a/hotspot/make/linux/makefiles/buildtree.make	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/make/linux/makefiles/buildtree.make	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 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
@@ -24,7 +24,7 @@
 
 # Usage:
 #
-# $(MAKE) -f buildtree.make ARCH=arch BUILDARCH=buildarch LIBARCH=libarch
+# $(MAKE) -f buildtree.make SRCARCH=srcarch BUILDARCH=buildarch LIBARCH=libarch
 #         GAMMADIR=dir OS_FAMILY=os VARIANT=variant
 #
 # The macros ARCH, GAMMADIR, OS_FAMILY and VARIANT must be defined in the
@@ -56,6 +56,8 @@
 # having to read the dependency files for the vm.
 
 include $(GAMMADIR)/make/scm.make
+include $(GAMMADIR)/make/altsrc.make
+
 
 # 'gmake MAKE_VERBOSE=y' or 'gmake QUIETLY=' gives all the gory details.
 QUIETLY$(MAKE_VERBOSE)	= @
@@ -127,7 +129,7 @@
         env.sh env.csh jdkpath.sh .dbxrc test_gamma
 
 BUILDTREE_VARS	= GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OS_FAMILY) \
-	ARCH=$(ARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) VARIANT=$(VARIANT)
+	SRCARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) VARIANT=$(VARIANT)
 
 # Define variables to be set in flags.make.
 # Default values are set in make/defs.make.
@@ -146,13 +148,7 @@
 # Define HOTSPOT_VM_DISTRO based on settings in make/openjdk_distro
 # or make/hotspot_distro.
 ifndef HOTSPOT_VM_DISTRO
-  CLOSED_DIR_EXISTS := $(shell                \
-    if [ -d $(GAMMADIR)/src/closed ] ; then \
-      echo true;                              \
-    else                                      \
-      echo false;                             \
-    fi)
-  ifeq ($(CLOSED_DIR_EXISTS), true)
+  ifeq ($(call if-has-altsrc,$(HS_COMMON_SRC)/,true,false),true)
     include $(GAMMADIR)/make/hotspot_distro
   else
     include $(GAMMADIR)/make/openjdk_distro
@@ -177,6 +173,11 @@
 $(SIMPLE_DIRS):
 	$(QUIETLY) mkdir -p $@
 
+# Convenience macro which takes a source relative path, applies $(1) to the
+# absolute path, and then replaces $(GAMMADIR) in the result with a 
+# literal "$(GAMMADIR)/" suitable for inclusion in a Makefile.  
+gamma-path=$(subst $(GAMMADIR),\$$(GAMMADIR),$(call $(1),$(HS_COMMON_SRC)/$(2)))
+
 flags.make: $(BUILDTREE_MAKE) ../shared_dirs.lst
 	@echo Creating $@ ...
 	$(QUIETLY) ( \
@@ -187,7 +188,7 @@
 	echo; \
 	echo "GAMMADIR = $(GAMMADIR)"; \
 	echo "SYSDEFS = \$$(Platform_sysdefs)"; \
-	echo "SRCARCH = $(ARCH)"; \
+	echo "SRCARCH = $(SRCARCH)"; \
 	echo "BUILDARCH = $(BUILDARCH)"; \
 	echo "LIBARCH = $(LIBARCH)"; \
 	echo "TARGET = $(TARGET)"; \
@@ -208,16 +209,28 @@
 	echo; \
 	echo "Src_Dirs_V = \\"; \
 	sed 's/$$/ \\/;s|$(GAMMADIR)|$$(GAMMADIR)|' ../shared_dirs.lst; \
-	echo "\$$(GAMMADIR)/src/cpu/$(ARCH)/vm \\"; \
-	echo "\$$(GAMMADIR)/src/os/$(OS_FAMILY)/vm \\"; \
-	echo "\$$(GAMMADIR)/src/os_cpu/$(OS_FAMILY)_$(ARCH)/vm"; \
+	echo "$(call gamma-path,altsrc,cpu/$(SRCARCH)/vm) \\"; \
+	echo "$(call gamma-path,commonsrc,cpu/$(SRCARCH)/vm) \\"; \
+	echo "$(call gamma-path,altsrc,os_cpu/$(OS_FAMILY)_$(SRCARCH)/vm) \\"; \
+	echo "$(call gamma-path,commonsrc,os_cpu/$(OS_FAMILY)_$(SRCARCH)/vm) \\"; \
+	echo "$(call gamma-path,altsrc,os/$(OS_FAMILY)/vm) \\"; \
+	echo "$(call gamma-path,commonsrc,os/$(OS_FAMILY)/vm) \\"; \
+	echo "$(call gamma-path,altsrc,os/posix/vm) \\"; \
+	echo "$(call gamma-path,commonsrc,os/posix/vm)"; \
 	echo; \
 	echo "Src_Dirs_I = \\"; \
-	echo "\$$(GAMMADIR)/src/share/vm \\"; \
-	echo "\$$(GAMMADIR)/src/share/vm/prims \\"; \
-	echo "\$$(GAMMADIR)/src/cpu/$(ARCH)/vm \\"; \
-	echo "\$$(GAMMADIR)/src/os/$(OS_FAMILY)/vm \\"; \
-	echo "\$$(GAMMADIR)/src/os_cpu/$(OS_FAMILY)_$(ARCH)/vm"; \
+	echo "$(call gamma-path,altsrc,share/vm/prims) \\"; \
+	echo "$(call gamma-path,commonsrc,share/vm/prims) \\"; \
+	echo "$(call gamma-path,altsrc,share/vm) \\"; \
+	echo "$(call gamma-path,commonsrc,share/vm) \\"; \
+	echo "$(call gamma-path,altsrc,cpu/$(SRCARCH)/vm) \\"; \
+	echo "$(call gamma-path,commonsrc,cpu/$(SRCARCH)/vm) \\"; \
+	echo "$(call gamma-path,altsrc,os_cpu/$(OS_FAMILY)_$(SRCARCH)/vm) \\"; \
+	echo "$(call gamma-path,commonsrc,os_cpu/$(OS_FAMILY)_$(SRCARCH)/vm) \\"; \
+	echo "$(call gamma-path,altsrc,os/$(OS_FAMILY)/vm) \\"; \
+	echo "$(call gamma-path,commonsrc,os/$(OS_FAMILY)/vm) \\"; \
+	echo "$(call gamma-path,altsrc,os/posix/vm) \\"; \
+	echo "$(call gamma-path,commonsrc,os/posix/vm)"; \
 	[ -n "$(CFLAGS_BROWSE)" ] && \
 	    echo && echo "CFLAGS_BROWSE = $(CFLAGS_BROWSE)"; \
 	[ -n "$(HOTSPOT_EXTRA_SYSDEFS)" ] && \
@@ -241,9 +254,14 @@
 
 ../shared_dirs.lst:  $(BUILDTREE_MAKE) $(GAMMADIR)/src/share/vm
 	@echo Creating directory list $@
-	$(QUIETLY) find $(GAMMADIR)/src/share/vm/* -prune \
+	$(QUIETLY) if [ -d $(HS_ALT_SRC)/share/vm ]; then \
+          find $(HS_ALT_SRC)/share/vm/* -prune \
+	  -type d \! \( $(TOPLEVEL_EXCLUDE_DIRS) \) -exec find {} \
+          \( $(ALWAYS_EXCLUDE_DIRS) \) -prune -o -type d -print \; > $@; \
+        fi;
+	$(QUIETLY) find $(HS_COMMON_SRC)/share/vm/* -prune \
 	-type d \! \( $(TOPLEVEL_EXCLUDE_DIRS) \) -exec find {} \
-        \( $(ALWAYS_EXCLUDE_DIRS) \) -prune -o -type d -print \; > $@
+        \( $(ALWAYS_EXCLUDE_DIRS) \) -prune -o -type d -print \; >> $@
 
 Makefile: $(BUILDTREE_MAKE)
 	@echo Creating $@ ...
--- a/hotspot/make/linux/makefiles/gcc.make	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/make/linux/makefiles/gcc.make	Wed Jul 05 17:35:13 2017 +0200
@@ -75,6 +75,11 @@
 CFLAGS += -fno-exceptions
 CFLAGS += -D_REENTRANT
 CFLAGS += -fcheck-new
+# version 4 and above support fvisibility=hidden (matches jni_x86.h file)
+# except 4.1.2 gives pointless warnings that can't be disabled (afaik)
+ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
+CFLAGS += -fvisibility=hidden
+endif
 
 ARCHFLAG = $(ARCHFLAG/$(BUILDARCH))
 ARCHFLAG/i486    = -m32 -march=i586
--- a/hotspot/make/linux/makefiles/mapfile-vers-debug	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/make/linux/makefiles/mapfile-vers-debug	Wed Jul 05 17:35:13 2017 +0200
@@ -262,14 +262,6 @@
                 JVM_SetField;
                 JVM_SetPrimitiveField;
 
-                # Needed for dropping VM into JDK 1.3.x, 1.4
-                _JVM_native_threads;
-                jdk_sem_init;
-                jdk_sem_post;
-                jdk_sem_wait;
-                jdk_pthread_sigmask;
-                jdk_waitpid;
-
                 # debug JVM
                 JVM_AccessVMBooleanFlag;
                 JVM_AccessVMIntFlag;
--- a/hotspot/make/linux/makefiles/mapfile-vers-product	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/make/linux/makefiles/mapfile-vers-product	Wed Jul 05 17:35:13 2017 +0200
@@ -262,14 +262,6 @@
                 JVM_SetField;
                 JVM_SetPrimitiveField;
 
-                # Needed for dropping VM into JDK 1.3.x, 1.4
-                _JVM_native_threads;
-                jdk_sem_init;
-                jdk_sem_post;
-                jdk_sem_wait;
-                jdk_pthread_sigmask;
-                jdk_waitpid;
-
                 # miscellaneous functions
                 jio_fprintf;
                 jio_printf;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/make/linux/makefiles/ppc.make	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,11 @@
+#
+# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+# ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+#
+
+# The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
+OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
+
+# Must also specify if CPU is big endian
+CFLAGS += -DVM_BIG_ENDIAN
+
--- a/hotspot/make/linux/makefiles/rules.make	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/make/linux/makefiles/rules.make	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 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
@@ -146,6 +146,8 @@
 include $(GAMMADIR)/make/pic.make
 endif
 
+include $(GAMMADIR)/make/altsrc.make
+
 # The non-PIC object files are only generated for 32 bit platforms.
 ifdef LP64
 %.o: %.cpp
--- a/hotspot/make/linux/makefiles/top.make	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/make/linux/makefiles/top.make	Wed Jul 05 17:35:13 2017 +0200
@@ -39,6 +39,8 @@
 # Instead, use "gmake" (or "gnumake") from the command line.  --Rose
 #MAKE = gmake
 
+include $(GAMMADIR)/make/altsrc.make
+
 TOPDIR      = $(shell echo `pwd`)
 GENERATED   = $(TOPDIR)/../generated
 VM          = $(GAMMADIR)/src/share/vm
@@ -57,8 +59,8 @@
 
 AD_Dir   = $(GENERATED)/adfiles
 ADLC     = $(AD_Dir)/adlc
-AD_Spec  = $(GAMMADIR)/src/cpu/$(Platform_arch)/vm/$(Platform_arch_model).ad
-AD_Src   = $(GAMMADIR)/src/share/vm/adlc
+AD_Spec  = $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(Platform_arch)/vm/$(Platform_arch_model).ad)
+AD_Src   = $(call altsrc-replace,$(HS_COMMON_SRC)/share/vm/adlc)
 AD_Names = ad_$(Platform_arch_model).hpp ad_$(Platform_arch_model).cpp
 AD_Files = $(AD_Names:%=$(AD_Dir)/%)
 
--- a/hotspot/make/linux/makefiles/vm.make	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/make/linux/makefiles/vm.make	Wed Jul 05 17:35:13 2017 +0200
@@ -28,6 +28,7 @@
 # Common build rules.
 MAKEFILES_DIR=$(GAMMADIR)/make/$(Platform_os_family)/makefiles
 include $(MAKEFILES_DIR)/rules.make
+include $(GAMMADIR)/make/altsrc.make
 
 default: build
 
@@ -119,17 +120,27 @@
 LIBJVM   = lib$(JVM).so
 LIBJVM_G = lib$(JVM)$(G_SUFFIX).so
 
-CORE_PATHS := $(shell find $(GAMMADIR)/src/share/vm/* -type d \! \( -name adlc -o -name c1 -o -name gc_implementation -o -name opto -o -name shark -o -name libadt \))
-CORE_PATHS += $(GAMMADIR)/src/os/$(Platform_os_family)/vm
-CORE_PATHS += $(GAMMADIR)/src/cpu/$(Platform_arch)/vm
-CORE_PATHS += $(GAMMADIR)/src/os_cpu/$(Platform_os_arch)/vm
-CORE_PATHS += $(GENERATED)/jvmtifiles
+SPECIAL_PATHS:=adlc c1 gc_implementation opto shark libadt
+
+SOURCE_PATHS=\
+  $(shell find $(HS_COMMON_SRC)/share/vm/* -type d \! \
+      \( -name DUMMY $(foreach dir,$(SPECIAL_PATHS),-o -name $(dir)) \))
+SOURCE_PATHS+=$(HS_COMMON_SRC)/os/$(Platform_os_family)/vm
+SOURCE_PATHS+=$(HS_COMMON_SRC)/os/posix/vm
+SOURCE_PATHS+=$(HS_COMMON_SRC)/cpu/$(Platform_arch)/vm
+SOURCE_PATHS+=$(HS_COMMON_SRC)/os_cpu/$(Platform_os_arch)/vm
 
-COMPILER1_PATHS := $(GAMMADIR)/src/share/vm/c1
+CORE_PATHS=$(foreach path,$(SOURCE_PATHS),$(call altsrc,$(path)) $(path))
+CORE_PATHS+=$(GENERATED)/jvmtifiles
+
+COMPILER1_PATHS := $(call altsrc,$(HS_COMMON_SRC)/share/vm/c1)
+COMPILER1_PATHS += $(HS_COMMON_SRC)/share/vm/c1
 
-COMPILER2_PATHS := $(GAMMADIR)/src/share/vm/opto
-COMPILER2_PATHS += $(GAMMADIR)/src/share/vm/libadt
-COMPILER2_PATHS +=  $(GENERATED)/adfiles
+COMPILER2_PATHS := $(call altsrc,$(HS_COMMON_SRC)/share/vm/opto)
+COMPILER2_PATHS += $(call altsrc,$(HS_COMMON_SRC)/share/vm/libadt)
+COMPILER2_PATHS += $(HS_COMMON_SRC)/share/vm/opto
+COMPILER2_PATHS += $(HS_COMMON_SRC)/share/vm/libadt
+COMPILER2_PATHS += $(GENERATED)/adfiles
 
 # Include dirs per type.
 Src_Dirs/CORE      := $(CORE_PATHS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/make/linux/platform_arm	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,17 @@
+os_family = linux
+
+arch = arm
+
+arch_model = arm
+
+os_arch = linux_arm
+
+os_arch_model = linux_arm
+
+lib_arch = arm
+
+compiler = gcc
+
+gnu_dis_arch = arm
+
+sysdefs = -DLINUX -D_GNU_SOURCE -DARM
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/make/linux/platform_ppc	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,17 @@
+os_family = linux
+
+arch = ppc
+
+arch_model = ppc
+
+os_arch = linux_ppc
+
+os_arch_model = linux_ppc
+
+lib_arch = ppc
+
+compiler = gcc
+
+gnu_dis_arch = ppc
+
+sysdefs = -DLINUX -D_GNU_SOURCE -DPPC
--- a/hotspot/make/solaris/makefiles/adlc.make	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/make/solaris/makefiles/adlc.make	Wed Jul 05 17:35:13 2017 +0200
@@ -27,6 +27,7 @@
 # It knows how to compile, link, and run the adlc.
 
 include $(GAMMADIR)/make/$(Platform_os_family)/makefiles/rules.make
+include $(GAMMADIR)/make/altsrc.make
 
 # #########################################################################
 
@@ -39,8 +40,9 @@
 
 SOURCE.AD = $(OUTDIR)/$(OS)_$(Platform_arch_model).ad 
 
-SOURCES.AD = $(GAMMADIR)/src/cpu/$(ARCH)/vm/$(Platform_arch_model).ad \
-	     $(GAMMADIR)/src/os_cpu/$(OS)_$(ARCH)/vm/$(OS)_$(Platform_arch_model).ad 
+SOURCES.AD = \
+  $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(ARCH)/vm/$(Platform_arch_model).ad) \
+  $(call altsrc-replace,$(HS_COMMON_SRC)/os_cpu/$(OS)_$(ARCH)/vm/$(OS)_$(Platform_arch_model).ad)
 
 EXEC	= $(OUTDIR)/adlc
 
--- a/hotspot/make/solaris/makefiles/buildtree.make	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/make/solaris/makefiles/buildtree.make	Wed Jul 05 17:35:13 2017 +0200
@@ -56,6 +56,7 @@
 # having to read the dependency files for the vm.
 
 include $(GAMMADIR)/make/scm.make
+include $(GAMMADIR)/make/altsrc.make
 
 # 'gmake MAKE_VERBOSE=y' or 'gmake QUIETLY=' gives all the gory details.
 QUIETLY$(MAKE_VERBOSE)	= @
@@ -139,13 +140,7 @@
 # Define HOTSPOT_VM_DISTRO based on settings in make/openjdk_distro
 # or make/hotspot_distro.
 ifndef HOTSPOT_VM_DISTRO
-  CLOSED_DIR_EXISTS := $(shell                \
-    if [ -d $(GAMMADIR)/src/closed ] ; then \
-      echo true;                              \
-    else                                      \
-      echo false;                             \
-    fi)
-  ifeq ($(CLOSED_DIR_EXISTS), true)
+  ifeq ($(call if-has-altsrc,$(HS_COMMON_SRC)/,true,false),true)
     include $(GAMMADIR)/make/hotspot_distro
   else
     include $(GAMMADIR)/make/openjdk_distro
@@ -170,6 +165,11 @@
 $(SIMPLE_DIRS):
 	$(QUIETLY) mkdir -p $@
 
+# Convenience macro which takes a source relative path, applies $(1) to the
+# absolute path, and then replaces $(GAMMADIR) in the result with a 
+# literal "$(GAMMADIR)/" suitable for inclusion in a Makefile.  
+gamma-path=$(subst $(GAMMADIR),\$$(GAMMADIR),$(call $(1),$(HS_COMMON_SRC)/$(2)))
+
 flags.make: $(BUILDTREE_MAKE) ../shared_dirs.lst
 	@echo Creating $@ ...
 	$(QUIETLY) ( \
@@ -202,16 +202,28 @@
 	echo; \
 	echo "Src_Dirs_V = \\"; \
 	sed 's/$$/ \\/;s|$(GAMMADIR)|$$(GAMMADIR)|' ../shared_dirs.lst; \
-	echo "\$$(GAMMADIR)/src/cpu/$(ARCH)/vm \\"; \
-	echo "\$$(GAMMADIR)/src/os/$(OS_FAMILY)/vm \\"; \
-	echo "\$$(GAMMADIR)/src/os_cpu/$(OS_FAMILY)_$(ARCH)/vm"; \
+	echo "$(call gamma-path,altsrc,cpu/$(ARCH)/vm) \\"; \
+	echo "$(call gamma-path,commonsrc,cpu/$(ARCH)/vm) \\"; \
+	echo "$(call gamma-path,altsrc,os_cpu/$(OS_FAMILY)_$(ARCH)/vm) \\"; \
+	echo "$(call gamma-path,commonsrc,os_cpu/$(OS_FAMILY)_$(ARCH)/vm) \\"; \
+	echo "$(call gamma-path,altsrc,os/$(OS_FAMILY)/vm) \\"; \
+	echo "$(call gamma-path,commonsrc,os/$(OS_FAMILY)/vm) \\"; \
+	echo "$(call gamma-path,altsrc,os/posix/vm) \\"; \
+	echo "$(call gamma-path,commonsrc,os/posix/vm)"; \
 	echo; \
 	echo "Src_Dirs_I = \\"; \
-	echo "\$$(GAMMADIR)/src/share/vm \\"; \
-	echo "\$$(GAMMADIR)/src/share/vm/prims \\"; \
-	echo "\$$(GAMMADIR)/src/cpu/$(ARCH)/vm \\"; \
-	echo "\$$(GAMMADIR)/src/os/$(OS_FAMILY)/vm \\"; \
-	echo "\$$(GAMMADIR)/src/os_cpu/$(OS_FAMILY)_$(ARCH)/vm"; \
+	echo "$(call gamma-path,altsrc,share/vm/prims) \\"; \
+	echo "$(call gamma-path,commonsrc,share/vm/prims) \\"; \
+	echo "$(call gamma-path,altsrc,share/vm) \\"; \
+	echo "$(call gamma-path,commonsrc,share/vm) \\"; \
+	echo "$(call gamma-path,altsrc,cpu/$(ARCH)/vm) \\"; \
+	echo "$(call gamma-path,commonsrc,cpu/$(ARCH)/vm) \\"; \
+	echo "$(call gamma-path,altsrc,os_cpu/$(OS_FAMILY)_$(ARCH)/vm) \\"; \
+	echo "$(call gamma-path,commonsrc,os_cpu/$(OS_FAMILY)_$(ARCH)/vm) \\"; \
+	echo "$(call gamma-path,altsrc,os/$(OS_FAMILY)/vm) \\"; \
+	echo "$(call gamma-path,commonsrc,os/$(OS_FAMILY)/vm) \\"; \
+	echo "$(call gamma-path,altsrc,os/posix/vm) \\"; \
+	echo "$(call gamma-path,commonsrc,os/posix/vm)"; \
 	[ -n "$(CFLAGS_BROWSE)" ] && \
 	    echo && echo "CFLAGS_BROWSE = $(CFLAGS_BROWSE)"; \
 	[ -n "$(HOTSPOT_EXTRA_SYSDEFS)" ] && \
@@ -235,9 +247,14 @@
 
 ../shared_dirs.lst:  $(BUILDTREE_MAKE) $(GAMMADIR)/src/share/vm
 	@echo Creating directory list $@
-	$(QUIETLY) find $(GAMMADIR)/src/share/vm/* -prune \
+	$(QUIETLY) if [ -d $(HS_ALT_SRC)/share/vm ]; then \
+          find $(HS_ALT_SRC)/share/vm/* -prune \
+	  -type d \! \( $(TOPLEVEL_EXCLUDE_DIRS) \) -exec find {} \
+          \( $(ALWAYS_EXCLUDE_DIRS) \) -prune -o -type d -print \; > $@; \
+        fi;
+	$(QUIETLY) find $(HS_COMMON_SRC)/share/vm/* -prune \
 	-type d \! \( $(TOPLEVEL_EXCLUDE_DIRS) \) -exec find {} \
-        \( $(ALWAYS_EXCLUDE_DIRS) \) -prune -o -type d -print \; > $@
+        \( $(ALWAYS_EXCLUDE_DIRS) \) -prune -o -type d -print \; >> $@
 
 Makefile: $(BUILDTREE_MAKE)
 	@echo Creating $@ ...
--- a/hotspot/make/solaris/makefiles/rules.make	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/make/solaris/makefiles/rules.make	Wed Jul 05 17:35:13 2017 +0200
@@ -146,6 +146,8 @@
 include $(GAMMADIR)/make/pic.make
 endif
 
+include $(GAMMADIR)/make/altsrc.make
+
 # Sun compiler for 64 bit Solaris does not support building non-PIC object files.
 ifdef LP64
 %.o: %.cpp
--- a/hotspot/make/solaris/makefiles/top.make	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/make/solaris/makefiles/top.make	Wed Jul 05 17:35:13 2017 +0200
@@ -39,6 +39,8 @@
 # Instead, use "gmake" (or "gnumake") from the command line.  --Rose
 #MAKE = gmake
 
+include $(GAMMADIR)/make/altsrc.make
+
 GENERATED   = ../generated
 VM          = $(GAMMADIR)/src/share/vm
 Plat_File   = $(Platform_file)
@@ -48,8 +50,8 @@
 
 AD_Dir   = $(GENERATED)/adfiles
 ADLC     = $(AD_Dir)/adlc
-AD_Spec  = $(GAMMADIR)/src/cpu/$(Platform_arch)/vm/$(Platform_arch_model).ad
-AD_Src   = $(GAMMADIR)/src/share/vm/adlc
+AD_Spec  = $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(Platform_arch)/vm/$(Platform_arch_model).ad)
+AD_Src   = $(call altsrc-replace,$(HS_COMMON_SRC)/share/vm/adlc)
 AD_Names = ad_$(Platform_arch_model).hpp ad_$(Platform_arch_model).cpp
 AD_Files = $(AD_Names:%=$(AD_Dir)/%)
 
--- a/hotspot/make/solaris/makefiles/vm.make	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/make/solaris/makefiles/vm.make	Wed Jul 05 17:35:13 2017 +0200
@@ -28,6 +28,7 @@
 # Common build rules.
 MAKEFILES_DIR=$(GAMMADIR)/make/$(Platform_os_family)/makefiles
 include $(MAKEFILES_DIR)/rules.make
+include $(GAMMADIR)/make/altsrc.make
 
 default: build
 
@@ -139,16 +140,26 @@
 LIBJVM   = lib$(JVM).so
 LIBJVM_G = lib$(JVM)$(G_SUFFIX).so
 
-CORE_PATHS := $(shell find $(GAMMADIR)/src/share/vm/* -type d \! \( -name adlc -o -name c1 -o -name gc_implementation -o -name opto -o -name shark -o -name libadt \))
-CORE_PATHS += $(GAMMADIR)/src/os/$(Platform_os_family)/vm
-CORE_PATHS += $(GAMMADIR)/src/cpu/$(Platform_arch)/vm
-CORE_PATHS += $(GAMMADIR)/src/os_cpu/$(Platform_os_arch)/vm
-CORE_PATHS += $(GENERATED)/jvmtifiles
+SPECIAL_PATHS:=adlc c1 dist gc_implementation opto shark libadt
+
+SOURCE_PATHS=\
+  $(shell find $(HS_COMMON_SRC)/share/vm/* -type d \! \
+      \( -name DUMMY $(foreach dir,$(SPECIAL_PATHS),-o -name $(dir)) \))
+SOURCE_PATHS+=$(HS_COMMON_SRC)/os/$(Platform_os_family)/vm
+SOURCE_PATHS+=$(HS_COMMON_SRC)/os/posix/vm
+SOURCE_PATHS+=$(HS_COMMON_SRC)/cpu/$(Platform_arch)/vm
+SOURCE_PATHS+=$(HS_COMMON_SRC)/os_cpu/$(Platform_os_arch)/vm
 
-COMPILER1_PATHS := $(GAMMADIR)/src/share/vm/c1
+CORE_PATHS=$(foreach path,$(SOURCE_PATHS),$(call altsrc,$(path)) $(path))
+CORE_PATHS+=$(GENERATED)/jvmtifiles
 
-COMPILER2_PATHS := $(GAMMADIR)/src/share/vm/opto
-COMPILER2_PATHS += $(GAMMADIR)/src/share/vm/libadt
+COMPILER1_PATHS := $(call altsrc,$(HS_COMMON_SRC)/share/vm/c1)
+COMPILER1_PATHS += $(HS_COMMON_SRC)/share/vm/c1
+
+COMPILER2_PATHS := $(call altsrc,$(HS_COMMON_SRC)/share/vm/opto)
+COMPILER2_PATHS += $(call altsrc,$(HS_COMMON_SRC)/share/vm/libadt)
+COMPILER2_PATHS += $(HS_COMMON_SRC)/share/vm/opto
+COMPILER2_PATHS += $(HS_COMMON_SRC)/share/vm/libadt
 COMPILER2_PATHS +=  $(GENERATED)/adfiles
 
 # Include dirs per type.
--- a/hotspot/make/windows/create_obj_files.sh	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/make/windows/create_obj_files.sh	Wed Jul 05 17:35:13 2017 +0200
@@ -51,21 +51,48 @@
 WorkSpace=$4
 GENERATED=$5
 
-BASE_PATHS="` $FIND ${WorkSpace}/src/share/vm ! -name vm -prune -type d \! \( -name adlc -o -name c1 -o -name gc_implementation -o -name opto -o -name shark -o -name libadt \)`"
-BASE_PATHS="${BASE_PATHS} ${WorkSpace}/src/share/vm/gc_implementation/shared"
-BASE_PATHS="${BASE_PATHS} ${WorkSpace}/src/os/${Platform_os_family}/vm"
-BASE_PATHS="${BASE_PATHS} ${WorkSpace}/src/cpu/${Platform_arch}/vm"
-BASE_PATHS="${BASE_PATHS} ${WorkSpace}/src/os_cpu/${Platform_os_arch}/vm"
+COMMONSRC_REL=src
+ALTSRC_REL=src/closed # Change this to pick up alt sources from somewhere else
+
+COMMONSRC=${WorkSpace}/${COMMONSRC_REL}
+ALTSRC=${WorkSpace}/${ALTSRC_REL}
+
+BASE_PATHS="`if [ -d ${ALTSRC}/share/vm ]; then $FIND ${ALTSRC}/share/vm ! -name vm -prune -type d \! \( -name adlc -o -name c1 -o -name gc_implementation -o -name opto -o -name shark -o -name libadt \); fi`"
+BASE_PATHS="${BASE_PATHS} ` $FIND ${COMMONSRC}/share/vm ! -name vm -prune -type d \! \( -name adlc -o -name c1 -o -name gc_implementation -o -name opto -o -name shark -o -name libadt \)`"
+
+for sd in \
+    share/vm/gc_implementation/shared \
+    os/${Platform_os_family}/vm \
+    cpu/${Platform_arch}/vm \
+    os_cpu/${Platform_os_arch}/vm; do 
+  if [ -d "${ALTSRC}/${sd}" ]; then
+    BASE_PATHS="${BASE_PATHS} ${ALTSRC}/${sd}"
+  fi
+  BASE_PATHS="${BASE_PATHS} ${COMMONSRC}/${sd}"
+done
+
 BASE_PATHS="${BASE_PATHS} ${GENERATED}/jvmtifiles"
 
 CORE_PATHS="${BASE_PATHS}"
 # shared is already in BASE_PATHS. Should add vm/memory but that one is also in BASE_PATHS.
-CORE_PATHS="${CORE_PATHS} `$FIND ${WorkSpace}/src/share/vm/gc_implementation ! -name gc_implementation -prune -type d \! -name shared`"
+if [ -d "${ALTSRC}/share/vm/gc_implementation" ]; then
+  CORE_PATHS="${CORE_PATHS} `$FIND ${ALTSRC}/share/vm/gc_implementation ! -name gc_implementation -prune -type d \! -name shared`"
+fi
+CORE_PATHS="${CORE_PATHS} `$FIND ${COMMONSRC}/share/vm/gc_implementation ! -name gc_implementation -prune -type d \! -name shared`"
 
-COMPILER1_PATHS="${WorkSpace}/src/share/vm/c1"
+if [ -d "${ALTSRC}/share/vm/c1" ]; then
+  COMPILER1_PATHS="${ALTSRC}/share/vm/c1"
+fi
+COMPILER1_PATHS="${COMPILER1_PATHS} ${COMMONSRC}/share/vm/c1"
 
-COMPILER2_PATHS="${WorkSpace}/src/share/vm/opto"
-COMPILER2_PATHS="${COMPILER2_PATHS} ${WorkSpace}/src/share/vm/libadt"
+if [ -d "${ALTSRC}/share/vm/opto" ]; then
+  COMPILER2_PATHS="${ALTSRC}/share/vm/opto"
+fi
+COMPILER2_PATHS="${COMPILER2_PATHS} ${COMMONSRC}/share/vm/opto"
+if [ -d "${ALTSRC}/share/vm/libadt" ]; then
+  COMPILER2_PATHS="${COMPILER2_PATHS} ${ALTSRC}/share/vm/libadt"
+fi
+COMPILER2_PATHS="${COMPILER2_PATHS} ${COMMONSRC}/share/vm/libadt"
 COMPILER2_PATHS="${COMPILER2_PATHS} ${GENERATED}/adfiles"
 
 # Include dirs per type.
--- a/hotspot/make/windows/makefiles/vm.make	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/make/windows/makefiles/vm.make	Wed Jul 05 17:35:13 2017 +0200
@@ -27,6 +27,9 @@
 
 !include ..\generated\objfiles.make
 
+COMMONSRC=$(WorkSpace)\src
+ALTSRC=$(WorkSpace)\src\closed
+
 !ifdef RELEASE 
 !ifdef DEVELOP
 CPP_FLAGS=$(CPP_FLAGS) /D "DEBUG"
@@ -111,13 +114,30 @@
   /export:JVM_GetThreadStateValues           \
   /export:JVM_InitAgentProperties
 
-CPP_INCLUDE_DIRS=\
-  /I "..\generated" \
-  /I "$(WorkSpace)\src\share\vm" \
-  /I "$(WorkSpace)\src\share\vm\prims" \
-  /I "$(WorkSpace)\src\os\windows\vm" \
-  /I "$(WorkSpace)\src\os_cpu\windows_$(Platform_arch)\vm" \
-  /I "$(WorkSpace)\src\cpu\$(Platform_arch)\vm"
+CPP_INCLUDE_DIRS=/I "..\generated"
+
+!if exists($(ALTSRC)\share\vm)
+CPP_INCLUDE_DIRS=$(CPP_INCLUDE_DIRS) /I "$(ALTSRC)\share\vm"
+!endif
+
+!if exists($(ALTSRC)\os\windows\vm)
+CPP_INCLUDE_DIRS=$(CPP_INCLUDE_DIRS) /I "$(ALTSRC)\os\windows\vm"
+!endif
+
+!if exists($(ALTSRC)\os_cpu\windows_$(Platform_arch)\vm)
+CPP_INCLUDE_DIRS=$(CPP_INCLUDE_DIRS) /I "$(ALTSRC)\os_cpu\windows_$(Platform_arch)\vm"
+!endif
+
+!if exists($(ALTSRC)\cpu\$(Platform_arch)\vm)
+CPP_INCLUDE_DIRS=$(CPP_INCLUDE_DIRS) /I "$(ALTSRC)\cpu\$(Platform_arch)\vm"
+!endif
+
+CPP_INCLUDE_DIRS=$(CPP_INCLUDE_DIRS) \
+  /I "$(COMMONSRC)\share\vm" \
+  /I "$(COMMONSRC)\share\vm\prims" \
+  /I "$(COMMONSRC)\os\windows\vm" \
+  /I "$(COMMONSRC)\os_cpu\windows_$(Platform_arch)\vm" \
+  /I "$(COMMONSRC)\cpu\$(Platform_arch)\vm"
 
 CPP_DONT_USE_PCH=/D DONT_USE_PRECOMPILED_HEADER
 
@@ -127,7 +147,7 @@
 CPP_USE_PCH=$(CPP_DONT_USE_PCH)
 !endif
 
-# Where to find the source code for the virtual machine
+# Where to find the source code for the virtual machine (is this used?)
 VM_PATH=../generated
 VM_PATH=$(VM_PATH);../generated/adfiles
 VM_PATH=$(VM_PATH);../generated/jvmtifiles
@@ -188,81 +208,157 @@
         $(CPP) $(CPP_FLAGS) $(CPP_DONT_USE_PCH) /c ..\generated\jvmtifiles\bytecodeInterpreterWithChecks.cpp
 
 # Default rules for the Virtual Machine
-{$(WorkSpace)\src\share\vm\c1}.cpp.obj::
+{$(COMMONSRC)\share\vm\c1}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
-{$(WorkSpace)\src\share\vm\compiler}.cpp.obj::
+{$(COMMONSRC)\share\vm\compiler}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
-{$(WorkSpace)\src\share\vm\code}.cpp.obj::
+{$(COMMONSRC)\share\vm\code}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
-{$(WorkSpace)\src\share\vm\interpreter}.cpp.obj::
+{$(COMMONSRC)\share\vm\interpreter}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
-{$(WorkSpace)\src\share\vm\ci}.cpp.obj::
+{$(COMMONSRC)\share\vm\ci}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
-{$(WorkSpace)\src\share\vm\classfile}.cpp.obj::
+{$(COMMONSRC)\share\vm\classfile}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
-{$(WorkSpace)\src\share\vm\gc_implementation\parallelScavenge}.cpp.obj::
+{$(COMMONSRC)\share\vm\gc_implementation\parallelScavenge}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
-{$(WorkSpace)\src\share\vm\gc_implementation\shared}.cpp.obj::
+{$(COMMONSRC)\share\vm\gc_implementation\shared}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
-{$(WorkSpace)\src\share\vm\gc_implementation\parNew}.cpp.obj::
+{$(COMMONSRC)\share\vm\gc_implementation\parNew}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
-{$(WorkSpace)\src\share\vm\gc_implementation\concurrentMarkSweep}.cpp.obj::
+{$(COMMONSRC)\share\vm\gc_implementation\concurrentMarkSweep}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
-{$(WorkSpace)\src\share\vm\gc_implementation\g1}.cpp.obj::
+{$(COMMONSRC)\share\vm\gc_implementation\g1}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
-{$(WorkSpace)\src\share\vm\gc_interface}.cpp.obj::
+{$(COMMONSRC)\share\vm\gc_interface}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
-{$(WorkSpace)\src\share\vm\asm}.cpp.obj::
+{$(COMMONSRC)\share\vm\asm}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
-{$(WorkSpace)\src\share\vm\memory}.cpp.obj::
+{$(COMMONSRC)\share\vm\memory}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
-{$(WorkSpace)\src\share\vm\oops}.cpp.obj::
+{$(COMMONSRC)\share\vm\oops}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
-{$(WorkSpace)\src\share\vm\prims}.cpp.obj::
+{$(COMMONSRC)\share\vm\prims}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
-{$(WorkSpace)\src\share\vm\runtime}.cpp.obj::
+{$(COMMONSRC)\share\vm\runtime}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
-{$(WorkSpace)\src\share\vm\services}.cpp.obj::
+{$(COMMONSRC)\share\vm\services}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
-{$(WorkSpace)\src\share\vm\utilities}.cpp.obj::
+{$(COMMONSRC)\share\vm\utilities}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
-{$(WorkSpace)\src\share\vm\libadt}.cpp.obj::
+{$(COMMONSRC)\share\vm\libadt}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
-{$(WorkSpace)\src\share\vm\opto}.cpp.obj::
+{$(COMMONSRC)\share\vm\opto}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
-{$(WorkSpace)\src\os\windows\vm}.cpp.obj::
+{$(COMMONSRC)\os\windows\vm}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
 # This guy should remain a single colon rule because
 # otherwise we can't specify the output filename.
-{$(WorkSpace)\src\os\windows\vm}.rc.res:
+{$(COMMONSRC)\os\windows\vm}.rc.res:
         @$(RC) $(RC_FLAGS) /fo"$@" $<
 
-{$(WorkSpace)\src\cpu\$(Platform_arch)\vm}.cpp.obj::
+{$(COMMONSRC)\cpu\$(Platform_arch)\vm}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
+{$(COMMONSRC)\os_cpu\windows_$(Platform_arch)\vm}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
+{$(ALTSRC)\share\vm\c1}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
+{$(ALTSRC)\share\vm\compiler}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
+{$(ALTSRC)\share\vm\code}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
+{$(ALTSRC)\share\vm\interpreter}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
+{$(ALTSRC)\share\vm\ci}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
+{$(ALTSRC)\share\vm\classfile}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
+{$(ALTSRC)\share\vm\gc_implementation\parallelScavenge}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
+{$(ALTSRC)\share\vm\gc_implementation\shared}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
+{$(ALTSRC)\share\vm\gc_implementation\parNew}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
+{$(ALTSRC)\share\vm\gc_implementation\concurrentMarkSweep}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
+{$(ALTSRC)\share\vm\gc_implementation\g1}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
-{$(WorkSpace)\src\os_cpu\windows_$(Platform_arch)\vm}.cpp.obj::
+{$(ALTSRC)\share\vm\gc_interface}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
+{$(ALTSRC)\share\vm\asm}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
+{$(ALTSRC)\share\vm\memory}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
+{$(ALTSRC)\share\vm\oops}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
+{$(ALTSRC)\share\vm\prims}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
+{$(ALTSRC)\share\vm\runtime}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
+{$(ALTSRC)\share\vm\services}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
+{$(ALTSRC)\share\vm\utilities}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
+{$(ALTSRC)\share\vm\libadt}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
+{$(ALTSRC)\share\vm\opto}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
+{$(ALTSRC)\os\windows\vm}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
+# otherwise we can't specify the output filename.
+{$(ALTSRC)\os\windows\vm}.rc.res:
+        @$(RC) $(RC_FLAGS) /fo"$@" $<
+
+{$(ALTSRC)\cpu\$(Platform_arch)\vm}.cpp.obj::
+        $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
+
+{$(ALTSRC)\os_cpu\windows_$(Platform_arch)\vm}.cpp.obj::
         $(CPP) $(CPP_FLAGS) $(CPP_USE_PCH) /c $<
 
 {..\generated\incls}.cpp.obj::
--- a/hotspot/src/cpu/sparc/vm/jni_sparc.h	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/cpu/sparc/vm/jni_sparc.h	Wed Jul 05 17:35:13 2017 +0200
@@ -23,8 +23,13 @@
  * questions.
  */
 
-#define JNIEXPORT
-#define JNIIMPORT
+#if defined(__GNUC__) && (__GNUC__ >= 4)
+  #define JNIEXPORT     __attribute__((visibility("default")))
+  #define JNIIMPORT     __attribute__((visibility("default")))
+#else
+  #define JNIEXPORT
+  #define JNIIMPORT
+#endif
 #define JNICALL
 
 typedef int jint;
--- a/hotspot/src/cpu/x86/vm/jni_x86.h	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/cpu/x86/vm/jni_x86.h	Wed Jul 05 17:35:13 2017 +0200
@@ -27,10 +27,16 @@
 #define _JAVASOFT_JNI_MD_H_
 
 #if defined(SOLARIS) || defined(LINUX)
+
+#if defined(__GNUC__) && (__GNUC__ > 4) || (__GNUC__ == 4) && (__GNUC_MINOR__ > 2)
+  #define JNIEXPORT     __attribute__((visibility("default")))
+  #define JNIIMPORT     __attribute__((visibility("default")))
+#else
   #define JNIEXPORT
   #define JNIIMPORT
+#endif
+
   #define JNICALL
-
   typedef int jint;
 
 #ifdef _LP64
--- a/hotspot/src/cpu/zero/vm/jni_zero.h	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/cpu/zero/vm/jni_zero.h	Wed Jul 05 17:35:13 2017 +0200
@@ -24,8 +24,14 @@
  * questions.
  */
 
-#define JNIEXPORT
-#define JNIIMPORT
+
+#if defined(__GNUC__) && (__GNUC__ >= 4)
+  #define JNIEXPORT     __attribute__((visibility("default")))
+  #define JNIIMPORT     __attribute__((visibility("default")))
+#else
+  #define JNIEXPORT
+  #define JNIIMPORT
+#endif
 #define JNICALL
 
 typedef int jint;
--- a/hotspot/src/os/linux/vm/jvm_linux.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/os/linux/vm/jvm_linux.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -29,11 +29,6 @@
 
 #include <signal.h>
 
-/*
- * FIXME: This is temporary hack to keep Linux Runtime.exec()
- * code happy. See $JDK/src/linux/native/java/lang/UnixProcess_md.c
- */
-int _JVM_native_threads = 1;
 
 // sun.misc.Signal ///////////////////////////////////////////////////////////
 // Signal code is mostly copied from classic vm, signals_md.c   1.4 98/08/23
--- a/hotspot/src/os/linux/vm/osThread_linux.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/os/linux/vm/osThread_linux.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -39,6 +39,12 @@
 #ifdef TARGET_ARCH_zero
 # include "assembler_zero.inline.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "assembler_arm.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "assembler_ppc.inline.hpp"
+#endif
 
 
 void OSThread::pd_initialize() {
--- a/hotspot/src/os/linux/vm/os_linux.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/os/linux/vm/os_linux.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -76,6 +76,14 @@
 # include "assembler_zero.inline.hpp"
 # include "nativeInst_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "assembler_arm.inline.hpp"
+# include "nativeInst_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "assembler_ppc.inline.hpp"
+# include "nativeInst_ppc.hpp"
+#endif
 #ifdef COMPILER1
 #include "c1/c1_Runtime1.hpp"
 #endif
@@ -123,6 +131,7 @@
 #define ALL_64_BITS CONST64(0xFFFFFFFFFFFFFFFF)
 #define SEC_IN_NANOSECS  1000000000LL
 
+#define LARGEPAGES_BIT (1 << 6)
 ////////////////////////////////////////////////////////////////////////////////
 // global variables
 julong os::Linux::_physical_memory = 0;
@@ -2509,8 +2518,10 @@
   return end;
 }
 
-extern "C" void numa_warn(int number, char *where, ...) { }
-extern "C" void numa_error(char *where) { }
+// Something to do with the numa-aware allocator needs these symbols
+extern "C" JNIEXPORT void numa_warn(int number, char *where, ...) { }
+extern "C" JNIEXPORT void numa_error(char *where) { }
+extern "C" JNIEXPORT int fork1() { return fork(); }
 
 
 // If we are running with libnuma version > 2, then we should
@@ -2807,6 +2818,43 @@
   return linux_mprotect(addr, size, PROT_READ|PROT_WRITE);
 }
 
+/*
+* Set the coredump_filter bits to include largepages in core dump (bit 6)
+*
+* From the coredump_filter documentation:
+*
+* - (bit 0) anonymous private memory
+* - (bit 1) anonymous shared memory
+* - (bit 2) file-backed private memory
+* - (bit 3) file-backed shared memory
+* - (bit 4) ELF header pages in file-backed private memory areas (it is
+*           effective only if the bit 2 is cleared)
+* - (bit 5) hugetlb private memory
+* - (bit 6) hugetlb shared memory
+*/
+static void set_coredump_filter(void) {
+  FILE *f;
+  long cdm;
+
+  if ((f = fopen("/proc/self/coredump_filter", "r+")) == NULL) {
+    return;
+  }
+
+  if (fscanf(f, "%lx", &cdm) != 1) {
+    fclose(f);
+    return;
+  }
+
+  rewind(f);
+
+  if ((cdm & LARGEPAGES_BIT) == 0) {
+    cdm |= LARGEPAGES_BIT;
+    fprintf(f, "%#lx", cdm);
+  }
+
+  fclose(f);
+}
+
 // Large page support
 
 static size_t _large_page_size = 0;
@@ -2864,6 +2912,8 @@
     _page_sizes[2] = 0;
   }
 
+  set_coredump_filter();
+
   // Large page support is available on 2.6 or newer kernel, some vendors
   // (e.g. Redhat) have backported it to their 2.4 based distributions.
   // We optimistically assume the support is available. If later it turns out
@@ -3483,7 +3533,7 @@
 // Note that the VM will print warnings if it detects conflicting signal
 // handlers, unless invoked with the option "-XX:+AllowUserSignalHandlers".
 //
-extern "C" int
+extern "C" JNIEXPORT int
 JVM_handle_linux_signal(int signo, siginfo_t* siginfo,
                         void* ucontext, int abort_if_unrecognized);
 
@@ -4678,44 +4728,6 @@
   }
 }
 
-extern "C" {
-
-/**
- * NOTE: the following code is to keep the green threads code
- * in the libjava.so happy. Once the green threads is removed,
- * these code will no longer be needed.
- */
-int
-jdk_waitpid(pid_t pid, int* status, int options) {
-    return waitpid(pid, status, options);
-}
-
-int
-fork1() {
-    return fork();
-}
-
-int
-jdk_sem_init(sem_t *sem, int pshared, unsigned int value) {
-    return sem_init(sem, pshared, value);
-}
-
-int
-jdk_sem_post(sem_t *sem) {
-    return sem_post(sem);
-}
-
-int
-jdk_sem_wait(sem_t *sem) {
-    return sem_wait(sem);
-}
-
-int
-jdk_pthread_sigmask(int how , const sigset_t* newmask, sigset_t* oldmask) {
-    return pthread_sigmask(how , newmask, oldmask);
-}
-
-}
 
 // Refer to the comments in os_solaris.cpp park-unpark.
 //
--- a/hotspot/src/os/linux/vm/os_linux.inline.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/os/linux/vm/os_linux.inline.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -39,6 +39,14 @@
 # include "atomic_linux_zero.inline.hpp"
 # include "orderAccess_linux_zero.inline.hpp"
 #endif
+#ifdef TARGET_OS_ARCH_linux_arm
+# include "atomic_linux_arm.inline.hpp"
+# include "orderAccess_linux_arm.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_ppc
+# include "atomic_linux_ppc.inline.hpp"
+# include "orderAccess_linux_ppc.inline.hpp"
+#endif
 
 // System includes
 
--- a/hotspot/src/os/linux/vm/thread_linux.inline.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/os/linux/vm/thread_linux.inline.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -44,6 +44,16 @@
 # include "orderAccess_linux_zero.inline.hpp"
 # include "prefetch_linux_zero.inline.hpp"
 #endif
+#ifdef TARGET_OS_ARCH_linux_arm
+# include "atomic_linux_arm.inline.hpp"
+# include "orderAccess_linux_arm.inline.hpp"
+# include "prefetch_linux_arm.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_ppc
+# include "atomic_linux_ppc.inline.hpp"
+# include "orderAccess_linux_ppc.inline.hpp"
+# include "prefetch_linux_ppc.inline.hpp"
+#endif
 
 // Contains inlined functions for class Thread and ThreadLocalStorage
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/os/posix/vm/os_posix.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,61 @@
+/*
+* Copyright (c) 1999, 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.
+*
+*/
+
+#include "prims/jvm.h"
+#include "runtime/os.hpp"
+#include "utilities/vmError.hpp"
+
+#include <unistd.h>
+#include <sys/resource.h>
+
+// Check core dump limit and report possible place where core can be found
+void os::check_or_create_dump(void* exceptionRecord, void* contextRecord, char* buffer, size_t bufferSize) {
+  struct rlimit rlim;
+  static char cwd[O_BUFLEN];
+  bool success;
+
+  get_current_directory(cwd, sizeof(cwd));
+
+  if (getrlimit(RLIMIT_CORE, &rlim) != 0) {
+    jio_snprintf(buffer, bufferSize, "%s/core or core.%d (may not exist)", cwd, current_process_id());
+    success = true;
+  } else {
+    switch(rlim.rlim_cur) {
+      case RLIM_INFINITY:
+        jio_snprintf(buffer, bufferSize, "%s/core or core.%d", cwd, current_process_id());
+        success = true;
+        break;
+      case 0:
+        jio_snprintf(buffer, bufferSize, "Core dumps have been disabled. To enable core dumping, try \"ulimit -c unlimited\" before starting Java again");
+        success = false;
+        break;
+      default:
+        jio_snprintf(buffer, bufferSize, "%s/core or core.%d (max size %lu kB). To ensure a full core dump, try \"ulimit -c unlimited\" before starting Java again", cwd, current_process_id(), (unsigned long)(rlim.rlim_cur >> 10));
+        success = true;
+        break;
+    }
+  }
+  VMError::report_coredump_status(buffer, success);
+}
+
--- a/hotspot/src/os/solaris/vm/os_solaris.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/os/solaris/vm/os_solaris.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -4221,7 +4221,9 @@
 // Note that the VM will print warnings if it detects conflicting signal
 // handlers, unless invoked with the option "-XX:+AllowUserSignalHandlers".
 //
-extern "C" int JVM_handle_solaris_signal(int signo, siginfo_t* siginfo, void* ucontext, int abort_if_unrecognized);
+extern "C" JNIEXPORT int
+JVM_handle_solaris_signal(int signo, siginfo_t* siginfo, void* ucontext,
+                          int abort_if_unrecognized);
 
 
 void signalHandler(int sig, siginfo_t* info, void* ucVoid) {
--- a/hotspot/src/os/windows/vm/os_windows.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/os/windows/vm/os_windows.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * CopyrighT (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -915,6 +915,85 @@
   }
 }
 
+
+static BOOL  (WINAPI *_MiniDumpWriteDump)  ( HANDLE, DWORD, HANDLE, MINIDUMP_TYPE, PMINIDUMP_EXCEPTION_INFORMATION,
+                                            PMINIDUMP_USER_STREAM_INFORMATION, PMINIDUMP_CALLBACK_INFORMATION);
+
+void os::check_or_create_dump(void* exceptionRecord, void* contextRecord, char* buffer, size_t bufferSize) {
+  HINSTANCE dbghelp;
+  EXCEPTION_POINTERS ep;
+  MINIDUMP_EXCEPTION_INFORMATION mei;
+  HANDLE hProcess = GetCurrentProcess();
+  DWORD processId = GetCurrentProcessId();
+  HANDLE dumpFile;
+  MINIDUMP_TYPE dumpType;
+  static const char* cwd;
+
+  // If running on a client version of Windows and user has not explicitly enabled dumping
+  if (!os::win32::is_windows_server() && !CreateMinidumpOnCrash) {
+    VMError::report_coredump_status("Minidumps are not enabled by default on client versions of Windows", false);
+    return;
+    // If running on a server version of Windows and user has explictly disabled dumping
+  } else if (os::win32::is_windows_server() && !FLAG_IS_DEFAULT(CreateMinidumpOnCrash) && !CreateMinidumpOnCrash) {
+    VMError::report_coredump_status("Minidump has been disabled from the command line", false);
+    return;
+  }
+
+  dbghelp = LoadLibrary("DBGHELP.DLL");
+
+  if (dbghelp == NULL) {
+    VMError::report_coredump_status("Failed to load dbghelp.dll", false);
+    return;
+  }
+
+  _MiniDumpWriteDump = CAST_TO_FN_PTR(
+    BOOL(WINAPI *)( HANDLE, DWORD, HANDLE, MINIDUMP_TYPE, PMINIDUMP_EXCEPTION_INFORMATION,
+    PMINIDUMP_USER_STREAM_INFORMATION, PMINIDUMP_CALLBACK_INFORMATION),
+    GetProcAddress(dbghelp, "MiniDumpWriteDump"));
+
+  if (_MiniDumpWriteDump == NULL) {
+    VMError::report_coredump_status("Failed to find MiniDumpWriteDump() in module dbghelp.dll", false);
+    return;
+  }
+
+  dumpType = (MINIDUMP_TYPE)(MiniDumpWithFullMemory | MiniDumpWithHandleData);
+
+// Older versions of dbghelp.h doesn't contain all the dumptypes we want, dbghelp.h with
+// API_VERSION_NUMBER 11 or higher contains the ones we want though
+#if API_VERSION_NUMBER >= 11
+  dumpType = (MINIDUMP_TYPE)(dumpType | MiniDumpWithFullMemoryInfo | MiniDumpWithThreadInfo |
+    MiniDumpWithUnloadedModules);
+#endif
+
+  cwd = get_current_directory(NULL, 0);
+  jio_snprintf(buffer, bufferSize, "%s\\hs_err_pid%u.mdmp",cwd, current_process_id());
+  dumpFile = CreateFile(buffer, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+
+  if (dumpFile == INVALID_HANDLE_VALUE) {
+    VMError::report_coredump_status("Failed to create file for dumping", false);
+    return;
+  }
+
+  ep.ContextRecord = (PCONTEXT) contextRecord;
+  ep.ExceptionRecord = (PEXCEPTION_RECORD) exceptionRecord;
+
+  mei.ThreadId = GetCurrentThreadId();
+  mei.ExceptionPointers = &ep;
+
+  // Older versions of dbghelp.dll (the one shipped with Win2003 for example) may not support all
+  // the dump types we really want. If first call fails, lets fall back to just use MiniDumpWithFullMemory then.
+  if (_MiniDumpWriteDump(hProcess, processId, dumpFile, dumpType, &mei, NULL, NULL) == false &&
+      _MiniDumpWriteDump(hProcess, processId, dumpFile, (MINIDUMP_TYPE)MiniDumpWithFullMemory, &mei, NULL, NULL) == false) {
+    VMError::report_coredump_status("Call to MiniDumpWriteDump() failed", false);
+  } else {
+    VMError::report_coredump_status(buffer, true);
+  }
+
+  CloseHandle(dumpFile);
+}
+
+
+
 void os::abort(bool dump_core)
 {
   os::shutdown();
@@ -3274,7 +3353,7 @@
 
 bool   os::win32::_is_nt              = false;
 bool   os::win32::_is_windows_2003    = false;
-
+bool   os::win32::_is_windows_server  = false;
 
 void os::win32::initialize_system_info() {
   SYSTEM_INFO si;
@@ -3293,9 +3372,9 @@
   GlobalMemoryStatusEx(&ms);
   _physical_memory = ms.ullTotalPhys;
 
-  OSVERSIONINFO oi;
-  oi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
-  GetVersionEx(&oi);
+  OSVERSIONINFOEX oi;
+  oi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
+  GetVersionEx((OSVERSIONINFO*)&oi);
   switch(oi.dwPlatformId) {
     case VER_PLATFORM_WIN32_WINDOWS: _is_nt = false; break;
     case VER_PLATFORM_WIN32_NT:
@@ -3305,6 +3384,10 @@
         if (os_vers == 5002) {
           _is_windows_2003 = true;
         }
+        if (oi.wProductType == VER_NT_DOMAIN_CONTROLLER ||
+          oi.wProductType == VER_NT_SERVER) {
+            _is_windows_server = true;
+        }
       }
       break;
     default: fatal("Unknown platform");
--- a/hotspot/src/os/windows/vm/os_windows.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/os/windows/vm/os_windows.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -38,6 +38,7 @@
   static size_t _default_stack_size;
   static bool   _is_nt;
   static bool   _is_windows_2003;
+  static bool   _is_windows_server;
 
  public:
   // Windows-specific interface:
@@ -64,6 +65,9 @@
   // Tells whether the platform is NT or Windown95
   static bool is_nt() { return _is_nt; }
 
+  // Tells whether this is a server version of Windows
+  static bool is_windows_server() { return _is_windows_server; }
+
   // Tells whether the platform is Windows 2003
   static bool is_windows_2003() { return _is_windows_2003; }
 
--- a/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -542,7 +542,7 @@
   return false;
 }
 
-extern "C" int
+extern "C" JNIEXPORT int
 JVM_handle_linux_signal(int sig,
                         siginfo_t* info,
                         void* ucVoid,
--- a/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -216,7 +216,7 @@
 extern "C" void FetchNResume () ;
 #endif // AMD64
 
-extern "C" int
+extern "C" JNIEXPORT int
 JVM_handle_linux_signal(int sig,
                         siginfo_t* info,
                         void* ucVoid,
--- a/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -116,7 +116,7 @@
   ShouldNotCallThis();
 }
 
-extern "C" int
+extern "C" JNIEXPORT int
 JVM_handle_linux_signal(int sig,
                         siginfo_t* info,
                         void* ucVoid,
--- a/hotspot/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -317,9 +317,9 @@
 extern "C" void FetchNPFI () ;
 extern "C" void FetchNResume () ;
 
-extern "C" int JVM_handle_solaris_signal(int signo, siginfo_t* siginfo, void* ucontext, int abort_if_unrecognized);
-
-int JVM_handle_solaris_signal(int sig, siginfo_t* info, void* ucVoid, int abort_if_unrecognized) {
+extern "C" JNIEXPORT int
+JVM_handle_solaris_signal(int sig, siginfo_t* info, void* ucVoid,
+                          int abort_if_unrecognized) {
   ucontext_t* uc = (ucontext_t*) ucVoid;
 
   Thread* t = ThreadLocalStorage::get_thread_slow();
--- a/hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -365,8 +365,6 @@
 
 }
 
-extern "C" int JVM_handle_solaris_signal(int signo, siginfo_t* siginfo, void* ucontext, int abort_if_unrecognized);
-
 extern "C" void Fetch32PFI () ;
 extern "C" void Fetch32Resume () ;
 #ifdef AMD64
@@ -374,7 +372,9 @@
 extern "C" void FetchNResume () ;
 #endif // AMD64
 
-int JVM_handle_solaris_signal(int sig, siginfo_t* info, void* ucVoid, int abort_if_unrecognized) {
+extern "C" JNIEXPORT int
+JVM_handle_solaris_signal(int sig, siginfo_t* info, void* ucVoid,
+                          int abort_if_unrecognized) {
   ucontext_t* uc = (ucontext_t*) ucVoid;
 
 #ifndef AMD64
--- a/hotspot/src/share/vm/asm/assembler.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/asm/assembler.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -37,6 +37,12 @@
 #ifdef TARGET_ARCH_zero
 # include "assembler_zero.inline.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "assembler_arm.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "assembler_ppc.inline.hpp"
+#endif
 
 
 // Implementation of AbstractAssembler
--- a/hotspot/src/share/vm/asm/assembler.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/asm/assembler.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -43,6 +43,14 @@
 # include "register_zero.hpp"
 # include "vm_version_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "register_arm.hpp"
+# include "vm_version_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "register_ppc.hpp"
+# include "vm_version_ppc.hpp"
+#endif
 
 // This file contains platform-independent assembler declarations.
 
@@ -395,6 +403,12 @@
 #ifdef TARGET_ARCH_zero
 # include "assembler_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "assembler_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "assembler_ppc.hpp"
+#endif
 
 
 #endif // SHARE_VM_ASM_ASSEMBLER_HPP
--- a/hotspot/src/share/vm/asm/codeBuffer.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/asm/codeBuffer.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -566,6 +566,12 @@
 #ifdef TARGET_ARCH_zero
 # include "codeBuffer_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "codeBuffer_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "codeBuffer_ppc.hpp"
+#endif
 
 };
 
--- a/hotspot/src/share/vm/c1/c1_Defs.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/c1/c1_Defs.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -35,6 +35,12 @@
 #ifdef TARGET_ARCH_zero
 # include "register_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "register_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "register_ppc.hpp"
+#endif
 
 // set frame size and return address offset to these values in blobs
 // (if the compiled frame uses ebp as link pointer on IA; otherwise,
@@ -50,6 +56,12 @@
 #ifdef TARGET_ARCH_sparc
 # include "c1_Defs_sparc.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "c1_Defs_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "c1_Defs_ppc.hpp"
+#endif
 
 
 // native word offsets from memory address
--- a/hotspot/src/share/vm/c1/c1_FpuStackSim.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/c1/c1_FpuStackSim.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -38,6 +38,12 @@
 #ifdef TARGET_ARCH_sparc
 # include "c1_FpuStackSim_sparc.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "c1_FpuStackSim_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "c1_FpuStackSim_ppc.hpp"
+#endif
 
 
 #endif // SHARE_VM_C1_C1_FPUSTACKSIM_HPP
--- a/hotspot/src/share/vm/c1/c1_FrameMap.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/c1/c1_FrameMap.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -35,6 +35,12 @@
 #ifdef TARGET_ARCH_zero
 # include "vmreg_zero.inline.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "vmreg_arm.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "vmreg_ppc.inline.hpp"
+#endif
 
 
 
--- a/hotspot/src/share/vm/c1/c1_FrameMap.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/c1/c1_FrameMap.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -88,6 +88,12 @@
 #ifdef TARGET_ARCH_sparc
 # include "c1_FrameMap_sparc.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "c1_FrameMap_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "c1_FrameMap_ppc.hpp"
+#endif
 
 
   friend class LIR_OprDesc;
--- a/hotspot/src/share/vm/c1/c1_Instruction.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/c1/c1_Instruction.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -316,6 +316,8 @@
     return res;
   }
 
+  static const int no_bci = -99;
+
   enum InstructionFlag {
     NeedsNullCheckFlag = 0,
     CanTrapFlag,
--- a/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -42,6 +42,14 @@
 # include "nativeInst_zero.hpp"
 # include "vmreg_zero.inline.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "nativeInst_arm.hpp"
+# include "vmreg_arm.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "nativeInst_ppc.hpp"
+# include "vmreg_ppc.inline.hpp"
+#endif
 
 
 void LIR_Assembler::patching_epilog(PatchingStub* patch, LIR_PatchCode patch_code, Register obj, CodeEmitInfo* info) {
--- a/hotspot/src/share/vm/c1/c1_LIRAssembler.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/c1/c1_LIRAssembler.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -252,6 +252,12 @@
 #ifdef TARGET_ARCH_sparc
 # include "c1_LIRAssembler_sparc.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "c1_LIRAssembler_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "c1_LIRAssembler_ppc.hpp"
+#endif
 
 };
 
--- a/hotspot/src/share/vm/c1/c1_LinearScan.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/c1/c1_LinearScan.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -41,6 +41,12 @@
 #ifdef TARGET_ARCH_zero
 # include "vmreg_zero.inline.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "vmreg_arm.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "vmreg_ppc.inline.hpp"
+#endif
 
 
 #ifndef PRODUCT
--- a/hotspot/src/share/vm/c1/c1_LinearScan.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/c1/c1_LinearScan.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -972,6 +972,12 @@
 #ifdef TARGET_ARCH_sparc
 # include "c1_LinearScan_sparc.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "c1_LinearScan_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "c1_LinearScan_ppc.hpp"
+#endif
 
 
 #endif // SHARE_VM_C1_C1_LINEARSCAN_HPP
--- a/hotspot/src/share/vm/c1/c1_MacroAssembler.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/c1/c1_MacroAssembler.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -35,6 +35,12 @@
 #ifdef TARGET_ARCH_zero
 # include "assembler_zero.inline.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "assembler_arm.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "assembler_ppc.inline.hpp"
+#endif
 
 class CodeEmitInfo;
 
@@ -61,6 +67,12 @@
 #ifdef TARGET_ARCH_sparc
 # include "c1_MacroAssembler_sparc.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "c1_MacroAssembler_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "c1_MacroAssembler_ppc.hpp"
+#endif
 
 };
 
--- a/hotspot/src/share/vm/c1/c1_globals.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/c1/c1_globals.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -32,6 +32,12 @@
 #ifdef TARGET_ARCH_sparc
 # include "c1_globals_sparc.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "c1_globals_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "c1_globals_ppc.hpp"
+#endif
 #ifdef TARGET_OS_FAMILY_linux
 # include "c1_globals_linux.hpp"
 #endif
--- a/hotspot/src/share/vm/classfile/classFileStream.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/classfile/classFileStream.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -35,6 +35,12 @@
 #ifdef TARGET_ARCH_zero
 # include "bytes_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "bytes_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "bytes_ppc.hpp"
+#endif
 
 // Input stream for reading .class file
 //
--- a/hotspot/src/share/vm/classfile/stackMapTable.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/classfile/stackMapTable.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -39,6 +39,12 @@
 #ifdef TARGET_ARCH_zero
 # include "bytes_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "bytes_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "bytes_ppc.hpp"
+#endif
 
 class StackMapReader;
 
--- a/hotspot/src/share/vm/classfile/verifier.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/classfile/verifier.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -51,6 +51,12 @@
 #ifdef TARGET_ARCH_zero
 # include "bytes_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "bytes_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "bytes_ppc.hpp"
+#endif
 
 #define NOFAILOVER_MAJOR_VERSION 51
 
--- a/hotspot/src/share/vm/classfile/vmSymbols.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/classfile/vmSymbols.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -108,7 +108,6 @@
   template(java_lang_AssertionStatusDirectives,       "java/lang/AssertionStatusDirectives")      \
   template(sun_jkernel_DownloadManager,               "sun/jkernel/DownloadManager")              \
   template(getBootClassPathEntryForClass_name,        "getBootClassPathEntryForClass")            \
-  template(setBootClassLoaderHook_name,               "setBootClassLoaderHook")                   \
   template(sun_misc_PostVMInitHook,                   "sun/misc/PostVMInitHook")                  \
                                                                                                   \
   /* class file format tags */                                                                    \
--- a/hotspot/src/share/vm/code/codeBlob.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/code/codeBlob.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -48,6 +48,12 @@
 #ifdef TARGET_ARCH_zero
 # include "nativeInst_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "nativeInst_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "nativeInst_ppc.hpp"
+#endif
 #ifdef COMPILER1
 #include "c1/c1_Runtime1.hpp"
 #endif
--- a/hotspot/src/share/vm/code/compiledIC.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/code/compiledIC.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -38,6 +38,12 @@
 #ifdef TARGET_ARCH_zero
 # include "nativeInst_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "nativeInst_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "nativeInst_ppc.hpp"
+#endif
 
 //-----------------------------------------------------------------------------
 // The CompiledIC represents a compiled inline cache.
--- a/hotspot/src/share/vm/code/icBuffer.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/code/icBuffer.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -46,6 +46,12 @@
 #ifdef TARGET_ARCH_zero
 # include "assembler_zero.inline.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "assembler_arm.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "assembler_ppc.inline.hpp"
+#endif
 
 
 DEF_STUB_INTERFACE(ICStub);
--- a/hotspot/src/share/vm/code/nmethod.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/code/nmethod.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -34,6 +34,7 @@
 #include "interpreter/bytecode.hpp"
 #include "oops/methodDataOop.hpp"
 #include "prims/jvmtiRedefineClassesTrace.hpp"
+#include "prims/jvmtiImpl.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/sweeper.hpp"
 #include "utilities/dtrace.hpp"
@@ -1533,7 +1534,10 @@
   }
 
   if (JvmtiExport::should_post_compiled_method_load()) {
-    JvmtiExport::post_compiled_method_load(this);
+    // Let the Service thread (which is a real Java thread) post the event
+    MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag);
+    JvmtiDeferredEventQueue::enqueue(
+      JvmtiDeferredEvent::compiled_method_load_event(this));
   }
 }
 
@@ -1566,8 +1570,17 @@
   // ref will have been cleared.
   if (_jmethod_id != NULL && JvmtiExport::should_post_compiled_method_unload()) {
     assert(!unload_reported(), "already unloaded");
-    HandleMark hm;
-    JvmtiExport::post_compiled_method_unload(_jmethod_id, insts_begin());
+    JvmtiDeferredEvent event =
+      JvmtiDeferredEvent::compiled_method_unload_event(
+          _jmethod_id, insts_begin());
+    if (SafepointSynchronize::is_at_safepoint()) {
+      // Don't want to take the queueing lock. Add it as pending and
+      // it will get enqueued later.
+      JvmtiDeferredEventQueue::add_pending_event(event);
+    } else {
+      MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag);
+      JvmtiDeferredEventQueue::enqueue(event);
+    }
   }
 
   // The JVMTI CompiledMethodUnload event can be enabled or disabled at
--- a/hotspot/src/share/vm/code/nmethod.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/code/nmethod.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -696,10 +696,11 @@
 class nmethodLocker : public StackObj {
   nmethod* _nm;
 
+ public:
+
   static void lock_nmethod(nmethod* nm);   // note: nm can be NULL
   static void unlock_nmethod(nmethod* nm); // (ditto)
 
- public:
   nmethodLocker(address pc); // derive nm from pc
   nmethodLocker(nmethod *nm) { _nm = nm; lock_nmethod(_nm); }
   nmethodLocker() { _nm = NULL; }
--- a/hotspot/src/share/vm/code/relocInfo.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/code/relocInfo.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -41,6 +41,14 @@
 # include "assembler_zero.inline.hpp"
 # include "nativeInst_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "assembler_arm.inline.hpp"
+# include "nativeInst_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "assembler_ppc.inline.hpp"
+# include "nativeInst_ppc.hpp"
+#endif
 
 
 const RelocationHolder RelocationHolder::none; // its type is relocInfo::none
--- a/hotspot/src/share/vm/code/relocInfo.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/code/relocInfo.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -430,6 +430,12 @@
 #ifdef TARGET_ARCH_zero
 # include "relocInfo_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "relocInfo_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "relocInfo_ppc.hpp"
+#endif
 
 
  protected:
--- a/hotspot/src/share/vm/code/vmreg.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/code/vmreg.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -36,6 +36,12 @@
 #ifdef TARGET_ARCH_zero
 # include "register_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "register_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "register_ppc.hpp"
+#endif
 #ifdef COMPILER2
 #include "opto/adlcVMDeps.hpp"
 #include "utilities/ostream.hpp"
@@ -51,6 +57,12 @@
 #ifdef TARGET_ARCH_MODEL_zero
 # include "adfiles/adGlobals_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_MODEL_arm
+# include "adfiles/adGlobals_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_ppc
+# include "adfiles/adGlobals_ppc.hpp"
+#endif
 #endif
 
 //------------------------------VMReg------------------------------------------
@@ -164,6 +176,12 @@
 #ifdef TARGET_ARCH_zero
 # include "vmreg_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "vmreg_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "vmreg_ppc.hpp"
+#endif
 
 
 };
--- a/hotspot/src/share/vm/compiler/compileBroker.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/compiler/compileBroker.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -1210,7 +1210,17 @@
 // Should the current thread be blocked until this compilation request
 // has been fulfilled?
 bool CompileBroker::is_compile_blocking(methodHandle method, int osr_bci) {
-  return !BackgroundCompilation;
+  if (!BackgroundCompilation) {
+    Symbol* class_name = method->method_holder()->klass_part()->name();
+    if (class_name->starts_with("java/lang/ref/Reference", 23)) {
+      // The reference handler thread can dead lock with the GC if compilation is blocking,
+      // so we avoid blocking compiles for anything in the java.lang.ref.Reference class,
+      // including inner classes such as ReferenceHandler.
+      return false;
+    }
+    return true;
+  }
+  return false;
 }
 
 
--- a/hotspot/src/share/vm/compiler/disassembler.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/compiler/disassembler.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -41,6 +41,12 @@
 #ifdef TARGET_ARCH_zero
 # include "depChecker_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "depChecker_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "depChecker_ppc.hpp"
+#endif
 #ifdef SHARK
 #include "shark/sharkEntry.hpp"
 #endif
--- a/hotspot/src/share/vm/compiler/disassembler.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/compiler/disassembler.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -70,6 +70,12 @@
 #ifdef TARGET_ARCH_zero
 # include "disassembler_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "disassembler_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "disassembler_ppc.hpp"
+#endif
 
 
  public:
--- a/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -99,7 +99,7 @@
   if (G1ConcRSLogCacheSize > 0) {
     _g1h = G1CollectedHeap::heap();
     _max_n_card_counts =
-      (unsigned) (_g1h->g1_reserved_obj_bytes() >> CardTableModRefBS::card_shift);
+      (unsigned) (_g1h->max_capacity() >> CardTableModRefBS::card_shift);
 
     size_t max_card_num = ((size_t)1 << (sizeof(unsigned)*BitsPerByte-1)) - 1;
     guarantee(_max_n_card_counts < max_card_num, "card_num representation");
--- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMarkThread.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMarkThread.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -251,6 +251,14 @@
 
         // Now do the remainder of the cleanup operation.
         _cm->completeCleanup();
+        // Notify anyone who's waiting that there are no more free
+        // regions coming. We have to do this before we join the STS,
+        // otherwise we might deadlock: a GC worker could be blocked
+        // waiting for the notification whereas this thread will be
+        // blocked for the pause to finish while it's trying to join
+        // the STS, which is conditional on the GC workers finishing.
+        g1h->reset_free_regions_coming();
+
         _sts.join();
         g1_policy->record_concurrent_mark_cleanup_completed();
         _sts.leave();
@@ -262,9 +270,6 @@
           gclog_or_tty->print_cr("[GC concurrent-cleanup-end, %1.7lf]",
                                  cleanup_end_sec - cleanup_start_sec);
         }
-
-        // We're done: no more free regions coming.
-        g1h->reset_free_regions_coming();
       }
       guarantee(cm()->cleanup_list_is_empty(),
                 "at this point there should be no regions on the cleanup list");
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -546,8 +546,11 @@
     res = new_region_try_secondary_free_list(word_size);
   }
   if (res == NULL && do_expand) {
-    expand(word_size * HeapWordSize);
-    res = _free_list.remove_head_or_null();
+    if (expand(word_size * HeapWordSize)) {
+      // The expansion succeeded and so we should have at least one
+      // region on the free list.
+      res = _free_list.remove_head();
+    }
   }
   if (res != NULL) {
     if (G1PrintHeapRegions) {
@@ -631,9 +634,22 @@
   if (first == -1) {
     // The only thing we can do now is attempt expansion.
     if (fs + x_size >= num_regions) {
-      expand((num_regions - fs) * HeapRegion::GrainBytes);
-      first = humongous_obj_allocate_find_first(num_regions, word_size);
-      assert(first != -1, "this should have worked");
+      // If the number of regions we're trying to allocate for this
+      // object is at most the number of regions in the free suffix,
+      // then the call to humongous_obj_allocate_find_first() above
+      // should have succeeded and we wouldn't be here.
+      //
+      // We should only be trying to expand when the free suffix is
+      // not sufficient for the object _and_ we have some expansion
+      // room available.
+      assert(num_regions > fs, "earlier allocation should have succeeded");
+
+      if (expand((num_regions - fs) * HeapRegion::GrainBytes)) {
+        first = humongous_obj_allocate_find_first(num_regions, word_size);
+        // If the expansion was successful then the allocation
+        // should have been successful.
+        assert(first != -1, "this should have worked");
+      }
     }
   }
 
@@ -1647,16 +1663,17 @@
   if (capacity_after_gc < minimum_desired_capacity) {
     // Don't expand unless it's significant
     size_t expand_bytes = minimum_desired_capacity - capacity_after_gc;
-    expand(expand_bytes);
-    if (PrintGC && Verbose) {
-      gclog_or_tty->print_cr("  "
-                             "  expanding:"
-                             "  max_heap_size: %6.1fK"
-                             "  minimum_desired_capacity: %6.1fK"
-                             "  expand_bytes: %6.1fK",
-                             (double) max_heap_size / (double) K,
-                             (double) minimum_desired_capacity / (double) K,
-                             (double) expand_bytes / (double) K);
+    if (expand(expand_bytes)) {
+      if (PrintGC && Verbose) {
+        gclog_or_tty->print_cr("  "
+                               "  expanding:"
+                               "  max_heap_size: %6.1fK"
+                               "  minimum_desired_capacity: %6.1fK"
+                               "  expand_bytes: %6.1fK",
+                               (double) max_heap_size / (double) K,
+                               (double) minimum_desired_capacity / (double) K,
+                               (double) expand_bytes / (double) K);
+      }
     }
 
     // No expansion, now see if we want to shrink
@@ -1757,66 +1774,84 @@
 
   verify_region_sets_optional();
 
-  size_t expand_bytes = word_size * HeapWordSize;
-  if (expand_bytes < MinHeapDeltaBytes) {
-    expand_bytes = MinHeapDeltaBytes;
-  }
-  expand(expand_bytes);
-
-  verify_region_sets_optional();
-
-  return attempt_allocation_at_safepoint(word_size,
-                                     false /* expect_null_cur_alloc_region */);
+  size_t expand_bytes = MAX2(word_size * HeapWordSize, MinHeapDeltaBytes);
+  if (expand(expand_bytes)) {
+    verify_region_sets_optional();
+    return attempt_allocation_at_safepoint(word_size,
+                                          false /* expect_null_cur_alloc_region */);
+  }
+  return NULL;
 }
 
-// FIXME: both this and shrink could probably be more efficient by
-// doing one "VirtualSpace::expand_by" call rather than several.
-void G1CollectedHeap::expand(size_t expand_bytes) {
+bool G1CollectedHeap::expand(size_t expand_bytes) {
   size_t old_mem_size = _g1_storage.committed_size();
-  // We expand by a minimum of 1K.
-  expand_bytes = MAX2(expand_bytes, (size_t)K);
-  size_t aligned_expand_bytes =
-    ReservedSpace::page_align_size_up(expand_bytes);
+  size_t aligned_expand_bytes = ReservedSpace::page_align_size_up(expand_bytes);
   aligned_expand_bytes = align_size_up(aligned_expand_bytes,
                                        HeapRegion::GrainBytes);
-  expand_bytes = aligned_expand_bytes;
-  while (expand_bytes > 0) {
-    HeapWord* base = (HeapWord*)_g1_storage.high();
-    // Commit more storage.
-    bool successful = _g1_storage.expand_by(HeapRegion::GrainBytes);
-    if (!successful) {
-        expand_bytes = 0;
-    } else {
-      expand_bytes -= HeapRegion::GrainBytes;
-      // Expand the committed region.
-      HeapWord* high = (HeapWord*) _g1_storage.high();
-      _g1_committed.set_end(high);
+
+  if (Verbose && PrintGC) {
+    gclog_or_tty->print("Expanding garbage-first heap from %ldK by %ldK",
+                           old_mem_size/K, aligned_expand_bytes/K);
+  }
+
+  HeapWord* old_end = (HeapWord*)_g1_storage.high();
+  bool successful = _g1_storage.expand_by(aligned_expand_bytes);
+  if (successful) {
+    HeapWord* new_end = (HeapWord*)_g1_storage.high();
+
+    // Expand the committed region.
+    _g1_committed.set_end(new_end);
+
+    // Tell the cardtable about the expansion.
+    Universe::heap()->barrier_set()->resize_covered_region(_g1_committed);
+
+    // And the offset table as well.
+    _bot_shared->resize(_g1_committed.word_size());
+
+    expand_bytes = aligned_expand_bytes;
+    HeapWord* base = old_end;
+
+    // Create the heap regions for [old_end, new_end)
+    while (expand_bytes > 0) {
+      HeapWord* high = base + HeapRegion::GrainWords;
+
       // Create a new HeapRegion.
       MemRegion mr(base, high);
       bool is_zeroed = !_g1_max_committed.contains(base);
       HeapRegion* hr = new HeapRegion(_bot_shared, mr, is_zeroed);
 
-      // Now update max_committed if necessary.
-      _g1_max_committed.set_end(MAX2(_g1_max_committed.end(), high));
-
       // Add it to the HeapRegionSeq.
       _hrs->insert(hr);
       _free_list.add_as_tail(hr);
+
       // And we used up an expansion region to create it.
       _expansion_regions--;
-      // Tell the cardtable about it.
-      Universe::heap()->barrier_set()->resize_covered_region(_g1_committed);
-      // And the offset table as well.
-      _bot_shared->resize(_g1_committed.word_size());
+
+      expand_bytes -= HeapRegion::GrainBytes;
+      base += HeapRegion::GrainWords;
+    }
+    assert(base == new_end, "sanity");
+
+    // Now update max_committed if necessary.
+    _g1_max_committed.set_end(MAX2(_g1_max_committed.end(), new_end));
+
+  } else {
+    // The expansion of the virtual storage space was unsuccessful.
+    // Let's see if it was because we ran out of swap.
+    if (G1ExitOnExpansionFailure &&
+        _g1_storage.uncommitted_size() >= aligned_expand_bytes) {
+      // We had head room...
+      vm_exit_out_of_memory(aligned_expand_bytes, "G1 heap expansion");
     }
   }
 
   if (Verbose && PrintGC) {
     size_t new_mem_size = _g1_storage.committed_size();
-    gclog_or_tty->print_cr("Expanding garbage-first heap from %ldK by %ldK to %ldK",
-                           old_mem_size/K, aligned_expand_bytes/K,
+    gclog_or_tty->print_cr("...%s, expanded to %ldK",
+                           (successful ? "Successful" : "Failed"),
                            new_mem_size/K);
   }
+  return successful;
 }
 
 void G1CollectedHeap::shrink_helper(size_t shrink_bytes)
@@ -2088,7 +2123,10 @@
   HeapRegionRemSet::init_heap(max_regions());
 
   // Now expand into the initial heap size.
-  expand(init_byte_size);
+  if (!expand(init_byte_size)) {
+    vm_exit_during_initialization("Failed to allocate initial heap.");
+    return JNI_ENOMEM;
+  }
 
   // Perform any initialization actions delegated to the policy.
   g1_policy()->init();
@@ -2744,7 +2782,7 @@
 }
 
 size_t G1CollectedHeap::max_capacity() const {
-  return g1_reserved_obj_bytes();
+  return _g1_reserved.byte_size();
 }
 
 jlong G1CollectedHeap::millis_since_last_gc() {
@@ -3538,7 +3576,12 @@
         size_t expand_bytes = g1_policy()->expansion_amount();
         if (expand_bytes > 0) {
           size_t bytes_before = capacity();
-          expand(expand_bytes);
+          if (!expand(expand_bytes)) {
+            // We failed to expand the heap so let's verify that
+            // committed/uncommitted amount match the backing store
+            assert(capacity() == _g1_storage.committed_size(), "committed size mismatch");
+            assert(max_capacity() == _g1_storage.reserved_size(), "reserved size mismatch");
+          }
         }
       }
 
@@ -3762,7 +3805,7 @@
 
     if (alloc_region == NULL) {
       // we will get a new GC alloc region
-      alloc_region = new_gc_alloc_region(ap, 0);
+      alloc_region = new_gc_alloc_region(ap, HeapRegion::GrainWords);
     } else {
       // the region was retained from the last collection
       ++_gc_alloc_region_counts[ap];
@@ -5311,7 +5354,7 @@
 
 size_t G1CollectedHeap::max_regions() {
   return
-    (size_t)align_size_up(g1_reserved_obj_bytes(), HeapRegion::GrainBytes) /
+    (size_t)align_size_up(max_capacity(), HeapRegion::GrainBytes) /
     HeapRegion::GrainBytes;
 }
 
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -619,8 +619,10 @@
 
 public:
   // Expand the garbage-first heap by at least the given size (in bytes!).
+  // Returns true if the heap was expanded by the requested amount;
+  // false otherwise.
   // (Rounds up to a HeapRegion boundary.)
-  virtual void expand(size_t expand_bytes);
+  bool expand(size_t expand_bytes);
 
   // Do anything common to GC's.
   virtual void gc_prologue(bool full);
@@ -981,9 +983,6 @@
   // Reference Processing accessor
   ReferenceProcessor* ref_processor() { return _ref_processor; }
 
-  // Reserved (g1 only; super method includes perm), capacity and the used
-  // portion in bytes.
-  size_t g1_reserved_obj_bytes() const { return _g1_reserved.byte_size(); }
   virtual size_t capacity() const;
   virtual size_t used() const;
   // This should be called when we're not holding the heap lock. The
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -2011,7 +2011,7 @@
     // space, whichever is smaller, bounded below by a minimum
     // expansion (unless that's all that's left.)
     const size_t min_expand_bytes = 1*M;
-    size_t reserved_bytes = _g1->g1_reserved_obj_bytes();
+    size_t reserved_bytes = _g1->max_capacity();
     size_t committed_bytes = _g1->capacity();
     size_t uncommitted_bytes = reserved_bytes - committed_bytes;
     size_t expand_bytes;
--- a/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -735,7 +735,7 @@
   MemRegion dirtyRegion(start, end);
 
 #if CARD_REPEAT_HISTO
-  init_ct_freq_table(_g1->g1_reserved_obj_bytes());
+  init_ct_freq_table(_g1->max_capacity());
   ct_freq_note_card(_ct_bs->index_for(start));
 #endif
 
--- a/hotspot/src/share/vm/gc_implementation/g1/g1_globals.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1_globals.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -301,9 +301,13 @@
   develop(uintx, G1StressConcRegionFreeingDelayMillis, 0,                   \
           "Artificial delay during concurrent region freeing")              \
                                                                             \
-   develop(bool, ReduceInitialCardMarksForG1, false,                        \
+  develop(bool, ReduceInitialCardMarksForG1, false,                         \
           "When ReduceInitialCardMarks is true, this flag setting "         \
-          " controls whether G1 allows the RICM optimization")
+          " controls whether G1 allows the RICM optimization")              \
+                                                                            \
+  develop(bool, G1ExitOnExpansionFailure, false,                            \
+          "Raise a fatal VM exit out of memory failure in the event "       \
+          " that heap expansion fails due to running out of swap.")
 
 G1_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_EXPERIMENTAL_FLAG, DECLARE_NOTPRODUCT_FLAG, DECLARE_MANAGEABLE_FLAG, DECLARE_PRODUCT_RW_FLAG)
 
--- a/hotspot/src/share/vm/gc_implementation/shared/allocationStats.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/allocationStats.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -116,10 +116,8 @@
       _demand_rate_estimate.sample(rate);
       float new_rate = _demand_rate_estimate.padded_average();
       ssize_t old_desired = _desired;
-      _desired = (ssize_t)(new_rate * (inter_sweep_estimate
-                                       + CMSExtrapolateSweep
-                                         ? intra_sweep_estimate
-                                         : 0.0));
+      float delta_ise = (CMSExtrapolateSweep ? intra_sweep_estimate : 0.0);
+      _desired = (ssize_t)(new_rate * (inter_sweep_estimate + delta_ise));
       if (PrintFLSStatistics > 1) {
         gclog_or_tty->print_cr("demand: %d, old_rate: %f, current_rate: %f, new_rate: %f, old_desired: %d, new_desired: %d",
                                 demand,     old_rate,     rate,             new_rate,     old_desired,     _desired);
--- a/hotspot/src/share/vm/gc_implementation/shared/gcUtil.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/gcUtil.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -106,8 +106,8 @@
 }
 
 LinearLeastSquareFit::LinearLeastSquareFit(unsigned weight) :
-  _sum_x(0), _sum_y(0), _sum_xy(0),
-  _mean_x(weight), _mean_y(weight) {}
+  _sum_x(0), _sum_x_squared(0), _sum_y(0), _sum_xy(0),
+  _intercept(0), _slope(0), _mean_x(weight), _mean_y(weight) {}
 
 void LinearLeastSquareFit::update(double x, double y) {
   _sum_x = _sum_x + x;
--- a/hotspot/src/share/vm/interpreter/abstractInterpreter.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/interpreter/abstractInterpreter.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -41,6 +41,12 @@
 #ifdef TARGET_ARCH_MODEL_zero
 # include "interp_masm_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_MODEL_arm
+# include "interp_masm_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_ppc
+# include "interp_masm_ppc.hpp"
+#endif
 #ifdef TARGET_OS_FAMILY_linux
 # include "thread_linux.inline.hpp"
 #endif
--- a/hotspot/src/share/vm/interpreter/bytecode.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/interpreter/bytecode.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -37,6 +37,12 @@
 #ifdef TARGET_ARCH_zero
 # include "bytes_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "bytes_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "bytes_ppc.hpp"
+#endif
 
 class ciBytecodeStream;
 
--- a/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -59,6 +59,12 @@
 #ifdef TARGET_OS_ARCH_windows_x86
 # include "orderAccess_windows_x86.inline.hpp"
 #endif
+#ifdef TARGET_OS_ARCH_linux_arm
+# include "orderAccess_linux_arm.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_ppc
+# include "orderAccess_linux_ppc.inline.hpp"
+#endif
 
 
 // no precompiled headers
--- a/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -41,6 +41,12 @@
 #ifdef TARGET_ARCH_zero
 # include "bytes_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "bytes_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "bytes_ppc.hpp"
+#endif
 
 #ifdef CC_INTERP
 
@@ -587,6 +593,12 @@
 #ifdef TARGET_ARCH_zero
 # include "bytecodeInterpreter_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "bytecodeInterpreter_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "bytecodeInterpreter_ppc.hpp"
+#endif
 
 
 }; // BytecodeInterpreter
--- a/hotspot/src/share/vm/interpreter/bytecodeInterpreter.inline.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.inline.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -52,6 +52,12 @@
 #ifdef TARGET_ARCH_zero
 # include "bytecodeInterpreter_zero.inline.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "bytecodeInterpreter_arm.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "bytecodeInterpreter_ppc.inline.hpp"
+#endif
 
 #endif // CC_INTERP
 
--- a/hotspot/src/share/vm/interpreter/bytecodeStream.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/interpreter/bytecodeStream.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -37,6 +37,12 @@
 #ifdef TARGET_ARCH_zero
 # include "bytes_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "bytes_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "bytes_ppc.hpp"
+#endif
 
 // A BytecodeStream is used for fast iteration over the bytecodes
 // of a methodOop.
--- a/hotspot/src/share/vm/interpreter/bytecodes.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/interpreter/bytecodes.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -35,6 +35,12 @@
 #ifdef TARGET_ARCH_zero
 # include "bytes_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "bytes_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "bytes_ppc.hpp"
+#endif
 
 
 #if defined(WIN32) && (defined(_MSC_VER) && (_MSC_VER < 1600))
--- a/hotspot/src/share/vm/interpreter/bytecodes.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/interpreter/bytecodes.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -294,6 +294,12 @@
 #ifdef TARGET_ARCH_zero
 # include "bytecodes_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "bytecodes_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "bytecodes_ppc.hpp"
+#endif
 
 
     number_of_codes
--- a/hotspot/src/share/vm/interpreter/cppInterpreter.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/interpreter/cppInterpreter.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -90,6 +90,12 @@
 #ifdef TARGET_ARCH_zero
 # include "cppInterpreter_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "cppInterpreter_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "cppInterpreter_ppc.hpp"
+#endif
 
 
 };
--- a/hotspot/src/share/vm/interpreter/cppInterpreterGenerator.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/interpreter/cppInterpreterGenerator.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -53,6 +53,12 @@
 #ifdef TARGET_ARCH_zero
 # include "cppInterpreterGenerator_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "cppInterpreterGenerator_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "cppInterpreterGenerator_ppc.hpp"
+#endif
 
 };
 
--- a/hotspot/src/share/vm/interpreter/interpreter.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/interpreter/interpreter.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -152,6 +152,12 @@
 #ifdef TARGET_ARCH_zero
 # include "interpreter_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "interpreter_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "interpreter_ppc.hpp"
+#endif
 
 };
 
--- a/hotspot/src/share/vm/interpreter/interpreterGenerator.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/interpreter/interpreterGenerator.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -50,6 +50,12 @@
 #ifdef TARGET_ARCH_zero
 # include "interpreterGenerator_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "interpreterGenerator_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "interpreterGenerator_ppc.hpp"
+#endif
 
 
 };
--- a/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -65,6 +65,12 @@
 #ifdef TARGET_ARCH_zero
 # include "vm_version_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "vm_version_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "vm_version_ppc.hpp"
+#endif
 #ifdef COMPILER2
 #include "opto/runtime.hpp"
 #endif
@@ -1178,9 +1184,7 @@
           handler_index = _fingerprints->length() - 1;
         }
       }
-    } else {
-      CHECK_UNHANDLED_OOPS_ONLY(Thread::current()->clear_unhandled_oops());
-    }
+      // Set handler under SignatureHandlerLibrary_lock
     if (handler_index < 0) {
       // use generic signature handler
       method->set_signature_handler(Interpreter::slow_signature_handler());
@@ -1188,21 +1192,29 @@
       // set handler
       method->set_signature_handler(_handlers->at(handler_index));
     }
+    } else {
+      CHECK_UNHANDLED_OOPS_ONLY(Thread::current()->clear_unhandled_oops());
+      // use generic signature handler
+      method->set_signature_handler(Interpreter::slow_signature_handler());
+    }
   }
 #ifdef ASSERT
-  int handler_index, fingerprint_index;
+  int handler_index = -1;
+  int fingerprint_index = -2;
   {
     // '_handlers' and '_fingerprints' are 'GrowableArray's and are NOT synchronized
     // in any way if accessed from multiple threads. To avoid races with another
     // thread which may change the arrays in the above, mutex protected block, we
     // have to protect this read access here with the same mutex as well!
     MutexLocker mu(SignatureHandlerLibrary_lock);
+    if (_handlers != NULL) {
     handler_index = _handlers->find(method->signature_handler());
     fingerprint_index = _fingerprints->find(Fingerprinter(method).fingerprint());
   }
+  }
   assert(method->signature_handler() == Interpreter::slow_signature_handler() ||
          handler_index == fingerprint_index, "sanity check");
-#endif
+#endif // ASSERT
 }
 
 
--- a/hotspot/src/share/vm/interpreter/interpreterRuntime.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/interpreter/interpreterRuntime.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -157,6 +157,12 @@
 #ifdef TARGET_ARCH_zero
 # include "interpreterRT_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "interpreterRT_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "interpreterRT_ppc.hpp"
+#endif
 
 
   // Interpreter's frequency counter overflow
--- a/hotspot/src/share/vm/interpreter/templateInterpreter.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/interpreter/templateInterpreter.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -192,6 +192,12 @@
 #ifdef TARGET_ARCH_zero
 # include "templateInterpreter_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "templateInterpreter_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "templateInterpreter_ppc.hpp"
+#endif
 
 
 };
--- a/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -96,6 +96,12 @@
 #ifdef TARGET_ARCH_zero
 # include "templateInterpreterGenerator_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "templateInterpreterGenerator_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "templateInterpreterGenerator_ppc.hpp"
+#endif
 
 
 };
--- a/hotspot/src/share/vm/interpreter/templateTable.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/interpreter/templateTable.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -40,6 +40,12 @@
 #ifdef TARGET_ARCH_MODEL_zero
 # include "interp_masm_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_MODEL_arm
+# include "interp_masm_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_ppc
+# include "interp_masm_ppc.hpp"
+#endif
 
 #ifndef CC_INTERP
 // All the necessary definitions used for (bytecode) template generation. Instead of
@@ -364,6 +370,12 @@
 #ifdef TARGET_ARCH_MODEL_zero
 # include "templateTable_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_MODEL_arm
+# include "templateTable_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_ppc
+# include "templateTable_ppc.hpp"
+#endif
 
 };
 #endif /* !CC_INTERP */
--- a/hotspot/src/share/vm/oops/constantPoolOop.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/oops/constantPoolOop.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -39,6 +39,12 @@
 #ifdef TARGET_ARCH_zero
 # include "bytes_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "bytes_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "bytes_ppc.hpp"
+#endif
 
 // A constantPool is an array containing class constants as described in the
 // class file.
--- a/hotspot/src/share/vm/oops/oop.inline.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/oops/oop.inline.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -52,6 +52,12 @@
 #ifdef TARGET_ARCH_zero
 # include "bytes_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "bytes_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "bytes_ppc.hpp"
+#endif
 
 // Implementation of all inlined member functions defined in oop.hpp
 // We need a separate file to avoid circular references
--- a/hotspot/src/share/vm/oops/typeArrayOop.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/oops/typeArrayOop.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -45,6 +45,12 @@
 #ifdef TARGET_OS_ARCH_windows_x86
 # include "orderAccess_windows_x86.inline.hpp"
 #endif
+#ifdef TARGET_OS_ARCH_linux_arm
+# include "orderAccess_linux_arm.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_ppc
+# include "orderAccess_linux_ppc.inline.hpp"
+#endif
 
 // A typeArrayOop is an array containing basic types (non oop elements).
 // It is used for arrays of {characters, singles, doubles, bytes, shorts, integers, longs}
--- a/hotspot/src/share/vm/opto/buildOopMap.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/opto/buildOopMap.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -41,6 +41,12 @@
 #ifdef TARGET_ARCH_zero
 # include "vmreg_zero.inline.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "vmreg_arm.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "vmreg_ppc.inline.hpp"
+#endif
 
 // The functions in this file builds OopMaps after all scheduling is done.
 //
--- a/hotspot/src/share/vm/opto/c2_globals.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/opto/c2_globals.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -32,6 +32,9 @@
 #ifdef TARGET_ARCH_sparc
 # include "c2_globals_sparc.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "c2_globals_arm.hpp"
+#endif
 #ifdef TARGET_OS_FAMILY_linux
 # include "c2_globals_linux.hpp"
 #endif
--- a/hotspot/src/share/vm/opto/c2compiler.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/opto/c2compiler.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -37,6 +37,12 @@
 #ifdef TARGET_ARCH_MODEL_zero
 # include "adfiles/ad_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_MODEL_arm
+# include "adfiles/ad_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_ppc
+# include "adfiles/ad_ppc.hpp"
+#endif
 
 
 volatile int C2Compiler::_runtimes = uninitialized;
--- a/hotspot/src/share/vm/opto/compile.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/opto/compile.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -74,6 +74,12 @@
 #ifdef TARGET_ARCH_MODEL_zero
 # include "adfiles/ad_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_MODEL_arm
+# include "adfiles/ad_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_ppc
+# include "adfiles/ad_ppc.hpp"
+#endif
 
 
 // -------------------- Compile::mach_constant_base_node -----------------------
--- a/hotspot/src/share/vm/opto/gcm.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/opto/gcm.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -47,6 +47,12 @@
 #ifdef TARGET_ARCH_MODEL_zero
 # include "adfiles/ad_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_MODEL_arm
+# include "adfiles/ad_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_ppc
+# include "adfiles/ad_ppc.hpp"
+#endif
 
 // Portions of code courtesy of Clifford Click
 
--- a/hotspot/src/share/vm/opto/locknode.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/opto/locknode.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -40,6 +40,12 @@
 #ifdef TARGET_ARCH_MODEL_zero
 # include "adfiles/ad_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_MODEL_arm
+# include "adfiles/ad_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_ppc
+# include "adfiles/ad_ppc.hpp"
+#endif
 
 //------------------------------BoxLockNode------------------------------------
 class BoxLockNode : public Node {
--- a/hotspot/src/share/vm/opto/output.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/opto/output.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -39,6 +39,12 @@
 #ifdef TARGET_ARCH_MODEL_zero
 # include "adfiles/ad_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_MODEL_arm
+# include "adfiles/ad_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_ppc
+# include "adfiles/ad_ppc.hpp"
+#endif
 
 class Arena;
 class Bundle;
--- a/hotspot/src/share/vm/opto/regmask.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/opto/regmask.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -37,6 +37,12 @@
 #ifdef TARGET_ARCH_MODEL_zero
 # include "adfiles/ad_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_MODEL_arm
+# include "adfiles/ad_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_ppc
+# include "adfiles/ad_ppc.hpp"
+#endif
 
 #define RM_SIZE _RM_SIZE /* a constant private to the class RegMask */
 
--- a/hotspot/src/share/vm/opto/regmask.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/opto/regmask.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -40,6 +40,12 @@
 #ifdef TARGET_ARCH_MODEL_zero
 # include "adfiles/adGlobals_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_MODEL_arm
+# include "adfiles/adGlobals_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_ppc
+# include "adfiles/adGlobals_ppc.hpp"
+#endif
 
 // Some fun naming (textual) substitutions:
 //
--- a/hotspot/src/share/vm/opto/runtime.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/opto/runtime.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -80,6 +80,12 @@
 #ifdef TARGET_ARCH_MODEL_zero
 # include "adfiles/ad_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_MODEL_arm
+# include "adfiles/ad_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_ppc
+# include "adfiles/ad_ppc.hpp"
+#endif
 
 
 // For debugging purposes:
--- a/hotspot/src/share/vm/prims/forte.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/prims/forte.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -520,6 +520,7 @@
 //       method_id - jmethodID of the method being executed
 
 extern "C" {
+JNIEXPORT
 void AsyncGetCallTrace(ASGCT_CallTrace *trace, jint depth, void* ucontext) {
 
 // This is if'd out because we no longer use thread suspension.
--- a/hotspot/src/share/vm/prims/jniCheck.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/prims/jniCheck.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -45,6 +45,12 @@
 #ifdef TARGET_ARCH_zero
 # include "jniTypes_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "jniTypes_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "jniTypes_ppc.hpp"
+#endif
 
 
 // Heap objects are allowed to be directly referenced only in VM code,
--- a/hotspot/src/share/vm/prims/jni_md.h	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/prims/jni_md.h	Wed Jul 05 17:35:13 2017 +0200
@@ -33,6 +33,12 @@
 #ifdef TARGET_ARCH_zero
 # include "jni_zero.h"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "jni_arm.h"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "jni_ppc.h"
+#endif
 
 
 /*
--- a/hotspot/src/share/vm/prims/jvm.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/prims/jvm.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -2585,7 +2585,7 @@
 }
 
 
-int jio_printf(const char *fmt, ...) {
+JNIEXPORT int jio_printf(const char *fmt, ...) {
   int len;
   va_list args;
   va_start(args, fmt);
--- a/hotspot/src/share/vm/prims/jvm.h	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/prims/jvm.h	Wed Jul 05 17:35:13 2017 +0200
@@ -1417,16 +1417,16 @@
  * BE CAREFUL! The following functions do not implement the
  * full feature set of standard C printf formats.
  */
-int
+JNIEXPORT int
 jio_vsnprintf(char *str, size_t count, const char *fmt, va_list args);
 
-int
+JNIEXPORT int
 jio_snprintf(char *str, size_t count, const char *fmt, ...);
 
-int
+JNIEXPORT int
 jio_fprintf(FILE *, const char *fmt, ...);
 
-int
+JNIEXPORT int
 jio_vfprintf(FILE *, const char *fmt, va_list args);
 
 
--- a/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -36,6 +36,12 @@
 #ifdef TARGET_ARCH_zero
 # include "bytes_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "bytes_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "bytes_ppc.hpp"
+#endif
 // FIXME: add Deprecated, LVT, LVTT attributes
 // FIXME: fix Synthetic attribute
 // FIXME: per Serguei, add error return handling for constantPoolOopDesc::copy_cpool_bytes()
--- a/hotspot/src/share/vm/prims/jvmtiExport.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiExport.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -750,15 +750,12 @@
 // pending CompiledMethodUnload support
 //
 
-bool JvmtiExport::_have_pending_compiled_method_unload_events;
-GrowableArray<jmethodID>* JvmtiExport::_pending_compiled_method_unload_method_ids;
-GrowableArray<const void *>* JvmtiExport::_pending_compiled_method_unload_code_begins;
-JavaThread* JvmtiExport::_current_poster;
-
-void JvmtiExport::post_compiled_method_unload_internal(JavaThread* self, jmethodID method, const void *code_begin) {
+void JvmtiExport::post_compiled_method_unload(
+       jmethodID method, const void *code_begin) {
+  JavaThread* thread = JavaThread::current();
   EVT_TRIG_TRACE(JVMTI_EVENT_COMPILED_METHOD_UNLOAD,
                  ("JVMTI [%s] method compile unload event triggered",
-                  JvmtiTrace::safe_get_thread_name(self)));
+                  JvmtiTrace::safe_get_thread_name(thread)));
 
   // post the event for each environment that has this event enabled.
   JvmtiEnvIterator it;
@@ -767,12 +764,12 @@
 
       EVT_TRACE(JVMTI_EVENT_COMPILED_METHOD_UNLOAD,
                 ("JVMTI [%s] class compile method unload event sent jmethodID " PTR_FORMAT,
-                 JvmtiTrace::safe_get_thread_name(self), method));
+                 JvmtiTrace::safe_get_thread_name(thread), method));
 
-      ResourceMark rm(self);
+      ResourceMark rm(thread);
 
-      JvmtiEventMark jem(self);
-      JvmtiJavaThreadEventTransition jet(self);
+      JvmtiEventMark jem(thread);
+      JvmtiJavaThreadEventTransition jet(thread);
       jvmtiEventCompiledMethodUnload callback = env->callbacks()->CompiledMethodUnload;
       if (callback != NULL) {
         (*callback)(env->jvmti_external(), method, code_begin);
@@ -781,90 +778,6 @@
   }
 }
 
-// post any pending CompiledMethodUnload events
-
-void JvmtiExport::post_pending_compiled_method_unload_events() {
-  JavaThread* self = JavaThread::current();
-  assert(!self->owns_locks(), "can't hold locks");
-
-  // Indicates if this is the first activiation of this function.
-  // In theory the profiler's callback could call back into VM and provoke
-  // another CompiledMethodLoad event to be posted from this thread. As the
-  // stack rewinds we need to ensure that the original activation does the
-  // completion and notifies any waiters.
-  bool first_activation = false;
-
-  // the jmethodID (may not be valid) to be used for a single event
-  jmethodID method;
-  const void *code_begin;
-
-  // grab the monitor and check if another thread is already posting
-  // events. If there is another thread posting events then we wait
-  // until it completes. (In theory we could check the pending events to
-  // see if any of the addresses overlap with the event that we want to
-  // post but as it will happen so rarely we just block any thread waiting
-  // to post a CompiledMethodLoad or DynamicCodeGenerated event until all
-  // pending CompiledMethodUnload events have been posted).
-  //
-  // If another thread isn't posting we examine the list of pending jmethodIDs.
-  // If the list is empty then we are done. If it's not empty then this thread
-  // (self) becomes the pending event poster and we remove the top (last)
-  // event from the list. Note that this means we remove the newest event first
-  // but as they are all CompiledMethodUnload events the order doesn't matter.
-  // Once we have removed a jmethodID then we exit the monitor. Any other thread
-  // wanting to post a CompiledMethodLoad or DynamicCodeGenerated event will
-  // be forced to wait on the monitor.
-  {
-    MutexLocker mu(JvmtiPendingEvent_lock);
-    if (_current_poster != self) {
-      while (_current_poster != NULL) {
-        JvmtiPendingEvent_lock->wait();
-      }
-    }
-    if ((_pending_compiled_method_unload_method_ids == NULL) ||
-        (_pending_compiled_method_unload_method_ids->length() == 0)) {
-      return;
-    }
-    if (_current_poster == NULL) {
-      _current_poster = self;
-      first_activation = true;
-    } else {
-      // re-entrant
-      guarantee(_current_poster == self, "checking");
-    }
-    method = _pending_compiled_method_unload_method_ids->pop();
-    code_begin = _pending_compiled_method_unload_code_begins->pop();
-  }
-
-  // This thread is the pending event poster so it first posts the CompiledMethodUnload
-  // event for the jmethodID that has been removed from the list. Once posted it
-  // re-grabs the monitor and checks the list again. If the list is empty then and this
-  // is the first activation of the function then we reset the _have_pending_events
-  // flag, cleanup _current_poster to indicate that no thread is now servicing the
-  // pending events list, and finally notify any thread that might be waiting.
-  for (;;) {
-    post_compiled_method_unload_internal(self, method, code_begin);
-
-    // event posted, now re-grab monitor and get the next event
-    // If there's no next event then we are done. If this is the first
-    // activiation of this function by this thread notify any waiters
-    // so that they can post.
-    {
-      MutexLocker ml(JvmtiPendingEvent_lock);
-      if (_pending_compiled_method_unload_method_ids->length() == 0) {
-        if (first_activation) {
-          _have_pending_compiled_method_unload_events = false;
-          _current_poster = NULL;
-          JvmtiPendingEvent_lock->notify_all();
-        }
-        return;
-      }
-      method = _pending_compiled_method_unload_method_ids->pop();
-      code_begin = _pending_compiled_method_unload_code_begins->pop();
-    }
-  }
-}
-
 ///////////////////////////////////////////////////////////////
 //
 // JvmtiExport
@@ -1830,16 +1743,7 @@
 }
 
 void JvmtiExport::post_compiled_method_load(nmethod *nm) {
-  // If there are pending CompiledMethodUnload events then these are
-  // posted before this CompiledMethodLoad event. We "lock" the nmethod and
-  // maintain a handle to the methodOop to ensure that the nmethod isn't
-  // flushed or unloaded while posting the events.
   JavaThread* thread = JavaThread::current();
-  if (have_pending_compiled_method_unload_events()) {
-    methodHandle mh(thread, nm->method());
-    nmethodLocker nml(nm);
-    post_pending_compiled_method_unload_events();
-  }
 
   EVT_TRIG_TRACE(JVMTI_EVENT_COMPILED_METHOD_LOAD,
                  ("JVMTI [%s] method compile load event triggered",
@@ -1854,8 +1758,8 @@
                 JvmtiTrace::safe_get_thread_name(thread),
                 (nm->method() == NULL) ? "NULL" : nm->method()->klass_name()->as_C_string(),
                 (nm->method() == NULL) ? "NULL" : nm->method()->name()->as_C_string()));
-
       ResourceMark rm(thread);
+      HandleMark hm(thread);
 
       // Add inlining information
       jvmtiCompiledMethodLoadInlineRecord* inlinerecord = create_inline_record(nm);
@@ -1899,28 +1803,6 @@
   }
 }
 
-// used at a safepoint to post a CompiledMethodUnload event
-void JvmtiExport::post_compiled_method_unload(jmethodID mid, const void *code_begin) {
-  if (SafepointSynchronize::is_at_safepoint()) {
-    // Class unloading can cause nmethod unloading which is reported
-    // by the VMThread.  These must be batched to be processed later.
-    if (_pending_compiled_method_unload_method_ids == NULL) {
-      // create list lazily
-      _pending_compiled_method_unload_method_ids = new (ResourceObj::C_HEAP) GrowableArray<jmethodID>(10,true);
-      _pending_compiled_method_unload_code_begins = new (ResourceObj::C_HEAP) GrowableArray<const void *>(10,true);
-    }
-    _pending_compiled_method_unload_method_ids->append(mid);
-    _pending_compiled_method_unload_code_begins->append(code_begin);
-    _have_pending_compiled_method_unload_events = true;
-  } else {
-    // Unloading caused by the sweeper can be reported synchronously.
-    if (have_pending_compiled_method_unload_events()) {
-      post_pending_compiled_method_unload_events();
-    }
-    post_compiled_method_unload_internal(JavaThread::current(), mid, code_begin);
-  }
-}
-
 void JvmtiExport::post_dynamic_code_generated_internal(const char *name, const void *code_begin, const void *code_end) {
   JavaThread* thread = JavaThread::current();
   EVT_TRIG_TRACE(JVMTI_EVENT_DYNAMIC_CODE_GENERATED,
@@ -1953,9 +1835,9 @@
     return;
   }
 
-  if (have_pending_compiled_method_unload_events()) {
-    post_pending_compiled_method_unload_events();
-  }
+  // Blocks until everything now in the queue has been posted
+  JvmtiDeferredEventQueue::flush_queue(Thread::current());
+
   post_dynamic_code_generated_internal(name, code_begin, code_end);
 }
 
--- a/hotspot/src/share/vm/prims/jvmtiExport.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiExport.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -141,25 +141,6 @@
 
 
  private:
-  // CompiledMethodUnload events are reported from the VM thread so they
-  // are collected in lists (of jmethodID/addresses) and the events are posted later
-  // from threads posting CompieldMethodLoad or DynamicCodeGenerated events.
-  static bool _have_pending_compiled_method_unload_events;
-  static GrowableArray<jmethodID>* _pending_compiled_method_unload_method_ids;
-  static GrowableArray<const void *>* _pending_compiled_method_unload_code_begins;
-  static JavaThread* _current_poster;
-
-  // tests if there are CompiledMethodUnload events pending
-  inline static bool have_pending_compiled_method_unload_events() {
-    return _have_pending_compiled_method_unload_events;
-  }
-
-  // posts any pending CompiledMethodUnload events.
-  static void post_pending_compiled_method_unload_events();
-
-  // Perform the actual notification to interested JvmtiEnvs.
-  static void post_compiled_method_unload_internal(JavaThread* self, jmethodID mid, const void* code_begin);
-
   // posts a DynamicCodeGenerated event (internal/private implementation).
   // The public post_dynamic_code_generated* functions make use of the
   // internal implementation.
@@ -256,7 +237,7 @@
   // single stepping management methods
   static void at_single_stepping_point(JavaThread *thread, methodOop method, address location) KERNEL_RETURN;
   static void expose_single_stepping(JavaThread *thread) KERNEL_RETURN;
-  static bool hide_single_stepping(JavaThread *thread) KERNEL_RETURN_(return false;);
+  static bool hide_single_stepping(JavaThread *thread) KERNEL_RETURN_(false);
 
   // Methods that notify the debugger that something interesting has happened in the VM.
   static void post_vm_start              ();
@@ -271,20 +252,20 @@
 
   static oop jni_GetField_probe          (JavaThread *thread, jobject jobj,
     oop obj, klassOop klass, jfieldID fieldID, bool is_static)
-    KERNEL_RETURN_(return NULL;);
+    KERNEL_RETURN_(NULL);
   static oop jni_GetField_probe_nh       (JavaThread *thread, jobject jobj,
     oop obj, klassOop klass, jfieldID fieldID, bool is_static)
-    KERNEL_RETURN_(return NULL;);
+    KERNEL_RETURN_(NULL);
   static void post_field_access_by_jni   (JavaThread *thread, oop obj,
     klassOop klass, jfieldID fieldID, bool is_static) KERNEL_RETURN;
   static void post_field_access          (JavaThread *thread, methodOop method,
     address location, KlassHandle field_klass, Handle object, jfieldID field) KERNEL_RETURN;
   static oop jni_SetField_probe          (JavaThread *thread, jobject jobj,
     oop obj, klassOop klass, jfieldID fieldID, bool is_static, char sig_type,
-    jvalue *value) KERNEL_RETURN_(return NULL;);
+    jvalue *value) KERNEL_RETURN_(NULL);
   static oop jni_SetField_probe_nh       (JavaThread *thread, jobject jobj,
     oop obj, klassOop klass, jfieldID fieldID, bool is_static, char sig_type,
-    jvalue *value) KERNEL_RETURN_(return NULL;);
+    jvalue *value) KERNEL_RETURN_(NULL);
   static void post_field_modification_by_jni(JavaThread *thread, oop obj,
     klassOop klass, jfieldID fieldID, bool is_static, char sig_type,
     jvalue *value);
--- a/hotspot/src/share/vm/prims/jvmtiImpl.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiImpl.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -32,11 +32,13 @@
 #include "prims/jvmtiEventController.inline.hpp"
 #include "prims/jvmtiImpl.hpp"
 #include "prims/jvmtiRedefineClasses.hpp"
+#include "runtime/atomic.hpp"
 #include "runtime/deoptimization.hpp"
 #include "runtime/handles.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/interfaceSupport.hpp"
 #include "runtime/javaCalls.hpp"
+#include "runtime/serviceThread.hpp"
 #include "runtime/signature.hpp"
 #include "runtime/vframe.hpp"
 #include "runtime/vframe_hp.hpp"
@@ -910,3 +912,207 @@
   tty->print_cr("]");
 #endif
 }
+
+#ifndef KERNEL
+
+JvmtiDeferredEvent JvmtiDeferredEvent::compiled_method_load_event(
+    nmethod* nm) {
+  JvmtiDeferredEvent event = JvmtiDeferredEvent(TYPE_COMPILED_METHOD_LOAD);
+  event.set_compiled_method_load(nm);
+  nmethodLocker::lock_nmethod(nm); // will be unlocked when posted
+  return event;
+}
+
+JvmtiDeferredEvent JvmtiDeferredEvent::compiled_method_unload_event(
+    jmethodID id, const void* code) {
+  JvmtiDeferredEvent event = JvmtiDeferredEvent(TYPE_COMPILED_METHOD_UNLOAD);
+  event.set_compiled_method_unload(id, code);
+  return event;
+}
+
+void JvmtiDeferredEvent::post() {
+  switch(_type) {
+    case TYPE_COMPILED_METHOD_LOAD:
+      JvmtiExport::post_compiled_method_load(compiled_method_load());
+      nmethodLocker::unlock_nmethod(compiled_method_load());
+      break;
+    case TYPE_COMPILED_METHOD_UNLOAD:
+      JvmtiExport::post_compiled_method_unload(
+        compiled_method_unload_method_id(),
+        compiled_method_unload_code_begin());
+      break;
+    case TYPE_FLUSH:
+      JvmtiDeferredEventQueue::flush_complete(flush_state_addr());
+      break;
+    default:
+      ShouldNotReachHere();
+  }
+}
+
+JvmtiDeferredEventQueue::QueueNode* JvmtiDeferredEventQueue::_queue_tail = NULL;
+JvmtiDeferredEventQueue::QueueNode* JvmtiDeferredEventQueue::_queue_head = NULL;
+
+volatile JvmtiDeferredEventQueue::QueueNode*
+    JvmtiDeferredEventQueue::_pending_list = NULL;
+
+bool JvmtiDeferredEventQueue::has_events() {
+  assert(Service_lock->owned_by_self(), "Must own Service_lock");
+  return _queue_head != NULL || _pending_list != NULL;
+}
+
+void JvmtiDeferredEventQueue::enqueue(const JvmtiDeferredEvent& event) {
+  assert(Service_lock->owned_by_self(), "Must own Service_lock");
+
+  process_pending_events();
+
+  // Events get added to the end of the queue (and are pulled off the front).
+  QueueNode* node = new QueueNode(event);
+  if (_queue_tail == NULL) {
+    _queue_tail = _queue_head = node;
+  } else {
+    assert(_queue_tail->next() == NULL, "Must be the last element in the list");
+    _queue_tail->set_next(node);
+    _queue_tail = node;
+  }
+
+  Service_lock->notify_all();
+  assert((_queue_head == NULL) == (_queue_tail == NULL),
+         "Inconsistent queue markers");
+}
+
+JvmtiDeferredEvent JvmtiDeferredEventQueue::dequeue() {
+  assert(Service_lock->owned_by_self(), "Must own Service_lock");
+
+  process_pending_events();
+
+  assert(_queue_head != NULL, "Nothing to dequeue");
+
+  if (_queue_head == NULL) {
+    // Just in case this happens in product; it shouldn't but let's not crash
+    return JvmtiDeferredEvent();
+  }
+
+  QueueNode* node = _queue_head;
+  _queue_head = _queue_head->next();
+  if (_queue_head == NULL) {
+    _queue_tail = NULL;
+  }
+
+  assert((_queue_head == NULL) == (_queue_tail == NULL),
+         "Inconsistent queue markers");
+
+  JvmtiDeferredEvent event = node->event();
+  delete node;
+  return event;
+}
+
+void JvmtiDeferredEventQueue::add_pending_event(
+    const JvmtiDeferredEvent& event) {
+
+  QueueNode* node = new QueueNode(event);
+
+  bool success = false;
+  QueueNode* prev_value = (QueueNode*)_pending_list;
+  do {
+    node->set_next(prev_value);
+    prev_value = (QueueNode*)Atomic::cmpxchg_ptr(
+        (void*)node, (volatile void*)&_pending_list, (void*)node->next());
+  } while (prev_value != node->next());
+}
+
+// This method transfers any events that were added by someone NOT holding
+// the lock into the mainline queue.
+void JvmtiDeferredEventQueue::process_pending_events() {
+  assert(Service_lock->owned_by_self(), "Must own Service_lock");
+
+  if (_pending_list != NULL) {
+    QueueNode* head =
+        (QueueNode*)Atomic::xchg_ptr(NULL, (volatile void*)&_pending_list);
+
+    assert((_queue_head == NULL) == (_queue_tail == NULL),
+           "Inconsistent queue markers");
+
+    if (head != NULL) {
+      // Since we've treated the pending list as a stack (with newer
+      // events at the beginning), we need to join the bottom of the stack
+      // with the 'tail' of the queue in order to get the events in the
+      // right order.  We do this by reversing the pending list and appending
+      // it to the queue.
+
+      QueueNode* new_tail = head;
+      QueueNode* new_head = NULL;
+
+      // This reverses the list
+      QueueNode* prev = new_tail;
+      QueueNode* node = new_tail->next();
+      new_tail->set_next(NULL);
+      while (node != NULL) {
+        QueueNode* next = node->next();
+        node->set_next(prev);
+        prev = node;
+        node = next;
+      }
+      new_head = prev;
+
+      // Now append the new list to the queue
+      if (_queue_tail != NULL) {
+        _queue_tail->set_next(new_head);
+      } else { // _queue_head == NULL
+        _queue_head = new_head;
+      }
+      _queue_tail = new_tail;
+    }
+  }
+}
+
+enum {
+  // Random - used for debugging
+  FLUSHING  = 0x50403020,
+  FLUSHED   = 0x09080706
+};
+
+void JvmtiDeferredEventQueue::flush_queue(Thread* thread) {
+
+  volatile int flush_state = FLUSHING;
+
+  JvmtiDeferredEvent flush(JvmtiDeferredEvent::TYPE_FLUSH);
+  flush.set_flush_state_addr((int*)&flush_state);
+
+  if (ServiceThread::is_service_thread(thread)) {
+    // If we are the service thread we have to post all preceding events
+    // Use the flush event as a token to indicate when we can stop
+    JvmtiDeferredEvent event;
+    {
+      MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag);
+      enqueue(flush);
+      event = dequeue();
+    }
+    while (!event.is_flush_event() ||
+           event.flush_state_addr() != &flush_state) {
+      event.post();
+      {
+        MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag);
+        event = dequeue();
+      }
+    }
+  } else {
+    // Wake up the service thread so it will process events.  When it gets
+    // to the flush event it will set 'flush_complete' and notify us.
+    MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag);
+    enqueue(flush);
+    while (flush_state != FLUSHED) {
+      assert(flush_state == FLUSHING || flush_state == FLUSHED,
+             "only valid values for this");
+      Service_lock->wait(Mutex::_no_safepoint_check_flag);
+    }
+  }
+}
+
+void JvmtiDeferredEventQueue::flush_complete(int* state_addr) {
+  assert(state_addr != NULL && *state_addr == FLUSHING, "must be");
+  MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag);
+  *state_addr = FLUSHED;
+  Service_lock->notify_all();
+}
+
+#endif // ndef KERNEL
--- a/hotspot/src/share/vm/prims/jvmtiImpl.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiImpl.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -433,6 +433,149 @@
 
 #endif // !JVMTI_KERNEL
 
+/**
+ * When a thread (such as the compiler thread or VM thread) cannot post a
+ * JVMTI event itself because the event needs to be posted from a Java
+ * thread, then it can defer the event to the Service thread for posting.
+ * The information needed to post the event is encapsulated into this class
+ * and then enqueued onto the JvmtiDeferredEventQueue, where the Service
+ * thread will pick it up and post it.
+ *
+ * This is currently only used for posting compiled-method-load and unload
+ * events, which we don't want posted from the compiler thread.
+ */
+class JvmtiDeferredEvent VALUE_OBJ_CLASS_SPEC {
+  friend class JvmtiDeferredEventQueue;
+ private:
+  typedef enum {
+    TYPE_NONE,
+    TYPE_COMPILED_METHOD_LOAD,
+    TYPE_COMPILED_METHOD_UNLOAD,
+    TYPE_FLUSH // pseudo-event used to implement flush_queue()
+  } Type;
+
+  Type _type;
+  union {
+    nmethod* compiled_method_load;
+    struct {
+      jmethodID method_id;
+      const void* code_begin;
+    } compiled_method_unload;
+    int* flush_state_addr;
+  } _event_data;
+
+  JvmtiDeferredEvent(Type t) : _type(t) {}
+
+  void set_compiled_method_load(nmethod* nm) {
+    assert(_type == TYPE_COMPILED_METHOD_LOAD, "must be");
+    _event_data.compiled_method_load = nm;
+  }
+
+  nmethod* compiled_method_load() const {
+    assert(_type == TYPE_COMPILED_METHOD_LOAD, "must be");
+    return _event_data.compiled_method_load;
+  }
+
+  void set_compiled_method_unload(jmethodID id, const void* code) {
+    assert(_type == TYPE_COMPILED_METHOD_UNLOAD, "must be");
+    _event_data.compiled_method_unload.method_id = id;
+    _event_data.compiled_method_unload.code_begin = code;
+  }
+
+  jmethodID compiled_method_unload_method_id() const {
+    assert(_type == TYPE_COMPILED_METHOD_UNLOAD, "must be");
+    return _event_data.compiled_method_unload.method_id;
+  }
+
+  const void* compiled_method_unload_code_begin() const {
+    assert(_type == TYPE_COMPILED_METHOD_UNLOAD, "must be");
+    return _event_data.compiled_method_unload.code_begin;
+  }
+
+  bool is_flush_event() const { return _type == TYPE_FLUSH; }
+
+  int* flush_state_addr() const {
+    assert(is_flush_event(), "must be");
+    return _event_data.flush_state_addr;
+  }
+
+  void set_flush_state_addr(int* flag) {
+    assert(is_flush_event(), "must be");
+    _event_data.flush_state_addr = flag;
+  }
+
+ public:
+
+  JvmtiDeferredEvent() : _type(TYPE_NONE) {}
+
+  // Factory methods
+  static JvmtiDeferredEvent compiled_method_load_event(nmethod* nm)
+    KERNEL_RETURN_(JvmtiDeferredEvent());
+  static JvmtiDeferredEvent compiled_method_unload_event(
+      jmethodID id, const void* code) KERNEL_RETURN_(JvmtiDeferredEvent());
+
+  // Actually posts the event.
+  void post() KERNEL_RETURN;
+};
+
+/**
+ * Events enqueued on this queue wake up the Service thread which dequeues
+ * and posts the events.  The Service_lock is required to be held
+ * when operating on the queue (except for the "pending" events).
+ */
+class JvmtiDeferredEventQueue : AllStatic {
+  friend class JvmtiDeferredEvent;
+ private:
+  class QueueNode : public CHeapObj {
+   private:
+    JvmtiDeferredEvent _event;
+    QueueNode* _next;
+
+   public:
+    QueueNode(const JvmtiDeferredEvent& event)
+      : _event(event), _next(NULL) {}
+
+    const JvmtiDeferredEvent& event() const { return _event; }
+    QueueNode* next() const { return _next; }
+
+    void set_next(QueueNode* next) { _next = next; }
+  };
+
+  static QueueNode* _queue_head;             // Hold Service_lock to access
+  static QueueNode* _queue_tail;             // Hold Service_lock to access
+  static volatile QueueNode* _pending_list;  // Uses CAS for read/update
+
+  // Transfers events from the _pending_list to the _queue.
+  static void process_pending_events() KERNEL_RETURN;
+
+  static void flush_complete(int* flush_state) KERNEL_RETURN;
+
+ public:
+  // Must be holding Service_lock when calling these
+  static bool has_events() KERNEL_RETURN_(false);
+  static void enqueue(const JvmtiDeferredEvent& event) KERNEL_RETURN;
+  static JvmtiDeferredEvent dequeue() KERNEL_RETURN_(JvmtiDeferredEvent());
+
+  // This call blocks until all events enqueued prior to this call
+  // have been posted.  The Service_lock is acquired and waited upon.
+  //
+  // Implemented by creating a "flush" event and placing it in the queue.
+  // When the flush event is "posted" it will call flush_complete(), which
+  // will release the caller.
+  //
+  // Can be called by any thread (maybe even the service thread itself).
+  // Not necessary for the caller to be a JavaThread.
+  static void flush_queue(Thread* current) KERNEL_RETURN;
+
+  // Used to enqueue events without using a lock, for times (such as during
+  // safepoint) when we can't or don't want to lock the Service_lock.
+  //
+  // Events will be held off to the side until there's a call to
+  // dequeue(), enqueue(), or process_pending_events() (all of which require
+  // the holding of the Service_lock), and will be enqueued at that time.
+  static void add_pending_event(const JvmtiDeferredEvent&) KERNEL_RETURN;
+};
+
 // Utility macro that checks for NULL pointers:
 #define NULL_CHECK(X, Y) if ((X) == NULL) { return (Y); }
 
--- a/hotspot/src/share/vm/runtime/deoptimization.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/deoptimization.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -59,6 +59,12 @@
 #ifdef TARGET_ARCH_zero
 # include "vmreg_zero.inline.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "vmreg_arm.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "vmreg_ppc.inline.hpp"
+#endif
 #ifdef COMPILER2
 #ifdef TARGET_ARCH_MODEL_x86_32
 # include "adfiles/ad_x86_32.hpp"
@@ -72,6 +78,12 @@
 #ifdef TARGET_ARCH_MODEL_zero
 # include "adfiles/ad_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_MODEL_arm
+# include "adfiles/ad_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_ppc
+# include "adfiles/ad_ppc.hpp"
+#endif
 #endif
 
 bool DeoptimizationMarker::_is_active = false;
--- a/hotspot/src/share/vm/runtime/dtraceJSDT.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/dtraceJSDT.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -35,6 +35,12 @@
 #ifdef TARGET_ARCH_zero
 # include "nativeInst_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "nativeInst_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "nativeInst_ppc.hpp"
+#endif
 
 class RegisteredProbes;
 typedef jlong OpaqueProbes;
--- a/hotspot/src/share/vm/runtime/fprofiler.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/fprofiler.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -231,13 +231,13 @@
   static void engage(JavaThread* mainThread, bool fullProfile) KERNEL_RETURN ;
   static void disengage() KERNEL_RETURN ;
   static void print(int unused) KERNEL_RETURN ;
-  static bool is_active() KERNEL_RETURN_(return false;) ;
+  static bool is_active() KERNEL_RETURN_(false) ;
 
   // This is NULL if each thread has its own thread profiler,
   // else this is the single thread profiler used by all threads.
   // In particular it makes a difference during garbage collection,
   // where you only want to traverse each thread profiler once.
-  static ThreadProfiler* get_thread_profiler() KERNEL_RETURN_(return NULL;);
+  static ThreadProfiler* get_thread_profiler() KERNEL_RETURN_(NULL);
 
   // Garbage Collection Support
   static void oops_do(OopClosure* f) KERNEL_RETURN ;
@@ -246,13 +246,13 @@
 
   // Returns the start address for a given pc
   // NULL is returned if the PCRecorder is inactive
-  static address bucket_start_for(address pc) KERNEL_RETURN_(return NULL;);
+  static address bucket_start_for(address pc) KERNEL_RETURN_(NULL);
 
   enum { MillisecsPerTick = 10 };   // ms per profiling ticks
 
   // Returns the number of ticks recorded for the bucket
   // pc belongs to.
-  static int bucket_count_for(address pc) KERNEL_RETURN_(return 0;);
+  static int bucket_count_for(address pc) KERNEL_RETURN_(0);
 
 #ifndef FPROF_KERNEL
 
--- a/hotspot/src/share/vm/runtime/frame.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/frame.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -52,6 +52,12 @@
 #ifdef TARGET_ARCH_zero
 # include "nativeInst_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "nativeInst_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "nativeInst_ppc.hpp"
+#endif
 
 RegisterMap::RegisterMap(JavaThread *thread, bool update_map) {
   _thread         = thread;
--- a/hotspot/src/share/vm/runtime/frame.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/frame.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -44,6 +44,12 @@
 #ifdef TARGET_ARCH_MODEL_zero
 # include "adfiles/adGlobals_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_MODEL_arm
+# include "adfiles/adGlobals_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_ppc
+# include "adfiles/adGlobals_ppc.hpp"
+#endif
 #endif
 #ifdef ZERO
 #ifdef TARGET_ARCH_zero
@@ -457,6 +463,12 @@
 #ifdef TARGET_ARCH_zero
 # include "frame_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "frame_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "frame_ppc.hpp"
+#endif
 
 };
 
--- a/hotspot/src/share/vm/runtime/frame.inline.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/frame.inline.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -40,6 +40,12 @@
 #ifdef TARGET_ARCH_zero
 # include "jniTypes_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "jniTypes_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "jniTypes_ppc.hpp"
+#endif
 #ifdef ZERO
 #ifdef TARGET_ARCH_zero
 # include "entryFrame_zero.hpp"
@@ -88,6 +94,12 @@
 #ifdef TARGET_ARCH_zero
 # include "frame_zero.inline.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "frame_arm.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "frame_ppc.inline.hpp"
+#endif
 
 
 #endif // SHARE_VM_RUNTIME_FRAME_INLINE_HPP
--- a/hotspot/src/share/vm/runtime/globals.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/globals.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -35,6 +35,12 @@
 #ifdef TARGET_ARCH_zero
 # include "globals_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "globals_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "globals_ppc.hpp"
+#endif
 #ifdef TARGET_OS_FAMILY_linux
 # include "globals_linux.hpp"
 #endif
@@ -62,6 +68,12 @@
 #ifdef TARGET_OS_ARCH_windows_x86
 # include "globals_windows_x86.hpp"
 #endif
+#ifdef TARGET_OS_ARCH_linux_arm
+# include "globals_linux_arm.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_ppc
+# include "globals_linux_ppc.hpp"
+#endif
 #ifdef COMPILER1
 #ifdef TARGET_ARCH_x86
 # include "c1_globals_x86.hpp"
@@ -69,6 +81,12 @@
 #ifdef TARGET_ARCH_sparc
 # include "c1_globals_sparc.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "c1_globals_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "c1_globals_ppc.hpp"
+#endif
 #ifdef TARGET_OS_FAMILY_linux
 # include "c1_globals_linux.hpp"
 #endif
@@ -86,6 +104,9 @@
 #ifdef TARGET_ARCH_sparc
 # include "c2_globals_sparc.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "c2_globals_arm.hpp"
+#endif
 #ifdef TARGET_OS_FAMILY_linux
 # include "c2_globals_linux.hpp"
 #endif
@@ -410,7 +431,14 @@
   product_pd(bool, UseMembar,                                               \
           "(Unstable) Issues membars on thread state transitions")          \
                                                                             \
-  /* Temporary: See 6948537 */                                              \
+  /* Temp PPC Flag to allow disabling the use of lwsync on ppc platforms    \
+   * that don't support it.  This will be replaced by processor detection   \
+   * logic.                                                                 \
+   */                                                                       \
+  product(bool, UsePPCLWSYNC, true,                                         \
+          "Use lwsync instruction if true, else use slower sync")           \
+                                                                            \
+  /* Temporary: See 6948537 */                                             \
   experimental(bool, UseMemSetInBOT, true,                                  \
           "(Unstable) uses memset in BOT updates in GC code")               \
                                                                             \
@@ -762,6 +790,9 @@
   product(bool, ShowMessageBoxOnError, false,                               \
           "Keep process alive on VM fatal error")                           \
                                                                             \
+  product(bool, CreateMinidumpOnCrash, false,                               \
+          "Create minidump on VM fatal error")                              \
+                                                                            \
   product_pd(bool, UseOSErrorReporting,                                     \
           "Let VM fatal error propagate to the OS (ie. WER on Windows)")    \
                                                                             \
@@ -1926,6 +1957,9 @@
   product(bool, PrintRevisitStats, false,                                   \
           "Print revisit (klass and MDO) stack related information")        \
                                                                             \
+  EMBEDDED_ONLY(product(bool, LowMemoryProtection, true,                    \
+          "Enable LowMemoryProtection"))                                    \
+                                                                            \
   product_pd(bool, NeverActAsServerClassMachine,                            \
           "Never act like a server-class machine")                          \
                                                                             \
@@ -2630,6 +2664,25 @@
   product(bool, UseStringCache, false,                                      \
           "Enable String cache capabilities on String.java")                \
                                                                             \
+  /* byte strings */                                                        \
+  product(bool, UseCompressedStrings, false,                                \
+          "Enable byte-valued strings")                                     \
+                                                                            \
+  product(bool, SpecialStringCompress, true,                                \
+          "special version of string compress")                             \
+                                                                            \
+  product(bool, SpecialStringInflate, true,                                 \
+          "special version of string inflate")                              \
+                                                                            \
+  product(bool, SpecialStringCompareToCC, true,                             \
+          "special version of string compareToCC")                          \
+                                                                            \
+  product(bool, SpecialStringIndexOfCC, true,                               \
+          "special version of string indexOfCC")                            \
+                                                                            \
+  product(bool, SpecialStringEqualsCC, true,                                \
+          "special version of string equalsCC")                             \
+                                                                            \
   /* statistics */                                                          \
   develop(bool, CountCompiledCalls, false,                                  \
           "counts method invocations")                                      \
@@ -2851,9 +2904,13 @@
           "Max. no. of lines in the stack trace for Java exceptions "       \
           "(0 means all)")                                                  \
                                                                             \
-  develop(intx, GuaranteedSafepointInterval, 1000,                          \
+  NOT_EMBEDDED(develop(intx, GuaranteedSafepointInterval, 1000,             \
           "Guarantee a safepoint (at least) every so many milliseconds "    \
-          "(0 means none)")                                                 \
+          "(0 means none)"))                                                \
+                                                                            \
+  EMBEDDED_ONLY(product(intx, GuaranteedSafepointInterval, 0,               \
+          "Guarantee a safepoint (at least) every so many milliseconds "    \
+          "(0 means none)"))                                                \
                                                                             \
   product(intx, SafepointTimeoutDelay, 10000,                               \
           "Delay in milliseconds for option SafepointTimeout")              \
@@ -3543,9 +3600,13 @@
                                                                             \
   /* flags for performance data collection */                               \
                                                                             \
-  product(bool, UsePerfData, true,                                          \
+  NOT_EMBEDDED(product(bool, UsePerfData, true,                             \
           "Flag to disable jvmstat instrumentation for performance testing" \
-          "and problem isolation purposes.")                                \
+          "and problem isolation purposes."))                               \
+                                                                            \
+  EMBEDDED_ONLY(product(bool, UsePerfData, false,                           \
+          "Flag to disable jvmstat instrumentation for performance testing" \
+          "and problem isolation purposes."))                               \
                                                                             \
   product(bool, PerfDataSaveToFile, false,                                  \
           "Save PerfData memory to hsperfdata_<pid> file on exit")          \
@@ -3597,6 +3658,12 @@
   manageable(bool, PrintConcurrentLocks, false,                             \
           "Print java.util.concurrent locks in thread dump")                \
                                                                             \
+  product(bool, TransmitErrorReport, false,                                 \
+          "Enable error report transmission on erroneous termination")      \
+                                                                            \
+  product(ccstr, ErrorReportServer, NULL,                                   \
+          "Override built-in error report server address")                  \
+                                                                            \
   /* Shared spaces */                                                       \
                                                                             \
   product(bool, UseSharedSpaces, true,                                      \
--- a/hotspot/src/share/vm/runtime/icache.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/icache.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -77,6 +77,12 @@
 #ifdef TARGET_ARCH_zero
 # include "icache_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "icache_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "icache_ppc.hpp"
+#endif
 
 
 
--- a/hotspot/src/share/vm/runtime/java.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/java.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -70,6 +70,12 @@
 #ifdef TARGET_ARCH_zero
 # include "vm_version_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "vm_version_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "vm_version_ppc.hpp"
+#endif
 #ifdef TARGET_OS_FAMILY_linux
 # include "thread_linux.inline.hpp"
 #endif
--- a/hotspot/src/share/vm/runtime/javaCalls.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/javaCalls.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -39,6 +39,12 @@
 #ifdef TARGET_ARCH_zero
 # include "jniTypes_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "jniTypes_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "jniTypes_ppc.hpp"
+#endif
 #ifdef TARGET_OS_FAMILY_linux
 # include "thread_linux.inline.hpp"
 #endif
--- a/hotspot/src/share/vm/runtime/javaFrameAnchor.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/javaFrameAnchor.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -44,6 +44,12 @@
 #ifdef TARGET_OS_ARCH_windows_x86
 # include "orderAccess_windows_x86.inline.hpp"
 #endif
+#ifdef TARGET_OS_ARCH_linux_arm
+# include "orderAccess_linux_arm.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_ppc
+# include "orderAccess_linux_ppc.inline.hpp"
+#endif
 //
 // An object for encapsulating the machine/os dependent part of a JavaThread frame state
 //
@@ -102,6 +108,12 @@
 #ifdef TARGET_ARCH_zero
 # include "javaFrameAnchor_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "javaFrameAnchor_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "javaFrameAnchor_ppc.hpp"
+#endif
 
 
 public:
--- a/hotspot/src/share/vm/runtime/mutexLocker.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/mutexLocker.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -129,7 +129,7 @@
 Monitor* GCTaskManager_lock           = NULL;
 
 Mutex*   Management_lock              = NULL;
-Monitor* LowMemory_lock               = NULL;
+Monitor* Service_lock               = NULL;
 
 #define MAX_NUM_MUTEX 128
 static Monitor * _mutex_array[MAX_NUM_MUTEX];
@@ -203,7 +203,7 @@
 
   def(Patching_lock                , Mutex  , special,     true ); // used for safepointing and code patching.
   def(ObjAllocPost_lock            , Monitor, special,     false);
-  def(LowMemory_lock               , Monitor, special,     true ); // used for low memory detection
+  def(Service_lock                 , Monitor, special,     true ); // used for service thread operations
   def(JmethodIdCreation_lock       , Mutex  , leaf,        true ); // used for creating jmethodIDs.
 
   def(SystemDictionary_lock        , Monitor, leaf,        true ); // lookups done by VM thread
--- a/hotspot/src/share/vm/runtime/mutexLocker.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/mutexLocker.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -131,7 +131,7 @@
 extern Mutex*   HotCardCache_lock;               // protects the hot card cache
 
 extern Mutex*   Management_lock;                 // a lock used to serialize JVM management
-extern Monitor* LowMemory_lock;                  // a lock used for low memory detection
+extern Monitor* Service_lock;                    // a lock used for service thread operation
 
 // A MutexLocker provides mutual exclusion with respect to a given mutex
 // for the scope which contains the locker.  The lock is an OS lock, not
--- a/hotspot/src/share/vm/runtime/os.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/os.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -614,6 +614,9 @@
   // Structured OS Exception support
   static void os_exception_wrapper(java_call_t f, JavaValue* value, methodHandle* method, JavaCallArguments* args, Thread* thread);
 
+  // On Windows this will create an actual minidump, on Linux/Solaris it will simply check core dump limits
+  static void check_or_create_dump(void* exceptionRecord, void* contextRecord, char* buffer, size_t bufferSize);
+
   // JVMTI & JVM monitoring and management support
   // The thread_cpu_time() and current_thread_cpu_time() are only
   // supported if is_thread_cpu_time_supported() returns true.
@@ -676,6 +679,12 @@
 #ifdef TARGET_OS_ARCH_windows_x86
 # include "os_windows_x86.hpp"
 #endif
+#ifdef TARGET_OS_ARCH_linux_arm
+# include "os_linux_arm.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_ppc
+# include "os_linux_ppc.hpp"
+#endif
 
 
   // debugging support (mostly used by debug.cpp but also fatal error handler)
--- a/hotspot/src/share/vm/runtime/registerMap.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/registerMap.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -36,6 +36,12 @@
 #ifdef TARGET_ARCH_zero
 # include "register_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "register_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "register_ppc.hpp"
+#endif
 
 class JavaThread;
 
@@ -138,6 +144,12 @@
 #ifdef TARGET_ARCH_zero
 # include "registerMap_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "registerMap_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "registerMap_ppc.hpp"
+#endif
 
 };
 
--- a/hotspot/src/share/vm/runtime/relocator.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/relocator.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -36,6 +36,12 @@
 #ifdef TARGET_ARCH_zero
 # include "bytes_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "bytes_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "bytes_ppc.hpp"
+#endif
 
 // This code has been converted from the 1.1E java virtual machine
 // Thanks to the JavaTopics group for using the code
--- a/hotspot/src/share/vm/runtime/safepoint.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/safepoint.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -61,6 +61,14 @@
 # include "nativeInst_zero.hpp"
 # include "vmreg_zero.inline.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "nativeInst_arm.hpp"
+# include "vmreg_arm.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "nativeInst_ppc.hpp"
+# include "vmreg_ppc.inline.hpp"
+#endif
 #ifdef TARGET_OS_FAMILY_linux
 # include "thread_linux.inline.hpp"
 #endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/share/vm/runtime/serviceThread.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,122 @@
+/*
+ * Copyright (c) 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.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "runtime/interfaceSupport.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/serviceThread.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "prims/jvmtiImpl.hpp"
+
+ServiceThread* ServiceThread::_instance = NULL;
+
+void ServiceThread::initialize() {
+  EXCEPTION_MARK;
+
+  instanceKlassHandle klass (THREAD,  SystemDictionary::Thread_klass());
+  instanceHandle thread_oop = klass->allocate_instance_handle(CHECK);
+
+  const char* name = JDK_Version::is_gte_jdk17x_version() ?
+      "Service Thread" : "Low Memory Detector";
+
+  Handle string = java_lang_String::create_from_str(name, CHECK);
+
+  // Initialize thread_oop to put it into the system threadGroup
+  Handle thread_group (THREAD, Universe::system_thread_group());
+  JavaValue result(T_VOID);
+  JavaCalls::call_special(&result, thread_oop,
+                          klass,
+                          vmSymbols::object_initializer_name(),
+                          vmSymbols::threadgroup_string_void_signature(),
+                          thread_group,
+                          string,
+                          CHECK);
+
+  {
+    MutexLocker mu(Threads_lock);
+    ServiceThread* thread =  new ServiceThread(&service_thread_entry);
+
+    // At this point it may be possible that no osthread was created for the
+    // JavaThread due to lack of memory. We would have to throw an exception
+    // in that case. However, since this must work and we do not allow
+    // exceptions anyway, check and abort if this fails.
+    if (thread == NULL || thread->osthread() == NULL) {
+      vm_exit_during_initialization("java.lang.OutOfMemoryError",
+                                    "unable to create new native thread");
+    }
+
+    java_lang_Thread::set_thread(thread_oop(), thread);
+    java_lang_Thread::set_priority(thread_oop(), NearMaxPriority);
+    java_lang_Thread::set_daemon(thread_oop());
+    thread->set_threadObj(thread_oop());
+
+    Threads::add(thread);
+    Thread::start(thread);
+
+    _instance = thread;
+  }
+}
+
+void ServiceThread::service_thread_entry(JavaThread* jt, TRAPS) {
+  while (true) {
+    bool sensors_changed = false;
+    bool has_jvmti_events = false;
+    JvmtiDeferredEvent jvmti_event;
+    {
+      // Need state transition ThreadBlockInVM so that this thread
+      // will be handled by safepoint correctly when this thread is
+      // notified at a safepoint.
+
+      // This ThreadBlockInVM object is not also considered to be
+      // suspend-equivalent because ServiceThread is not visible to
+      // external suspension.
+
+      ThreadBlockInVM tbivm(jt);
+
+      MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag);
+      while (!(sensors_changed = LowMemoryDetector::has_pending_requests()) &&
+             !(has_jvmti_events = JvmtiDeferredEventQueue::has_events())) {
+        // wait until one of the sensors has pending requests, or there is a
+        // pending JVMTI event to post
+        Service_lock->wait(Mutex::_no_safepoint_check_flag);
+      }
+
+      if (has_jvmti_events) {
+        jvmti_event = JvmtiDeferredEventQueue::dequeue();
+      }
+    }
+
+    if (has_jvmti_events) {
+      jvmti_event.post();
+    }
+
+    if (sensors_changed) {
+      LowMemoryDetector::process_sensor_changes(jt);
+    }
+  }
+}
+
+bool ServiceThread::is_service_thread(Thread* thread) {
+  return thread == _instance;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/share/vm/runtime/serviceThread.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 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.
+ *
+ */
+
+#ifndef SHARE_VM_RUNTIME_SERVICETHREAD_HPP
+#define SHARE_VM_RUNTIME_SERVICETHREAD_HPP
+
+#include "runtime/thread.hpp"
+
+// A JavaThread for low memory detection support and JVMTI
+// compiled-method-load events.
+class ServiceThread : public JavaThread {
+  friend class VMStructs;
+ private:
+
+  static ServiceThread* _instance;
+
+  static void service_thread_entry(JavaThread* thread, TRAPS);
+  ServiceThread(ThreadFunction entry_point) : JavaThread(entry_point) {};
+
+ public:
+  static void initialize();
+
+  // Hide this thread from external view.
+  bool is_hidden_from_external_view() const      { return true; }
+
+  // Returns true if the passed thread is the service thread.
+  static bool is_service_thread(Thread* thread);
+};
+
+#endif // SHARE_VM_RUNTIME_SERVICETHREAD_HPP
--- a/hotspot/src/share/vm/runtime/sharedRuntime.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/sharedRuntime.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -68,6 +68,14 @@
 # include "nativeInst_zero.hpp"
 # include "vmreg_zero.inline.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "nativeInst_arm.hpp"
+# include "vmreg_arm.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "nativeInst_ppc.hpp"
+# include "vmreg_ppc.inline.hpp"
+#endif
 #ifdef COMPILER1
 #include "c1/c1_Runtime1.hpp"
 #endif
@@ -2618,6 +2626,7 @@
   int          jlsLen    = java_lang_String::length(src);
   jchar*       jlsPos    = (jlsLen == 0) ? NULL :
                                            jlsValue->char_at_addr(jlsOffset);
+  assert(typeArrayKlass::cast(jlsValue->klass())->element_type() == T_CHAR, "compressed string");
   (void) UNICODE::as_utf8(jlsPos, jlsLen, (char *)dst, max_dtrace_string_size);
 }
 #endif // ndef HAVE_DTRACE_H
--- a/hotspot/src/share/vm/runtime/stackValueCollection.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/stackValueCollection.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -33,6 +33,12 @@
 #ifdef TARGET_ARCH_zero
 # include "jniTypes_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "jniTypes_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "jniTypes_ppc.hpp"
+#endif
 
 jint StackValueCollection::int_at(int slot) const {
   intptr_t val =  at(slot)->get_int();
--- a/hotspot/src/share/vm/runtime/statSampler.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/statSampler.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -42,6 +42,12 @@
 #ifdef TARGET_ARCH_zero
 # include "vm_version_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "vm_version_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "vm_version_ppc.hpp"
+#endif
 
 // --------------------------------------------------------
 // StatSamplerTask
--- a/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -36,6 +36,12 @@
 #ifdef TARGET_ARCH_zero
 # include "assembler_zero.inline.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "assembler_arm.inline.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "assembler_ppc.inline.hpp"
+#endif
 
 
 // Implementation of StubCodeDesc
--- a/hotspot/src/share/vm/runtime/stubRoutines.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/stubRoutines.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -40,6 +40,12 @@
 #ifdef TARGET_ARCH_zero
 # include "nativeInst_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "nativeInst_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "nativeInst_ppc.hpp"
+#endif
 
 // StubRoutines provides entry points to assembly routines used by
 // compiled code and the run-time system. Platform-specific entry
@@ -105,6 +111,12 @@
 #ifdef TARGET_ARCH_MODEL_zero
 # include "stubRoutines_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_MODEL_arm
+# include "stubRoutines_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_ppc
+# include "stubRoutines_ppc.hpp"
+#endif
 
 
   static jint    _verify_oop_count;
--- a/hotspot/src/share/vm/runtime/thread.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/thread.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -962,22 +962,6 @@
                                          vmSymbols::void_method_signature(), CHECK);
 }
 
-#ifdef KERNEL
-static void set_jkernel_boot_classloader_hook(TRAPS) {
-  klassOop k = SystemDictionary::sun_jkernel_DownloadManager_klass();
-  instanceKlassHandle klass (THREAD, k);
-
-  if (k == NULL) {
-    // sun.jkernel.DownloadManager may not present in the JDK; just return
-    return;
-  }
-
-  JavaValue result(T_VOID);
-  JavaCalls::call_static(&result, klass, vmSymbols::setBootClassLoaderHook_name(),
-                                         vmSymbols::void_method_signature(), CHECK);
-}
-#endif // KERNEL
-
 // General purpose hook into Java code, run once when the VM is initialized.
 // The Java library method itself may be changed independently from the VM.
 static void call_postVMInitHook(TRAPS) {
@@ -1611,7 +1595,15 @@
                                   uncaught_exception,  // Arg 2
                                   THREAD);
         }
-        CLEAR_PENDING_EXCEPTION;
+        if (HAS_PENDING_EXCEPTION) {
+          ResourceMark rm(this);
+          jio_fprintf(defaultStream::error_stream(),
+                "\nException: %s thrown from the UncaughtExceptionHandler"
+                " in thread \"%s\"\n",
+                Klass::cast(pending_exception()->klass())->external_name(),
+                get_thread_name());
+          CLEAR_PENDING_EXCEPTION;
+        }
       }
     }
 
@@ -3284,12 +3276,6 @@
     vm_exit_during_initialization(Handle(THREAD, PENDING_EXCEPTION));
   }
 
-#ifdef KERNEL
-  if (JDK_Version::is_gte_jdk17x_version()) {
-    set_jkernel_boot_classloader_hook(THREAD);
-  }
-#endif // KERNEL
-
 #ifndef SERIALGC
   // Support for ConcurrentMarkSweep. This should be cleaned up
   // and better encapsulated. The ugly nested if test would go away
--- a/hotspot/src/share/vm/runtime/thread.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/thread.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -1598,6 +1598,12 @@
 #ifdef TARGET_OS_ARCH_windows_x86
 # include "thread_windows_x86.hpp"
 #endif
+#ifdef TARGET_OS_ARCH_linux_arm
+# include "thread_linux_arm.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_ppc
+# include "thread_linux_ppc.hpp"
+#endif
 
 
  public:
@@ -1674,16 +1680,6 @@
   return cur_sp > low_addr ? cur_sp - low_addr : 0;
 }
 
-// A JavaThread for low memory detection support
-class LowMemoryDetectorThread : public JavaThread {
-  friend class VMStructs;
-public:
-  LowMemoryDetectorThread(ThreadFunction entry_point) : JavaThread(entry_point) {};
-
-  // Hide this thread from external view.
-  bool is_hidden_from_external_view() const      { return true; }
-};
-
 // A thread used for Compilation.
 class CompilerThread : public JavaThread {
   friend class VMStructs;
--- a/hotspot/src/share/vm/runtime/threadLocalStorage.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/threadLocalStorage.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -62,6 +62,12 @@
 #ifdef TARGET_OS_ARCH_windows_x86
 # include "threadLS_windows_x86.hpp"
 #endif
+#ifdef TARGET_OS_ARCH_linux_arm
+# include "threadLS_linux_arm.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_ppc
+# include "threadLS_linux_ppc.hpp"
+#endif
 
 
  public:
--- a/hotspot/src/share/vm/runtime/vmStructs.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/vmStructs.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -93,6 +93,7 @@
 #include "runtime/java.hpp"
 #include "runtime/javaCalls.hpp"
 #include "runtime/perfMemory.hpp"
+#include "runtime/serviceThread.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/stubRoutines.hpp"
 #include "runtime/virtualspace.hpp"
@@ -108,6 +109,12 @@
 #ifdef TARGET_ARCH_zero
 # include "vmStructs_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "vmStructs_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "vmStructs_ppc.hpp"
+#endif
 #ifdef TARGET_OS_FAMILY_linux
 # include "thread_linux.inline.hpp"
 #endif
@@ -135,6 +142,12 @@
 #ifdef TARGET_OS_ARCH_windows_x86
 # include "vmStructs_windows_x86.hpp"
 #endif
+#ifdef TARGET_OS_ARCH_linux_arm
+# include "vmStructs_linux_arm.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_ppc
+# include "vmStructs_linux_ppc.hpp"
+#endif
 #ifndef SERIALGC
 #include "gc_implementation/concurrentMarkSweep/cmsPermGen.hpp"
 #include "gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp"
@@ -166,6 +179,12 @@
 #ifdef TARGET_ARCH_MODEL_zero
 # include "adfiles/adGlobals_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_MODEL_arm
+# include "adfiles/adGlobals_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_MODEL_ppc
+# include "adfiles/adGlobals_ppc.hpp"
+#endif
 #endif
 
 // Note: the cross-product of (c1, c2, product, nonproduct, ...),
@@ -1232,7 +1251,7 @@
            declare_type(WatcherThread, Thread)                            \
            declare_type(JavaThread, Thread)                               \
            declare_type(JvmtiAgentThread, JavaThread)                     \
-           declare_type(LowMemoryDetectorThread, JavaThread)              \
+           declare_type(ServiceThread, JavaThread)                        \
   declare_type(CompilerThread, JavaThread)                        \
   declare_toplevel_type(OSThread)                                         \
   declare_toplevel_type(JavaFrameAnchor)                                  \
--- a/hotspot/src/share/vm/runtime/vm_version.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/vm_version.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -35,6 +35,12 @@
 #ifdef TARGET_ARCH_zero
 # include "vm_version_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "vm_version_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "vm_version_ppc.hpp"
+#endif
 
 const char* Abstract_VM_Version::_s_vm_release = Abstract_VM_Version::vm_release();
 const char* Abstract_VM_Version::_s_internal_vm_info_string = Abstract_VM_Version::internal_vm_info_string();
@@ -220,12 +226,29 @@
     #endif
   #endif
 
+  #ifndef FLOAT_ARCH
+    #if defined(__SOFTFP__)
+      #define FLOAT_ARCH "-sflt"
+    #elif defined(E500V2)
+      #define FLOAT_ARCH "-e500v2"
+    #elif defined(ARM)
+      #define FLOAT_ARCH "-vfp"
+    #elif defined(PPC)
+      #define FLOAT_ARCH "-hflt"
+    #else
+      #define FLOAT_ARCH ""
+    #endif
+  #endif
 
-  return VMNAME " (" VM_RELEASE ") for " OS "-" CPU
+  return VMNAME " (" VM_RELEASE ") for " OS "-" CPU FLOAT_ARCH
          " JRE (" JRE_RELEASE_VERSION "), built on " __DATE__ " " __TIME__
          " by " XSTR(HOTSPOT_BUILD_USER) " with " HOTSPOT_BUILD_COMPILER;
 }
 
+const char *Abstract_VM_Version::vm_build_user() {
+  return HOTSPOT_BUILD_USER;
+}
+
 unsigned int Abstract_VM_Version::jvm_version() {
   return ((Abstract_VM_Version::vm_major_version() & 0xFF) << 24) |
          ((Abstract_VM_Version::vm_minor_version() & 0xFF) << 16) |
--- a/hotspot/src/share/vm/runtime/vm_version.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/runtime/vm_version.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -59,6 +59,7 @@
   static const char* vm_info_string();
   static const char* vm_release();
   static const char* vm_platform_string();
+  static const char* vm_build_user();
 
   static int vm_major_version()               { assert(_initialized, "not initialized"); return _vm_major_version; }
   static int vm_minor_version()               { assert(_initialized, "not initialized"); return _vm_minor_version; }
--- a/hotspot/src/share/vm/services/attachListener.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/services/attachListener.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -59,10 +59,10 @@
   static void detachall() KERNEL_RETURN;
 
   // indicates if the Attach Listener needs to be created at startup
-  static bool init_at_startup() KERNEL_RETURN_(return false;);
+  static bool init_at_startup() KERNEL_RETURN_(false);
 
   // indicates if we have a trigger to start the Attach Listener
-  static bool is_init_trigger() KERNEL_RETURN_(return false;);
+  static bool is_init_trigger() KERNEL_RETURN_(false);
 
 #ifdef SERVICES_KERNEL
   static bool is_attach_supported()             { return false; }
--- a/hotspot/src/share/vm/services/lowMemoryDetector.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/services/lowMemoryDetector.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -34,55 +34,11 @@
 #include "services/lowMemoryDetector.hpp"
 #include "services/management.hpp"
 
-LowMemoryDetectorThread* LowMemoryDetector::_detector_thread = NULL;
 volatile bool LowMemoryDetector::_enabled_for_collected_pools = false;
 volatile jint LowMemoryDetector::_disabled_count = 0;
 
-void LowMemoryDetector::initialize() {
-  EXCEPTION_MARK;
-
-  instanceKlassHandle klass (THREAD,  SystemDictionary::Thread_klass());
-  instanceHandle thread_oop = klass->allocate_instance_handle(CHECK);
-
-  const char thread_name[] = "Low Memory Detector";
-  Handle string = java_lang_String::create_from_str(thread_name, CHECK);
-
-  // Initialize thread_oop to put it into the system threadGroup
-  Handle thread_group (THREAD, Universe::system_thread_group());
-  JavaValue result(T_VOID);
-  JavaCalls::call_special(&result, thread_oop,
-                          klass,
-                          vmSymbols::object_initializer_name(),
-                          vmSymbols::threadgroup_string_void_signature(),
-                          thread_group,
-                          string,
-                          CHECK);
-
-  {
-    MutexLocker mu(Threads_lock);
-    _detector_thread = new LowMemoryDetectorThread(&low_memory_detector_thread_entry);
-
-    // At this point it may be possible that no osthread was created for the
-    // JavaThread due to lack of memory. We would have to throw an exception
-    // in that case. However, since this must work and we do not allow
-    // exceptions anyway, check and abort if this fails.
-    if (_detector_thread == NULL || _detector_thread->osthread() == NULL) {
-      vm_exit_during_initialization("java.lang.OutOfMemoryError",
-                                    "unable to create new native thread");
-    }
-
-    java_lang_Thread::set_thread(thread_oop(), _detector_thread);
-    java_lang_Thread::set_priority(thread_oop(), NearMaxPriority);
-    java_lang_Thread::set_daemon(thread_oop());
-    _detector_thread->set_threadObj(thread_oop());
-
-    Threads::add(_detector_thread);
-    Thread::start(_detector_thread);
-  }
-}
-
 bool LowMemoryDetector::has_pending_requests() {
-  assert(LowMemory_lock->owned_by_self(), "Must own LowMemory_lock");
+  assert(Service_lock->owned_by_self(), "Must own Service_lock");
   bool has_requests = false;
   int num_memory_pools = MemoryService::num_memory_pools();
   for (int i = 0; i < num_memory_pools; i++) {
@@ -100,47 +56,21 @@
   return has_requests;
 }
 
-void LowMemoryDetector::low_memory_detector_thread_entry(JavaThread* jt, TRAPS) {
-  while (true) {
-    bool   sensors_changed = false;
-
-    {
-      // _no_safepoint_check_flag is used here as LowMemory_lock is a
-      // special lock and the VMThread may acquire this lock at safepoint.
-      // Need state transition ThreadBlockInVM so that this thread
-      // will be handled by safepoint correctly when this thread is
-      // notified at a safepoint.
-
-      // This ThreadBlockInVM object is not also considered to be
-      // suspend-equivalent because LowMemoryDetector threads are
-      // not visible to external suspension.
-
-      ThreadBlockInVM tbivm(jt);
+void LowMemoryDetector::process_sensor_changes(TRAPS) {
+  ResourceMark rm(THREAD);
+  HandleMark hm(THREAD);
 
-      MutexLockerEx ml(LowMemory_lock, Mutex::_no_safepoint_check_flag);
-      while (!(sensors_changed = has_pending_requests())) {
-        // wait until one of the sensors has pending requests
-        LowMemory_lock->wait(Mutex::_no_safepoint_check_flag);
-      }
+  // No need to hold Service_lock to call out to Java
+  int num_memory_pools = MemoryService::num_memory_pools();
+  for (int i = 0; i < num_memory_pools; i++) {
+    MemoryPool* pool = MemoryService::get_memory_pool(i);
+    SensorInfo* sensor = pool->usage_sensor();
+    SensorInfo* gc_sensor = pool->gc_usage_sensor();
+    if (sensor != NULL && sensor->has_pending_requests()) {
+      sensor->process_pending_requests(CHECK);
     }
-
-    {
-      ResourceMark rm(THREAD);
-      HandleMark hm(THREAD);
-
-      // No need to hold LowMemory_lock to call out to Java
-      int num_memory_pools = MemoryService::num_memory_pools();
-      for (int i = 0; i < num_memory_pools; i++) {
-        MemoryPool* pool = MemoryService::get_memory_pool(i);
-        SensorInfo* sensor = pool->usage_sensor();
-        SensorInfo* gc_sensor = pool->gc_usage_sensor();
-        if (sensor != NULL && sensor->has_pending_requests()) {
-          sensor->process_pending_requests(CHECK);
-        }
-        if (gc_sensor != NULL && gc_sensor->has_pending_requests()) {
-          gc_sensor->process_pending_requests(CHECK);
-        }
-      }
+    if (gc_sensor != NULL && gc_sensor->has_pending_requests()) {
+      gc_sensor->process_pending_requests(CHECK);
     }
   }
 }
@@ -148,7 +78,7 @@
 // This method could be called from any Java threads
 // and also VMThread.
 void LowMemoryDetector::detect_low_memory() {
-  MutexLockerEx ml(LowMemory_lock, Mutex::_no_safepoint_check_flag);
+  MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag);
 
   bool has_pending_requests = false;
   int num_memory_pools = MemoryService::num_memory_pools();
@@ -166,7 +96,7 @@
   }
 
   if (has_pending_requests) {
-    LowMemory_lock->notify_all();
+    Service_lock->notify_all();
   }
 }
 
@@ -181,14 +111,14 @@
   }
 
   {
-    MutexLockerEx ml(LowMemory_lock, Mutex::_no_safepoint_check_flag);
+    MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag);
 
     MemoryUsage usage = pool->get_memory_usage();
     sensor->set_gauge_sensor_level(usage,
                                    pool->usage_threshold());
     if (sensor->has_pending_requests()) {
       // notify sensor state update
-      LowMemory_lock->notify_all();
+      Service_lock->notify_all();
     }
   }
 }
@@ -203,14 +133,14 @@
   }
 
   {
-    MutexLockerEx ml(LowMemory_lock, Mutex::_no_safepoint_check_flag);
+    MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag);
 
     MemoryUsage usage = pool->get_last_collection_usage();
     sensor->set_counter_sensor_level(usage, pool->gc_usage_threshold());
 
     if (sensor->has_pending_requests()) {
       // notify sensor state update
-      LowMemory_lock->notify_all();
+      Service_lock->notify_all();
     }
   }
 }
@@ -384,8 +314,8 @@
   }
 
   {
-    // Holds LowMemory_lock and update the sensor state
-    MutexLockerEx ml(LowMemory_lock, Mutex::_no_safepoint_check_flag);
+    // Holds Service_lock and update the sensor state
+    MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag);
     _sensor_on = true;
     _sensor_count += count;
     _pending_trigger_count = _pending_trigger_count - count;
@@ -410,8 +340,8 @@
   }
 
   {
-    // Holds LowMemory_lock and update the sensor state
-    MutexLockerEx ml(LowMemory_lock, Mutex::_no_safepoint_check_flag);
+    // Holds Service_lock and update the sensor state
+    MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag);
     _sensor_on = false;
     _pending_clear_count = 0;
     _pending_trigger_count = _pending_trigger_count - count;
--- a/hotspot/src/share/vm/services/lowMemoryDetector.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/services/lowMemoryDetector.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -58,8 +58,8 @@
 //
 // May need to deal with hysteresis effect.
 //
+// Memory detection code runs in the Service thread (serviceThread.hpp).
 
-class LowMemoryDetectorThread;
 class OopClosure;
 class MemoryPool;
 
@@ -211,23 +211,22 @@
 };
 
 class LowMemoryDetector : public AllStatic {
-friend class LowMemoryDetectorDisabler;
+  friend class LowMemoryDetectorDisabler;
+  friend class ServiceThread;
 private:
   // true if any collected heap has low memory detection enabled
   static volatile bool _enabled_for_collected_pools;
   // > 0 if temporary disabed
   static volatile jint _disabled_count;
 
-  static LowMemoryDetectorThread* _detector_thread;
-  static void low_memory_detector_thread_entry(JavaThread* thread, TRAPS);
   static void check_memory_usage();
   static bool has_pending_requests();
   static bool temporary_disabled() { return _disabled_count > 0; }
   static void disable() { Atomic::inc(&_disabled_count); }
   static void enable() { Atomic::dec(&_disabled_count); }
+  static void process_sensor_changes(TRAPS);
 
 public:
-  static void initialize();
   static void detect_low_memory();
   static void detect_low_memory(MemoryPool* pool);
   static void detect_after_gc_memory(MemoryPool* pool);
@@ -275,7 +274,6 @@
       }
     }
   }
-
 };
 
 class LowMemoryDetectorDisabler: public StackObj {
--- a/hotspot/src/share/vm/services/management.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/services/management.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -38,6 +38,7 @@
 #include "runtime/javaCalls.hpp"
 #include "runtime/jniHandles.hpp"
 #include "runtime/os.hpp"
+#include "runtime/serviceThread.hpp"
 #include "services/classLoadingService.hpp"
 #include "services/heapDumper.hpp"
 #include "services/lowMemoryDetector.hpp"
@@ -112,8 +113,8 @@
 }
 
 void Management::initialize(TRAPS) {
-  // Start the low memory detector thread
-  LowMemoryDetector::initialize();
+  // Start the service thread
+  ServiceThread::initialize();
 
   if (ManagementServer) {
     ResourceMark rm(THREAD);
--- a/hotspot/src/share/vm/utilities/copy.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/utilities/copy.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -331,6 +331,12 @@
 #ifdef TARGET_ARCH_zero
 # include "copy_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "copy_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "copy_ppc.hpp"
+#endif
 
 };
 
--- a/hotspot/src/share/vm/utilities/elfSymbolTable.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/utilities/elfSymbolTable.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -39,13 +39,14 @@
   // try to load the string table
   long cur_offset = ftell(file);
   if (cur_offset != -1) {
-    m_symbols = (Elf_Sym*)NEW_C_HEAP_ARRAY(char, shdr.sh_size);
+    // call malloc so we can back up if memory allocation fails.
+    m_symbols = (Elf_Sym*)os::malloc(shdr.sh_size);
     if (m_symbols) {
       if (fseek(file, shdr.sh_offset, SEEK_SET) ||
         fread((void*)m_symbols, shdr.sh_size, 1, file) != 1 ||
         fseek(file, cur_offset, SEEK_SET)) {
         m_status = Decoder::file_invalid;
-        FREE_C_HEAP_ARRAY(char, m_symbols);
+        os::free(m_symbols);
         m_symbols = NULL;
       }
     }
@@ -59,7 +60,7 @@
 
 ElfSymbolTable::~ElfSymbolTable() {
   if (m_symbols != NULL) {
-    FREE_C_HEAP_ARRAY(char, m_symbols);
+    os::free(m_symbols);
   }
 
   if (m_next != NULL) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/share/vm/utilities/errorReporter.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 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.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "utilities/errorReporter.hpp"
+
+ErrorReporter::ErrorReporter() {}
+
+void ErrorReporter::call(FILE* fd, char* buffer, int length) {
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/share/vm/utilities/errorReporter.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 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.
+ *
+ */
+
+#ifndef SHARE_VM_UTILITIES_ERRORREPORTER_HPP
+#define SHARE_VM_UTILITIES_ERRORREPORTER_HPP
+
+#include "utilities/globalDefinitions.hpp"
+
+class ErrorReporter : public StackObj {
+
+public:
+  ErrorReporter();
+  ~ErrorReporter(){};
+
+  void call(FILE* fd, char *buffer, int length);
+};
+
+#endif // ndef SHARE_VM_UTILITIES_ERRORREPORTER_HPP
--- a/hotspot/src/share/vm/utilities/globalDefinitions.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/utilities/globalDefinitions.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -328,6 +328,12 @@
 #ifdef TARGET_ARCH_zero
 # include "globalDefinitions_zero.hpp"
 #endif
+#ifdef TARGET_ARCH_arm
+# include "globalDefinitions_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "globalDefinitions_ppc.hpp"
+#endif
 
 
 // The byte alignment to be used by Arena::Amalloc.  See bugid 4169348.
--- a/hotspot/src/share/vm/utilities/macros.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/utilities/macros.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -46,7 +46,7 @@
 #define SERVICES_KERNEL
 
 #define KERNEL_RETURN        {}
-#define KERNEL_RETURN_(code) { code }
+#define KERNEL_RETURN_(code) { return code; }
 
 #else  // KERNEL
 
--- a/hotspot/src/share/vm/utilities/ostream.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/utilities/ostream.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -314,6 +314,11 @@
   _need_close = true;
 }
 
+fileStream::fileStream(const char* file_name, const char* opentype) {
+  _file = fopen(file_name, opentype);
+  _need_close = true;
+}
+
 void fileStream::write(const char* s, size_t len) {
   if (_file != NULL)  {
     // Make an unused local variable to avoid warning from gcc 4.x compiler.
@@ -322,6 +327,25 @@
   update_position(s, len);
 }
 
+long fileStream::fileSize() {
+  long size = -1;
+  if (_file != NULL) {
+    long pos  = ::ftell(_file);
+    if (::fseek(_file, 0, SEEK_END) == 0) {
+      size = ::ftell(_file);
+    }
+    ::fseek(_file, pos, SEEK_SET);
+  }
+  return size;
+}
+
+char* fileStream::readln(char *data, int count ) {
+  char * ret = ::fgets(data, count, _file);
+  //Get rid of annoying \n char
+  data[::strlen(data)-1] = '\0';
+  return ret;
+}
+
 fileStream::~fileStream() {
   if (_file != NULL) {
     if (_need_close) fclose(_file);
--- a/hotspot/src/share/vm/utilities/ostream.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/utilities/ostream.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -159,10 +159,17 @@
   bool  _need_close;
  public:
   fileStream(const char* file_name);
+  fileStream(const char* file_name, const char* opentype);
   fileStream(FILE* file) { _file = file; _need_close = false; }
   ~fileStream();
   bool is_open() const { return _file != NULL; }
+  void set_need_close(bool b) { _need_close = b;}
   virtual void write(const char* c, size_t len);
+  size_t read(void *data, size_t size, size_t count) { return ::fread(data, size, count, _file); }
+  char* readln(char *data, int count);
+  int eof() { return feof(_file); }
+  long fileSize();
+  void rewind() { ::rewind(_file); }
   void flush();
 };
 
--- a/hotspot/src/share/vm/utilities/taskqueue.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/utilities/taskqueue.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -47,6 +47,12 @@
 #ifdef TARGET_OS_ARCH_windows_x86
 # include "orderAccess_windows_x86.inline.hpp"
 #endif
+#ifdef TARGET_OS_ARCH_linux_arm
+# include "orderAccess_linux_arm.inline.hpp"
+#endif
+#ifdef TARGET_OS_ARCH_linux_ppc
+# include "orderAccess_linux_ppc.inline.hpp"
+#endif
 
 // Simple TaskQueue stats that are collected by default in debug builds.
 
--- a/hotspot/src/share/vm/utilities/vmError.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/utilities/vmError.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -35,6 +35,7 @@
 #include "utilities/debug.hpp"
 #include "utilities/decoder.hpp"
 #include "utilities/defaultStream.hpp"
+#include "utilities/errorReporter.hpp"
 #include "utilities/top.hpp"
 #include "utilities/vmError.hpp"
 
@@ -200,6 +201,15 @@
   out->print_raw_cr("#");
 }
 
+bool VMError::coredump_status;
+char VMError::coredump_message[O_BUFLEN];
+
+void VMError::report_coredump_status(const char* message, bool status) {
+  coredump_status = status;
+  strncpy(coredump_message, message, sizeof(coredump_message));
+  coredump_message[sizeof(coredump_message)-1] = 0;
+}
+
 
 // Return a string to describe the error
 char* VMError::error_string(char* buf, int buflen) {
@@ -453,6 +463,15 @@
        st->cr();
        st->print_cr("#");
      }
+  STEP(63, "(printing core file information)")
+    st->print("# ");
+    if (coredump_status) {
+      st->print("Core dump written. Default location: %s", coredump_message);
+    } else {
+      st->print("Failed to write core dump. %s", coredump_message);
+    }
+    st->print_cr("");
+    st->print_cr("#");
 
   STEP(65, "(printing bug submit message)")
 
@@ -769,6 +788,7 @@
   // then save detailed information in log file (verbose = true).
   static bool out_done = false;         // done printing to standard out
   static bool log_done = false;         // done saving error log
+  static bool transmit_report_done = false; // done error reporting
   static fdStream log;                  // error log
 
   if (SuppressFatalErrorMessage) {
@@ -790,6 +810,9 @@
       ShowMessageBoxOnError = false;
     }
 
+    // Write a minidump on Windows, check core dump limits on Linux/Solaris
+    os::check_or_create_dump(_siginfo, _context, buffer, sizeof(buffer));
+
     // reset signal handlers or exception filter; make sure recursive crashes
     // are handled properly.
     reset_signal_handlers();
@@ -859,7 +882,7 @@
         bool copy_ok =
           Arguments::copy_expand_pid(ErrorFile, strlen(ErrorFile), buffer, sizeof(buffer));
         if (copy_ok) {
-          fd = open(buffer, O_WRONLY | O_CREAT | O_TRUNC, 0666);
+          fd = open(buffer, O_RDWR | O_CREAT | O_TRUNC, 0666);
         }
       }
 
@@ -870,7 +893,7 @@
         // so use the default name in the current directory
         jio_snprintf(&buffer[len], sizeof(buffer)-len, "%shs_err_pid%u.log",
                      os::file_separator(), os::current_process_id());
-        fd = open(buffer, O_WRONLY | O_CREAT | O_TRUNC, 0666);
+        fd = open(buffer, O_RDWR | O_CREAT | O_TRUNC, 0666);
       }
 
       if (fd == -1) {
@@ -879,7 +902,7 @@
         if (tmpdir != NULL && tmpdir[0] != '\0') {
           jio_snprintf(buffer, sizeof(buffer), "%s%shs_err_pid%u.log",
                        tmpdir, os::file_separator(), os::current_process_id());
-          fd = open(buffer, O_WRONLY | O_CREAT | O_TRUNC, 0666);
+          fd = open(buffer, O_RDWR | O_CREAT | O_TRUNC, 0666);
         }
       }
 
@@ -892,6 +915,9 @@
       } else {
         out.print_raw_cr("# Can not save log file, dump to screen..");
         log.set_fd(defaultStream::output_fd());
+        /* Error reporting currently needs dumpfile.
+         * Maybe implement direct streaming in the future.*/
+        transmit_report_done = true;
       }
     }
 
@@ -900,6 +926,16 @@
     first_error->_current_step = 0;         // reset current_step
     first_error->_current_step_info = "";   // reset current_step string
 
+    // Run error reporting to determine whether or not to report the crash.
+    if (!transmit_report_done && should_report_bug(first_error->_id)) {
+      transmit_report_done = true;
+      FILE* hs_err = ::fdopen(log.fd(), "r");
+      if (NULL != hs_err) {
+        ErrorReporter er;
+        er.call(hs_err, buffer, O_BUFLEN);
+      }
+    }
+
     if (log.fd() != defaultStream::output_fd()) {
       close(log.fd());
     }
--- a/hotspot/src/share/vm/utilities/vmError.hpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/hotspot/src/share/vm/utilities/vmError.hpp	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -67,6 +67,14 @@
   static VMError* volatile first_error;
   static volatile jlong    first_error_tid;
 
+  // Core dump status, false if we have been unable to write a core/minidump for some reason
+  static bool coredump_status;
+
+  // When coredump_status is set to true this will contain the name/path to the core/minidump,
+  // if coredump_status if false, this will (hopefully) contain a useful error explaining why
+  // no core/minidump has been written to disk
+  static char coredump_message[O_BUFLEN];
+
   // used by reporting about OOM
   size_t       _size;
 
@@ -106,6 +114,9 @@
   // return a string to describe the error
   char *error_string(char* buf, int buflen);
 
+  // Report status of core/minidump
+  static void report_coredump_status(const char* message, bool status);
+
   // main error reporting function
   void report_and_die();
 
--- a/jaxp/.hgtags	Tue Feb 15 12:34:33 2011 -0800
+++ b/jaxp/.hgtags	Wed Jul 05 17:35:13 2017 +0200
@@ -103,3 +103,4 @@
 2fde639439c1fb3fbc44f533d48bb2916e813312 jdk7-b126
 c532d6dbc8d18d55b5d693599ee5cd8250e16eb4 jdk7-b127
 a42c6132c746c86e9fc27ec80cbd699f6ee5edca jdk7-b128
+f5b60c5a310f992c6ca627d17ca3e042f0e0b2c3 jdk7-b129
--- a/jaxws/.hgtags	Tue Feb 15 12:34:33 2011 -0800
+++ b/jaxws/.hgtags	Wed Jul 05 17:35:13 2017 +0200
@@ -103,3 +103,4 @@
 6d772c5119d5e247bc98a57ce8b1be121554ee0a jdk7-b126
 ef19f173578c804772d586a959fa3ab8a12c0598 jdk7-b127
 88d74afc55938033e744b537a22714bb2c82c9c0 jdk7-b128
+0f7b39ad902424e949e3d2dca8411b884888a76f jdk7-b129
--- a/jdk/.hgtags	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/.hgtags	Wed Jul 05 17:35:13 2017 +0200
@@ -103,3 +103,4 @@
 8361ef97a0f90086c9048beaf7cea1a37216c4cd jdk7-b126
 29e09de1d0b4f84faea114cf10b3ec08b59acc4e jdk7-b127
 f08682e23279d6cccbdcafda1eb0647ba4900874 jdk7-b128
+14cd5d54a8d0b9c368d60ea83a066735b9931015 jdk7-b129
--- a/jdk/make/common/shared/Defs-windows.gmk	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/make/common/shared/Defs-windows.gmk	Wed Jul 05 17:35:13 2017 +0200
@@ -86,17 +86,25 @@
 #
 
 ifdef USING_CYGWIN
+# Macro to effectively do a toupper without an exec
+define ToUpper
+$(subst a,A,$(subst b,B,$(subst c,C,$(subst d,D,$(subst e,E,$(subst f,F,\
+$(subst g,G,$(subst h,H,$(subst i,I,$(subst j,J,$(subst k,K,$(subst l,L,\
+$(subst m,M,$(subst n,N,$(subst o,O,$(subst p,P,$(subst q,Q,$(subst r,R,\
+$(subst s,S,$(subst t,T,$(subst u,U,$(subst v,V,$(subst w,W,$(subst x,X,\
+$(subst y,Y,$(subst z,Z,$1))))))))))))))))))))))))))
+endef
 # All possible drive letters
 drives=a b c d e f g h i j k l m n o p q r s t v u w x y z
 # Convert /cygdrive/ paths to the mixed style without an exec of cygpath
-#   Must be a path with no spaces.
+#   Must be a path with no spaces. /cygdrive/letter is always lowercase
+#   and letter:/ is always uppercase coming from cygpath.
 define MixedPath
-$(patsubst /%,c:/cygwin/%,$(sort $(filter-out /cygdrive/%,$(foreach drive,$(drives),$(patsubst /cygdrive/$(drive)/%,$(drive):/%,$1)))))
+$(patsubst /%,$(CYGWIN_HOME)/%,$(sort $(filter-out /cygdrive/%,$(foreach drive,$(drives),$(patsubst /cygdrive/$(drive)/%,$(call ToUpper,$(drive)):/%,$1)))))
 endef
 # Use FullPath to get C:/ style non-spaces path. Never ends with a /!
 # We assume cygpath is available in the search path
 #    NOTE: Use of 'pwd' with CYGWIN will not get you a mixed style path!
-CYGPATH_CMD=cygpath -a -s -m
 define FullPath
 $(if $(word 2,$1),$(shell $(CYGPATH_CMD) $1 2> $(DEV_NULL)),$(call MixedPath,$(realpath $(subst ",,$1))))
 endef
@@ -125,10 +133,15 @@
 
 # UNIXCOMMAND_PATH: path to where the most common Unix commands are.
 #  NOTE: Must end with / so that it could be empty, allowing PATH usage.
+#        With cygwin, just use this as is don't use FullPath on it.
 ifdef ALT_UNIXCOMMAND_PATH
-  xALT_UNIXCOMMAND_PATH  :="$(subst \,/,$(ALT_UNIXCOMMAND_PATH))"
-  fxALT_UNIXCOMMAND_PATH :=$(call FullPath,$(xALT_UNIXCOMMAND_PATH))
-  UNIXCOMMAND_PATH       :=$(call PrefixPath,$(fxALT_UNIXCOMMAND_PATH))
+  ifdef USING_CYGWIN
+    UNIXCOMMAND_PATH       :=$(call PrefixPath,$(ALT_UNIXCOMMAND_PATH))
+  else
+    xALT_UNIXCOMMAND_PATH  :="$(subst \,/,$(ALT_UNIXCOMMAND_PATH))"
+    fxALT_UNIXCOMMAND_PATH :=$(call FullPath,$(xALT_UNIXCOMMAND_PATH))
+    UNIXCOMMAND_PATH       :=$(call PrefixPath,$(fxALT_UNIXCOMMAND_PATH))
+  endif
 else
   ifdef USING_CYGWIN
     UNIXCOMMAND_PATH :=$(call PrefixPath,/usr/bin)
@@ -459,9 +472,11 @@
 endif
 
 # SLASH_JAVA: location of all network accessable files
+# NOTE: Do not use FullPath on this because it's often a drive letter and
+#       plain drive letters are ambiguous, so just use this 'as is'.
 ifdef ALT_SLASH_JAVA
   xALT_SLASH_JAVA :="$(subst \,/,$(ALT_SLASH_JAVA))"
-  SLASH_JAVA      :=$(call FullPath,$(xALT_SLASH_JAVA))
+  SLASH_JAVA      :=$(xALT_SLASH_JAVA)
 else
   ifdef ALT_JDK_JAVA_DRIVE
     SLASH_JAVA  =$(JDK_JAVA_DRIVE)
@@ -751,7 +766,11 @@
 #   we do not or cannot redistribute.
 
 # List of filenames we should NOT be dependent on
-BANNED_DLLS=msvcp100[.]dll|msvcr100d[.]dll|msvcrtd[.]dll
+ifeq ($(MFC_DEBUG),true)
+  BANNED_DLLS=msvcp100[.]dll
+else
+  BANNED_DLLS=msvcp100[.]dll|msvcr100d[.]dll|msvcrtd[.]dll
+endif
 
 # Macro to check it's input file for banned dependencies and verify the
 #   binary was built properly. Relies on process exit code.
@@ -771,7 +790,7 @@
   fi ; \
   $(ECHO) "Checking for banned dependencies in: $1" && \
   if [ "`$(DUMPBIN) /dependents $1 | $(EGREP) -i '$(BANNED_DLLS)'`" != "" ] ; then \
-    $(ECHO) "ERROR: Found us of $(BANNED_DLLS)"; \
+    $(ECHO) "ERROR: Found use of $(BANNED_DLLS)"; \
     $(DUMPBIN) /dependents $1 ; \
     exit 9 ; \
   fi ; \
--- a/jdk/make/common/shared/Defs.gmk	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/make/common/shared/Defs.gmk	Wed Jul 05 17:35:13 2017 +0200
@@ -54,11 +54,12 @@
 # Assumes ARCH, PLATFORM, ARCH_VM_SUBDIR, JDK_TOPDIR, etc. have been defined.
 
 # Simple pwd path
+# NOTE: Just use the shell's cd and pwd here, more reliable at sanity time.
 define PwdPath
-$(shell $(CD) $1 2> $(DEV_NULL) && $(PWD))
+$(shell cd $1 2> $(DEV_NULL) && pwd)
 endef
 define AbsPwdPathCheck
-$(shell $(CD) .. 2> $(DEV_NULL) && $(CD) $1 2> $(DEV_NULL) && $(PWD))
+$(shell cd .. 2> $(DEV_NULL) && cd $1 2> $(DEV_NULL) && pwd)
 endef
 
 # Checks an ALT value for spaces (should be one word), 
--- a/jdk/make/common/shared/Platform.gmk	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/make/common/shared/Platform.gmk	Wed Jul 05 17:35:13 2017 +0200
@@ -72,7 +72,11 @@
 #     USING_CYGWIN                windows only: true or false
 #     ISHIELD_TEMP_MIN            windows only: minimum disk space in temp area
 
-SYSTEM_UNAME := $(shell uname)
+# Only run uname once in this make session.
+ifndef SYSTEM_UNAME
+  SYSTEM_UNAME := $(shell uname)
+  export SYSTEM_UNAME
+endif
 
 #
 # Prune out all known SCM (Source Code Management) directories
@@ -222,6 +226,12 @@
   PLATFORM = windows
   USING_CYGWIN = true
   export USING_CYGWIN
+  CYGPATH_CMD=cygpath -a -s -m
+  # Only run "cygpath /" once in this make session.
+  ifndef CYGWIN_HOME
+    CYGWIN_HOME := $(shell $(CYGPATH_CMD) /)
+    export CYGWIN_HOME
+  endif
 endif
 
 # Platform settings specific to Windows
@@ -235,7 +245,12 @@
   #  And sometimes PROCESSOR_IDENTIFIER is not defined at all
   #  (in some restricted shells), so we use uname if we have to.
   ifeq ($(PROCESSOR_IDENTIFIER),)
-    PROC_ARCH:=$(shell uname -m)
+    # Only run uname -m once in this make session.
+    ifndef SYSTEM_UNAME_M
+      SYSTEM_UNAME_M := $(shell uname -m)
+      export SYSTEM_UNAME_M
+    endif
+    PROC_ARCH:=$(SYSTEM_UNAME_M)
   else
     PROC_ARCH:=$(word 1, $(PROCESSOR_IDENTIFIER))
   endif
--- a/jdk/make/java/java/FILES_java.gmk	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/make/java/java/FILES_java.gmk	Wed Jul 05 17:35:13 2017 +0200
@@ -443,7 +443,6 @@
             java/io/FileReader.java \
         java/io/PipedReader.java \
         java/io/StringReader.java \
-    java/io/TempFileHelper.java \
     java/io/Writer.java \
 	java/io/BufferedWriter.java \
 	    java/io/PrintWriter.java \
--- a/jdk/make/java/nio/FILES_java.gmk	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/make/java/nio/FILES_java.gmk	Wed Jul 05 17:35:13 2017 +0200
@@ -81,12 +81,12 @@
 	java/nio/file/ClosedDirectoryStreamException.java \
 	java/nio/file/ClosedFileSystemException.java \
 	java/nio/file/ClosedWatchServiceException.java \
+	java/nio/file/CopyMoveHelper.java \
 	java/nio/file/CopyOption.java \
 	java/nio/file/DirectoryIteratorException.java \
 	java/nio/file/DirectoryNotEmptyException.java \
 	java/nio/file/DirectoryStream.java \
 	java/nio/file/FileAlreadyExistsException.java \
-	java/nio/file/FileRef.java \
 	java/nio/file/FileStore.java \
 	java/nio/file/FileSystem.java \
 	java/nio/file/FileSystemAlreadyExistsException.java \
@@ -116,6 +116,7 @@
 	java/nio/file/StandardCopyOption.java \
 	java/nio/file/StandardOpenOption.java \
 	java/nio/file/StandardWatchEventKind.java \
+	java/nio/file/TempFileHelper.java \
 	java/nio/file/WatchEvent.java \
 	java/nio/file/WatchKey.java \
 	java/nio/file/WatchService.java \
@@ -127,7 +128,6 @@
 	java/nio/file/attribute/AclEntryType.java \
 	java/nio/file/attribute/AclFileAttributeView.java \
 	java/nio/file/attribute/AttributeView.java \
-	java/nio/file/attribute/Attributes.java \
 	java/nio/file/attribute/BasicFileAttributeView.java \
 	java/nio/file/attribute/BasicFileAttributes.java \
 	java/nio/file/attribute/DosFileAttributeView.java \
@@ -136,8 +136,6 @@
 	java/nio/file/attribute/FileAttributeView.java \
 	java/nio/file/attribute/FileOwnerAttributeView.java \
 	java/nio/file/attribute/FileStoreAttributeView.java \
-	java/nio/file/attribute/FileStoreSpaceAttributeView.java \
-	java/nio/file/attribute/FileStoreSpaceAttributes.java \
 	java/nio/file/attribute/FileTime.java \
 	java/nio/file/attribute/GroupPrincipal.java \
 	java/nio/file/attribute/UserDefinedFileAttributeView.java \
@@ -246,6 +244,7 @@
 	sun/nio/fs/AbstractAclFileAttributeView.java \
 	sun/nio/fs/AbstractBasicFileAttributeView.java \
 	sun/nio/fs/AbstractFileTypeDetector.java \
+        sun/nio/fs/AbstractFileSystemProvider.java \
 	sun/nio/fs/AbstractPath.java \
 	sun/nio/fs/AbstractPoller.java \
 	sun/nio/fs/AbstractUserDefinedFileAttributeView.java \
--- a/jdk/make/modules/modules.config	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/make/modules/modules.config	Wed Jul 05 17:35:13 2017 +0200
@@ -771,12 +771,7 @@
 
 /**************************************************************************/
 
-module jkernel {
-    include sun.jkernel.*;
-}
-
 module deploy {
-    include jkernel;
 
     // For now, all plugin and JNLP
     include com.sun.java.browser.**,
--- a/jdk/make/netbeans/common/java-data-native.ent	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/make/netbeans/common/java-data-native.ent	Wed Jul 05 17:35:13 2017 +0200
@@ -31,7 +31,7 @@
  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 -->
 
-<java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/2">
+<java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/3">
     <compilation-unit>
         <package-root>${root}/src/share/classes</package-root>
         <package-root>${root}/src/windows/classes</package-root>
@@ -39,6 +39,6 @@
         <classpath mode="boot">${bootstrap.jdk}/jre/lib/rt.jar</classpath>
         <built-to>${root}/build/${platform}-${arch}/classes</built-to>
         <javadoc-built-to>${root}/build/javadoc/${name}</javadoc-built-to>
-        <source-level>1.5</source-level>
+        <source-level>1.7</source-level>
     </compilation-unit>
 </java-data>
--- a/jdk/make/netbeans/common/java-data-no-native.ent	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/make/netbeans/common/java-data-no-native.ent	Wed Jul 05 17:35:13 2017 +0200
@@ -31,12 +31,12 @@
  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 -->
 
-<java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/2">
+<java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/3">
     <compilation-unit>
         <package-root>${root}/src/share/classes</package-root>
         <classpath mode="boot">${bootstrap.jdk}/jre/lib/rt.jar</classpath>
         <built-to>${root}/build/${platform}-${arch}/classes</built-to>
         <javadoc-built-to>${root}/build/javadoc/${name}</javadoc-built-to>
-        <source-level>1.5</source-level>
+        <source-level>1.7</source-level>
     </compilation-unit>
 </java-data>
--- a/jdk/make/sun/Makefile	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/make/sun/Makefile	Wed Jul 05 17:35:13 2017 +0200
@@ -74,8 +74,7 @@
                      $(HEADLESS_SUBDIR) $(DGA_SUBDIR) \
                      jawt font jpeg cmm applet beans
 SUBDIRS_management = management
-SUBDIRS_misc       = jkernel $(ORG_SUBDIR) \
-                     rmi $(JDBC_SUBDIR) tracing
+SUBDIRS_misc       = $(ORG_SUBDIR) rmi $(JDBC_SUBDIR) tracing
 SUBDIRS_tools      = native2ascii serialver tools jconsole
 include $(BUILDDIR)/common/Subdirs.gmk
 
--- a/jdk/make/sun/jkernel/FILES_c_windows.gmk	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-#
-# Copyright (c) 2008, 2009, 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.
-#
-
-FILES_cpp = \
-	stdafx.cpp \
-	kernel.cpp \
-	DownloadDialog.cpp \
-	DownloadHelper.cpp \
-	DownloadHelper.cpp
-
-
-FILES_rc = kernel.rc
-
-# FILES_export definitions for Win32
-
-FILES_export = \
-	sun/jkernel/DownloadManager.java \
-	sun/jkernel/Mutex.java \
-	sun/jkernel/Bundle.java \
-	sun/jkernel/BackgroundDownloader.java \
--- a/jdk/make/sun/jkernel/FILES_java.gmk	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-#
-# Copyright (c) 2008, 2009, 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.
-#
-
-FILES_java = \
-	$(TARGDIR)sun/jkernel/BackgroundDownloader.java \
-	$(TARGDIR)sun/jkernel/Bundle.java \
-	$(TARGDIR)sun/jkernel/ByteArrayToFromHexDigits.java \
-	$(TARGDIR)sun/jkernel/BundleCheck.java \
-	$(TARGDIR)sun/jkernel/DownloadManager.java \
-	$(TARGDIR)sun/jkernel/Mutex.java \
-	$(TARGDIR)sun/jkernel/StandaloneByteArrayAccess.java \
-	$(TARGDIR)sun/jkernel/StandaloneMessageDigest.java \
-	$(TARGDIR)sun/jkernel/StandaloneSHA.java \
-
-FILES_export = \
-     sun/jkernel/DownloadManager.java \
-     sun/jkernel/Mutex.java \
-     sun/jkernel/Bundle.java \
-     sun/jkernel/BackgroundDownloader.java
--- a/jdk/make/sun/jkernel/Makefile	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-#
-# Copyright (c) 2008, 2010, 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.
-#
-
-BUILDDIR = ../..
-MODULE  = jkernel
-PACKAGE = sun.jkernel
-LIBRARY = jkernel
-PRODUCT = sun
-
-include $(BUILDDIR)/common/Defs.gmk
-
-#
-# Use highest optimization level
-#
-_OPT = $(CC_HIGHEST_OPT)
-
-#
-# Java source files
-#
-include FILES_java.gmk
-AUTO_FILES_JAVA_DIRS = sun/jkernel
-
-LOCALE_SUFFIXES = $(JDK_LOCALES)
-
-#
-# Native source files
-#
-
-ifeq ($(ARCH_DATA_MODEL), 32) 
-
-ifeq ($(PLATFORM), windows)
-
-# If this is the VS Express compiler it will lack vc/atlmfc/
-ATL_MFC_DIR :=$(call DirExists,$(COMPILER_PATH)/../atlmfc,,)
-
-ifneq ($(ATL_MFC_DIR),)
-
-include FILES_c_windows.gmk
-
-vpath %.cpp   $(PLATFORM_SRC)/native/sun/jkernel
-
-
-VERSIONINFO_RESOURCE = $(PLATFORM_SRC)/native/sun/jkernel/kernel.rc
-
-LDLIBS += urlmon.lib wininet.lib shlwapi.lib version.lib comctl32.lib gdi32.lib -def:$(PLATFORM_SRC)/native/sun/jkernel/kernel.def
-
-include $(BUILDDIR)/common/Library.gmk
-
-endif
-
-endif
-
-endif
-
-#
-# Resources
-#
-include $(TOPDIR)/make/common/internal/Resources.gmk
-
-#
-# Rules
-#
-include $(BUILDDIR)/common/Classes.gmk
-
-# If extra compression is going to be available in the deploy build enable 
-# its use here by defining the JRE-relative pathname of the shared library
-
-ifeq ($(PLATFORM), windows)
-  ifdef EXTRA_COMP_INSTALL_PATH
-    CPPFLAGS += -DEXTRA_COMP_INSTALL_PATH=$(EXTRA_COMP_INSTALL_PATH)
-  endif
-endif
--- a/jdk/src/share/bin/java.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/bin/java.c	Wed Jul 05 17:35:13 2017 +0200
@@ -244,6 +244,7 @@
         for (i = 0; i < argc ; i++) {
             printf("argv[%d] = %s\n", i, argv[i]);
         }
+        AddOption("-Dsun.java.launcher.diag=true", NULL);
     }
 
     CreateExecutionEnvironment(&argc, &argv,
@@ -1009,6 +1010,8 @@
         } else if (JLI_StrCmp(arg, "-XshowSettings") == 0 ||
                 JLI_StrCCmp(arg, "-XshowSettings:") == 0) {
             showSettings = arg;
+        } else if (JLI_StrCmp(arg, "-Xdiag") == 0) {
+            AddOption("-Dsun.java.launcher.diag=true", NULL);
 /*
  * The following case provide backward compatibility with old-style
  * command line options.
--- a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_de.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_de.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -13,72 +13,72 @@
 #
 # accessible roles
 #
-alert=Warnmeldung
+alert=Alert
 awtcomponent=AWT-Komponente
-checkbox=Kontrollk\u00e4stchen
+checkbox=Kontrollk\u00E4stchen
 colorchooser=Farbauswahl
-columnheader=Spaltenkopf
+columnheader=Spalten-Header
 combobox=Kombinationsfeld
 canvas=Leinwand
-desktopicon=Desktop-Symbol
-desktoppane=Desktop-Bereich
+desktopicon=Desktopsymbol
+desktoppane=Desktopbereich
 dialog=Dialogfeld
 directorypane=Verzeichnisbereich
-glasspane=Glasbereich
+glasspane=Glass Pane
 filechooser=Dateiauswahl
-filler=F\u00fcllbereich
+filler=F\u00FCllbereich
 frame=Rahmen
 internalframe=Innerer Rahmen
-label=Beschriftung
-layeredpane=\u00dcberlagertes Teilfenster
+label=Label
+layeredpane=Layered Pane
 list=Liste
 listitem=Listenelement
-menubar=Men\u00fcleiste
-menu=Men\u00fc
-menuitem=Men\u00fceintrag
+menubar=Men\u00FCleiste
+menu=Men\u00FC
+menuitem=Men\u00FCpunkt
 optionpane=Optionsbereich
 pagetab=Registerkarte
-pagetablist=Register
-panel=Steuerbereich
-passwordtext=Passworttext
-popupmenu=Popup-Men\u00fc
-progressbar=Fortschrittsanzeige
-pushbutton=Schaltfl\u00e4che
+pagetablist=Registerkartenliste
+panel=Bereich
+passwordtext=Kennworttext
+popupmenu=Popup-Men\u00FC
+progressbar=Fortschrittsbalken
+pushbutton=Schaltfl\u00E4che
 radiobutton=Optionsfeld
 rootpane=Root-Bereich
-rowheader=Zeilenkopf
+rowheader=Zeilen-Header
 scrollbar=Bildlaufleiste
 scrollpane=Bildlaufbereich
 separator=Trennzeichen
 slider=Schieberegler
-splitpane=Geteilter Anzeigebereich
+splitpane=Split Pane
 swingcomponent=Swing-Komponente
 table=Tabelle
 text=Text
 tree=Baumstruktur
-togglebutton=Umschaltfl\u00e4che
+togglebutton=Umschaltfl\u00E4che
 toolbar=Symbolleiste
 tooltip=QuickInfo
 unknown=Unbekannt
-viewport=Anzeigeschnittstelle
+viewport=Viewport
 window=Fenster
 #
 # accessible relations
 #
-labelFor=Beschriftung f\u00fcr
+labelFor=Label f\u00FCr
 labeledBy=beschriftet von
 memberOf=Mitglied von
-controlledBy=Gesteuert von
-controllerFor=Steuerung f\u00fcr
+controlledBy=controlledBy
+controllerFor=controllerFor
 #
 # accessible states
 #
 active=aktiv
 armed=aktiviert
-busy=belegt
+busy=ausgelastet
 checked=markiert
 collapsed=ausgeblendet
-editable=editierbar
+editable=bearbeitbar
 expandable=erweiterbar
 expanded=eingeblendet
 enabled=aktiviert
@@ -87,15 +87,15 @@
 iconified=minimiert
 modal=modal
 multiline=mehrzeilig
-multiselectable=mehrfach ausw\u00e4hlbar
-opaque=verdeckt
-pressed=gedr\u00fcckt
+multiselectable=mehrfach ausw\u00E4hlbar
+opaque=nicht transparent
+pressed=gedr\u00FCckt
 resizable=skalierbar
-selectable=w\u00e4hlbar
-selected=ausgew\u00e4hlt
+selectable=w\u00E4hlbar
+selected=ausgew\u00E4hlt
 showing=angezeigt
 singleline=einzeilig
-transient=tempor\u00e4r
+transient=transient
 visible=sichtbar
 vertical=vertikal
 horizontal=horizontal
@@ -109,10 +109,10 @@
 # 
 # accessible relations
 #
-flowsTo=flie\u00dft zu
-flowsFrom=flie\u00dft von
+flowsTo=flie\u00DFt zu
+flowsFrom=flie\u00DFt von
 subwindowOf=Unterfenster von
-parentWindowOf=\u00fcbergeordnetes Fenster von
+parentWindowOf=\u00FCbergeordnetes Fenster von
 embeds=bettet ein
 embeddedBy=eingebettet in
 childNodeOf=untergeordneter Knoten von
@@ -120,8 +120,8 @@
 #
 # accessible roles
 #
-header=Kopfzeile
-footer=Fu\u00dfzeile
+header=Header
+footer=Footer
 paragraph=Absatz
 ruler=Lineal
 editbar=Bearbeitungsleiste
@@ -130,9 +130,9 @@
 #
 # accessible states
 #
-managesDescendants=verwaltet abgeleitete Objekte
+managesDescendants=verwaltet untergeordnete Objekte
 indeterminate=unbestimmt
-truncated=gek\u00fcrzt
+truncated=abgeschnitten
 
 # new for J2SE 1.6.0
 
--- a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_es.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_es.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -14,53 +14,53 @@
 # accessible roles
 #
 alert=alerta
-awtcomponent=Componente AWT
-checkbox=casilla de verificaci\u00f3n
+awtcomponent=componente AWT
+checkbox=casilla de control
 colorchooser=selector de color
 columnheader=cabecera de columna
 combobox=cuadro combinado
-canvas=superficie
+canvas=lienzo
 desktopicon=icono de escritorio
-desktoppane=tablero de escritorio
-dialog=cuadro de di\u00e1logo
-directorypane=tablero de directorio
-glasspane=tablero de cristal
+desktoppane=panel de escritorio
+dialog=cuadro de di\u00E1logo
+directorypane=panel de directorio
+glasspane=panel de cristal
 filechooser=selector de archivos
 filler=rellenador
 frame=marco
 internalframe=marco interno
 label=etiqueta
-layeredpane=tablero en capas
+layeredpane=panel en capas
 list=lista
 listitem=elemento de lista
-menubar=barra de men\u00fas
-menu=men\u00fa
-menuitem=elemento de men\u00fa
-optionpane=tablero de opciones
-pagetab=pesta\u00f1a de p\u00e1gina
-pagetablist=lista de pesta\u00f1as de p\u00e1gina
+menubar=barra de men\u00FAs
+menu=men\u00FA
+menuitem=elemento de men\u00FA
+optionpane=panel de opciones
+pagetab=separador de p\u00E1gina
+pagetablist=lista de separadores de p\u00E1gina
 panel=panel
-passwordtext=texto de contrase\u00f1a
-popupmenu=men\u00fa emergente
+passwordtext=texto de contrase\u00F1a
+popupmenu=men\u00FA emergente
 progressbar=barra de progreso
-pushbutton=bot\u00f3n de acci\u00f3n
-radiobutton=bot\u00f3n de radio
-rootpane=tablero ra\u00edz
+pushbutton=bot\u00F3n
+radiobutton=bot\u00F3n de radio
+rootpane=panel ra\u00EDz
 rowheader=cabecera de filas
 scrollbar=barra de desplazamiento
-scrollpane=tablero de desplazamiento
+scrollpane=panel de desplazamiento
 separator=separador
 slider=deslizador
-splitpane=tablero de divisi\u00f3n
+splitpane=panel de divisi\u00F3n
 swingcomponent=componente swing
 table=tabla
 text=texto
-tree=\u00e1rbol
-togglebutton=bot\u00f3n conmutador
+tree=\u00E1rbol
+togglebutton=bot\u00F3n conmutador
 toolbar=barra de herramientas
-tooltip=consejo de herramienta
+tooltip=ayuda de burbuja
 unknown=desconocido
-viewport=puerto de vista
+viewport=viewport
 window=ventana
 #
 # accessible relations
@@ -68,25 +68,25 @@
 labelFor=etiqueta para
 labeledBy=etiquetado por
 memberOf=miembro de
-controlledBy=controlado por
-controllerFor=controlador de
+controlledBy=controlledBy
+controllerFor=controllerFor
 #
 # accessible states
 #
 active=activo
 armed=armado
 busy=ocupado
-checked=marcado
-collapsed=contra\u00eddo
+checked=activado
+collapsed=reducido
 editable=editable
 expandable=ampliable
 expanded=ampliado
-enabled=habilitado
+enabled=activado
 focusable=enfocable
 focused=enfocado
 iconified=convertido en icono
 modal=modal
-multiline=l\u00ednea m\u00faltiple
+multiline=l\u00EDnea m\u00FAltiple
 multiselectable=multiseleccionable
 opaque=opaco
 pressed=pulsado
@@ -94,15 +94,15 @@
 selectable=seleccionable
 selected=seleccionado
 showing=mostrando
-singleline=l\u00ednea \u00fanica
-transient=temporal
+singleline=l\u00EDnea \u00FAnica
+transient=transitorio
 visible=visible
 vertical=vertical
 horizontal=horizontal
 #
 # accessible actions
 #
-toggle expand=activar/desactivar ampliaci\u00f3n
+toggle expand=activar/desactivar ampliaci\u00F3n
 
 # new relations, roles and states for J2SE 1.5.0
 
@@ -112,9 +112,9 @@
 flowsTo=llega a
 flowsFrom=procede de
 subwindowOf=ventana subordinada de
-parentWindowOf=ventana superior de
-embeds=incluye
-embeddedBy=se incluye en
+parentWindowOf=ventana principal de
+embeds=embebe
+embeddedBy=embebido por
 childNodeOf=nodo secundario de
 
 #
@@ -122,15 +122,15 @@
 #
 header=cabecera
 footer=pie
-paragraph=p\u00e1rrafo
+paragraph=p\u00E1rrafo
 ruler=regla
-editbar=barra de edici\u00f3n
-progressMonitor=monitor de progresi\u00f3n
+editbar=barra de edici\u00F3n
+progressMonitor=monitor de progreso
 
 #
 # accessible states
 #
-managesDescendants=gestiona objetos subordinados
+managesDescendants=gestiona descendientes
 indeterminate=indeterminado
 truncated=truncado
 
--- a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_fr.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_fr.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -14,95 +14,95 @@
 # accessible roles
 #
 alert=alerte
-awtcomponent=Composant AWT
-checkbox=case \u00e0 cocher
-colorchooser=s\u00e9lecteur de couleurs
-columnheader=en-t\u00eate de colonne
-combobox=bo\u00eete de dialogue mixte
+awtcomponent=composant AWT
+checkbox=case \u00E0 cocher
+colorchooser=s\u00E9lecteur de couleurs
+columnheader=en-t\u00EAte de colonne
+combobox=liste d\u00E9roulante
 canvas=canevas
-desktopicon=ic\u00f4ne de bureau
-desktoppane=sous-fen\u00eatre de bureau
-dialog=bo\u00eete de dialogue
-directorypane=sous-fen\u00eatre de r\u00e9pertoires
-glasspane=sous-fen\u00eatre de grossissement
-filechooser=s\u00e9lecteur de fichiers
-filler=\u00e9l\u00e9ment de remplissage
+desktopicon=ic\u00F4ne de bureau
+desktoppane=panneau de bureau
+dialog=bo\u00EEte de dialogue
+directorypane=panneau de r\u00E9pertoires
+glasspane=panneau de grossissement
+filechooser=s\u00E9lecteur de fichiers
+filler=\u00E9l\u00E9ment de remplissage
 frame=cadre
 internalframe=cadre interne
-label=\u00e9tiquette
-layeredpane=sous-fen\u00eatre superpos\u00e9e
+label=libell\u00E9
+layeredpane=panneau superpos\u00E9
 list=liste
-listitem=\u00e9l\u00e9ment de liste
+listitem=\u00E9l\u00E9ment de liste
 menubar=barre de menus
 menu=menu
 menuitem=option de menu
-optionpane=sous-fen\u00eatre d''options
+optionpane=panneau d'options
 pagetab=onglet de page
-pagetablist=liste d''onglets de page
+pagetablist=liste d'onglets de page
 panel=panneau
 passwordtext=texte de mot de passe
 popupmenu=menu contextuel
 progressbar=barre de progression
-pushbutton=bouton poussoir
+pushbutton=bouton
 radiobutton=bouton radio
-rootpane=sous-fen\u00eatre racine
-rowheader=en-t\u00eate de ligne
-scrollbar=barre de d\u00e9filement
-scrollpane=sous-fen\u00eatre de d\u00e9filement
-separator=s\u00e9parateur
+rootpane=panneau racine
+rowheader=en-t\u00EAte de ligne
+scrollbar=barre de d\u00E9filement
+scrollpane=panneau de d\u00E9filement
+separator=s\u00E9parateur
 slider=curseur
-splitpane=sous-fen\u00eatre divis\u00e9e
-swingcomponent=composant de bascule
+splitpane=panneau divis\u00E9
+swingcomponent=composant Swing
 table=tableau
 text=texte
-tree=arbre
+tree=arborescence
 togglebutton=bouton de basculement
-toolbar=barre d''outils
+toolbar=barre d'outils
 tooltip=info-bulle
 unknown=inconnu
-viewport=cl\u00f4ture
-window=fen\u00eatre
+viewport=lucarne
+window=fen\u00EAtre
 #
 # accessible relations
 #
-labelFor=\u00e9tiquette de
-labeledBy=libell\u00e9(e) par
+labelFor=libell\u00E9 de
+labeledBy=libell\u00E9 par
 memberOf=membre de
-controlledBy=contr\u00f4l\u00e9 par
-controllerFor=contr\u00f4leur pour
+controlledBy=contr\u00F4l\u00E9 par
+controllerFor=contr\u00F4leur pour
 #
 # accessible states
 #
-active=actif(ve)
-armed=arm\u00e9(e)
-busy=occup\u00e9(e)
-checked=coch\u00e9e
-collapsed=r\u00e9duit(e)
+active=actif
+armed=arm\u00E9
+busy=occup\u00E9
+checked=coch\u00E9
+collapsed=r\u00E9duit
 editable=modifiable
 expandable=extensible
-expanded=d\u00e9velopp\u00e9(e)
-enabled=activ\u00e9(e)
-focusable=zone d''entr\u00e9e possible
-focused=avec zone d''entr\u00e9e
-iconified=r\u00e9duit(e) \u00e0 une ic\u00f4ne
-modal=modal(e)
+expanded=d\u00E9velopp\u00E9
+enabled=activ\u00E9
+focusable=zone d'entr\u00E9e possible
+focused=avec zone d'entr\u00E9e
+iconified=r\u00E9duit \u00E0 une ic\u00F4ne
+modal=modal
 multiline=ligne multiple
-multiselectable=multis\u00e9lectionnable
+multiselectable=multis\u00E9lectionnable
 opaque=opaque
-pressed=enfonc\u00e9
+pressed=enfonc\u00E9
 resizable=redimensionnable
-selectable=s\u00e9lectionnable
-selected=s\u00e9lectionn\u00e9(e)
+selectable=s\u00E9lectionnable
+selected=s\u00E9lectionn\u00E9
 showing=montrant
 singleline=ligne unique
-transient=transitoire
+transient=non persistant
 visible=visible
-vertical=vertical(e)
-horizontal=horizontal(e)
+vertical=vertical
+horizontal=horizontal
 #
 # accessible actions
 #
-toggle expand=basculer le d\u00e9veloppement
+toggle expand=basculer le d\u00E9veloppement
 
 # new relations, roles and states for J2SE 1.5.0
 
@@ -111,35 +111,35 @@
 #
 flowsTo=flux vers
 flowsFrom=flux depuis
-subwindowOf=sous-fen\u00eatre de
-parentWindowOf=fen\u00eatre parente de
+subwindowOf=sous-fen\u00EAtre de
+parentWindowOf=fen\u00EAtre parente de
 embeds=incorpore
-embeddedBy=incorpor\u00e9 par
-childNodeOf=n\u0153ud enfant de
+embeddedBy=incorpor\u00E9 par
+childNodeOf=noeud enfant de
 
 #
 # accessible roles
 #
-header=en-t\u00eate
+header=en-t\u00EAte
 footer=pied de page
 paragraph=paragraphe
-ruler=r\u00e8gle
-editbar=barre d'\u00e9dition
-progressMonitor=contr\u00f4le de la progression
+ruler=r\u00E8gle
+editbar=barre d'\u00E9dition
+progressMonitor=contr\u00F4le de la progression
 
 #
 # accessible states
 #
-managesDescendants=g\u00e8re les descendants
-indeterminate=ind\u00e9termin\u00e9
-truncated=tronqu\u00e9
+managesDescendants=g\u00E8re les descendants
+indeterminate=ind\u00E9termin\u00E9
+truncated=tronqu\u00E9
 
 # new for J2SE 1.6.0
 
 #
 # accessible roles
 #
-htmlcontainer=Conteneur HTML
+htmlcontainer=conteneur HTML
 
 #
 # END OF MATERIAL TO LOCALIZE
--- a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_it.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_it.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -13,45 +13,45 @@
 #
 # accessible roles
 #
-alert=allarme
+alert=avviso
 awtcomponent=componente AWT
 checkbox=casella di controllo
 colorchooser=selezione colori
 columnheader=intestazione colonna
-combobox=casella
-canvas=area di disegno
-desktopicon=icona del desktop
-desktoppane=sottofinestra del desktop
+combobox=casella combinata
+canvas=sfondo
+desktopicon=icona desktop
+desktoppane=riquadro desktop
 dialog=finestra di dialogo
-directorypane=sottofinestra della directory
-glasspane=sottofinestra trasparente
+directorypane=riquadro directory
+glasspane=riquadro trasparente
 filechooser=selezione file
-filler=utilit\u00e0 riempimento
+filler=utilit\u00E0 riempimento
 frame=cornice
 internalframe=cornice interna
 label=etichetta
-layeredpane=sottofinestra a livelli
-list=elenco
-listitem=voce di elenco
+layeredpane=riquadro a livelli
+list=lista
+listitem=voce lista
 menubar=barra dei menu
 menu=menu
 menuitem=voce di menu
-optionpane=sottofinestra delle opzioni
+optionpane=riquadro opzioni
 pagetab=scheda pagina
-pagetablist=elenco schede pagina
+pagetablist=lista schede pagina
 panel=pannello
 passwordtext=testo della password
-popupmenu=menu a comparsa
+popupmenu=menu popup
 progressbar=barra di avanzamento
 pushbutton=pulsante
 radiobutton=pulsante di scelta
-rootpane=sottofinestra root
+rootpane=riquadro root
 rowheader=intestazione di riga
 scrollbar=barra di scorrimento
-scrollpane=scorri sottofinestra
+scrollpane=riquadro scorrimento
 separator=separatore
-slider=cursore
-splitpane=sottofinestra doppia
+slider=dispositivo di scorrimento
+splitpane=riquadro doppio
 swingcomponent=componente swing
 table=tabella
 text=testo
@@ -68,8 +68,8 @@
 labelFor=etichetta per
 labeledBy=etichetta di
 memberOf=membro di
-controlledBy=controllato da
-controllerFor=controllore per
+controlledBy=controlledBy
+controllerFor=controllerFor
 #
 # accessible states
 #
@@ -77,11 +77,11 @@
 armed=abilitato
 busy=occupato
 checked=verificato
-collapsed=ingrandito
+collapsed=compresso
 editable=modificabile
 expandable=espandibile
 expanded=espanso
-enabled=attivato
+enabled=abilitato
 focusable=attivabile in primo piano
 focused=in primo piano
 iconified=ridotto a icona
@@ -121,7 +121,7 @@
 # accessible roles
 #
 header=intestazione
-footer=pi\u00e8 di pagina
+footer=pi\u00E8 di pagina
 paragraph=paragrafo
 ruler=righello
 editbar=barra di modifica
--- a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_ja.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_ja.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -13,133 +13,133 @@
 #
 # accessible roles
 #
-alert=\u8b66\u544a
-awtcomponent=AWT \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8
-checkbox=\u30c1\u30a7\u30c3\u30af\u30dc\u30c3\u30af\u30b9
-colorchooser=\u30ab\u30e9\u30fc\u30c1\u30e5\u30fc\u30b6
-columnheader=\u5217\u30d8\u30c3\u30c0
-combobox=\u30b3\u30f3\u30dc\u30dc\u30c3\u30af\u30b9
-canvas=\u30ad\u30e3\u30f3\u30d0\u30b9
-desktopicon=\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u30a2\u30a4\u30b3\u30f3
-desktoppane=\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u533a\u753b
-dialog=\u30c0\u30a4\u30a2\u30ed\u30b0
-directorypane=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u533a\u753b
-glasspane=\u30ac\u30e9\u30b9\u533a\u753b
-filechooser=\u30d5\u30a1\u30a4\u30eb\u30c1\u30e5\u30fc\u30b6
-filler=\u30d5\u30a3\u30e9\u30fc
-frame=\u30d5\u30ec\u30fc\u30e0
-internalframe=\u5185\u90e8\u30d5\u30ec\u30fc\u30e0
-label=\u30e9\u30d9\u30eb
-layeredpane=\u968e\u5c64\u5316\u3055\u308c\u305f\u533a\u753b
-list=\u30ea\u30b9\u30c8
-listitem=\u30ea\u30b9\u30c8\u9805\u76ee
-menubar=\u30e1\u30cb\u30e5\u30fc\u30d0\u30fc
-menu=\u30e1\u30cb\u30e5\u30fc
-menuitem=\u30e1\u30cb\u30e5\u30fc\u9805\u76ee
-optionpane=\u30aa\u30d7\u30b7\u30e7\u30f3\u533a\u753b
-pagetab=\u30da\u30fc\u30b8\u30bf\u30d6
-pagetablist=\u30da\u30fc\u30b8\u30bf\u30d6\u30ea\u30b9\u30c8
-panel=\u30d1\u30cd\u30eb
-passwordtext=\u30d1\u30b9\u30ef\u30fc\u30c9\u30c6\u30ad\u30b9\u30c8
-popupmenu=\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u30e1\u30cb\u30e5\u30fc
-progressbar=\u9032\u6357\u30d0\u30fc
-pushbutton=\u30d7\u30c3\u30b7\u30e5\u30dc\u30bf\u30f3
-radiobutton=\u30e9\u30b8\u30aa\u30dc\u30bf\u30f3
-rootpane=\u30eb\u30fc\u30c8\u533a\u753b
-rowheader=\u884c\u30d8\u30c3\u30c0
-scrollbar=\u30b9\u30af\u30ed\u30fc\u30eb\u30d0\u30fc
-scrollpane=\u30b9\u30af\u30ed\u30fc\u30eb\u533a\u753b
-separator=\u30bb\u30d1\u30ec\u30fc\u30bf
-slider=\u30b9\u30e9\u30a4\u30c0
-splitpane=\u5206\u5272\u533a\u753b
-swingcomponent=Swing \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8
-table=\u30c6\u30fc\u30d6\u30eb
-text=\u30c6\u30ad\u30b9\u30c8
-tree=\u30c4\u30ea\u30fc
-togglebutton=\u30c8\u30b0\u30eb\u30dc\u30bf\u30f3
-toolbar=\u30c4\u30fc\u30eb\u30d0\u30fc
-tooltip=\u30c4\u30fc\u30eb\u30d2\u30f3\u30c8
-unknown=\u672a\u77e5
-viewport=\u30d3\u30e5\u30fc\u30dd\u30fc\u30c8
-window=\u30a6\u30a3\u30f3\u30c9\u30a6
+alert=\u30A2\u30E9\u30FC\u30C8
+awtcomponent=AWT\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8
+checkbox=\u30C1\u30A7\u30C3\u30AF\u30FB\u30DC\u30C3\u30AF\u30B9
+colorchooser=\u30AB\u30E9\u30FC\u30FB\u30C1\u30E5\u30FC\u30B6
+columnheader=\u5217\u30D8\u30C3\u30C0\u30FC
+combobox=\u30B3\u30F3\u30DC\u30FB\u30DC\u30C3\u30AF\u30B9
+canvas=\u30AD\u30E3\u30F3\u30D0\u30B9
+desktopicon=\u30C7\u30B9\u30AF\u30C8\u30C3\u30D7\u30FB\u30A2\u30A4\u30B3\u30F3
+desktoppane=\u30C7\u30B9\u30AF\u30C8\u30C3\u30D7\u533A\u753B
+dialog=\u30C0\u30A4\u30A2\u30ED\u30B0
+directorypane=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u533A\u753B
+glasspane=\u30AC\u30E9\u30B9\u533A\u753B
+filechooser=\u30D5\u30A1\u30A4\u30EB\u30FB\u30C1\u30E5\u30FC\u30B6
+filler=\u30D5\u30A3\u30E9\u30FC
+frame=\u30D5\u30EC\u30FC\u30E0
+internalframe=\u5185\u90E8\u30D5\u30EC\u30FC\u30E0
+label=\u30E9\u30D9\u30EB
+layeredpane=\u968E\u5C64\u5316\u3055\u308C\u305F\u533A\u753B
+list=\u30EA\u30B9\u30C8
+listitem=\u30EA\u30B9\u30C8\u9805\u76EE
+menubar=\u30E1\u30CB\u30E5\u30FC\u30FB\u30D0\u30FC
+menu=\u30E1\u30CB\u30E5\u30FC
+menuitem=\u30E1\u30CB\u30E5\u30FC\u9805\u76EE
+optionpane=\u30AA\u30D7\u30B7\u30E7\u30F3\u533A\u753B
+pagetab=\u30DA\u30FC\u30B8\u30FB\u30BF\u30D6
+pagetablist=\u30DA\u30FC\u30B8\u30FB\u30BF\u30D6\u30FB\u30EA\u30B9\u30C8
+panel=\u30D1\u30CD\u30EB
+passwordtext=\u30D1\u30B9\u30EF\u30FC\u30C9\u30FB\u30C6\u30AD\u30B9\u30C8
+popupmenu=\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7\u30FB\u30E1\u30CB\u30E5\u30FC
+progressbar=\u9032\u6357\u30D0\u30FC
+pushbutton=\u30D7\u30C3\u30B7\u30E5\u30FB\u30DC\u30BF\u30F3
+radiobutton=\u30E9\u30B8\u30AA\u30FB\u30DC\u30BF\u30F3
+rootpane=\u30EB\u30FC\u30C8\u533A\u753B
+rowheader=\u884C\u30D8\u30C3\u30C0\u30FC
+scrollbar=\u30B9\u30AF\u30ED\u30FC\u30EB\u30FB\u30D0\u30FC
+scrollpane=\u30B9\u30AF\u30ED\u30FC\u30EB\u533A\u753B
+separator=\u30BB\u30D1\u30EC\u30FC\u30BF
+slider=\u30B9\u30E9\u30A4\u30C0
+splitpane=\u5206\u5272\u533A\u753B
+swingcomponent=Swing\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8
+table=\u8868
+text=\u30C6\u30AD\u30B9\u30C8
+tree=\u30C4\u30EA\u30FC
+togglebutton=\u30C8\u30B0\u30EB\u30FB\u30DC\u30BF\u30F3
+toolbar=\u30C4\u30FC\u30EB\u30D0\u30FC
+tooltip=\u30C4\u30FC\u30EB\u30C1\u30C3\u30D7
+unknown=\u4E0D\u660E
+viewport=\u30D3\u30E5\u30FC\u30DD\u30FC\u30C8
+window=\u30A6\u30A3\u30F3\u30C9\u30A6
 #
 # accessible relations
 #
-labelFor=\u30e9\u30d9\u30eb\u5143
-labeledBy=\u30e9\u30d9\u30eb\u5148
-memberOf=\u6240\u5c5e\u30e1\u30f3\u30d0
-controlledBy=\u5236\u5fa1\u5bfe\u8c61
-controllerFor=\u5236\u5fa1\u5143
+labelFor=label for
+labeledBy=labeled by
+memberOf=member of
+controlledBy=controlledBy
+controllerFor=controllerFor
 #
 # accessible states
 #
-active=\u30a2\u30af\u30c6\u30a3\u30d6
-armed=\u4f5c\u52d5\u6e96\u5099\u5b8c\u4e86
-busy=\u30d3\u30b8\u30fc
-checked=\u30c1\u30a7\u30c3\u30af
-collapsed=\u77ed\u7e2e
-editable=\u7de8\u96c6\u53ef\u80fd
-expandable=\u5c55\u958b\u53ef\u80fd
-expanded=\u5c55\u958b
-enabled=\u6709\u52b9
-focusable=\u30d5\u30a9\u30fc\u30ab\u30b9\u53ef\u80fd
-focused=\u30d5\u30a9\u30fc\u30ab\u30b9
-iconified=\u30a2\u30a4\u30b3\u30f3\u5316
-modal=\u30e2\u30fc\u30c0\u30eb
-multiline=\u8907\u6570\u884c
-multiselectable=\u8907\u6570\u9078\u629e\u53ef\u80fd
-opaque=\u4e0d\u900f\u660e
-pressed=\u62bc\u4e0b
-resizable=\u30b5\u30a4\u30ba\u5909\u66f4\u53ef\u80fd
-selectable=\u9078\u629e\u53ef\u80fd
-selected=\u9078\u629e
-showing=\u8868\u793a
-singleline=\u5358\u4e00\u884c
-transient=\u4e00\u6642
-visible=\u53ef\u8996
-vertical=\u5782\u76f4
-horizontal=\u6c34\u5e73
+active=\u30A2\u30AF\u30C6\u30A3\u30D6
+armed=\u4F5C\u52D5\u6E96\u5099\u5B8C\u4E86
+busy=\u30D3\u30B8\u30FC
+checked=\u30C1\u30A7\u30C3\u30AF
+collapsed=\u77ED\u7E2E
+editable=\u7DE8\u96C6\u53EF\u80FD
+expandable=\u5C55\u958B\u53EF\u80FD
+expanded=\u5C55\u958B
+enabled=\u6709\u52B9
+focusable=\u30D5\u30A9\u30FC\u30AB\u30B9\u53EF\u80FD
+focused=\u30D5\u30A9\u30FC\u30AB\u30B9
+iconified=\u30A2\u30A4\u30B3\u30F3\u5316
+modal=\u30E2\u30FC\u30C0\u30EB
+multiline=\u8907\u6570\u884C
+multiselectable=\u8907\u6570\u9078\u629E\u53EF\u80FD
+opaque=\u4E0D\u900F\u660E
+pressed=\u62BC\u4E0B
+resizable=\u30B5\u30A4\u30BA\u5909\u66F4\u53EF\u80FD
+selectable=\u9078\u629E\u53EF\u80FD
+selected=\u9078\u629E
+showing=\u8868\u793A
+singleline=\u5358\u4E00\u884C
+transient=\u4E00\u6642
+visible=\u53EF\u8996
+vertical=\u5782\u76F4
+horizontal=\u6C34\u5E73
 #
 # accessible actions
 #
-toggle expand=\u30c8\u30b0\u30eb\u5c55\u958b
+toggle expand=\u30C8\u30B0\u30EB\u5C55\u958B
 
 # new relations, roles and states for J2SE 1.5.0
 
 # 
 # accessible relations
 #
-flowsTo=\u30d5\u30ed\u30fc\u5148
-flowsFrom=\u30d5\u30ed\u30fc\u5143
-subwindowOf=\u30b5\u30d6\u30a6\u30a3\u30f3\u30c9\u30a6
-parentWindowOf=\u89aa\u30a6\u30a3\u30f3\u30c9\u30a6
-embeds=\u57cb\u3081\u8fbc\u307f
-embeddedBy=\u57cb\u3081\u8fbc\u307f\u5143
-childNodeOf=\u5b50\u30ce\u30fc\u30c9
+flowsTo=flows to
+flowsFrom=flows from
+subwindowOf=subwindow of
+parentWindowOf=parent window of
+embeds=\u57CB\u8FBC\u307F
+embeddedBy=embedded by
+childNodeOf=child node of
 
 #
 # accessible roles
 #
-header=\u30d8\u30c3\u30c0
-footer=\u30d5\u30c3\u30bf
-paragraph=\u30d1\u30e9\u30b0\u30e9\u30d5
-ruler=\u30eb\u30fc\u30e9
-editbar=\u7de8\u96c6\u30d0\u30fc
-progressMonitor=\u9032\u6357\u30e2\u30cb\u30bf
+header=\u30D8\u30C3\u30C0\u30FC
+footer=\u30D5\u30C3\u30BF\u30FC
+paragraph=\u6BB5\u843D
+ruler=\u30EB\u30FC\u30E9\u30FC
+editbar=\u7DE8\u96C6\u30D0\u30FC
+progressMonitor=\u9032\u6357\u30E2\u30CB\u30BF\u30FC
 
 #
 # accessible states
 #
-managesDescendants=\u5b50\u5b6b\u3092\u7ba1\u7406
-indeterminate=\u4e0d\u78ba\u5b9a
-truncated=\u4e0d\u5b8c\u5168
+managesDescendants=\u5B50\u5B6B\u3092\u7BA1\u7406
+indeterminate=\u4E0D\u78BA\u5B9A
+truncated=\u4E0D\u5B8C\u5168
 
 # new for J2SE 1.6.0
 
 #
 # accessible roles
 #
-htmlcontainer=HTML \u30b3\u30f3\u30c6\u30ca
+htmlcontainer=HTML\u30B3\u30F3\u30C6\u30CA
 
 #
 # END OF MATERIAL TO LOCALIZE
--- a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_ko.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_ko.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -13,133 +13,133 @@
 #
 # accessible roles
 #
-alert=\uacbd\uace0
-awtcomponent=AWT \uad6c\uc131\uc694\uc18c
-checkbox=\ud655\uc778\ub780
-colorchooser=\uc0c9\uc0c1 \uc120\ud0dd\uae30
-columnheader=\uc5f4 \uba38\ub9ac\uae00
-combobox=\ucf64\ubcf4 \uc0c1\uc790
-canvas=\uce94\ubc84\uc2a4
-desktopicon=\ub370\uc2a4\ud06c\ud0d1 \uc544\uc774\ucf58
-desktoppane=\ub370\uc2a4\ud06c\ud0d1 \ud45c\uc2dc \uc601\uc5ed
-dialog=\ub300\ud654 \uc0c1\uc790
-directorypane=\ub514\ub809\ud1a0\ub9ac \ud45c\uc2dc \uc601\uc5ed
-glasspane=\uae00\ub798\uc2a4 \ud45c\uc2dc \uc601\uc5ed
-filechooser=\ud30c\uc77c \uc120\ud0dd\uae30
-filler=\ud544\ub7ec
-frame=\ud504\ub808\uc784
-internalframe=\ub0b4\ubd80 \ud504\ub808\uc784
-label=\ub808\uc774\ube14
-layeredpane=\uacc4\uce35 \ud45c\uc2dc \uc601\uc5ed
-list=\ubaa9\ub85d
-listitem=\ubaa9\ub85d \ud56d\ubaa9
-menubar=\uba54\ub274 \ud45c\uc2dc\uc904
-menu=\uba54\ub274
-menuitem=\uba54\ub274 \ud56d\ubaa9
-optionpane=\uc635\uc158 \ud45c\uc2dc \uc601\uc5ed
-pagetab=\ud398\uc774\uc9c0 \ud0ed
-pagetablist=\ud398\uc774\uc9c0 \ud0ed \ubaa9\ub85d
-panel=\ud328\ub110
-passwordtext=\uc554\ud638 \ud14d\uc2a4\ud2b8
-popupmenu=\ud31d\uc5c5 \uba54\ub274
-progressbar=\uc9c4\ud589 \ub9c9\ub300
-pushbutton=\ub204\ub984 \ubc84\ud2bc
-radiobutton=\ub77c\ub514\uc624 \ubc84\ud2bc
-rootpane=\ub8e8\ud2b8 \ud45c\uc2dc \uc601\uc5ed
-rowheader=\ud589 \uba38\ub9ac\uae00
-scrollbar=\uc2a4\ud06c\ub864 \ub9c9\ub300
-scrollpane=\uc2a4\ud06c\ub864 \ud45c\uc2dc \uc601\uc5ed
-separator=\uad6c\ubd84\uc790
-slider=\uc2ac\ub77c\uc774\ub354
-splitpane=\ubd84\ud560 \ud45c\uc2dc \uc601\uc5ed
-swingcomponent=swing \uad6c\uc131\uc694\uc18c
-table=\ud14c\uc774\ube14
-text=\ud14d\uc2a4\ud2b8
-tree=\ud2b8\ub9ac
-togglebutton=\ud1a0\uae00 \ubc84\ud2bc
-toolbar=\ub3c4\uad6c \ubaa8\uc74c
-tooltip=\ub3c4\uad6c \ud301
-unknown=\uc54c\uc218 \uc5c6\uc74c
-viewport=\ubdf0\ud3ec\ud2b8
-window=\ucc3d
+alert=\uACBD\uBCF4
+awtcomponent=AWT \uAD6C\uC131 \uC694\uC18C
+checkbox=\uCCB4\uD06C \uBC15\uC2A4
+colorchooser=\uC0C9\uC0C1 \uC120\uD0DD\uAE30
+columnheader=\uC5F4 \uBA38\uB9AC\uAE00
+combobox=\uCF64\uBCF4 \uC0C1\uC790
+canvas=\uCE94\uBC84\uC2A4
+desktopicon=\uBC14\uD0D5 \uD654\uBA74 \uC544\uC774\uCF58
+desktoppane=\uBC14\uD0D5 \uD654\uBA74 \uCC3D
+dialog=\uB300\uD654\uC0C1\uC790
+directorypane=\uB514\uB809\uD1A0\uB9AC \uCC3D
+glasspane=\uAE00\uB798\uC2A4 \uCC3D
+filechooser=\uD30C\uC77C \uC120\uD0DD\uAE30
+filler=\uD544\uB7EC
+frame=\uD504\uB808\uC784
+internalframe=\uB0B4\uBD80 \uD504\uB808\uC784
+label=\uB808\uC774\uBE14
+layeredpane=\uACC4\uCE35\uC801 \uCC3D
+list=\uBAA9\uB85D
+listitem=\uBAA9\uB85D \uD56D\uBAA9
+menubar=\uBA54\uB274 \uD45C\uC2DC\uC904
+menu=\uBA54\uB274
+menuitem=\uBA54\uB274 \uD56D\uBAA9
+optionpane=\uC635\uC158 \uCC3D
+pagetab=\uD398\uC774\uC9C0 \uD0ED
+pagetablist=\uD398\uC774\uC9C0 \uD0ED \uBAA9\uB85D
+panel=\uD328\uB110
+passwordtext=\uBE44\uBC00\uBC88\uD638 \uD14D\uC2A4\uD2B8
+popupmenu=\uD31D\uC5C5 \uBA54\uB274
+progressbar=\uC9C4\uD589 \uB9C9\uB300
+pushbutton=\uB204\uB984 \uB2E8\uCD94
+radiobutton=\uB77C\uB514\uC624 \uB2E8\uCD94
+rootpane=\uB8E8\uD2B8 \uCC3D
+rowheader=\uD589 \uBA38\uB9AC\uAE00
+scrollbar=\uC2A4\uD06C\uB864 \uB9C9\uB300
+scrollpane=\uC2A4\uD06C\uB864 \uCC3D
+separator=\uAD6C\uBD84 \uAE30\uD638
+slider=\uC2AC\uB77C\uC774\uB354
+splitpane=\uBD84\uD560 \uCC3D
+swingcomponent=\uD68C\uC804 \uAD6C\uC131 \uC694\uC18C
+table=\uD14C\uC774\uBE14
+text=\uD14D\uC2A4\uD2B8
+tree=\uD2B8\uB9AC
+togglebutton=\uD1A0\uAE00 \uB2E8\uCD94
+toolbar=\uB3C4\uAD6C \uBAA8\uC74C
+tooltip=\uB3C4\uAD6C \uC124\uBA85
+unknown=\uC54C \uC218 \uC5C6\uC74C
+viewport=\uBDF0\uD3EC\uD2B8
+window=\uCC3D
 #
 # accessible relations
 #
-labelFor=\ub808\uc774\ube14 \ub300\uc0c1
-labeledBy=\ub808\uc774\ube14 \uc9c0\uc815\uc790
-memberOf=\ub2e4\uc74c\uc758 \uad6c\uc131\uc6d0
-controlledBy=\uc81c\uc5b4\uc790
-controllerFor=\uc81c\uc5b4\uae30 \ub300\uc0c1
+labelFor=\uB808\uC774\uBE14 \uB300\uC0C1
+labeledBy=\uB808\uC774\uBE14 \uC9C0\uC815\uC790
+memberOf=\uC18C\uC18D \uADF8\uB8F9
+controlledBy=controlledBy
+controllerFor=controllerFor
 #
 # accessible states
 #
-active=\ud65c\uc131
-armed=\ud06c\uae30
-busy=\uc0ac\uc6a9 \uc911
-checked=\uc120\ud0dd\ub428
-collapsed=\ucd95\uc18c\ub428
-editable=\ud3b8\uc9d1 \uac00\ub2a5
-expandable=\ud655\uc7a5 \uac00\ub2a5
-expanded=\ud655\uc7a5\ub428
-enabled=\ud65c\uc131\ud654\ub428
-focusable=\ud3ec\ucee4\uc2a4 \uac00\ub2a5
-focused=\ud3ec\ucee4\uc2a4 \uc9c0\uc815\ub428
-iconified=\uc544\uc774\ucf58\ud654\ub428
-modal=\ubaa8\ub2ec
-multiline=\ubcf5\uc218 \ud589
-multiselectable=\ubcf5\uc218\ub85c \uc120\ud0dd \uac00\ub2a5
-opaque=\ubd88\ud22c\uba85
-pressed=\ub204\ub984
-resizable=\ud06c\uae30 \uc870\uc815 \uac00\ub2a5
-selectable=\uc120\ud0dd \uac00\ub2a5
-selected=\uc120\ud0dd\ub428
-showing=\ud45c\uc2dc
-singleline=\ub2e8\uc120
-transient=\uc77c\uc2dc
-visible=\uac00\uc2dc
-vertical=\uc218\uc9c1
-horizontal=\uc218\ud3c9
+active=\uD65C\uC131
+armed=\uD06C\uAE30
+busy=\uC0AC\uC6A9 \uC911
+checked=\uC120\uD0DD\uB428
+collapsed=\uCD95\uC18C\uB428
+editable=\uD3B8\uC9D1 \uAC00\uB2A5
+expandable=\uD655\uC7A5 \uAC00\uB2A5
+expanded=\uD655\uC7A5\uB428
+enabled=\uC0AC\uC6A9
+focusable=\uD3EC\uCEE4\uC2A4 \uAC00\uB2A5
+focused=\uD3EC\uCEE4\uC2A4\uB428
+iconified=\uC544\uC774\uCF58\uD654\uB428
+modal=\uBAA8\uB2EC
+multiline=\uBCF5\uC218 \uD589
+multiselectable=\uB2E4\uC911 \uC120\uD0DD \uAC00\uB2A5
+opaque=\uBD88\uD22C\uBA85
+pressed=\uB204\uB984
+resizable=\uD06C\uAE30 \uC870\uC815 \uAC00\uB2A5
+selectable=\uC120\uD0DD \uAC00\uB2A5
+selected=\uC120\uD0DD\uB428
+showing=\uD45C\uC2DC
+singleline=\uD55C \uC904
+transient=\uC77C\uC2DC
+visible=\uD45C\uC2DC \uAC00\uB2A5
+vertical=\uC138\uB85C
+horizontal=\uAC00\uB85C
 #
 # accessible actions
 #
-toggle expand=\ud1a0\uae00 \ud655\uc7a5
+toggle \uD655\uC7A5=\uD1A0\uAE00 \uD655\uC7A5
 
 # new relations, roles and states for J2SE 1.5.0
 
 # 
 # accessible relations
 #
-flowsTo=(\uc73c)\ub85c \ud750\ub984
-flowsFrom=\uc5d0\uc11c \ud750\ub984
-subwindowOf=\ud558\uc704 \ucc3d
-parentWindowOf=\uc0c1\uc704 \ucc3d
-embeds=\uc744(\ub97c) \ud3ec\ud568
-embeddedBy=\uc5d0 \ud3ec\ud568
-childNodeOf=\ud558\uc704 \ub178\ub4dc
+flowsTo=\uD750\uB984 \uB300\uC0C1
+flowsFrom=\uD750\uB984 \uCD9C\uCC98
+subwindowOf=\uD558\uC704 \uCC3D
+parentWindowOf=\uC0C1\uC704 \uCC3D
+embeds=\uD3EC\uD568
+embeddedBy=\uD3EC\uD568 \uC8FC\uCCB4
+childNodeOf=\uD558\uC704 \uB178\uB4DC
 
 #
 # accessible roles
 #
-header=\uba38\ub9ac\ub9d0
-footer=\uaf2c\ub9ac\ub9d0
-paragraph=\ub2e8\ub77d
-ruler=\ub208\uae08\uc790
-editbar=\ud3b8\uc9d1 \ub3c4\uad6c
-progressMonitor=\uc9c4\ud589 \ubaa8\ub2c8\ud130
+header=\uBA38\uB9AC\uAE00
+footer=\uBC14\uB2E5\uAE00
+paragraph=\uB2E8\uB77D
+ruler=\uB208\uAE08\uC790
+editbar=\uD3B8\uC9D1 \uB3C4\uAD6C
+progressMonitor=\uC9C4\uD589 \uBAA8\uB2C8\uD130
 
 #
 # accessible states
 #
-managesDescendants=\ud558\uc704 \ud56d\ubaa9 \uad00\ub9ac
-indeterminate=\ubd80\uc815
-truncated=\uc0dd\ub7b5
+managesDescendants=\uC885\uC18D \uD56D\uBAA9 \uAD00\uB9AC
+indeterminate=\uD655\uC815\uB418\uC9C0 \uC54A\uC74C
+truncated=\uC798\uB9BC
 
 # new for J2SE 1.6.0
 
 #
 # accessible roles
 #
-htmlcontainer=HTML \ucee8\ud14c\uc774\ub108
+htmlcontainer=HTML \uCEE8\uD14C\uC774\uB108
 
 #
 # END OF MATERIAL TO LOCALIZE
--- a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_pt_BR.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_pt_BR.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -15,38 +15,38 @@
 #
 alert=alerta
 awtcomponent=componente AWT
-checkbox=caixa de sele\u00e7\u00e3o
+checkbox=caixa de sele\u00E7\u00E3o
 colorchooser=seletor de cores
-columnheader=cabe\u00e7alho da coluna
-combobox=caixa de combina\u00e7\u00e3o
+columnheader=cabe\u00E7alho da coluna
+combobox=caixa de combina\u00E7\u00E3o
 canvas=tela
-desktopicon=\u00edcone da \u00e1rea de trabalho
-desktoppane=painel da \u00e1rea de trabalho
-dialog=caixa de di\u00e1logo
-directorypane=painel do diret\u00f3rio
+desktopicon=\u00EDcone da \u00E1rea de trabalho
+desktoppane=painel da \u00E1rea de trabalho
+dialog=caixa de di\u00E1logo
+directorypane=painel do diret\u00F3rio
 glasspane=painel transparente
 filechooser=seletor de arquivos
-filler=preenchimento
+filler=preenchedor
 frame=quadro
 internalframe=quadro interno
-label=r\u00f3tulo
+label=r\u00F3tulo
 layeredpane=painel em camadas
 list=lista
 listitem=item da lista
 menubar=barra de menus
 menu=menu
 menuitem=item do menu
-optionpane=painel de op\u00e7\u00f5es
-pagetab=aba da p\u00e1gina
-pagetablist=lista de abas da p\u00e1gina
+optionpane=painel de op\u00E7\u00F5es
+pagetab=guia da p\u00E1gina
+pagetablist=lista de guias da p\u00E1gina
 panel=painel
 passwordtext=texto da senha
 popupmenu=menu pop-up
 progressbar=barra de progresso
-pushbutton=bot\u00e3o de a\u00e7\u00e3o
-radiobutton=bot\u00e3o de op\u00e7\u00e3o
+pushbutton=bot\u00E3o de a\u00E7\u00E3o
+radiobutton=bot\u00E3o de op\u00E7\u00E3o
 rootpane=painel base
-rowheader=cabe\u00e7alho da linha
+rowheader=cabe\u00E7alho da linha
 scrollbar=barra de rolagem
 scrollpane=painel de rolagem
 separator=separador
@@ -55,19 +55,19 @@
 swingcomponent=componente swing
 table=tabela
 text=texto
-tree=\u00e1rvore
-togglebutton=bot\u00e3o de altern\u00e2ncia
+tree=\u00E1rvore
+togglebutton=bot\u00E3o de altern\u00E2ncia
 toolbar=barra de ferramentas
 tooltip=dica de ferramenta
 unknown=desconhecido
-viewport=janela de visualiza\u00e7\u00e3o
+viewport=janela de visualiza\u00E7\u00E3o
 window=janela
 #
 # accessible relations
 #
-labelFor=r\u00f3tulo de
+labelFor=r\u00F3tulo de
 labeledBy=rotulado por
-memberOf=membro de 
+memberOf=membro de
 controlledBy=controlledBy
 controllerFor=controllerFor
 #
@@ -78,31 +78,31 @@
 busy=ocupado
 checked=selecionado
 collapsed=recolhido
-editable=edit\u00e1vel
-expandable=expans\u00edvel
+editable=edit\u00E1vel
+expandable=expans\u00EDvel
 expanded=expandido
-enabled=habilitado
-focusable=focaliz\u00e1vel
+enabled=ativado
+focusable=focaliz\u00E1vel
 focused=focalizado
 iconified=iconizado
 modal=modal
-multiline=v\u00e1rias linhas
-multiselectable=m\u00faltipla escolha
+multiline=v\u00E1rias linhas
+multiselectable=m\u00FAltipla escolha
 opaque=opaco
 pressed=pressionado
-resizable=redimension\u00e1vel
-selectable=selecion\u00e1vel
+resizable=redimension\u00E1vel
+selectable=selecion\u00E1vel
 selected=selecionado
-showing=exibindo
-singleline=linha \u00fanica
-transient=transit\u00f3rio
-visible=vis\u00edvel
+showing=mostrando
+singleline=linha \u00FAnica
+transient=transit\u00F3rio
+visible=vis\u00EDvel
 vertical=vertical
 horizontal=horizontal
 #
 # accessible actions
 #
-toggle expandir=alternar expandir
+toggle expandir=alternar expans\u00E3o
 
 # new relations, roles and states for J2SE 1.5.0
 
@@ -115,16 +115,16 @@
 parentWindowOf=janela pai de
 embeds=integra
 embeddedBy=integrado por
-childNodeOf=n\u00f3 filho de
+childNodeOf=n\u00F3 filho de
 
 #
 # accessible roles
 #
-header=cabe\u00e7alho
-footer=rodap\u00e9
-paragraph=par\u00e1grafo
-ruler=r\u00e9gua
-editbar=barra de edi\u00e7\u00e3o
+header=cabe\u00E7alho
+footer=rodap\u00E9
+paragraph=par\u00E1grafo
+ruler=r\u00E9gua
+editbar=barra de edi\u00E7\u00E3o
 progressMonitor=monitor de progresso
 
 #
@@ -139,7 +139,7 @@
 #
 # accessible roles
 #
-htmlcontainer=cont\u00eainer HTML
+htmlcontainer=Container de HTML
 
 #
 # END OF MATERIAL TO LOCALIZE
--- a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_sv.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_sv.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -13,109 +13,109 @@
 #
 # accessible roles
 #
-alert=varning
+alert=avisering
 awtcomponent=AWT-komponent
 checkbox=kryssruta
-colorchooser=f\u00e4rgv\u00e4ljare
+colorchooser=f\u00E4rgv\u00E4ljare
 columnheader=kolumnrubrik
 combobox=kombinationsruta
-canvas=bakgrund
+canvas=rityta
 desktopicon=skrivbordsikon
 desktoppane=skrivbordsruta
 dialog=dialogruta
 directorypane=katalogruta
 glasspane=glasruta
-filechooser=filv\u00e4ljare
+filechooser=filv\u00E4ljare
 filler=utfyllnad
 frame=ram
 internalframe=intern ram
 label=etikett
 layeredpane=staplad ruta
 list=lista
-listitem=listelement
-menubar=menylist
+listitem=listobjekt
+menubar=menyrad
 menu=meny
 menuitem=menyalternativ
 optionpane=alternativruta
 pagetab=sidflik
 pagetablist=sidflikslista
 panel=panel
-passwordtext=l\u00f6senordstext
+passwordtext=l\u00F6senordstext
 popupmenu=snabbmeny
-progressbar=statuslist
+progressbar=statusrad
 pushbutton=knapp
-radiobutton=envalsknapp
+radiobutton=alternativknapp
 rootpane=grundruta
-rowheader=radhuvud
-scrollbar=bl\u00e4ddringslist
-scrollpane=bl\u00e4dderruta
+rowheader=radrubrik
+scrollbar=rullningslist
+scrollpane=rullningsruta
 separator=avskiljare
 slider=skjutreglage
 splitpane=delad ruta
 swingcomponent=swing-komponent
 table=tabell
 text=text
-tree=tr\u00e4d
-togglebutton=v\u00e4xlingsknapp
+tree=tr\u00E4d
+togglebutton=v\u00E4xlingsknapp
 toolbar=verktygsrad
 tooltip=knappbeskrivning
-unknown=ok\u00e4nd
+unknown=ok\u00E4nd
 viewport=vyport
-window=f\u00f6nster
+window=f\u00F6nster
 #
 # accessible relations
 #
-labelFor=etikett f\u00f6r
+labelFor=etikett f\u00F6r
 labeledBy=etikett av
 memberOf=medlem i
-controlledBy=kontrolleratAv
-controllerFor=styrenhetF\u00f6r
+controlledBy=controlledBy
+controllerFor=controllerFor
 #
 # accessible states
 #
 active=aktiv
-armed=anv\u00e4nd
+armed=redo
 busy=upptagen
 checked=markerad
-collapsed=inf\u00e4lld
+collapsed=komprimerad
 editable=redigerbar
-expandable=ut\u00f6kningsbar
-expanded=ut\u00f6kad
+expandable=ut\u00F6kningsbar
+expanded=ut\u00F6kad
 enabled=aktiverad
 focusable=fokuseringsbar
 focused=fokuserad
 iconified=minimerad
-modal=tillst\u00e5ndsberoende
-multiline=flera linjer
-multiselectable=multivalbar
-opaque=ogenomskinlig
+modal=modal
+multiline=flera rader
+multiselectable=flerval
+opaque=t\u00E4ckande
 pressed=nedtryckt
-resizable=storleks\u00e4ndringsbar
-selectable=markeringsbar
+resizable=storleks\u00E4ndringsbar
+selectable=valbar
 selected=vald
-showing=visa
+showing=visas
 singleline=en rad
-transient=flytande
+transient=tillf\u00E4llig
 visible=synlig
 vertical=vertikal
 horizontal=horisontell
 #
 # accessible actions
 #
-toggle expand=v\u00e4xla ut\u00f6ka
+toggle ut\u00F6ka=v\u00E4xla ut\u00F6ka
 
 # new relations, roles and states for J2SE 1.5.0
 
 # 
 # accessible relations
 #
-flowsTo=fl\u00f6dar till
-flowsFrom=fl\u00f6dar fr\u00e5n
-subwindowOf=delf\u00f6nster av
-parentWindowOf=\u00f6verordnat f\u00f6nster f\u00f6r
-embeds=b\u00e4ddar in
-embeddedBy=b\u00e4ddas in av
-childNodeOf=underordnad nod f\u00f6r
+flowsTo=fl\u00F6dar till
+flowsFrom=fl\u00F6dar fr\u00E5n
+subwindowOf=delf\u00F6nster av
+parentWindowOf=\u00F6verordnat f\u00F6nster f\u00F6r
+embeds=b\u00E4ddar in
+embeddedBy=b\u00E4ddas in av
+childNodeOf=underordnad nod f\u00F6r
 
 #
 # accessible roles
@@ -125,14 +125,14 @@
 paragraph=stycke
 ruler=linjal
 editbar=redigeringslist
-progressMonitor=f\u00f6rloppsindikator
+progressMonitor=f\u00F6rlopps\u00F6vervakare
 
 #
 # accessible states
 #
-managesDescendants=hanterar efterf\u00f6ljare
-indeterminate=obest\u00e4mt
-truncated=avklippt
+managesDescendants=hanterar underordnade
+indeterminate=obest\u00E4mt
+truncated=kapad
 
 # new for J2SE 1.6.0
 
--- a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_zh_CN.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_zh_CN.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -13,133 +13,133 @@
 #
 # accessible roles
 #
-alert=\u8b66\u62a5
-awtcomponent=AWT \u7ec4\u4ef6
-checkbox=\u590d\u9009\u6846
-colorchooser=\u989c\u8272\u9009\u62e9\u5668
+alert=\u9884\u8B66
+awtcomponent=AWT \u7EC4\u4EF6
+checkbox=\u590D\u9009\u6846
+colorchooser=\u989C\u8272\u9009\u62E9\u5668
 columnheader=\u5217\u6807\u9898
-combobox=\u7ec4\u5408\u6846
-canvas=\u753b\u5e03
-desktopicon=\u684c\u9762\u56fe\u6807
-desktoppane=\u684c\u9762\u7a97\u683c
-dialog=\u5bf9\u8bdd
-directorypane=\u76ee\u5f55\u7a97\u683c
-glasspane=\u73bb\u7483\u7a97\u683c
-filechooser=\u6587\u4ef6\u9009\u62e9\u5668
-filler=\u6f0f\u6597
-frame=\u5e27
-internalframe=\u5185\u90e8\u5e27
-label=\u6807\u7b7e
-layeredpane=\u5206\u5c42\u7a97\u683c
+combobox=\u7EC4\u5408\u6846
+canvas=\u753B\u5E03
+desktopicon=\u684C\u9762\u56FE\u6807
+desktoppane=\u684C\u9762\u7A97\u683C
+dialog=\u5BF9\u8BDD
+directorypane=\u76EE\u5F55\u7A97\u683C
+glasspane=\u73BB\u7483\u7A97\u683C
+filechooser=\u6587\u4EF6\u9009\u62E9\u5668
+filler=\u6F0F\u6597
+frame=\u5E27
+internalframe=\u5185\u90E8\u5E27
+label=\u6807\u7B7E
+layeredpane=\u5206\u5C42\u7A97\u683C
 list=\u5217\u8868
 listitem=\u5217\u8868\u9879
-menubar=\u83dc\u5355\u680f
-menu=\u83dc\u5355
-menuitem=\u83dc\u5355\u9879
-optionpane=\u9009\u9879\u7a97\u683c
-pagetab=\u9875\u6807\u7b7e
-pagetablist=\u9875\u6807\u7b7e\u5217\u8868
-panel=\u9762\u677f
-passwordtext=\u5bc6\u7801\u6587\u672c
-popupmenu=\u5f39\u51fa\u5f0f\u83dc\u5355
-progressbar=\u8fdb\u5ea6\u6761
-pushbutton=\u6309\u94ae
-radiobutton=\u5355\u9009\u6309\u94ae
-rootpane=\u6839\u7a97\u683c
-rowheader=\u884c\u6807\u9898
-scrollbar=\u6eda\u52a8\u6761
-scrollpane=\u6eda\u52a8\u7a97\u683c
+menubar=\u83DC\u5355\u680F
+menu=\u83DC\u5355
+menuitem=\u83DC\u5355\u9879
+optionpane=\u9009\u9879\u7A97\u683C
+pagetab=\u9875\u6807\u7B7E
+pagetablist=\u9875\u6807\u7B7E\u5217\u8868
+panel=\u9762\u677F
+passwordtext=\u53E3\u4EE4\u6587\u672C
+popupmenu=\u5F39\u51FA\u5F0F\u83DC\u5355
+progressbar=\u8FDB\u5EA6\u680F
+pushbutton=\u6309\u94AE
+radiobutton=\u5355\u9009\u6309\u94AE
+rootpane=\u6839\u7A97\u683C
+rowheader=\u884C\u6807\u9898
+scrollbar=\u6EDA\u52A8\u6761
+scrollpane=\u6EDA\u52A8\u7A97\u683C
 separator=\u5206\u9694\u6761
-slider=\u6ed1\u5757
-splitpane=\u62c6\u5206\u7a97\u683c
-swingcomponent=\u65cb\u8f6c\u7ec4\u4ef6
+slider=\u6ED1\u5757
+splitpane=\u62C6\u5206\u7A97\u683C
+swingcomponent=\u65CB\u8F6C\u7EC4\u4EF6
 table=\u8868
-text=\u6587\u672c
+text=\u6587\u672C
 tree=\u6811
-togglebutton=\u5207\u6362\u6309\u94ae
-toolbar=\u5de5\u5177\u680f
-tooltip=\u5de5\u5177\u63d0\u793a
-unknown=\u672a\u77e5
-viewport=\u89c6\u53e3
-window=\u7a97\u53e3
+togglebutton=\u5207\u6362\u6309\u94AE
+toolbar=\u5DE5\u5177\u680F
+tooltip=\u5DE5\u5177\u63D0\u793A
+unknown=\u672A\u77E5
+viewport=\u89C6\u7A97
+window=\u7A97\u53E3
 #
 # accessible relations
 #
-labelFor=\u6807\u7b7e\u5c5e\u4e8e
-labeledBy=\u6807\u7b7e\u5236\u4f5c\u8005
-memberOf=\u5c5e\u4e8e
-controlledBy=\u63a7\u5236\u8005
-controllerFor=\u63a7\u5236\u5bf9\u8c61
+labelFor=\u6807\u7B7E\u5C5E\u4E8E
+labeledBy=\u6807\u7B7E\u5236\u4F5C\u8005
+memberOf=\u5C5E\u4E8E
+controlledBy=controlledBy
+controllerFor=controllerFor
 #
 # accessible states
 #
-active=\u6d3b\u52a8
-armed=\u5f85\u547d
-busy=\u5fd9
-checked=\u5df2\u9009\u4e2d
-collapsed=\u5df2\u6536\u7f29
-editable=\u53ef\u7f16\u8f91
-expandable=\u53ef\u5c55\u5f00
-expanded=\u5df2\u5c55\u5f00
-enabled=\u5df2\u542f\u7528
-focusable=\u53ef\u96c6\u4e2d
-focused=\u5df2\u96c6\u4e2d
-iconified=\u56fe\u6807\u5f0f
-modal=\u6a21\u6001
-multiline=\u591a\u884c
-multiselectable=\u591a\u9009\u62e9
-opaque=\u4e0d\u900f\u660e
-pressed=\u5df2\u6309\u4e0b
-resizable=\u5927\u5c0f\u53ef\u8c03
-selectable=\u53ef\u9009\u62e9
-selected=\u5df2\u9009\u5b9a
-showing=\u6b63\u5728\u663e\u793a
-singleline=\u5355\u884c
-transient=\u77ac\u65f6
-visible=\u53ef\u89c1
-vertical=\u5782\u76f4
-horizontal=\u6c34\u5e73
+active=\u6D3B\u52A8
+armed=\u5F85\u547D
+busy=\u5FD9
+checked=\u5DF2\u9009\u4E2D
+collapsed=\u5DF2\u6536\u7F29
+editable=\u53EF\u7F16\u8F91
+expandable=\u53EF\u5C55\u5F00
+expanded=\u5DF2\u5C55\u5F00
+enabled=\u542F\u7528
+focusable=\u53EF\u96C6\u4E2D
+focused=\u5DF2\u96C6\u4E2D
+iconified=\u56FE\u6807\u5F0F
+modal=\u6A21\u6001
+multiline=\u591A\u884C
+multiselectable=\u591A\u9009\u62E9
+opaque=\u4E0D\u900F\u660E
+pressed=\u5DF2\u6309\u4E0B
+resizable=\u53EF\u8C03\u6574\u5927\u5C0F
+selectable=\u53EF\u9009\u62E9
+selected=\u6240\u9009
+showing=\u6B63\u5728\u663E\u793A
+singleline=\u5355\u884C
+transient=\u77AC\u65F6
+visible=\u53EF\u89C1
+vertical=\u5782\u76F4
+horizontal=\u6C34\u5E73
 #
 # accessible actions
 #
-toggle expand=\u5207\u6362\u5c55\u5f00
+toggle expand=\u5207\u6362\u5C55\u5F00
 
 # new relations, roles and states for J2SE 1.5.0
 
 # 
 # accessible relations
 #
-flowsTo=\u6d41\u5411
-flowsFrom=\u6d41\u81ea
-subwindowOf=\u5b50\u7a97\u53e3
-parentWindowOf=\u7236\u7a97\u53e3
-embeds=\u5d4c\u5165\u9879
-embeddedBy=\u5d4c\u5165\u8005
-childNodeOf=\u5b50\u8282\u70b9
+flowsTo=\u6D41\u5411
+flowsFrom=\u6D41\u81EA
+subwindowOf=\u5B50\u7A97\u53E3
+parentWindowOf=\u7236\u7A97\u53E3
+embeds=\u5D4C\u5165\u9879
+embeddedBy=\u5D4C\u5165\u8005
+childNodeOf=\u5B50\u8282\u70B9
 
 #
 # accessible roles
 #
 header=\u9875\u7709
-footer=\u9875\u811a
-paragraph=\u6bb5\u843d
-ruler=\u6807\u5c3a
-editbar=\u7f16\u8f91\u680f
-progressMonitor=\u8fdb\u5ea6\u76d1\u89c6\u5668
+footer=\u9875\u811A
+paragraph=\u6BB5\u843D
+ruler=\u6807\u5C3A
+editbar=\u7F16\u8F91\u680F
+progressMonitor=\u8FDB\u5EA6\u76D1\u89C6\u5668
 
 #
 # accessible states
 #
-managesDescendants=\u7ba1\u7406\u5b50\u5b59
-indeterminate=\u4e0d\u786e\u5b9a
-truncated=\u5df2\u622a\u65ad
+managesDescendants=\u7BA1\u7406\u5B50\u9879
+indeterminate=\u4E0D\u786E\u5B9A
+truncated=\u5DF2\u622A\u65AD
 
 # new for J2SE 1.6.0
 
 #
 # accessible roles
 #
-htmlcontainer=HTML \u5bb9\u5668
+htmlcontainer=HTML \u5BB9\u5668
 
 #
 # END OF MATERIAL TO LOCALIZE
--- a/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_zh_TW.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/accessibility/internal/resources/accessibility_zh_TW.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -13,133 +13,133 @@
 #
 # accessible roles
 #
-alert=\u8b66\u793a
-awtcomponent=AWT \u5143\u4ef6
-checkbox=\u6838\u53d6\u65b9\u584a
-colorchooser=\u8272\u5f69\u9078\u64c7\u5668
-columnheader=\u76f4\u6b04\u6a19\u984c
-combobox=\u4e0b\u62c9\u5f0f\u6e05\u55ae\u65b9\u584a
-canvas=\u756b\u5e03
-desktopicon=\u684c\u9762\u5716\u793a
-desktoppane=\u684c\u9762\u7a97\u683c
-dialog=\u5c0d\u8a71\u65b9\u584a
-directorypane=\u76ee\u9304\u7a97\u683c
-glasspane=\u6aa2\u8996\u7a97\u683c
-filechooser=\u6a94\u6848\u9078\u64c7\u5668
-filler=\u586b\u5145\u7269
-frame=\u6846\u67b6
-internalframe=\u5167\u90e8\u6846\u67b6
-label=\u6a19\u7c64
-layeredpane=\u5206\u5c64\u7a97\u683c
-list=\u6e05\u55ae
-listitem=\u6e05\u55ae\u9805\u76ee
-menubar=\u529f\u80fd\u8868\u5217
-menu=\u529f\u80fd\u8868
-menuitem=\u529f\u80fd\u8868\u9805\u76ee
-optionpane=\u9078\u9805\u7a97\u683c
-pagetab=\u9801\u9762\u6a19\u7c64
-pagetablist=\u9801\u9762\u6a19\u7c64\u6e05\u55ae
-panel=\u9762\u677f
-passwordtext=\u5bc6\u78bc\u6587\u5b57
-popupmenu=\u8e66\u73fe\u5f0f\u529f\u80fd\u8868
-progressbar=\u9032\u5ea6\u5217
-pushbutton=\u4e0b\u58d3\u6309\u9215
-radiobutton=\u55ae\u9078\u9215
-rootpane=root \u7a97\u683c
-rowheader=\u5217\u6a19\u984c
-scrollbar=\u6372\u8ef8
-scrollpane=\u6372\u52d5\u7a97\u683c
+alert=\u8B66\u793A
+awtcomponent=AWT \u5143\u4EF6
+checkbox=\u6838\u53D6\u65B9\u584A
+colorchooser=\u8272\u5F69\u9078\u64C7\u5668
+columnheader=\u76F4\u6B04\u6A19\u984C
+combobox=\u4E0B\u62C9\u5F0F\u6E05\u55AE\u65B9\u584A
+canvas=\u756B\u5E03
+desktopicon=\u684C\u9762\u5716\u793A
+desktoppane=\u684C\u9762\u7A97\u683C
+dialog=\u5C0D\u8A71\u65B9\u584A
+directorypane=\u76EE\u9304\u7A97\u683C
+glasspane=\u6AA2\u8996\u7A97\u683C
+filechooser=\u6A94\u6848\u9078\u64C7\u5668
+filler=\u586B\u5145\u7269
+frame=\u6846\u67B6
+internalframe=\u5167\u90E8\u6846\u67B6
+label=\u6A19\u7C64
+layeredpane=\u5206\u5C64\u7A97\u683C
+list=\u6E05\u55AE
+listitem=\u6E05\u55AE\u9805\u76EE
+menubar=\u529F\u80FD\u8868\u5217
+menu=\u529F\u80FD\u8868
+menuitem=\u529F\u80FD\u8868\u9805\u76EE
+optionpane=\u9078\u9805\u7A97\u683C
+pagetab=\u9801\u9762\u9801\u7C64
+pagetablist=\u9801\u9762\u9801\u7C64\u6E05\u55AE
+panel=\u9762\u677F
+passwordtext=\u5BC6\u78BC\u6587\u5B57
+popupmenu=\u5373\u73FE\u5F0F\u529F\u80FD\u8868
+progressbar=\u9032\u5EA6\u5217
+pushbutton=\u4E0B\u58D3\u6309\u9215
+radiobutton=\u55AE\u9078\u9215
+rootpane=root \u7A97\u683C
+rowheader=\u5217\u6A19\u984C
+scrollbar=\u6372\u8EF8
+scrollpane=\u6372\u52D5\u7A97\u683C
 separator=\u5206\u9694\u5143
-slider=\u6ed1\u52d5\u8ef8
-splitpane=\u5206\u5272\u7a97\u683c
-swingcomponent=Swing \u5143\u4ef6
-table=\u8868\u683c
-text=\u6587\u5b57
-tree=\u6a39\u72c0\u7d50\u69cb
-togglebutton=\u5207\u63db\u6309\u9215
-toolbar=\u5de5\u5177\u5217
-tooltip=\u5de5\u5177\u63d0\u793a
-unknown=\u672a\u77e5
-viewport=\u6aa2\u8996\u5340
-window=\u8996\u7a97
+slider=\u6ED1\u52D5\u8EF8
+splitpane=\u5206\u5272\u7A97\u683C
+swingcomponent=Swing \u5143\u4EF6
+table=\u8868\u683C
+text=\u6587\u5B57
+tree=\u6A39\u72C0\u7D50\u69CB
+togglebutton=\u5207\u63DB\u6309\u9215
+toolbar=\u5DE5\u5177\u5217
+tooltip=\u5DE5\u5177\u63D0\u793A
+unknown=\u4E0D\u660E\u7684
+viewport=\u6AA2\u8996\u5340
+window=\u8996\u7A97
 #
 # accessible relations
 #
-labelFor=\u6a19\u793a\u5c0d\u8c61
-labeledBy=\u6a19\u793a\u8005
-memberOf=\u6240\u5c6c\u6210\u54e1
-controlledBy=\u63a7\u5236\u8005
-controllerFor=\u63a7\u5236\u5c0d\u8c61
+labelFor=\u6A19\u793A\u5C0D\u8C61
+labeledBy=\u6A19\u793A\u8005
+memberOf=\u6240\u5C6C\u6210\u54E1
+controlledBy=\u63A7\u5236\u8005
+controllerFor=\u63A7\u5236\u5C0D\u8C61
 #
 # accessible states
 #
-active=\u4f5c\u7528\u4e2d
-armed=\u5df2\u914d\u5099
-busy=\u5fd9\u788c\u4e2d
-checked=\u5df2\u6838\u9078
-collapsed=\u5df2\u6536\u7e2e
-editable=\u53ef\u7de8\u8f2f
-expandable=\u53ef\u64f4\u5c55
-expanded=\u5df2\u64f4\u5c55
-enabled=\u5df2\u555f\u52d5
-focusable=\u53ef\u805a\u7126
-focused=\u5df2\u805a\u7126
-iconified=\u5df2\u5716\u793a\u5316
-modal=\u6a21\u614b
-multiline=\u591a\u884c
-multiselectable=\u53ef\u591a\u91cd\u9078\u53d6
-opaque=\u4e0d\u900f\u660e
-pressed=\u5df2\u6309\u4e0b
-resizable=\u53ef\u8abf\u6574\u5927\u5c0f
-selectable=\u53ef\u9078\u53d6
-selected=\u5df2\u9078\u53d6
-showing=\u986f\u793a
-singleline=\u55ae\u884c
-transient=\u66ab\u6642\u7684
-visible=\u53ef\u898b\u7684
-vertical=\u5782\u76f4
-horizontal=\u6c34\u5e73
+active=\u4F5C\u7528\u4E2D
+armed=\u5DF2\u914D\u5099
+busy=\u5FD9\u788C\u4E2D
+checked=\u5DF2\u6838\u9078
+collapsed=\u5DF2\u6536\u7E2E
+editable=\u53EF\u7DE8\u8F2F
+expandable=\u53EF\u64F4\u5C55
+expanded=\u5DF2\u64F4\u5C55
+enabled=\u5DF2\u555F\u7528
+focusable=\u53EF\u805A\u7126
+focused=\u5DF2\u805A\u7126
+iconified=\u5DF2\u5716\u793A\u5316
+modal=\u6A21\u614B
+multiline=\u591A\u884C
+multiselectable=\u53EF\u591A\u91CD\u9078\u53D6
+opaque=\u4E0D\u900F\u660E
+pressed=\u5DF2\u6309\u4E0B
+resizable=\u53EF\u8ABF\u6574\u5927\u5C0F
+selectable=\u53EF\u9078\u53D6
+selected=\u5DF2\u9078\u53D6
+showing=\u986F\u793A
+singleline=\u55AE\u884C
+transient=\u66AB\u6642\u7684
+visible=\u53EF\u898B\u7684
+vertical=\u5782\u76F4
+horizontal=\u6C34\u5E73
 #
 # accessible actions
 #
-toggle expand=\u5207\u63db\u64f4\u5c55
+toggle expand=\u5207\u63DB\u64F4\u5C55
 
 # new relations, roles and states for J2SE 1.5.0
 
 # 
 # accessible relations
 #
-flowsTo=\u6d41\u52d5\u81f3
-flowsFrom=\u6d41\u52d5\u81ea
-subwindowOf=\u5b50\u8996\u7a97
-parentWindowOf=\u7236\u7cfb\u8996\u7a97
-embeds=\u5167\u5d4c
-embeddedBy=\u5167\u5d4c\u8005
-childNodeOf=\u5b50\u7bc0\u9ede
+flowsTo=\u6D41\u52D5\u81F3
+flowsFrom=\u6D41\u52D5\u81EA
+subwindowOf=\u5B50\u8996\u7A97
+parentWindowOf=\u7236\u7CFB\u8996\u7A97
+embeds=\u5167\u5D4C
+embeddedBy=\u5167\u5D4C\u8005
+childNodeOf=\u5B50\u7BC0\u9EDE
 
 #
 # accessible roles
 #
 header=\u9801\u9996
-footer=\u9801\u5c3e
-paragraph=\u6bb5\u843d
-ruler=\u6a19\u5c3a
-editbar=\u7de8\u8f2f\u5217
-progressMonitor=\u9032\u5ea6\u76e3\u8996\u5668
+footer=\u9801\u5C3E
+paragraph=\u6BB5\u843D
+ruler=\u5C3A\u898F
+editbar=\u7DE8\u8F2F\u5217
+progressMonitor=\u9032\u5EA6\u76E3\u8996\u5668
 
 #
 # accessible states
 #
-managesDescendants=\u7ba1\u7406\u5b50\u4ee3
-indeterminate=\u4e0d\u78ba\u5b9a
-truncated=\u5df2\u622a\u65b7
+managesDescendants=\u7BA1\u7406\u5B50\u4EE3
+indeterminate=\u4E0D\u78BA\u5B9A
+truncated=\u5DF2\u622A\u65B7
 
 # new for J2SE 1.6.0
 
 #
 # accessible roles
 #
-htmlcontainer=HTML \u5bb9\u5668
+htmlcontainer=HTML \u5BB9\u5668
 
 #
 # END OF MATERIAL TO LOCALIZE
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_de.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_de.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -21,19 +21,19 @@
 # character of GTKColorChooserPanel.hueText should be underlined to
 # represent the mnemonic.
 GTKColorChooserPanel.hueText=Farbton:
-GTKColorChooserPanel.hueMnemonic=70
+GTKColorChooserPanel.hueMnemonic=72
 
 GTKColorChooserPanel.redText=Rot:
-GTKColorChooserPanel.redMnemonic=82
+GTKColorChooserPanel.redMnemonic=69
 
-GTKColorChooserPanel.saturationText=S\u00e4ttigung:
+GTKColorChooserPanel.saturationText=S\u00E4ttigung:
 GTKColorChooserPanel.saturationMnemonic=83
 
-GTKColorChooserPanel.greenText=Gr\u00fcn:
+GTKColorChooserPanel.greenText=Gr\u00FCn:
 GTKColorChooserPanel.greenMnemonic=71
 
 GTKColorChooserPanel.valueText=Wert:
-GTKColorChooserPanel.valueMnemonic=87
+GTKColorChooserPanel.valueMnemonic=86
 
 GTKColorChooserPanel.blueText=Blau:
 GTKColorChooserPanel.blueMnemonic=66
@@ -49,35 +49,35 @@
 FileChooser.newFolderButtonText=Neuer Ordner
 FileChooser.newFolderButtonMnemonic=78
 FileChooser.newFolderDialogText=Ordnername:
-FileChooser.newFolderNoDirectoryErrorTitleText=Error
-FileChooser.newFolderNoDirectoryErrorText=Error creating directory "{0}": No such file or directory
-FileChooser.deleteFileButtonText=Datei l\u00f6schen
+FileChooser.newFolderNoDirectoryErrorTitleText=Fehler
+FileChooser.newFolderNoDirectoryErrorText=Fehler beim Erstellen von Verzeichnis "{0}": Datei oder Verzeichnis nicht vorhanden
+FileChooser.deleteFileButtonText=Datei l\u00F6schen
 FileChooser.deleteFileButtonMnemonic=76
 FileChooser.renameFileButtonText=Datei umbenennen
-FileChooser.renameFileButtonMnemonic=87
+FileChooser.renameFileButtonMnemonic=82
 FileChooser.cancelButtonText=Abbrechen
-FileChooser.cancelButtonMnemonic=83
-FileChooser.saveButtonText=Speichern
-FileChooser.saveButtonMnemonic=69
+FileChooser.cancelButtonMnemonic=67
+FileChooser.saveButtonText=OK
+FileChooser.saveButtonMnemonic=79
 FileChooser.openButtonText=OK
 FileChooser.openButtonMnemonic=79
 FileChooser.saveDialogTitleText=Speichern
-FileChooser.openDialogTitleText=\u00d6ffnen
+FileChooser.openDialogTitleText=\u00D6ffnen
 FileChooser.pathLabelText=Auswahl:
 FileChooser.filterLabelText=Filter:
 FileChooser.pathLabelMnemonic=83
 FileChooser.foldersLabelText=Ordner
-FileChooser.foldersLabelMnemonic=82
+FileChooser.foldersLabelMnemonic=68
 FileChooser.filesLabelText=Dateien
 FileChooser.filesLabelMnemonic=70
 
-FileChooser.cancelButtonToolTipText=Farbauswahl abbrechen
-FileChooser.saveButtonToolTipText=Ausgew\u00e4hlte Datei speichern
-FileChooser.openButtonToolTipText=Ausgew\u00e4hlte Datei \u00f6ffnen
+FileChooser.cancelButtonToolTipText=Dialogfeld f\u00FCr Dateiauswahl schlie\u00DFen.
+FileChooser.saveButtonToolTipText=Ausgew\u00E4hlte Datei speichern.
+FileChooser.openButtonToolTipText=Ausgew\u00E4hlte Datei \u00F6ffnen.
 
 FileChooser.renameFileDialogText=Datei "{0}" umbenennen in
 FileChooser.renameFileErrorTitle=Fehler 
 FileChooser.renameFileErrorText=Fehler beim Umbenennen der Datei "{0}" in "{1}"
 
 OptionPane.okButtonMnemonic=79
-OptionPane.cancelButtonMnemonic=83
+OptionPane.cancelButtonMnemonic=67
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_es.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_es.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -6,7 +6,7 @@
 # GTK specific properties
 
 # GTK color chooser properties:
-GTKColorChooserPanel.nameText=Selector de color para GTK
+GTKColorChooserPanel.nameText=Selector de Color para GTK
 # mnemonic as a VK_ constant
 GTKColorChooserPanel.mnemonic=71
 # Can also define GTKColorChooserPanel.dispalyedMnemonicIndex if you
@@ -20,64 +20,64 @@
 # GTKColorChooserPanel.hueMnemonicIndex=1 would indicate the second
 # character of GTKColorChooserPanel.hueText should be underlined to
 # represent the mnemonic.
-GTKColorChooserPanel.hueText=Tono:
-GTKColorChooserPanel.hueMnemonic=84
+GTKColorChooserPanel.hueText=Matiz:
+GTKColorChooserPanel.hueMnemonic=72
 
 GTKColorChooserPanel.redText=Rojo:
-GTKColorChooserPanel.redMnemonic=82
+GTKColorChooserPanel.redMnemonic=69
 
-GTKColorChooserPanel.saturationText=Saturaci\u00f3n:
+GTKColorChooserPanel.saturationText=Saturaci\u00F3n:
 GTKColorChooserPanel.saturationMnemonic=83
 
 GTKColorChooserPanel.greenText=Verde:
-GTKColorChooserPanel.greenMnemonic=86
+GTKColorChooserPanel.greenMnemonic=71
 
 GTKColorChooserPanel.valueText=Valor:
-GTKColorChooserPanel.valueMnemonic=65
+GTKColorChooserPanel.valueMnemonic=86
 
 GTKColorChooserPanel.blueText=Azul:
-GTKColorChooserPanel.blueMnemonic=65
+GTKColorChooserPanel.blueMnemonic=66
 
-GTKColorChooserPanel.colorNameText=Nombre del color:
+GTKColorChooserPanel.colorNameText=Nombre del Color:
 GTKColorChooserPanel.colorNameMnemonic=78
 
 
 
 ############ FILE CHOOSER STRINGS #############
 
-FileChooser.acceptAllFileFilterText=Todos los archivos
-FileChooser.newFolderButtonText=Nueva carpeta
+FileChooser.acceptAllFileFilterText=Todos los Archivos
+FileChooser.newFolderButtonText=Nueva Carpeta
 FileChooser.newFolderButtonMnemonic=78
-FileChooser.newFolderDialogText=Nombre de la carpeta:
+FileChooser.newFolderDialogText=Nombre de la Carpeta:
 FileChooser.newFolderNoDirectoryErrorTitleText=Error
-FileChooser.newFolderNoDirectoryErrorText=Error creating directory "{0}": No such file or directory
-FileChooser.deleteFileButtonText=Eliminar archivo
+FileChooser.newFolderNoDirectoryErrorText=Error al crear el directorio "{0}": no existe dicho archivo o directorio
+FileChooser.deleteFileButtonText=Suprimir Archivo
 FileChooser.deleteFileButtonMnemonic=76
-FileChooser.renameFileButtonText=Renombrar archivo
+FileChooser.renameFileButtonText=Cambiar Nombre a Archivo
 FileChooser.renameFileButtonMnemonic=82
 FileChooser.cancelButtonText=Cancelar
 FileChooser.cancelButtonMnemonic=67
-FileChooser.saveButtonText=Guardar
-FileChooser.saveButtonMnemonic=82
+FileChooser.saveButtonText=Aceptar
+FileChooser.saveButtonMnemonic=79
 FileChooser.openButtonText=Aceptar
 FileChooser.openButtonMnemonic=79
 FileChooser.saveDialogTitleText=Guardar
 FileChooser.openDialogTitleText=Abrir
-FileChooser.pathLabelText=Selecci\u00f3n:
+FileChooser.pathLabelText=Selecci\u00F3n:
 FileChooser.filterLabelText=Filtro:
 FileChooser.pathLabelMnemonic=83
 FileChooser.foldersLabelText=Carpetas
-FileChooser.foldersLabelMnemonic=74
+FileChooser.foldersLabelMnemonic=68
 FileChooser.filesLabelText=Archivos
 FileChooser.filesLabelMnemonic=70
 
-FileChooser.cancelButtonToolTipText=Cancelar cuadro de di\u00e1logo de selecci\u00f3n de archivos.
+FileChooser.cancelButtonToolTipText=Abortar cuadro de di\u00E1logo del selector de archivos.
 FileChooser.saveButtonToolTipText=Guardar el archivo seleccionado.
 FileChooser.openButtonToolTipText=Abrir el archivo seleccionado.
 
 FileChooser.renameFileDialogText=Cambiar el nombre del archivo "{0}" por
 FileChooser.renameFileErrorTitle=Error 
-FileChooser.renameFileErrorText=Error al cambiar el nombre del archivo "{0}" por "{1}"
+FileChooser.renameFileErrorText=Error al cambiar el nombre del archivo "{0}" a "{1}"
 
 OptionPane.okButtonMnemonic=79
 OptionPane.cancelButtonMnemonic=67
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_fr.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_fr.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -6,7 +6,7 @@
 # GTK specific properties
 
 # GTK color chooser properties:
-GTKColorChooserPanel.nameText=S\u00e9lectionneur de couleur GTK
+GTKColorChooserPanel.nameText=S\u00E9lecteur de couleurs GTK
 # mnemonic as a VK_ constant
 GTKColorChooserPanel.mnemonic=71
 # Can also define GTKColorChooserPanel.dispalyedMnemonicIndex if you
@@ -20,25 +20,25 @@
 # GTKColorChooserPanel.hueMnemonicIndex=1 would indicate the second
 # character of GTKColorChooserPanel.hueText should be underlined to
 # represent the mnemonic.
-GTKColorChooserPanel.hueText=Teinte\u00a0:
-GTKColorChooserPanel.hueMnemonic=84
+GTKColorChooserPanel.hueText=Teinte\u00A0:
+GTKColorChooserPanel.hueMnemonic=72
 
-GTKColorChooserPanel.redText=Rouge\u00a0:
-GTKColorChooserPanel.redMnemonic=82
+GTKColorChooserPanel.redText=Rouge\u00A0:
+GTKColorChooserPanel.redMnemonic=69
 
-GTKColorChooserPanel.saturationText=Saturation\u00a0:
+GTKColorChooserPanel.saturationText=Saturation\u00A0:
 GTKColorChooserPanel.saturationMnemonic=83
 
-GTKColorChooserPanel.greenText=Vert\u00a0:
-GTKColorChooserPanel.greenMnemonic=69
+GTKColorChooserPanel.greenText=Vert\u00A0:
+GTKColorChooserPanel.greenMnemonic=71
 
-GTKColorChooserPanel.valueText=Valeur\u00a0:
+GTKColorChooserPanel.valueText=Valeur\u00A0:
 GTKColorChooserPanel.valueMnemonic=86
 
-GTKColorChooserPanel.blueText=Bleu\u00a0:
+GTKColorChooserPanel.blueText=Bleu\u00A0:
 GTKColorChooserPanel.blueMnemonic=66
 
-GTKColorChooserPanel.colorNameText=Nom de la couleur\u00a0:
+GTKColorChooserPanel.colorNameText=Nom de la couleur\u00A0:
 GTKColorChooserPanel.colorNameMnemonic=78
 
 
@@ -48,34 +48,34 @@
 FileChooser.acceptAllFileFilterText=Tous les fichiers
 FileChooser.newFolderButtonText=Nouveau dossier
 FileChooser.newFolderButtonMnemonic=78
-FileChooser.newFolderDialogText=Nom de dossier:
-FileChooser.newFolderNoDirectoryErrorTitleText=Error
-FileChooser.newFolderNoDirectoryErrorText=Error creating directory "{0}": No such file or directory
+FileChooser.newFolderDialogText=Nom du dossier :
+FileChooser.newFolderNoDirectoryErrorTitleText=Erreur
+FileChooser.newFolderNoDirectoryErrorText=Erreur lors de la cr\u00E9ation du r\u00E9pertoire "{0}" : ce fichier ou r\u00E9pertoire n''existe pas
 FileChooser.deleteFileButtonText=Supprimer le fichier
 FileChooser.deleteFileButtonMnemonic=76
 FileChooser.renameFileButtonText=Renommer le fichier
 FileChooser.renameFileButtonMnemonic=82
 FileChooser.cancelButtonText=Annuler
-FileChooser.cancelButtonMnemonic=70
-FileChooser.saveButtonText=Enregistrer
+FileChooser.cancelButtonMnemonic=67
+FileChooser.saveButtonText=OK
 FileChooser.saveButtonMnemonic=79
 FileChooser.openButtonText=OK
 FileChooser.openButtonMnemonic=79
 FileChooser.saveDialogTitleText=Enregistrer
 FileChooser.openDialogTitleText=Ouvrir
-FileChooser.pathLabelText=S\u00e9lection\u00a0:
+FileChooser.pathLabelText=S\u00E9lection\u00A0:
 FileChooser.filterLabelText=Filtre :
 FileChooser.pathLabelMnemonic=83
 FileChooser.foldersLabelText=Dossiers
-FileChooser.foldersLabelMnemonic=71
+FileChooser.foldersLabelMnemonic=68
 FileChooser.filesLabelText=Fichiers
 FileChooser.filesLabelMnemonic=70
 
-FileChooser.cancelButtonToolTipText=Abandonner la bo\u00eete de dialogue du s\u00e9lectionneur de fichier.
-FileChooser.saveButtonToolTipText=Enregistrer le fichier s\u00e9lectionn\u00e9.
-FileChooser.openButtonToolTipText=Ouvrir le fichier s\u00e9lectionn\u00e9.
+FileChooser.cancelButtonToolTipText=Ferme la bo\u00EEte de dialogue du s\u00E9lecteur de fichiers.
+FileChooser.saveButtonToolTipText=Enregistre le fichier s\u00E9lectionn\u00E9.
+FileChooser.openButtonToolTipText=Ouvre le fichier s\u00E9lectionn\u00E9.
 
-FileChooser.renameFileDialogText=Renommer le fichier "{0}" en
+FileChooser.renameFileDialogText=Renomme le fichier "{0}" en
 FileChooser.renameFileErrorTitle=Erreur 
 FileChooser.renameFileErrorText=Erreur lors du changement de nom du fichier "{0}" en "{1}"
 
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_it.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_it.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -20,17 +20,17 @@
 # GTKColorChooserPanel.hueMnemonicIndex=1 would indicate the second
 # character of GTKColorChooserPanel.hueText should be underlined to
 # represent the mnemonic.
-GTKColorChooserPanel.hueText=Tonalit\u00e0:
-GTKColorChooserPanel.hueMnemonic=84
+GTKColorChooserPanel.hueText=Tonalit\u00E0:
+GTKColorChooserPanel.hueMnemonic=72
 
 GTKColorChooserPanel.redText=Rosso:
-GTKColorChooserPanel.redMnemonic=82
+GTKColorChooserPanel.redMnemonic=69
 
 GTKColorChooserPanel.saturationText=Saturazione:
 GTKColorChooserPanel.saturationMnemonic=83
 
 GTKColorChooserPanel.greenText=Verde:
-GTKColorChooserPanel.greenMnemonic=69
+GTKColorChooserPanel.greenMnemonic=71
 
 GTKColorChooserPanel.valueText=Valore:
 GTKColorChooserPanel.valueMnemonic=86
@@ -49,16 +49,16 @@
 FileChooser.newFolderButtonText=Nuova cartella
 FileChooser.newFolderButtonMnemonic=78
 FileChooser.newFolderDialogText=Nome della cartella:
-FileChooser.newFolderNoDirectoryErrorTitleText=Error
-FileChooser.newFolderNoDirectoryErrorText=Error creating directory "{0}": No such file or directory
+FileChooser.newFolderNoDirectoryErrorTitleText=Errore
+FileChooser.newFolderNoDirectoryErrorText=Errore durante la creazione della directory "{0}": file o directory inesistente
 FileChooser.deleteFileButtonText=Elimina file
 FileChooser.deleteFileButtonMnemonic=76
 FileChooser.renameFileButtonText=Rinomina file
 FileChooser.renameFileButtonMnemonic=82
 FileChooser.cancelButtonText=Annulla
 FileChooser.cancelButtonMnemonic=67
-FileChooser.saveButtonText=Salva
-FileChooser.saveButtonMnemonic=82
+FileChooser.saveButtonText=OK
+FileChooser.saveButtonMnemonic=79
 FileChooser.openButtonText=OK
 FileChooser.openButtonMnemonic=79
 FileChooser.saveDialogTitleText=Salva
@@ -67,17 +67,17 @@
 FileChooser.filterLabelText=Filtro:
 FileChooser.pathLabelMnemonic=83
 FileChooser.foldersLabelText=Cartelle
-FileChooser.foldersLabelMnemonic=79
+FileChooser.foldersLabelMnemonic=68
 FileChooser.filesLabelText=File
 FileChooser.filesLabelMnemonic=70
 
-FileChooser.cancelButtonToolTipText=Chiude la finestra di dialogo di selezione colore.
+FileChooser.cancelButtonToolTipText=Chiude la finestra di dialogo di selezione file.
 FileChooser.saveButtonToolTipText=Salva il file selezionato.
 FileChooser.openButtonToolTipText=Apre il file selezionato.
 
-FileChooser.renameFileDialogText=Rinomina del file "{0}" in
+FileChooser.renameFileDialogText=Rinomina file "{0}" in
 FileChooser.renameFileErrorTitle=Errore 
-FileChooser.renameFileErrorText=Errore nella rinomina del file "{0}" in "{1}"
+FileChooser.renameFileErrorText=Errore durante la ridenominazione del file "{0}" in "{1}"
 
 OptionPane.okButtonMnemonic=79
 OptionPane.cancelButtonMnemonic=67
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ja.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ja.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -6,7 +6,7 @@
 # GTK specific properties
 
 # GTK color chooser properties:
-GTKColorChooserPanel.nameText=GTK \u30ab\u30e9\u30fc\u30c1\u30e5\u30fc\u30b6
+GTKColorChooserPanel.nameText=GTK\u30AB\u30E9\u30FC\u30FB\u30C1\u30E5\u30FC\u30B6
 # mnemonic as a VK_ constant
 GTKColorChooserPanel.mnemonic=71
 # Can also define GTKColorChooserPanel.dispalyedMnemonicIndex if you
@@ -20,64 +20,64 @@
 # GTKColorChooserPanel.hueMnemonicIndex=1 would indicate the second
 # character of GTKColorChooserPanel.hueText should be underlined to
 # represent the mnemonic.
-GTKColorChooserPanel.hueText=\u8272\u5408\u3044(H):
+GTKColorChooserPanel.hueText=\u8272\u76F8:
 GTKColorChooserPanel.hueMnemonic=72
 
-GTKColorChooserPanel.redText=\u8d64(E):
+GTKColorChooserPanel.redText=\u8D64:
 GTKColorChooserPanel.redMnemonic=69
 
-GTKColorChooserPanel.saturationText=\u5f69\u5ea6(S):
+GTKColorChooserPanel.saturationText=\u5F69\u5EA6:
 GTKColorChooserPanel.saturationMnemonic=83
 
-GTKColorChooserPanel.greenText=\u7dd1(G):
+GTKColorChooserPanel.greenText=\u7DD1:
 GTKColorChooserPanel.greenMnemonic=71
 
-GTKColorChooserPanel.valueText=\u5024(V):
+GTKColorChooserPanel.valueText=\u5024:
 GTKColorChooserPanel.valueMnemonic=86
 
-GTKColorChooserPanel.blueText=\u9752(B):
+GTKColorChooserPanel.blueText=\u9752:
 GTKColorChooserPanel.blueMnemonic=66
 
-GTKColorChooserPanel.colorNameText=\u8272\u540d(N):
+GTKColorChooserPanel.colorNameText=\u8272\u540D:
 GTKColorChooserPanel.colorNameMnemonic=78
 
 
 
 ############ FILE CHOOSER STRINGS #############
 
-FileChooser.acceptAllFileFilterText=\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb
-FileChooser.newFolderButtonText=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0
+FileChooser.acceptAllFileFilterText=\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB
+FileChooser.newFolderButtonText=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0
 FileChooser.newFolderButtonMnemonic=78
-FileChooser.newFolderDialogText=\u30d5\u30a9\u30eb\u30c0\u540d:
-FileChooser.newFolderNoDirectoryErrorTitleText=Error
-FileChooser.newFolderNoDirectoryErrorText=Error creating directory "{0}": No such file or directory
-FileChooser.deleteFileButtonText=\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664
+FileChooser.newFolderDialogText=\u30D5\u30A9\u30EB\u30C0\u540D:
+FileChooser.newFolderNoDirectoryErrorTitleText=\u30A8\u30E9\u30FC
+FileChooser.newFolderNoDirectoryErrorText=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA"{0}"\u306E\u4F5C\u6210\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F: \u3053\u306E\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306F\u5B58\u5728\u3057\u307E\u305B\u3093
+FileChooser.deleteFileButtonText=\u30D5\u30A1\u30A4\u30EB\u306E\u524A\u9664
 FileChooser.deleteFileButtonMnemonic=76
-FileChooser.renameFileButtonText=\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u5909\u66f4
+FileChooser.renameFileButtonText=\u30D5\u30A1\u30A4\u30EB\u306E\u540D\u524D\u5909\u66F4
 FileChooser.renameFileButtonMnemonic=82
-FileChooser.cancelButtonText=\u53d6\u6d88\u3057
+FileChooser.cancelButtonText=\u53D6\u6D88
 FileChooser.cancelButtonMnemonic=67
-FileChooser.saveButtonText=\u4fdd\u5b58
+FileChooser.saveButtonText=OK
 FileChooser.saveButtonMnemonic=79
-FileChooser.openButtonText=\u4e86\u89e3
+FileChooser.openButtonText=OK
 FileChooser.openButtonMnemonic=79
-FileChooser.saveDialogTitleText=\u4fdd\u5b58
-FileChooser.openDialogTitleText=\u958b\u304f
-FileChooser.pathLabelText=\u9078\u629e:
-FileChooser.filterLabelText=\u30d5\u30a3\u30eb\u30bf:
+FileChooser.saveDialogTitleText=\u4FDD\u5B58
+FileChooser.openDialogTitleText=\u958B\u304F
+FileChooser.pathLabelText=\u9078\u629E:
+FileChooser.filterLabelText=\u30D5\u30A3\u30EB\u30BF:
 FileChooser.pathLabelMnemonic=83
-FileChooser.foldersLabelText=\u30d5\u30a9\u30eb\u30c0
+FileChooser.foldersLabelText=\u30D5\u30A9\u30EB\u30C0
 FileChooser.foldersLabelMnemonic=68
-FileChooser.filesLabelText=\u30d5\u30a1\u30a4\u30eb
+FileChooser.filesLabelText=\u30D5\u30A1\u30A4\u30EB
 FileChooser.filesLabelMnemonic=70
 
-FileChooser.cancelButtonToolTipText=\u30d5\u30a1\u30a4\u30eb\u30c1\u30e5\u30fc\u30b6\u30c0\u30a4\u30a2\u30ed\u30b0\u3092\u5f37\u5236\u7d42\u4e86
-FileChooser.saveButtonToolTipText=\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58
-FileChooser.openButtonToolTipText=\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f
+FileChooser.cancelButtonToolTipText=\u30D5\u30A1\u30A4\u30EB\u30FB\u30C1\u30E5\u30FC\u30B6\u30FB\u30C0\u30A4\u30A2\u30ED\u30B0\u3092\u7D42\u4E86\u3057\u307E\u3059\u3002
+FileChooser.saveButtonToolTipText=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u4FDD\u5B58\u3057\u307E\u3059\u3002
+FileChooser.openButtonToolTipText=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304D\u307E\u3059\u3002
 
-FileChooser.renameFileDialogText=\u30d5\u30a1\u30a4\u30eb "{0}" \u306e\u540d\u524d\u3092\u5909\u66f4:
-FileChooser.renameFileErrorTitle=\u30a8\u30e9\u30fc 
-FileChooser.renameFileErrorText=\u30d5\u30a1\u30a4\u30eb "{0}" \u3092 "{1}" \u3078\u5909\u66f4\u6642\u306b\u30a8\u30e9\u30fc
+FileChooser.renameFileDialogText=\u30D5\u30A1\u30A4\u30EB"{0}"\u3092\u6B21\u306E\u540D\u524D\u306B\u5909\u66F4:
+FileChooser.renameFileErrorTitle=\u30A8\u30E9\u30FC 
+FileChooser.renameFileErrorText=\u30D5\u30A1\u30A4\u30EB"{0}"\u306E"{1}"\u3078\u306E\u5909\u66F4\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
 
 OptionPane.okButtonMnemonic=79
 OptionPane.cancelButtonMnemonic=67
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ko.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ko.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -6,7 +6,7 @@
 # GTK specific properties
 
 # GTK color chooser properties:
-GTKColorChooserPanel.nameText=GTK \uc0c9 \uc120\ud0dd
+GTKColorChooserPanel.nameText=GTK \uC0C9\uC0C1 \uC120\uD0DD\uAE30
 # mnemonic as a VK_ constant
 GTKColorChooserPanel.mnemonic=71
 # Can also define GTKColorChooserPanel.dispalyedMnemonicIndex if you
@@ -20,64 +20,64 @@
 # GTKColorChooserPanel.hueMnemonicIndex=1 would indicate the second
 # character of GTKColorChooserPanel.hueText should be underlined to
 # represent the mnemonic.
-GTKColorChooserPanel.hueText=\uc0c9\uc0c1(H):
+GTKColorChooserPanel.hueText=\uC0C9\uC870:
 GTKColorChooserPanel.hueMnemonic=72
 
-GTKColorChooserPanel.redText=\ube68\uac15(E):
+GTKColorChooserPanel.redText=\uBE68\uAC04\uC0C9:
 GTKColorChooserPanel.redMnemonic=69
 
-GTKColorChooserPanel.saturationText=\ucc44\ub3c4(S):
+GTKColorChooserPanel.saturationText=\uCC44\uB3C4:
 GTKColorChooserPanel.saturationMnemonic=83
 
-GTKColorChooserPanel.greenText=\ub179\uc0c9(G):
+GTKColorChooserPanel.greenText=\uB179\uC0C9:
 GTKColorChooserPanel.greenMnemonic=71
 
-GTKColorChooserPanel.valueText=\uac12(V):
+GTKColorChooserPanel.valueText=\uAC12:
 GTKColorChooserPanel.valueMnemonic=86
 
-GTKColorChooserPanel.blueText=\ud30c\ub791(B):
+GTKColorChooserPanel.blueText=\uD30C\uB780\uC0C9:
 GTKColorChooserPanel.blueMnemonic=66
 
-GTKColorChooserPanel.colorNameText=\uc0c9 \uc774\ub984(N):
+GTKColorChooserPanel.colorNameText=\uC0C9\uC0C1 \uC774\uB984:
 GTKColorChooserPanel.colorNameMnemonic=78
 
 
 
 ############ FILE CHOOSER STRINGS #############
 
-FileChooser.acceptAllFileFilterText=\ubaa8\ub4e0 \ud30c\uc77c
-FileChooser.newFolderButtonText=\uc0c8 \ud3f4\ub354
+FileChooser.acceptAllFileFilterText=\uBAA8\uB4E0 \uD30C\uC77C
+FileChooser.newFolderButtonText=\uC0C8 \uD3F4\uB354
 FileChooser.newFolderButtonMnemonic=78
-FileChooser.newFolderDialogText=\ud3f4\ub354 \uc774\ub984:
-FileChooser.newFolderNoDirectoryErrorTitleText=Error
-FileChooser.newFolderNoDirectoryErrorText=Error creating directory "{0}": No such file or directory
-FileChooser.deleteFileButtonText=\ud30c\uc77c \uc0ad\uc81c
+FileChooser.newFolderDialogText=\uD3F4\uB354 \uC774\uB984:
+FileChooser.newFolderNoDirectoryErrorTitleText=\uC624\uB958
+FileChooser.newFolderNoDirectoryErrorText="{0}" \uB514\uB809\uD1A0\uB9AC\uB97C \uC0DD\uC131\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: \uD574\uB2F9 \uD30C\uC77C \uB610\uB294 \uB514\uB809\uD1A0\uB9AC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.
+FileChooser.deleteFileButtonText=\uD30C\uC77C \uC0AD\uC81C
 FileChooser.deleteFileButtonMnemonic=76
-FileChooser.renameFileButtonText=\ud30c\uc77c \uc774\ub984 \ubc14\uafb8\uae30
+FileChooser.renameFileButtonText=\uD30C\uC77C \uC774\uB984 \uBC14\uAFB8\uAE30
 FileChooser.renameFileButtonMnemonic=82
-FileChooser.cancelButtonText=\ucde8\uc18c
+FileChooser.cancelButtonText=\uCDE8\uC18C
 FileChooser.cancelButtonMnemonic=67
-FileChooser.saveButtonText=\uc800\uc7a5
+FileChooser.saveButtonText=\uD655\uC778
 FileChooser.saveButtonMnemonic=79
-FileChooser.openButtonText=\ud655\uc778
+FileChooser.openButtonText=\uD655\uC778
 FileChooser.openButtonMnemonic=79
-FileChooser.saveDialogTitleText=\uc800\uc7a5
-FileChooser.openDialogTitleText=\uc5f4\uae30
-FileChooser.pathLabelText=\uc120\ud0dd:
-FileChooser.filterLabelText=\ud544\ud130:
+FileChooser.saveDialogTitleText=\uC800\uC7A5
+FileChooser.openDialogTitleText=\uC5F4\uAE30
+FileChooser.pathLabelText=\uC120\uD0DD:
+FileChooser.filterLabelText=\uD544\uD130:
 FileChooser.pathLabelMnemonic=83
-FileChooser.foldersLabelText=\ud3f4\ub354
+FileChooser.foldersLabelText=\uD3F4\uB354
 FileChooser.foldersLabelMnemonic=68
-FileChooser.filesLabelText=\ud30c\uc77c
+FileChooser.filesLabelText=\uD30C\uC77C
 FileChooser.filesLabelMnemonic=70
 
-FileChooser.cancelButtonToolTipText=\ud30c\uc77c \uc120\ud0dd \ub300\ud654 \uc0c1\uc790\ub97c \uc911\ub2e8\ud569\ub2c8\ub2e4.
-FileChooser.saveButtonToolTipText=\uc120\ud0dd\ud55c \ud30c\uc77c\uc744 \uc800\uc7a5\ud569\ub2c8\ub2e4.
-FileChooser.openButtonToolTipText=\uc120\ud0dd\ud55c \ud30c\uc77c\uc744 \uc5fd\ub2c8\ub2e4.
+FileChooser.cancelButtonToolTipText=\uD30C\uC77C \uC120\uD0DD\uAE30 \uB300\uD654\uC0C1\uC790\uB97C \uC911\uB2E8\uD569\uB2C8\uB2E4.
+FileChooser.saveButtonToolTipText=\uC120\uD0DD\uB41C \uD30C\uC77C\uC744 \uC800\uC7A5\uD569\uB2C8\uB2E4.
+FileChooser.openButtonToolTipText=\uC120\uD0DD\uB41C \uD30C\uC77C\uC744 \uC5FD\uB2C8\uB2E4.
 
-FileChooser.renameFileDialogText=\ud30c\uc77c "{0}"\uc744 \ub2e4\uc74c\uc73c\ub85c \uc774\ub984 \ubc14\uafb8\uae30
-FileChooser.renameFileErrorTitle=\uc624\ub958 
-FileChooser.renameFileErrorText="{0}"\uc5d0\uc11c "{1}"\ub85c \uc774\ub984 \ubc14\uafb8\uae30 \uc624\ub958
+FileChooser.renameFileDialogText="{0}" \uD30C\uC77C\uC758 \uC774\uB984 \uBC14\uAFB8\uAE30
+FileChooser.renameFileErrorTitle=\uC624\uB958 
+FileChooser.renameFileErrorText="{0}" \uD30C\uC77C\uC758 \uC774\uB984\uC744 "{1}"(\uC73C)\uB85C \uBC14\uAFB8\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
 
 OptionPane.okButtonMnemonic=79
 OptionPane.cancelButtonMnemonic=67
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_pt_BR.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_pt_BR.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -6,7 +6,7 @@
 # GTK specific properties
 
 # GTK color chooser properties:
-GTKColorChooserPanel.nameText=Seletor de cores do GTK
+GTKColorChooserPanel.nameText=Seletor de Cores do GTK
 # mnemonic as a VK_ constant
 GTKColorChooserPanel.mnemonic=71
 # Can also define GTKColorChooserPanel.dispalyedMnemonicIndex if you
@@ -26,7 +26,7 @@
 GTKColorChooserPanel.redText=Vermelho:
 GTKColorChooserPanel.redMnemonic=69
 
-GTKColorChooserPanel.saturationText=Satura\u00e7\u00e3o:
+GTKColorChooserPanel.saturationText=Satura\u00E7\u00E3o:
 GTKColorChooserPanel.saturationMnemonic=83
 
 GTKColorChooserPanel.greenText=Verde:
@@ -38,20 +38,22 @@
 GTKColorChooserPanel.blueText=Azul:
 GTKColorChooserPanel.blueMnemonic=66
 
-GTKColorChooserPanel.colorNameText=Nome da cor:
+GTKColorChooserPanel.colorNameText=Nome da Cor:
 GTKColorChooserPanel.colorNameMnemonic=78
 
 
 
 ############ FILE CHOOSER STRINGS #############
 
-FileChooser.acceptAllFileFilterText=Todos os arquivos
-FileChooser.newFolderButtonText=Nova pasta
+FileChooser.acceptAllFileFilterText=Todos os Arquivos
+FileChooser.newFolderButtonText=Nova Pasta
 FileChooser.newFolderButtonMnemonic=78
 FileChooser.newFolderDialogText=Nome da pasta:
-FileChooser.deleteFileButtonText=Excluir arquivo
+FileChooser.newFolderNoDirectoryErrorTitleText=Erro
+FileChooser.newFolderNoDirectoryErrorText=Erro ao criar o diret\u00F3rio "{0}": N\u00E3o h\u00E1 arquivo ou diret\u00F3rio
+FileChooser.deleteFileButtonText=Deletar Arquivo
 FileChooser.deleteFileButtonMnemonic=76
-FileChooser.renameFileButtonText=Renomear arquivo
+FileChooser.renameFileButtonText=Renomear Arquivo
 FileChooser.renameFileButtonMnemonic=82
 FileChooser.cancelButtonText=Cancelar
 FileChooser.cancelButtonMnemonic=67
@@ -61,7 +63,7 @@
 FileChooser.openButtonMnemonic=79
 FileChooser.saveDialogTitleText=Salvar
 FileChooser.openDialogTitleText=Abrir
-FileChooser.pathLabelText=Sele\u00e7\u00e3o:
+FileChooser.pathLabelText=Sele\u00E7\u00E3o:
 FileChooser.filterLabelText=Filtro:
 FileChooser.pathLabelMnemonic=83
 FileChooser.foldersLabelText=Pastas
@@ -69,7 +71,7 @@
 FileChooser.filesLabelText=Arquivos
 FileChooser.filesLabelMnemonic=70
 
-FileChooser.cancelButtonToolTipText=Anular caixa de di\u00e1logo do seletor de arquivos.
+FileChooser.cancelButtonToolTipText=Abortar caixa de di\u00E1logo do seletor de arquivos.
 FileChooser.saveButtonToolTipText=Salvar arquivo selecionado.
 FileChooser.openButtonToolTipText=Abrir arquivo selecionado.
 
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_sv.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_sv.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -6,7 +6,7 @@
 # GTK specific properties
 
 # GTK color chooser properties:
-GTKColorChooserPanel.nameText=GTK F\u00e4rgv\u00e4ljaren
+GTKColorChooserPanel.nameText=GTK-f\u00E4rgv\u00E4ljaren
 # mnemonic as a VK_ constant
 GTKColorChooserPanel.mnemonic=71
 # Can also define GTKColorChooserPanel.dispalyedMnemonicIndex if you
@@ -21,25 +21,25 @@
 # character of GTKColorChooserPanel.hueText should be underlined to
 # represent the mnemonic.
 GTKColorChooserPanel.hueText=Nyans:
-GTKColorChooserPanel.hueMnemonic=78
+GTKColorChooserPanel.hueMnemonic=72
 
-GTKColorChooserPanel.redText=R\u00f6d:
-GTKColorChooserPanel.redMnemonic=82
+GTKColorChooserPanel.redText=R\u00F6d:
+GTKColorChooserPanel.redMnemonic=69
 
-GTKColorChooserPanel.saturationText=M\u00e4ttnad:
-GTKColorChooserPanel.saturationMnemonic=77
+GTKColorChooserPanel.saturationText=M\u00E4ttnad:
+GTKColorChooserPanel.saturationMnemonic=83
 
-GTKColorChooserPanel.greenText=Gr\u00f6n:
+GTKColorChooserPanel.greenText=Gr\u00F6n:
 GTKColorChooserPanel.greenMnemonic=71
 
-GTKColorChooserPanel.valueText=V\u00e4rde:
+GTKColorChooserPanel.valueText=V\u00E4rde:
 GTKColorChooserPanel.valueMnemonic=86
 
-GTKColorChooserPanel.blueText=Bl\u00e5:
+GTKColorChooserPanel.blueText=Bl\u00E5:
 GTKColorChooserPanel.blueMnemonic=66
 
-GTKColorChooserPanel.colorNameText=F\u00e4rgnamn:
-GTKColorChooserPanel.colorNameMnemonic=70
+GTKColorChooserPanel.colorNameText=F\u00E4rg:
+GTKColorChooserPanel.colorNameMnemonic=78
 
 
 
@@ -47,37 +47,37 @@
 
 FileChooser.acceptAllFileFilterText=Alla filer
 FileChooser.newFolderButtonText=Ny mapp
-FileChooser.newFolderButtonMnemonic=70
+FileChooser.newFolderButtonMnemonic=78
 FileChooser.newFolderDialogText=Mapp:
-FileChooser.newFolderNoDirectoryErrorTitleText=Error
-FileChooser.newFolderNoDirectoryErrorText=Error creating directory "{0}": No such file or directory
+FileChooser.newFolderNoDirectoryErrorTitleText=Fel
+FileChooser.newFolderNoDirectoryErrorText=Ett fel intr\u00E4ffade vid f\u00F6rs\u00F6k att skapa katalogen "{0}": Filen eller katalogen finns inte
 FileChooser.deleteFileButtonText=Ta bort fil
 FileChooser.deleteFileButtonMnemonic=76
-FileChooser.renameFileButtonText=Byt namn p\u00e5 fil
-FileChooser.renameFileButtonMnemonic=84
+FileChooser.renameFileButtonText=Namn\u00E4ndra fil
+FileChooser.renameFileButtonMnemonic=82
 FileChooser.cancelButtonText=Avbryt
-FileChooser.cancelButtonMnemonic=83
-FileChooser.saveButtonText=Spara
-FileChooser.saveButtonMnemonic=80
+FileChooser.cancelButtonMnemonic=67
+FileChooser.saveButtonText=OK
+FileChooser.saveButtonMnemonic=79
 FileChooser.openButtonText=OK
 FileChooser.openButtonMnemonic=79
 FileChooser.saveDialogTitleText=Spara
-FileChooser.openDialogTitleText=\u00d6ppna
-FileChooser.pathLabelText=Markeringen:
+FileChooser.openDialogTitleText=\u00D6ppna
+FileChooser.pathLabelText=Val:
 FileChooser.filterLabelText=Filter:
-FileChooser.pathLabelMnemonic=77
+FileChooser.pathLabelMnemonic=83
 FileChooser.foldersLabelText=Mappar
-FileChooser.foldersLabelMnemonic=82
+FileChooser.foldersLabelMnemonic=68
 FileChooser.filesLabelText=Filer
 FileChooser.filesLabelMnemonic=70
 
-FileChooser.cancelButtonToolTipText=St\u00e4ng dialogrutan f\u00f6r filval.
-FileChooser.saveButtonToolTipText=Spara den markerade filen.
-FileChooser.openButtonToolTipText=\u00d6ppna den markerade filen.
+FileChooser.cancelButtonToolTipText=Avbryt dialogrutan Filv\u00E4ljare.
+FileChooser.saveButtonToolTipText=Spara vald fil.
+FileChooser.openButtonToolTipText=\u00D6ppna vald fil.
 
-FileChooser.renameFileDialogText=Byt namn p\u00e5 fil "{0}" till
+FileChooser.renameFileDialogText=Namn\u00E4ndra fil "{0}" till
 FileChooser.renameFileErrorTitle=Fel 
-FileChooser.renameFileErrorText=Det gick inte att byta namn p\u00e5 fil "{0}" till "{1}"
+FileChooser.renameFileErrorText=Fel vid namn\u00E4ndring av fil "{0}" till "{1}"
 
 OptionPane.okButtonMnemonic=79
-OptionPane.cancelButtonMnemonic=83
+OptionPane.cancelButtonMnemonic=67
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_CN.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_CN.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -6,7 +6,7 @@
 # GTK specific properties
 
 # GTK color chooser properties:
-GTKColorChooserPanel.nameText=GTK Color Chooser
+GTKColorChooserPanel.nameText=GTK \u989C\u8272\u9009\u62E9\u5668
 # mnemonic as a VK_ constant
 GTKColorChooserPanel.mnemonic=71
 # Can also define GTKColorChooserPanel.dispalyedMnemonicIndex if you
@@ -20,64 +20,64 @@
 # GTKColorChooserPanel.hueMnemonicIndex=1 would indicate the second
 # character of GTKColorChooserPanel.hueText should be underlined to
 # represent the mnemonic.
-GTKColorChooserPanel.hueText=\u8272\u8c03(H)\uff1a
+GTKColorChooserPanel.hueText=\u8272\u8C03: 
 GTKColorChooserPanel.hueMnemonic=72
 
-GTKColorChooserPanel.redText=\u7ea2(E)\uff1a
+GTKColorChooserPanel.redText=\u7EA2: 
 GTKColorChooserPanel.redMnemonic=69
 
-GTKColorChooserPanel.saturationText=\u9971\u548c\u5ea6(S)\uff1a
+GTKColorChooserPanel.saturationText=\u9971\u548C\u5EA6: 
 GTKColorChooserPanel.saturationMnemonic=83
 
-GTKColorChooserPanel.greenText=\u7eff(G)\uff1a
+GTKColorChooserPanel.greenText=\u7EFF: 
 GTKColorChooserPanel.greenMnemonic=71
 
-GTKColorChooserPanel.valueText=\u503c(V)\uff1a
+GTKColorChooserPanel.valueText=\u503C: 
 GTKColorChooserPanel.valueMnemonic=86
 
-GTKColorChooserPanel.blueText=\u84dd(B)\uff1a
+GTKColorChooserPanel.blueText=\u84DD: 
 GTKColorChooserPanel.blueMnemonic=66
 
-GTKColorChooserPanel.colorNameText=\u989c\u8272\u540d\u79f0(N)\uff1a
+GTKColorChooserPanel.colorNameText=\u989C\u8272\u540D\u79F0: 
 GTKColorChooserPanel.colorNameMnemonic=78
 
 
 
 ############ FILE CHOOSER STRINGS #############
 
-FileChooser.acceptAllFileFilterText=\u6240\u6709\u6587\u4ef6
-FileChooser.newFolderButtonText=\u65b0\u5efa\u6587\u4ef6\u5939
+FileChooser.acceptAllFileFilterText=\u6240\u6709\u6587\u4EF6
+FileChooser.newFolderButtonText=\u65B0\u5EFA\u6587\u4EF6\u5939
 FileChooser.newFolderButtonMnemonic=78
-FileChooser.newFolderDialogText=\u6587\u4ef6\u5939\u540d\uff1a
-FileChooser.newFolderNoDirectoryErrorTitleText=Error
-FileChooser.newFolderNoDirectoryErrorText=Error creating directory "{0}": No such file or directory
-FileChooser.deleteFileButtonText=\u5220\u9664\u6587\u4ef6
+FileChooser.newFolderDialogText=\u6587\u4EF6\u5939\u540D: 
+FileChooser.newFolderNoDirectoryErrorTitleText=\u9519\u8BEF
+FileChooser.newFolderNoDirectoryErrorText=\u521B\u5EFA\u76EE\u5F55 "{0}" \u65F6\u51FA\u9519: \u6CA1\u6709\u6B64\u7C7B\u6587\u4EF6\u6216\u76EE\u5F55
+FileChooser.deleteFileButtonText=\u5220\u9664\u6587\u4EF6
 FileChooser.deleteFileButtonMnemonic=76
-FileChooser.renameFileButtonText=\u91cd\u547d\u540d\u6587\u4ef6
+FileChooser.renameFileButtonText=\u91CD\u547D\u540D\u6587\u4EF6
 FileChooser.renameFileButtonMnemonic=82
-FileChooser.cancelButtonText=\u53d6\u6d88
+FileChooser.cancelButtonText=\u53D6\u6D88
 FileChooser.cancelButtonMnemonic=67
-FileChooser.saveButtonText=\u4fdd\u5b58
+FileChooser.saveButtonText=\u786E\u5B9A
 FileChooser.saveButtonMnemonic=79
-FileChooser.openButtonText=\u786e\u5b9a
+FileChooser.openButtonText=\u786E\u5B9A
 FileChooser.openButtonMnemonic=79
-FileChooser.saveDialogTitleText=\u4fdd\u5b58
-FileChooser.openDialogTitleText=\u6253\u5f00
-FileChooser.pathLabelText=\u9009\u62e9\uff1a
-FileChooser.filterLabelText=\u8fc7\u6ee4\u5668\uff1a
+FileChooser.saveDialogTitleText=\u4FDD\u5B58
+FileChooser.openDialogTitleText=\u6253\u5F00
+FileChooser.pathLabelText=\u9009\u62E9: 
+FileChooser.filterLabelText=\u7B5B\u9009\u5668: 
 FileChooser.pathLabelMnemonic=83
-FileChooser.foldersLabelText=\u6587\u4ef6\u5939
+FileChooser.foldersLabelText=\u6587\u4EF6\u5939
 FileChooser.foldersLabelMnemonic=68
-FileChooser.filesLabelText=\u6587\u4ef6
+FileChooser.filesLabelText=\u6587\u4EF6
 FileChooser.filesLabelMnemonic=70
 
-FileChooser.cancelButtonToolTipText=\u7ec8\u6b62\u6587\u4ef6\u9009\u62e9\u5668\u5bf9\u8bdd\u6846\u3002
-FileChooser.saveButtonToolTipText=\u4fdd\u5b58\u9009\u5b9a\u7684\u6587\u4ef6\u3002
-FileChooser.openButtonToolTipText=\u6253\u5f00\u9009\u5b9a\u7684\u6587\u4ef6\u3002
+FileChooser.cancelButtonToolTipText=\u4E2D\u6B62\u6587\u4EF6\u9009\u62E9\u5668\u5BF9\u8BDD\u6846\u3002
+FileChooser.saveButtonToolTipText=\u4FDD\u5B58\u6240\u9009\u6587\u4EF6\u3002
+FileChooser.openButtonToolTipText=\u6253\u5F00\u6240\u9009\u6587\u4EF6\u3002
 
-FileChooser.renameFileDialogText=\u5c06\u6587\u4ef6\u201c{0}\u201d\u91cd\u547d\u540d\u4e3a
-FileChooser.renameFileErrorTitle=\u9519\u8bef 
-FileChooser.renameFileErrorText=\u5c06\u6587\u4ef6\u201c{0}\u201d\u91cd\u547d\u540d\u4e3a\u201c{1}\u201d\u65f6\u51fa\u9519
+FileChooser.renameFileDialogText=\u5C06\u6587\u4EF6 "{0}" \u91CD\u547D\u540D\u4E3A
+FileChooser.renameFileErrorTitle=\u9519\u8BEF 
+FileChooser.renameFileErrorText=\u5C06\u6587\u4EF6 "{0}" \u91CD\u547D\u540D\u4E3A "{1}" \u65F6\u51FA\u9519
 
 OptionPane.okButtonMnemonic=79
 OptionPane.cancelButtonMnemonic=67
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_TW.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_zh_TW.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -6,7 +6,7 @@
 # GTK specific properties
 
 # GTK color chooser properties:
-GTKColorChooserPanel.nameText=GTK Color Chooser
+GTKColorChooserPanel.nameText=GTK \u8272\u5F69\u9078\u64C7\u5668
 # mnemonic as a VK_ constant
 GTKColorChooserPanel.mnemonic=71
 # Can also define GTKColorChooserPanel.dispalyedMnemonicIndex if you
@@ -20,64 +20,64 @@
 # GTKColorChooserPanel.hueMnemonicIndex=1 would indicate the second
 # character of GTKColorChooserPanel.hueText should be underlined to
 # represent the mnemonic.
-GTKColorChooserPanel.hueText=\u8272\u8abf(H):
+GTKColorChooserPanel.hueText=\u8272\u8ABF:
 GTKColorChooserPanel.hueMnemonic=72
 
-GTKColorChooserPanel.redText=\u7d05(E):
+GTKColorChooserPanel.redText=\u7D05:
 GTKColorChooserPanel.redMnemonic=69
 
-GTKColorChooserPanel.saturationText=\u98fd\u548c(S):
+GTKColorChooserPanel.saturationText=\u98FD\u548C:
 GTKColorChooserPanel.saturationMnemonic=83
 
-GTKColorChooserPanel.greenText=\u7da0(G):
+GTKColorChooserPanel.greenText=\u7DA0:
 GTKColorChooserPanel.greenMnemonic=71
 
-GTKColorChooserPanel.valueText=\u503c(V):
+GTKColorChooserPanel.valueText=\u503C:
 GTKColorChooserPanel.valueMnemonic=86
 
-GTKColorChooserPanel.blueText=\u85cd(B):
+GTKColorChooserPanel.blueText=\u85CD:
 GTKColorChooserPanel.blueMnemonic=66
 
-GTKColorChooserPanel.colorNameText=\u984f\u8272\u540d\u7a31(N):
+GTKColorChooserPanel.colorNameText=\u984F\u8272\u540D\u7A31:
 GTKColorChooserPanel.colorNameMnemonic=78
 
 
 
 ############ FILE CHOOSER STRINGS #############
 
-FileChooser.acceptAllFileFilterText=\u6240\u6709\u6a94\u6848
-FileChooser.newFolderButtonText=\u65b0\u6a94\u6848\u593e
+FileChooser.acceptAllFileFilterText=\u6240\u6709\u6A94\u6848
+FileChooser.newFolderButtonText=\u65B0\u8CC7\u6599\u593E
 FileChooser.newFolderButtonMnemonic=78
-FileChooser.newFolderDialogText=\u6a94\u6848\u593e\u540d\u7a31:
-FileChooser.newFolderNoDirectoryErrorTitleText=Error
-FileChooser.newFolderNoDirectoryErrorText=Error creating directory "{0}": No such file or directory
-FileChooser.deleteFileButtonText=\u522a\u9664\u6a94\u6848
+FileChooser.newFolderDialogText=\u8CC7\u6599\u593E\u540D\u7A31:
+FileChooser.newFolderNoDirectoryErrorTitleText=\u932F\u8AA4
+FileChooser.newFolderNoDirectoryErrorText=\u5EFA\u7ACB\u76EE\u9304 "{0}" \u6642\u767C\u751F\u932F\u8AA4: \u6C92\u6709\u6B64\u6A94\u6848\u6216\u76EE\u9304
+FileChooser.deleteFileButtonText=\u522A\u9664\u6A94\u6848
 FileChooser.deleteFileButtonMnemonic=76
-FileChooser.renameFileButtonText=\u91cd\u65b0\u547d\u540d\u6a94\u6848
+FileChooser.renameFileButtonText=\u91CD\u65B0\u547D\u540D\u6A94\u6848
 FileChooser.renameFileButtonMnemonic=82
-FileChooser.cancelButtonText=\u53d6\u6d88
+FileChooser.cancelButtonText=\u53D6\u6D88
 FileChooser.cancelButtonMnemonic=67
-FileChooser.saveButtonText=\u5132\u5b58
+FileChooser.saveButtonText=\u78BA\u5B9A
 FileChooser.saveButtonMnemonic=79
-FileChooser.openButtonText=\u78ba\u5b9a
+FileChooser.openButtonText=\u78BA\u5B9A
 FileChooser.openButtonMnemonic=79
-FileChooser.saveDialogTitleText=\u5132\u5b58
-FileChooser.openDialogTitleText=\u958b\u555f
-FileChooser.pathLabelText=\u9078\u53d6:
-FileChooser.filterLabelText=\u904e\u6ffe\u5668:
+FileChooser.saveDialogTitleText=\u5132\u5B58
+FileChooser.openDialogTitleText=\u958B\u555F
+FileChooser.pathLabelText=\u9078\u53D6:
+FileChooser.filterLabelText=\u7BE9\u9078:
 FileChooser.pathLabelMnemonic=83
-FileChooser.foldersLabelText=\u6a94\u6848\u593e
+FileChooser.foldersLabelText=\u8CC7\u6599\u593E
 FileChooser.foldersLabelMnemonic=68
-FileChooser.filesLabelText=\u6a94\u6848
+FileChooser.filesLabelText=\u6A94\u6848
 FileChooser.filesLabelMnemonic=70
 
-FileChooser.cancelButtonToolTipText=\u4e2d\u65b7\u6a94\u6848\u9078\u64c7\u7a0b\u5f0f\u5c0d\u8a71\u65b9\u584a\u3002
-FileChooser.saveButtonToolTipText=\u5132\u5b58\u9078\u53d6\u7684\u6a94\u6848\u3002
-FileChooser.openButtonToolTipText=\u958b\u555f\u9078\u53d6\u7684\u6a94\u6848\u3002
+FileChooser.cancelButtonToolTipText=\u4E2D\u6B62\u6A94\u6848\u9078\u64C7\u5668\u5C0D\u8A71\u65B9\u584A\u3002
+FileChooser.saveButtonToolTipText=\u5132\u5B58\u9078\u53D6\u7684\u6A94\u6848\u3002
+FileChooser.openButtonToolTipText=\u958B\u555F\u9078\u53D6\u7684\u6A94\u6848\u3002
 
-FileChooser.renameFileDialogText=\u5c07\u6a94\u6848 "{0}" \u91cd\u65b0\u547d\u540d\u70ba
-FileChooser.renameFileErrorTitle=\u932f\u8aa4 
-FileChooser.renameFileErrorText=\u5c07\u6a94\u6848 "{0}" \u91cd\u65b0\u547d\u540d\u70ba "{1}" \u6642\u51fa\u73fe\u932f\u8aa4
+FileChooser.renameFileDialogText=\u5C07\u6A94\u6848 "{0}" \u91CD\u65B0\u547D\u540D\u70BA
+FileChooser.renameFileErrorTitle=\u932F\u8AA4 
+FileChooser.renameFileErrorText=\u5C07\u6A94\u6848 "{0}" \u91CD\u65B0\u547D\u540D\u70BA "{1}" \u6642\u51FA\u73FE\u932F\u8AA4
 
 OptionPane.okButtonMnemonic=79
 OptionPane.cancelButtonMnemonic=67
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_de.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_de.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -23,18 +23,18 @@
 FileChooser.saveButtonText=Speichern
 FileChooser.openButtonText=OK
 FileChooser.saveDialogTitleText=Speichern
-FileChooser.openDialogTitleText=\u00d6ffnen
+FileChooser.openDialogTitleText=\u00D6ffnen
 FileChooser.updateButtonText=Aktualisieren
 FileChooser.helpButtonText=Hilfe
 FileChooser.pathLabelText=Pfad- oder Ordnernamen eingeben:
 FileChooser.filterLabelText=Filter
 FileChooser.foldersLabelText=Ordner
 FileChooser.filesLabelText=Dateien
-FileChooser.enterFileNameLabelText=Filternamen eingeben:
-FileChooser.enterFolderNameLabelText=Enter folder name:
+FileChooser.enterFileNameLabelText=Dateinamen eingeben:
+FileChooser.enterFolderNameLabelText=Ordnernamen eingeben:
 
-FileChooser.cancelButtonToolTipText=Dialogfeld f\u00fcr Dateiauswahl abbrechen
-FileChooser.saveButtonToolTipText=Ausgew\u00e4hlte Datei speichern
-FileChooser.openButtonToolTipText=Ausgew\u00e4hlte Datei \u00f6ffnen
-FileChooser.updateButtonToolTipText=Verzeichnisliste aktualisieren
-FileChooser.helpButtonToolTipText=Hilfe f\u00fcr Dateiauswahl
+FileChooser.cancelButtonToolTipText=Dialogfeld f\u00FCr Dateiauswahl schlie\u00DFen.
+FileChooser.saveButtonToolTipText=Ausgew\u00E4hlte Datei speichern.
+FileChooser.openButtonToolTipText=Ausgew\u00E4hlte Datei \u00F6ffnen.
+FileChooser.updateButtonToolTipText=Verzeichnisliste aktualisieren.
+FileChooser.helpButtonToolTipText=FileChooser-Hilfe.
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_es.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_es.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -26,15 +26,15 @@
 FileChooser.openDialogTitleText=Abrir
 FileChooser.updateButtonText=Actualizar
 FileChooser.helpButtonText=Ayuda
-FileChooser.pathLabelText=Introducir v\u00eda de acceso o nombre de carpeta:
+FileChooser.pathLabelText=Introducir nombre de la ruta de acceso o carpeta:
 FileChooser.filterLabelText=Filtro
 FileChooser.foldersLabelText=Carpetas
 FileChooser.filesLabelText=Archivos
 FileChooser.enterFileNameLabelText=Introducir nombre de archivo:
-FileChooser.enterFolderNameLabelText=Enter folder name:
+FileChooser.enterFolderNameLabelText=Introducir nombre de carpeta:
 
-FileChooser.cancelButtonToolTipText=Cuadro de di\u00e1logo para cancelar elector de archivo.
+FileChooser.cancelButtonToolTipText=Abortar cuadro de di\u00E1logo del selector de archivos.
 FileChooser.saveButtonToolTipText=Guardar archivo seleccionado.
 FileChooser.openButtonToolTipText=Abrir archivo seleccionado.
 FileChooser.updateButtonToolTipText=Actualizar lista de directorios.
-FileChooser.helpButtonToolTipText=Ayuda elector de archivos.
+FileChooser.helpButtonToolTipText=Ayuda del selector de archivos.
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_fr.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_fr.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -24,17 +24,17 @@
 FileChooser.openButtonText=OK
 FileChooser.saveDialogTitleText=Enregistrer
 FileChooser.openDialogTitleText=Ouvrir
-FileChooser.updateButtonText=Mise \u00e0 jour
+FileChooser.updateButtonText=Mettre \u00E0 jour
 FileChooser.helpButtonText=Aide
 FileChooser.pathLabelText=Entrez le chemin ou le nom du dossier :
 FileChooser.filterLabelText=Filtre
 FileChooser.foldersLabelText=Dossiers
 FileChooser.filesLabelText=Fichiers
 FileChooser.enterFileNameLabelText=Entrez le nom du fichier :
-FileChooser.enterFolderNameLabelText=Enter folder name:
+FileChooser.enterFolderNameLabelText=Entrez le nom du dossier :
 
-FileChooser.cancelButtonToolTipText=Ferme la bo\u00eete de dialogue du s\u00e9lecteur de fichiers
-FileChooser.saveButtonToolTipText=Enregistre le fichier s\u00e9lectionn\u00e9
-FileChooser.openButtonToolTipText=Ouvre le fichier s\u00e9lectionn\u00e9
-FileChooser.updateButtonToolTipText=Met \u00e0 jour la liste des r\u00e9pertoires
-FileChooser.helpButtonToolTipText=Aide sur le s\u00e9lecteur de fichiers
+FileChooser.cancelButtonToolTipText=Ferme la bo\u00EEte de dialogue du s\u00E9lecteur de fichiers.
+FileChooser.saveButtonToolTipText=Enregistre le fichier s\u00E9lectionn\u00E9.
+FileChooser.openButtonToolTipText=Ouvre le fichier s\u00E9lectionn\u00E9.
+FileChooser.updateButtonToolTipText=Met \u00E0 jour la liste des r\u00E9pertoires.
+FileChooser.helpButtonToolTipText=Aide du s\u00E9lecteur de fichiers
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_it.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_it.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -31,10 +31,10 @@
 FileChooser.foldersLabelText=Cartelle
 FileChooser.filesLabelText=File
 FileChooser.enterFileNameLabelText=Nome file:
-FileChooser.enterFolderNameLabelText=Enter folder name:
+FileChooser.enterFolderNameLabelText=Nome cartella:
 
-FileChooser.cancelButtonToolTipText=Finestra di dialogo Interrompi Selezione file.
-FileChooser.saveButtonToolTipText=Salva file selezionato.
-FileChooser.openButtonToolTipText=Apri file selezionato.
-FileChooser.updateButtonToolTipText=Aggiorna elenco directory.
-FileChooser.helpButtonToolTipText=Guida di Selezione file.
+FileChooser.cancelButtonToolTipText=Chiude la finestra di dialogo di selezione file.
+FileChooser.saveButtonToolTipText=Salva il file selezionato.
+FileChooser.openButtonToolTipText=Apre il file selezionato.
+FileChooser.updateButtonToolTipText=Aggiorna lista directory.
+FileChooser.helpButtonToolTipText=Guida FileChooser.
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_ja.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_ja.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -19,22 +19,22 @@
 ############ FILE CHOOSER STRINGS #############
 
 FileChooser.acceptAllFileFilterText=*
-FileChooser.cancelButtonText=\u53d6\u6d88\u3057
-FileChooser.saveButtonText=\u4fdd\u5b58
-FileChooser.openButtonText=\u4e86\u89e3
-FileChooser.saveDialogTitleText=\u4fdd\u5b58
-FileChooser.openDialogTitleText=\u958b\u304f
-FileChooser.updateButtonText=\u66f4\u65b0
-FileChooser.helpButtonText=\u30d8\u30eb\u30d7
-FileChooser.pathLabelText=\u30d1\u30b9\u307e\u305f\u306f\u30d5\u30a9\u30eb\u30c0\u540d\u3092\u5165\u529b:
-FileChooser.filterLabelText=\u30d5\u30a3\u30eb\u30bf
-FileChooser.foldersLabelText=\u30d5\u30a9\u30eb\u30c0
-FileChooser.filesLabelText=\u30d5\u30a1\u30a4\u30eb
-FileChooser.enterFileNameLabelText=\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u5165\u529b:
-FileChooser.enterFolderNameLabelText=Enter folder name:
+FileChooser.cancelButtonText=\u53D6\u6D88
+FileChooser.saveButtonText=\u4FDD\u5B58
+FileChooser.openButtonText=OK
+FileChooser.saveDialogTitleText=\u4FDD\u5B58
+FileChooser.openDialogTitleText=\u958B\u304F
+FileChooser.updateButtonText=\u66F4\u65B0
+FileChooser.helpButtonText=\u30D8\u30EB\u30D7
+FileChooser.pathLabelText=\u30D1\u30B9\u307E\u305F\u306F\u30D5\u30A9\u30EB\u30C0\u540D\u3092\u5165\u529B:
+FileChooser.filterLabelText=\u30D5\u30A3\u30EB\u30BF
+FileChooser.foldersLabelText=\u30D5\u30A9\u30EB\u30C0
+FileChooser.filesLabelText=\u30D5\u30A1\u30A4\u30EB
+FileChooser.enterFileNameLabelText=\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u5165\u529B:
+FileChooser.enterFolderNameLabelText=\u30D5\u30A9\u30EB\u30C0\u540D\u3092\u5165\u529B:
 
-FileChooser.cancelButtonToolTipText=\u30d5\u30a1\u30a4\u30eb\u30c1\u30e5\u30fc\u30b6\u30c0\u30a4\u30a2\u30ed\u30b0\u3092\u7d42\u4e86
-FileChooser.saveButtonToolTipText=\u9078\u629e\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58
-FileChooser.openButtonToolTipText=\u9078\u629e\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f
-FileChooser.updateButtonToolTipText=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u8868\u793a\u3092\u66f4\u65b0
-FileChooser.helpButtonToolTipText=\u30d5\u30a1\u30a4\u30eb\u30c1\u30e5\u30fc\u30b6\u306e\u30d8\u30eb\u30d7
+FileChooser.cancelButtonToolTipText=\u30D5\u30A1\u30A4\u30EB\u30FB\u30C1\u30E5\u30FC\u30B6\u30FB\u30C0\u30A4\u30A2\u30ED\u30B0\u3092\u7D42\u4E86\u3057\u307E\u3059\u3002
+FileChooser.saveButtonToolTipText=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u4FDD\u5B58\u3057\u307E\u3059\u3002
+FileChooser.openButtonToolTipText=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304D\u307E\u3059\u3002
+FileChooser.updateButtonToolTipText=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30EA\u30B9\u30C8\u3092\u66F4\u65B0\u3057\u307E\u3059\u3002
+FileChooser.helpButtonToolTipText=FileChooser\u306E\u30D8\u30EB\u30D7\u3067\u3059\u3002
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_ko.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_ko.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -19,22 +19,22 @@
 ############ FILE CHOOSER STRINGS #############
 
 FileChooser.acceptAllFileFilterText=*
-FileChooser.cancelButtonText=\ucde8\uc18c
-FileChooser.saveButtonText=\uc800\uc7a5
-FileChooser.openButtonText=\ud655\uc778
-FileChooser.saveDialogTitleText=\uc800\uc7a5
-FileChooser.openDialogTitleText=\uc5f4\uae30
-FileChooser.updateButtonText=\uc5c5\ub370\uc774\ud2b8
-FileChooser.helpButtonText=\ub3c4\uc6c0\ub9d0
-FileChooser.pathLabelText=\uacbd\ub85c \ub610\ub294 \ud3f4\ub354 \uc774\ub984\uc744 \uc785\ub825\ud558\uc2ed\uc2dc\uc624:
-FileChooser.filterLabelText=\ud544\ud130
-FileChooser.foldersLabelText=\ud3f4\ub354
-FileChooser.filesLabelText=\ud30c\uc77c
-FileChooser.enterFileNameLabelText=\ud30c\uc77c \uc774\ub984\uc744 \uc785\ub825\ud558\uc2ed\uc2dc\uc624:
-FileChooser.enterFolderNameLabelText=Enter folder name:
+FileChooser.cancelButtonText=\uCDE8\uC18C
+FileChooser.saveButtonText=\uC800\uC7A5
+FileChooser.openButtonText=\uD655\uC778
+FileChooser.saveDialogTitleText=\uC800\uC7A5
+FileChooser.openDialogTitleText=\uC5F4\uAE30
+FileChooser.updateButtonText=\uAC31\uC2E0
+FileChooser.helpButtonText=\uB3C4\uC6C0\uB9D0
+FileChooser.pathLabelText=\uACBD\uB85C \uB610\uB294 \uD3F4\uB354 \uC774\uB984 \uC785\uB825:
+FileChooser.filterLabelText=\uD544\uD130
+FileChooser.foldersLabelText=\uD3F4\uB354
+FileChooser.filesLabelText=\uD30C\uC77C
+FileChooser.enterFileNameLabelText=\uD30C\uC77C \uC774\uB984 \uC785\uB825:
+FileChooser.enterFolderNameLabelText=\uD3F4\uB354 \uC774\uB984 \uC785\uB825:
 
-FileChooser.cancelButtonToolTipText=\ud30c\uc77c \uc120\ud0dd \ub300\ud654\uc0c1\uc790\ub97c \uc911\uc9c0\ud569\ub2c8\ub2e4.
-FileChooser.saveButtonToolTipText=\uc120\ud0dd\ub41c \ud30c\uc77c\uc744 \uc800\uc7a5\ud569\ub2c8\ub2e4.
-FileChooser.openButtonToolTipText=\uc120\ud0dd\ub41c \ud30c\uc77c\uc744 \uc5fd\ub2c8\ub2e4.
-FileChooser.updateButtonToolTipText=\ub514\ub809\ud1a0\ub9ac \ubaa9\ub85d\uc744 \uc5c5\ub370\uc774\ud2b8\ud569\ub2c8\ub2e4.
-FileChooser.helpButtonToolTipText=FileChooser \ub3c4\uc6c0\ub9d0.
+FileChooser.cancelButtonToolTipText=\uD30C\uC77C \uC120\uD0DD\uAE30 \uB300\uD654\uC0C1\uC790\uB97C \uC911\uB2E8\uD569\uB2C8\uB2E4.
+FileChooser.saveButtonToolTipText=\uC120\uD0DD\uB41C \uD30C\uC77C\uC744 \uC800\uC7A5\uD569\uB2C8\uB2E4.
+FileChooser.openButtonToolTipText=\uC120\uD0DD\uB41C \uD30C\uC77C\uC744 \uC5FD\uB2C8\uB2E4.
+FileChooser.updateButtonToolTipText=\uB514\uB809\uD1A0\uB9AC \uBAA9\uB85D\uC744 \uAC31\uC2E0\uD569\uB2C8\uB2E4.
+FileChooser.helpButtonToolTipText=FileChooser \uB3C4\uC6C0\uB9D0\uC785\uB2C8\uB2E4.
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_pt_BR.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_pt_BR.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -26,14 +26,15 @@
 FileChooser.openDialogTitleText=Abrir
 FileChooser.updateButtonText=Atualizar
 FileChooser.helpButtonText=Ajuda
-FileChooser.pathLabelText=Inserir caminho ou nome da pasta:
+FileChooser.pathLabelText=Informar caminho ou nome da pasta:
 FileChooser.filterLabelText=Filtro
 FileChooser.foldersLabelText=Pastas
 FileChooser.filesLabelText=Arquivos
-FileChooser.enterFileNameLabelText=Inserir nome de arquivo:
+FileChooser.enterFileNameLabelText=Informar nome do arquivo:
+FileChooser.enterFolderNameLabelText=Informar nome da pasta:
 
-FileChooser.cancelButtonToolTipText=Anular caixa de di\u00e1logo do seletor de arquivos.
+FileChooser.cancelButtonToolTipText=Abortar caixa de di\u00E1logo do seletor de arquivos.
 FileChooser.saveButtonToolTipText=Salvar arquivo selecionado.
 FileChooser.openButtonToolTipText=Abrir arquivo selecionado.
-FileChooser.updateButtonToolTipText=Atualizar lista de diret\u00f3rios.
+FileChooser.updateButtonToolTipText=Atualizar lista de diret\u00F3rios.
 FileChooser.helpButtonToolTipText=Ajuda do FileChooser.
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_sv.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_sv.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -23,18 +23,18 @@
 FileChooser.saveButtonText=Spara
 FileChooser.openButtonText=OK
 FileChooser.saveDialogTitleText=Spara
-FileChooser.openDialogTitleText=\u00d6ppna
+FileChooser.openDialogTitleText=\u00D6ppna
 FileChooser.updateButtonText=Uppdatera
-FileChooser.helpButtonText=Hj\u00e4lp
-FileChooser.pathLabelText=Ange s\u00f6kv\u00e4g eller mappnamn:
+FileChooser.helpButtonText=Hj\u00E4lp
+FileChooser.pathLabelText=Ange s\u00F6kv\u00E4g eller mappnamn:
 FileChooser.filterLabelText=Filter
 FileChooser.foldersLabelText=Mappar
 FileChooser.filesLabelText=Filer
 FileChooser.enterFileNameLabelText=Ange filnamn:
-FileChooser.enterFolderNameLabelText=Enter folder name:
+FileChooser.enterFolderNameLabelText=Ange ett mappnamn:
 
-FileChooser.cancelButtonToolTipText=Avbryt \u00d6ppna fil.
-FileChooser.saveButtonToolTipText=Spara markerad fil.
-FileChooser.openButtonToolTipText=\u00d6ppna markerad fil.
+FileChooser.cancelButtonToolTipText=Avbryt dialogrutan Filv\u00E4ljare.
+FileChooser.saveButtonToolTipText=Spara vald fil.
+FileChooser.openButtonToolTipText=\u00D6ppna vald fil.
 FileChooser.updateButtonToolTipText=Uppdatera kataloglistan.
-FileChooser.helpButtonToolTipText=Hj\u00e4lp - Filv\u00e4ljare.
+FileChooser.helpButtonToolTipText=Hj\u00E4lp - Filv\u00E4ljare.
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_zh_CN.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_zh_CN.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -19,22 +19,22 @@
 ############ FILE CHOOSER STRINGS #############
 
 FileChooser.acceptAllFileFilterText=*
-FileChooser.cancelButtonText=\u53d6\u6d88
-FileChooser.saveButtonText=\u4fdd\u5b58
-FileChooser.openButtonText=\u786e\u5b9a
-FileChooser.saveDialogTitleText=\u4fdd\u5b58
-FileChooser.openDialogTitleText=\u6253\u5f00
-FileChooser.updateButtonText=\u66f4\u65b0
-FileChooser.helpButtonText=\u5e2e\u52a9
-FileChooser.pathLabelText=\u952e\u5165\u8def\u5f84\u6216\u6587\u4ef6\u5939\u540d\uff1a
-FileChooser.filterLabelText=\u8fc7\u6ee4\u5668
-FileChooser.foldersLabelText=\u6587\u4ef6\u5939
-FileChooser.filesLabelText=\u6587\u4ef6
-FileChooser.enterFileNameLabelText=\u952e\u5165\u6587\u4ef6\u540d\uff1a
-FileChooser.enterFolderNameLabelText=Enter folder name:
+FileChooser.cancelButtonText=\u53D6\u6D88
+FileChooser.saveButtonText=\u4FDD\u5B58
+FileChooser.openButtonText=\u786E\u5B9A
+FileChooser.saveDialogTitleText=\u4FDD\u5B58
+FileChooser.openDialogTitleText=\u6253\u5F00
+FileChooser.updateButtonText=\u66F4\u65B0
+FileChooser.helpButtonText=\u5E2E\u52A9
+FileChooser.pathLabelText=\u952E\u5165\u8DEF\u5F84\u6216\u6587\u4EF6\u5939\u540D: 
+FileChooser.filterLabelText=\u7B5B\u9009\u5668
+FileChooser.foldersLabelText=\u6587\u4EF6\u5939
+FileChooser.filesLabelText=\u6587\u4EF6
+FileChooser.enterFileNameLabelText=\u952E\u5165\u6587\u4EF6\u540D: 
+FileChooser.enterFolderNameLabelText=\u8F93\u5165\u6587\u4EF6\u5939\u540D:
 
-FileChooser.cancelButtonToolTipText=\u7ec8\u6b62\u6587\u4ef6\u9009\u62e9\u5668\u5bf9\u8bdd\u6846
-FileChooser.saveButtonToolTipText=\u4fdd\u5b58\u9009\u62e9\u7684\u6587\u4ef6
-FileChooser.openButtonToolTipText=\u6253\u5f00\u9009\u62e9\u7684\u6587\u4ef6
-FileChooser.updateButtonToolTipText=\u66f4\u65b0\u76ee\u5f55\u5217\u8868
-FileChooser.helpButtonToolTipText=\u6587\u4ef6\u9009\u62e9\u5668\u5e2e\u52a9
+FileChooser.cancelButtonToolTipText=\u4E2D\u6B62\u6587\u4EF6\u9009\u62E9\u5668\u5BF9\u8BDD\u6846\u3002
+FileChooser.saveButtonToolTipText=\u4FDD\u5B58\u6240\u9009\u6587\u4EF6\u3002
+FileChooser.openButtonToolTipText=\u6253\u5F00\u6240\u9009\u6587\u4EF6\u3002
+FileChooser.updateButtonToolTipText=\u66F4\u65B0\u76EE\u5F55\u5217\u8868\u3002
+FileChooser.helpButtonToolTipText=FileChooser \u5E2E\u52A9\u3002
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_zh_TW.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif_zh_TW.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -19,22 +19,22 @@
 ############ FILE CHOOSER STRINGS #############
 
 FileChooser.acceptAllFileFilterText=*
-FileChooser.cancelButtonText=\u53d6\u6d88
-FileChooser.saveButtonText=\u5132\u5b58
-FileChooser.openButtonText=\u78ba\u5b9a
-FileChooser.saveDialogTitleText=\u5132\u5b58
-FileChooser.openDialogTitleText=\u958b\u555f
-FileChooser.updateButtonText=\u66f4\u65b0
-FileChooser.helpButtonText=\u8aaa\u660e
-FileChooser.pathLabelText=\u8f38\u5165\u8def\u5f91\u6216\u6a94\u6848\u593e\u540d\u7a31\ufe55
-FileChooser.filterLabelText=\u904e\u6ffe\u5668
-FileChooser.foldersLabelText=\u6a94\u6848\u593e
-FileChooser.filesLabelText=\u6a94\u6848
-FileChooser.enterFileNameLabelText=\u8f38\u5165\u6a94\u6848\u540d\u7a31\ufe55
-FileChooser.enterFolderNameLabelText=Enter folder name:
+FileChooser.cancelButtonText=\u53D6\u6D88
+FileChooser.saveButtonText=\u5132\u5B58
+FileChooser.openButtonText=\u78BA\u5B9A
+FileChooser.saveDialogTitleText=\u5132\u5B58
+FileChooser.openDialogTitleText=\u958B\u555F
+FileChooser.updateButtonText=\u66F4\u65B0
+FileChooser.helpButtonText=\u8AAA\u660E
+FileChooser.pathLabelText=\u8F38\u5165\u8DEF\u5F91\u6216\u8CC7\u6599\u593E\u540D\u7A31:
+FileChooser.filterLabelText=\u7BE9\u9078
+FileChooser.foldersLabelText=\u8CC7\u6599\u593E
+FileChooser.filesLabelText=\u6A94\u6848
+FileChooser.enterFileNameLabelText=\u8F38\u5165\u6A94\u6848\u540D\u7A31:
+FileChooser.enterFolderNameLabelText=\u8F38\u5165\u8CC7\u6599\u593E\u540D\u7A31:
 
-FileChooser.cancelButtonToolTipText=\u4e2d\u65b7\u300c\u6a94\u6848\u9078\u64c7\u5668\u300d\u5c0d\u8a71\u65b9\u584a\u3002
-FileChooser.saveButtonToolTipText=\u5132\u5b58\u9078\u53d6\u7684\u6a94\u6848\u3002
-FileChooser.openButtonToolTipText=\u958b\u555f\u9078\u53d6\u7684\u6a94\u6848\u3002
-FileChooser.updateButtonToolTipText=\u66f4\u65b0\u76ee\u9304\u6e05\u55ae\u3002
-FileChooser.helpButtonToolTipText=\u300c\u6a94\u6848\u9078\u64c7\u5668\u300d\u8aaa\u660e\u3002
+FileChooser.cancelButtonToolTipText=\u4E2D\u6B62\u6A94\u6848\u9078\u64C7\u5668\u5C0D\u8A71\u65B9\u584A\u3002
+FileChooser.saveButtonToolTipText=\u5132\u5B58\u9078\u53D6\u7684\u6A94\u6848\u3002
+FileChooser.openButtonToolTipText=\u958B\u555F\u9078\u53D6\u7684\u6A94\u6848\u3002
+FileChooser.updateButtonToolTipText=\u66F4\u65B0\u76EE\u9304\u6E05\u55AE\u3002
+FileChooser.helpButtonToolTipText=\u300C\u6A94\u6848\u9078\u64C7\u5668\u300D\u8AAA\u660E\u3002
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_de.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_de.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -21,10 +21,10 @@
 FileChooser.lookInLabelText=Suchen in:
 FileChooser.saveInLabelText=Speichern in:
 FileChooser.fileNameLabelText=Dateiname:
-FileChooser.folderNameLabelText=Folder name:
+FileChooser.folderNameLabelText=Ordnername:
 FileChooser.filesOfTypeLabelText=Dateityp:
-FileChooser.upFolderToolTipText=Eine Ebene h\u00f6her
-FileChooser.upFolderAccessibleName=H\u00f6her
+FileChooser.upFolderToolTipText=Eine Ebene h\u00F6her
+FileChooser.upFolderAccessibleName=Nach oben
 FileChooser.homeFolderToolTipText=Home
 FileChooser.homeFolderAccessibleName=Home
 FileChooser.newFolderToolTipText=Neuen Ordner erstellen
@@ -35,13 +35,13 @@
 FileChooser.listViewActionLabelText=Liste
 FileChooser.detailsViewButtonToolTipText=Details
 FileChooser.detailsViewButtonAccessibleName=Details
-FileChooser.viewMenuButtonToolTipText = View Menu
-FileChooser.viewMenuButtonAccessibleName = View Menu
+FileChooser.viewMenuButtonToolTipText = Ansichtsmen\u00FC
+FileChooser.viewMenuButtonAccessibleName = Ansichtsmen\u00FC
 FileChooser.detailsViewActionLabelText=Details
 FileChooser.refreshActionLabelText=Aktualisieren
 FileChooser.viewMenuLabelText=Ansicht
-FileChooser.fileNameHeaderText=Dateiname
-FileChooser.fileSizeHeaderText=Gr\u00f6\u00dfe
+FileChooser.fileNameHeaderText=Name
+FileChooser.fileSizeHeaderText=Gr\u00F6\u00DFe
 FileChooser.fileTypeHeaderText=Typ
-FileChooser.fileDateHeaderText=Ge\u00e4ndert
-FileChooser.fileAttrHeaderText=Attribut
+FileChooser.fileDateHeaderText=Ge\u00E4ndert
+FileChooser.fileAttrHeaderText=Attribute
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_es.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_es.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -20,28 +20,28 @@
 
 FileChooser.lookInLabelText=Buscar en:
 FileChooser.saveInLabelText=Guardar en:
-FileChooser.fileNameLabelText=Nombre de archivo:
-FileChooser.folderNameLabelText=Folder name:
-FileChooser.filesOfTypeLabelText=Archivos de tipo:
-FileChooser.upFolderToolTipText=Subir un nivel
+FileChooser.fileNameLabelText=Nombre de Archivo:
+FileChooser.folderNameLabelText=Nombre de la Carpeta:
+FileChooser.filesOfTypeLabelText=Archivos de Tipo:
+FileChooser.upFolderToolTipText=Subir un Nivel
 FileChooser.upFolderAccessibleName=Arriba
-FileChooser.homeFolderToolTipText=Principal
-FileChooser.homeFolderAccessibleName=Principal
-FileChooser.newFolderToolTipText=Crear carpeta nueva
-FileChooser.newFolderAccessibleName=Carpeta nueva
-FileChooser.newFolderActionLabelText=Carpeta nueva
+FileChooser.homeFolderToolTipText=Inicio
+FileChooser.homeFolderAccessibleName=Inicio
+FileChooser.newFolderToolTipText=Crear Nueva Carpeta
+FileChooser.newFolderAccessibleName=Nueva Carpeta
+FileChooser.newFolderActionLabelText=Nueva Carpeta
 FileChooser.listViewButtonToolTipText=Lista
 FileChooser.listViewButtonAccessibleName=Lista
 FileChooser.listViewActionLabelText=Lista
 FileChooser.detailsViewButtonToolTipText=Detalles
 FileChooser.detailsViewButtonAccessibleName=Detalles
-FileChooser.viewMenuButtonToolTipText = View Menu
-FileChooser.viewMenuButtonAccessibleName = View Menu
+FileChooser.viewMenuButtonToolTipText = Men\u00FA Ver
+FileChooser.viewMenuButtonAccessibleName = Men\u00FA Ver
 FileChooser.detailsViewActionLabelText=Detalles
-FileChooser.refreshActionLabelText=Renovar
+FileChooser.refreshActionLabelText=Refrescar
 FileChooser.viewMenuLabelText=Ver
 FileChooser.fileNameHeaderText=Nombre
-FileChooser.fileSizeHeaderText=Tama\u00f1o
+FileChooser.fileSizeHeaderText=Tama\u00F1o
 FileChooser.fileTypeHeaderText=Tipo
 FileChooser.fileDateHeaderText=Modificado
 FileChooser.fileAttrHeaderText=Atributos
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_fr.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_fr.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -20,28 +20,28 @@
 
 FileChooser.lookInLabelText=Rechercher dans :
 FileChooser.saveInLabelText=Enregistrer dans :
-FileChooser.fileNameLabelText=Nom de fichier :
-FileChooser.folderNameLabelText=Folder name:
-FileChooser.filesOfTypeLabelText=Fichiers du type :
+FileChooser.fileNameLabelText=Nom du fichier :
+FileChooser.folderNameLabelText=Nom du dossier :
+FileChooser.filesOfTypeLabelText=Fichiers de type :
 FileChooser.upFolderToolTipText=Remonte d'un niveau.
-FileChooser.upFolderAccessibleName=Vers le haut
-FileChooser.homeFolderToolTipText=R\u00e9pertoire d'accueil
-FileChooser.homeFolderAccessibleName=Accueil
-FileChooser.newFolderToolTipText=Cr\u00e9e un nouveau dossier.
+FileChooser.upFolderAccessibleName=Monter
+FileChooser.homeFolderToolTipText=R\u00E9pertoire d'origine
+FileChooser.homeFolderAccessibleName=R\u00E9pertoire d'origine
+FileChooser.newFolderToolTipText=Cr\u00E9e un dossier.
 FileChooser.newFolderAccessibleName=Nouveau dossier
 FileChooser.newFolderActionLabelText=Nouveau dossier
 FileChooser.listViewButtonToolTipText=Liste
 FileChooser.listViewButtonAccessibleName=Liste
 FileChooser.listViewActionLabelText=Liste
-FileChooser.detailsViewButtonToolTipText=D\u00e9tails
-FileChooser.detailsViewButtonAccessibleName=D\u00e9tails
-FileChooser.viewMenuButtonToolTipText = View Menu
-FileChooser.viewMenuButtonAccessibleName = View Menu
-FileChooser.detailsViewActionLabelText=D\u00e9tails
+FileChooser.detailsViewButtonToolTipText=D\u00E9tails
+FileChooser.detailsViewButtonAccessibleName=D\u00E9tails
+FileChooser.viewMenuButtonToolTipText = Menu Affichage
+FileChooser.viewMenuButtonAccessibleName = Menu Affichage
+FileChooser.detailsViewActionLabelText=D\u00E9tails
 FileChooser.refreshActionLabelText=Actualiser
 FileChooser.viewMenuLabelText=Affichage
 FileChooser.fileNameHeaderText=Nom
 FileChooser.fileSizeHeaderText=Taille
 FileChooser.fileTypeHeaderText=Type
-FileChooser.fileDateHeaderText=Modifi\u00e9
+FileChooser.fileDateHeaderText=Modifi\u00E9
 FileChooser.fileAttrHeaderText=Attributs
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_it.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_it.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -21,22 +21,22 @@
 FileChooser.lookInLabelText=Cerca in:
 FileChooser.saveInLabelText=Salva in:
 FileChooser.fileNameLabelText=Nome file:
-FileChooser.folderNameLabelText=Folder name:
+FileChooser.folderNameLabelText=Nome della cartella:
 FileChooser.filesOfTypeLabelText=Tipo file:
 FileChooser.upFolderToolTipText=Cartella superiore
 FileChooser.upFolderAccessibleName=Superiore
-FileChooser.homeFolderToolTipText=Principale
-FileChooser.homeFolderAccessibleName=Principale
+FileChooser.homeFolderToolTipText=Home
+FileChooser.homeFolderAccessibleName=Home
 FileChooser.newFolderToolTipText=Crea nuova cartella
 FileChooser.newFolderAccessibleName=Nuova cartella
 FileChooser.newFolderActionLabelText=Nuova cartella
-FileChooser.listViewButtonToolTipText=Elenco
-FileChooser.listViewButtonAccessibleName=Elenco
-FileChooser.listViewActionLabelText=Elenco
+FileChooser.listViewButtonToolTipText=Lista
+FileChooser.listViewButtonAccessibleName=Lista
+FileChooser.listViewActionLabelText=Lista
 FileChooser.detailsViewButtonToolTipText=Dettagli
 FileChooser.detailsViewButtonAccessibleName=Dettagli
-FileChooser.viewMenuButtonToolTipText = View Menu
-FileChooser.viewMenuButtonAccessibleName = View Menu
+FileChooser.viewMenuButtonToolTipText = Visualizza menu
+FileChooser.viewMenuButtonAccessibleName = Visualizza menu
 FileChooser.detailsViewActionLabelText=Dettagli
 FileChooser.refreshActionLabelText=Aggiorna
 FileChooser.viewMenuLabelText=Visualizza
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_ja.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_ja.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -18,33 +18,30 @@
 
 ############ FILE CHOOSER STRINGS #############
 
-FileChooser.lookInLabelText=\u53c2\u7167:
-FileChooser.saveInLabelText=\u4fdd\u5b58:
-FileChooser.fileNameLabelText=\u30d5\u30a1\u30a4\u30eb\u540d:
-FileChooser.folderNameLabelText=Folder name:
-FileChooser.filesOfTypeLabelText=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7:
-FileChooser.upFolderToolTipText=1 \u30ec\u30d9\u30eb\u4e0a\u3078
-FileChooser.upFolderAccessibleName=\u4e0a\u3078
-FileChooser.homeFolderToolTipText=\u30db\u30fc\u30e0
-FileChooser.homeFolderAccessibleName=\u30db\u30fc\u30e0
-FileChooser.newFolderToolTipText=\u30d5\u30a9\u30eb\u30c0\u306e\u65b0\u898f\u4f5c\u6210
-FileChooser.newFolderAccessibleName=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0
-FileChooser.newFolderActionLabelText=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0
-FileChooser.listViewButtonToolTipText=\u30ea\u30b9\u30c8
-FileChooser.listViewButtonAccessibleName=\u30ea\u30b9\u30c8
-FileChooser.listViewActionLabelText=\u30ea\u30b9\u30c8
-FileChooser.detailsViewButtonToolTipText=\u8a73\u7d30
-FileChooser.detailsViewButtonAccessibleName=\u8a73\u7d30
-FileChooser.viewMenuButtonToolTipText = View Menu
-FileChooser.viewMenuButtonAccessibleName = View Menu
-FileChooser.detailsViewActionLabelText=\u8a73\u7d30
-FileChooser.refreshActionLabelText=\u66f4\u65b0
-FileChooser.viewMenuLabelText=\u8868\u793a
-FileChooser.fileNameHeaderText=\u540d\u524d
-FileChooser.fileSizeHeaderText=\u30b5\u30a4\u30ba
-FileChooser.fileTypeHeaderText=\u30bf\u30a4\u30d7
-FileChooser.fileDateHeaderText=\u66f4\u65b0\u65e5
-FileChooser.fileAttrHeaderText=\u5c5e\u6027
-FileChooser.directoryOpenButtonText=\u958b\u304f(O)
-FileChooser.openButtonText=\u958b\u304f(O)
-FileChooser.saveButtonText=\u4fdd\u5b58(S)
+FileChooser.lookInLabelText=\u53C2\u7167:
+FileChooser.saveInLabelText=\u4FDD\u5B58:
+FileChooser.fileNameLabelText=\u30D5\u30A1\u30A4\u30EB\u540D:
+FileChooser.folderNameLabelText=\u30D5\u30A9\u30EB\u30C0\u540D:
+FileChooser.filesOfTypeLabelText=\u30D5\u30A1\u30A4\u30EB\u306E\u30BF\u30A4\u30D7:
+FileChooser.upFolderToolTipText=1\u30EC\u30D9\u30EB\u4E0A\u3078
+FileChooser.upFolderAccessibleName=\u4E0A\u3078
+FileChooser.homeFolderToolTipText=\u30DB\u30FC\u30E0
+FileChooser.homeFolderAccessibleName=\u30DB\u30FC\u30E0
+FileChooser.newFolderToolTipText=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0\u306E\u4F5C\u6210
+FileChooser.newFolderAccessibleName=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0
+FileChooser.newFolderActionLabelText=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0
+FileChooser.listViewButtonToolTipText=\u30EA\u30B9\u30C8
+FileChooser.listViewButtonAccessibleName=\u30EA\u30B9\u30C8
+FileChooser.listViewActionLabelText=\u30EA\u30B9\u30C8
+FileChooser.detailsViewButtonToolTipText=\u8A73\u7D30
+FileChooser.detailsViewButtonAccessibleName=\u8A73\u7D30
+FileChooser.viewMenuButtonToolTipText = \u8868\u793A\u30E1\u30CB\u30E5\u30FC
+FileChooser.viewMenuButtonAccessibleName = \u8868\u793A\u30E1\u30CB\u30E5\u30FC
+FileChooser.detailsViewActionLabelText=\u8A73\u7D30
+FileChooser.refreshActionLabelText=\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5
+FileChooser.viewMenuLabelText=\u8868\u793A
+FileChooser.fileNameHeaderText=\u540D\u524D
+FileChooser.fileSizeHeaderText=\u30B5\u30A4\u30BA
+FileChooser.fileTypeHeaderText=\u30BF\u30A4\u30D7
+FileChooser.fileDateHeaderText=\u4FEE\u6B63\u65E5
+FileChooser.fileAttrHeaderText=\u5C5E\u6027
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_ko.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_ko.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -18,33 +18,30 @@
 
 ############ FILE CHOOSER STRINGS #############
 
-FileChooser.lookInLabelText=\uac80\uc0c9 \uc704\uce58:
-FileChooser.saveInLabelText=\uc800\uc7a5 \uc704\uce58:
-FileChooser.fileNameLabelText=\ud30c\uc77c \uc774\ub984:
-FileChooser.folderNameLabelText=Folder name:
-FileChooser.filesOfTypeLabelText=\ud30c\uc77c \uc885\ub958:
-FileChooser.upFolderToolTipText=\ud55c \ub2e8\uacc4 \uc704\ub85c
-FileChooser.upFolderAccessibleName=\uc704
-FileChooser.homeFolderToolTipText=\ud648
-FileChooser.homeFolderAccessibleName=\ud648
-FileChooser.newFolderToolTipText=\uc0c8 \ud3f4\ub354 \uc791\uc131
-FileChooser.newFolderAccessibleName=\uc0c8 \ud3f4\ub354
-FileChooser.newFolderActionLabelText=\uc0c8 \ud3f4\ub354
-FileChooser.listViewButtonToolTipText=\ubaa9\ub85d
-FileChooser.listViewButtonAccessibleName=\ubaa9\ub85d
-FileChooser.listViewActionLabelText=\ubaa9\ub85d
-FileChooser.detailsViewButtonToolTipText=\uc790\uc138\ud788
-FileChooser.detailsViewButtonAccessibleName=\uc790\uc138\ud788
-FileChooser.viewMenuButtonToolTipText = View Menu
-FileChooser.viewMenuButtonAccessibleName = View Menu
-FileChooser.detailsViewActionLabelText=\uc790\uc138\ud788
-FileChooser.refreshActionLabelText=\uac31\uc2e0
-FileChooser.viewMenuLabelText=\ubcf4\uae30
-FileChooser.fileNameHeaderText=\uc774\ub984
-FileChooser.fileSizeHeaderText=\ud06c\uae30
-FileChooser.fileTypeHeaderText=\uc885\ub958
-FileChooser.fileDateHeaderText=\uc218\uc815
-FileChooser.fileAttrHeaderText=\uc18d\uc131
-FileChooser.directoryOpenButtonText=\uc5f4\uae30(O)
-FileChooser.openButtonText=\uc5f4\uae30(O)
-FileChooser.saveButtonText=\uc800\uc7a5(S)
+FileChooser.lookInLabelText=\uAC80\uC0C9 \uC704\uCE58:
+FileChooser.saveInLabelText=\uC800\uC7A5 \uC704\uCE58:
+FileChooser.fileNameLabelText=\uD30C\uC77C \uC774\uB984:
+FileChooser.folderNameLabelText=\uD3F4\uB354 \uC774\uB984:
+FileChooser.filesOfTypeLabelText=\uD30C\uC77C \uC720\uD615:
+FileChooser.upFolderToolTipText=\uD55C \uB808\uBCA8 \uC704\uB85C
+FileChooser.upFolderAccessibleName=\uC704\uB85C
+FileChooser.homeFolderToolTipText=\uD648
+FileChooser.homeFolderAccessibleName=\uD648
+FileChooser.newFolderToolTipText=\uC0C8 \uD3F4\uB354 \uC0DD\uC131
+FileChooser.newFolderAccessibleName=\uC0C8 \uD3F4\uB354
+FileChooser.newFolderActionLabelText=\uC0C8 \uD3F4\uB354
+FileChooser.listViewButtonToolTipText=\uBAA9\uB85D
+FileChooser.listViewButtonAccessibleName=\uBAA9\uB85D
+FileChooser.listViewActionLabelText=\uBAA9\uB85D
+FileChooser.detailsViewButtonToolTipText=\uC138\uBD80 \uC815\uBCF4
+FileChooser.detailsViewButtonAccessibleName=\uC138\uBD80 \uC815\uBCF4
+FileChooser.viewMenuButtonToolTipText = \uBCF4\uAE30 \uBA54\uB274
+FileChooser.viewMenuButtonAccessibleName = \uBCF4\uAE30 \uBA54\uB274
+FileChooser.detailsViewActionLabelText=\uC138\uBD80 \uC815\uBCF4
+FileChooser.refreshActionLabelText=\uC0C8\uB85C \uACE0\uCE68
+FileChooser.viewMenuLabelText=\uBCF4\uAE30
+FileChooser.fileNameHeaderText=\uC774\uB984
+FileChooser.fileSizeHeaderText=\uD06C\uAE30
+FileChooser.fileTypeHeaderText=\uC720\uD615
+FileChooser.fileDateHeaderText=\uC218\uC815 \uB0A0\uC9DC
+FileChooser.fileAttrHeaderText=\uC18D\uC131
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_pt_BR.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_pt_BR.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -20,20 +20,23 @@
 
 FileChooser.lookInLabelText=Consultar em:
 FileChooser.saveInLabelText=Salvar em:
-FileChooser.fileNameLabelText=Nome de arquivo:
-FileChooser.filesOfTypeLabelText=Arquivos de tipo:
-FileChooser.upFolderToolTipText=Um n\u00edvel acima
+FileChooser.fileNameLabelText=Nome do arquivo:
+FileChooser.folderNameLabelText=Nome da pasta:
+FileChooser.filesOfTypeLabelText=Arquivos do tipo:
+FileChooser.upFolderToolTipText=Um N\u00EDvel Acima
 FileChooser.upFolderAccessibleName=Acima
-FileChooser.homeFolderToolTipText=In\u00edcio
-FileChooser.homeFolderAccessibleName=In\u00edcio
-FileChooser.newFolderToolTipText=Criar nova pasta
-FileChooser.newFolderAccessibleName=Nova pasta
-FileChooser.newFolderActionLabelText=Nova pasta
+FileChooser.homeFolderToolTipText=In\u00EDcio
+FileChooser.homeFolderAccessibleName=In\u00EDcio
+FileChooser.newFolderToolTipText=Criar Nova Pasta
+FileChooser.newFolderAccessibleName=Nova Pasta
+FileChooser.newFolderActionLabelText=Nova Pasta
 FileChooser.listViewButtonToolTipText=Lista
 FileChooser.listViewButtonAccessibleName=Lista
 FileChooser.listViewActionLabelText=Lista
 FileChooser.detailsViewButtonToolTipText=Detalhes
 FileChooser.detailsViewButtonAccessibleName=Detalhes
+FileChooser.viewMenuButtonToolTipText = Exibir Menu
+FileChooser.viewMenuButtonAccessibleName = Exibir Menu
 FileChooser.detailsViewActionLabelText=Detalhes
 FileChooser.refreshActionLabelText=Atualizar
 FileChooser.viewMenuLabelText=Exibir
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_sv.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_sv.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -21,9 +21,9 @@
 FileChooser.lookInLabelText=Leta i:
 FileChooser.saveInLabelText=Spara i:
 FileChooser.fileNameLabelText=Filnamn:
-FileChooser.folderNameLabelText=Folder name:
+FileChooser.folderNameLabelText=Mapp:
 FileChooser.filesOfTypeLabelText=Filformat:
-FileChooser.upFolderToolTipText=Upp en niv\u00e5
+FileChooser.upFolderToolTipText=Upp en niv\u00E5
 FileChooser.upFolderAccessibleName=Upp
 FileChooser.homeFolderToolTipText=Hem
 FileChooser.homeFolderAccessibleName=Hem
@@ -33,15 +33,15 @@
 FileChooser.listViewButtonToolTipText=Lista
 FileChooser.listViewButtonAccessibleName=Lista
 FileChooser.listViewActionLabelText=Lista
-FileChooser.detailsViewButtonToolTipText=Detaljerad lista
-FileChooser.detailsViewButtonAccessibleName=Detaljerad lista
-FileChooser.viewMenuButtonToolTipText = View Menu
-FileChooser.viewMenuButtonAccessibleName = View Menu
-FileChooser.detailsViewActionLabelText=Detaljerad lista
-FileChooser.refreshActionLabelText=Uppdatera
+FileChooser.detailsViewButtonToolTipText=Detaljer
+FileChooser.detailsViewButtonAccessibleName=Detaljer
+FileChooser.viewMenuButtonToolTipText = Menyn Visa
+FileChooser.viewMenuButtonAccessibleName = Menyn Visa
+FileChooser.detailsViewActionLabelText=Detaljer
+FileChooser.refreshActionLabelText=F\u00F6rnya
 FileChooser.viewMenuLabelText=Vy
 FileChooser.fileNameHeaderText=Namn
 FileChooser.fileSizeHeaderText=Storlek
 FileChooser.fileTypeHeaderText=Typ
-FileChooser.fileDateHeaderText=\u00c4ndrad
+FileChooser.fileDateHeaderText=\u00C4ndrad
 FileChooser.fileAttrHeaderText=Attribut
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_zh_CN.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_zh_CN.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -18,33 +18,30 @@
 
 ############ FILE CHOOSER STRINGS #############
 
-FileChooser.lookInLabelText=\u67e5\u770b\uff1a
-FileChooser.saveInLabelText=\u4fdd\u5b58\uff1a
-FileChooser.fileNameLabelText=\u6587\u4ef6\u540d\uff1a
-FileChooser.folderNameLabelText=Folder name:
-FileChooser.filesOfTypeLabelText=\u6587\u4ef6\u7c7b\u578b\uff1a
-FileChooser.upFolderToolTipText=\u5411\u4e0a\u4e00\u5c42
-FileChooser.upFolderAccessibleName=\u5411\u4e0a
-FileChooser.homeFolderToolTipText=\u8d77\u59cb\u76ee\u5f55
-FileChooser.homeFolderAccessibleName=\u8d77\u59cb\u76ee\u5f55
-FileChooser.newFolderToolTipText=\u521b\u5efa\u65b0\u7684\u6587\u4ef6\u5939
-FileChooser.newFolderAccessibleName=\u65b0\u5efa\u6587\u4ef6\u5939
-FileChooser.newFolderActionLabelText=\u65b0\u5efa\u6587\u4ef6\u5939
+FileChooser.lookInLabelText=\u67E5\u770B: 
+FileChooser.saveInLabelText=\u4FDD\u5B58: 
+FileChooser.fileNameLabelText=\u6587\u4EF6\u540D: 
+FileChooser.folderNameLabelText=\u6587\u4EF6\u5939\u540D: 
+FileChooser.filesOfTypeLabelText=\u6587\u4EF6\u7C7B\u578B: 
+FileChooser.upFolderToolTipText=\u5411\u4E0A\u4E00\u7EA7
+FileChooser.upFolderAccessibleName=\u5411\u4E0A
+FileChooser.homeFolderToolTipText=\u4E3B\u76EE\u5F55
+FileChooser.homeFolderAccessibleName=\u4E3B\u76EE\u5F55
+FileChooser.newFolderToolTipText=\u521B\u5EFA\u65B0\u6587\u4EF6\u5939
+FileChooser.newFolderAccessibleName=\u65B0\u5EFA\u6587\u4EF6\u5939
+FileChooser.newFolderActionLabelText=\u65B0\u5EFA\u6587\u4EF6\u5939
 FileChooser.listViewButtonToolTipText=\u5217\u8868
 FileChooser.listViewButtonAccessibleName=\u5217\u8868
 FileChooser.listViewActionLabelText=\u5217\u8868
-FileChooser.detailsViewButtonToolTipText=\u8be6\u7ec6\u4fe1\u606f
-FileChooser.detailsViewButtonAccessibleName=\u8be6\u7ec6\u4fe1\u606f
-FileChooser.viewMenuButtonToolTipText = View Menu
-FileChooser.viewMenuButtonAccessibleName = View Menu
-FileChooser.detailsViewActionLabelText=\u8be6\u7ec6\u4fe1\u606f
-FileChooser.refreshActionLabelText=\u5237\u65b0
-FileChooser.viewMenuLabelText=\u89c6\u56fe
-FileChooser.fileNameHeaderText=\u540d\u79f0
-FileChooser.fileSizeHeaderText=\u5927\u5c0f
-FileChooser.fileTypeHeaderText=\u7c7b\u578b
-FileChooser.fileDateHeaderText=\u4fee\u8ba2\u7248
-FileChooser.fileAttrHeaderText=\u5c5e\u6027
-FileChooser.directoryOpenButtonText=\u6253\u5f00(O)
-FileChooser.openButtonText=\u6253\u5f00(O)
-FileChooser.saveButtonText=\u4fdd\u5b58(S)
+FileChooser.detailsViewButtonToolTipText=\u8BE6\u7EC6\u8D44\u6599
+FileChooser.detailsViewButtonAccessibleName=\u8BE6\u7EC6\u8D44\u6599
+FileChooser.viewMenuButtonToolTipText = \u67E5\u770B\u83DC\u5355
+FileChooser.viewMenuButtonAccessibleName = \u67E5\u770B\u83DC\u5355
+FileChooser.detailsViewActionLabelText=\u8BE6\u7EC6\u8D44\u6599
+FileChooser.refreshActionLabelText=\u5237\u65B0
+FileChooser.viewMenuLabelText=\u89C6\u56FE
+FileChooser.fileNameHeaderText=\u540D\u79F0
+FileChooser.fileSizeHeaderText=\u5927\u5C0F
+FileChooser.fileTypeHeaderText=\u7C7B\u578B
+FileChooser.fileDateHeaderText=\u4FEE\u6539\u65E5\u671F
+FileChooser.fileAttrHeaderText=\u5C5E\u6027
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_zh_TW.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows_zh_TW.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -18,33 +18,30 @@
 
 ############ FILE CHOOSER STRINGS #############
 
-FileChooser.lookInLabelText=\u67e5\u770b\ufe55
-FileChooser.saveInLabelText=\u5132\u5b58\u65bc\uff1a
-FileChooser.fileNameLabelText=\u6a94\u6848\u540d\u7a31\ufe55
-FileChooser.folderNameLabelText=Folder name:
-FileChooser.filesOfTypeLabelText=\u6a94\u6848\u985e\u578b\ufe55
-FileChooser.upFolderToolTipText=\u5f80\u4e0a\u4e00\u5c64
-FileChooser.upFolderAccessibleName=\u5f80\u4e0a
-FileChooser.homeFolderToolTipText=\u56de\u4e3b\u76ee\u9304
-FileChooser.homeFolderAccessibleName=\u4e3b\u76ee\u9304
-FileChooser.newFolderToolTipText=\u5efa\u7acb\u65b0\u8cc7\u6599\u593e
-FileChooser.newFolderAccessibleName=\u65b0\u8cc7\u6599\u593e
-FileChooser.newFolderActionLabelText=\u65b0\u8cc7\u6599\u593e
-FileChooser.listViewButtonToolTipText=\u6a94\u6848\u6e05\u55ae
-FileChooser.listViewButtonAccessibleName=\u6e05\u55ae
-FileChooser.listViewActionLabelText=\u6e05\u55ae
-FileChooser.detailsViewButtonToolTipText=\u8a73\u7d30\u8cc7\u8a0a
-FileChooser.detailsViewButtonAccessibleName=\u8a73\u7d30\u8cc7\u8a0a
-FileChooser.viewMenuButtonToolTipText = View Menu
-FileChooser.viewMenuButtonAccessibleName = View Menu
-FileChooser.detailsViewActionLabelText=\u8a73\u7d30\u8cc7\u8a0a
-FileChooser.refreshActionLabelText=\u66f4\u65b0
-FileChooser.viewMenuLabelText=\u6aa2\u8996
-FileChooser.fileNameHeaderText=\u540d\u7a31
-FileChooser.fileSizeHeaderText=\u5927\u5c0f
-FileChooser.fileTypeHeaderText=\u985e\u578b
-FileChooser.fileDateHeaderText=\u4fee\u6539
-FileChooser.fileAttrHeaderText=\u5c6c\u6027
-FileChooser.directoryOpenButtonText=\u958b\u555f(O)
-FileChooser.openButtonText=\u958b\u555f(O)
-FileChooser.saveButtonText=\u5132\u5b58(S)
+FileChooser.lookInLabelText=\u67E5\u8A62:
+FileChooser.saveInLabelText=\u5132\u5B58\u65BC: 
+FileChooser.fileNameLabelText=\u6A94\u6848\u540D\u7A31:
+FileChooser.folderNameLabelText=\u8CC7\u6599\u593E\u540D\u7A31:
+FileChooser.filesOfTypeLabelText=\u6A94\u6848\u985E\u578B:
+FileChooser.upFolderToolTipText=\u5F80\u4E0A\u4E00\u5C64
+FileChooser.upFolderAccessibleName=\u5F80\u4E0A
+FileChooser.homeFolderToolTipText=\u4E3B\u76EE\u9304
+FileChooser.homeFolderAccessibleName=\u4E3B\u76EE\u9304
+FileChooser.newFolderToolTipText=\u5EFA\u7ACB\u65B0\u8CC7\u6599\u593E
+FileChooser.newFolderAccessibleName=\u65B0\u8CC7\u6599\u593E
+FileChooser.newFolderActionLabelText=\u65B0\u8CC7\u6599\u593E
+FileChooser.listViewButtonToolTipText=\u6E05\u55AE
+FileChooser.listViewButtonAccessibleName=\u6E05\u55AE
+FileChooser.listViewActionLabelText=\u6E05\u55AE
+FileChooser.detailsViewButtonToolTipText=\u8A73\u7D30\u8CC7\u8A0A
+FileChooser.detailsViewButtonAccessibleName=\u8A73\u7D30\u8CC7\u8A0A
+FileChooser.viewMenuButtonToolTipText = \u6AA2\u8996\u529F\u80FD\u8868
+FileChooser.viewMenuButtonAccessibleName = \u6AA2\u8996\u529F\u80FD\u8868
+FileChooser.detailsViewActionLabelText=\u8A73\u7D30\u8CC7\u8A0A
+FileChooser.refreshActionLabelText=\u91CD\u65B0\u6574\u7406
+FileChooser.viewMenuLabelText=\u6AA2\u8996
+FileChooser.fileNameHeaderText=\u540D\u7A31
+FileChooser.fileSizeHeaderText=\u5927\u5C0F
+FileChooser.fileTypeHeaderText=\u985E\u578B
+FileChooser.fileDateHeaderText=\u4FEE\u6539\u65E5\u671F
+FileChooser.fileAttrHeaderText=\u5C6C\u6027
--- a/jdk/src/share/classes/com/sun/jndi/ldap/Connection.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/jndi/ldap/Connection.java	Wed Jul 05 17:35:13 2017 +0200
@@ -656,14 +656,17 @@
                 }
                 nparent = notifyParent;
             }
-        }
-        if (nparent) {
-            LdapRequest ldr = pendingRequests;
-            while (ldr != null) {
-                ldr.notify();
-                ldr = ldr.next;
+            if (nparent) {
+                LdapRequest ldr = pendingRequests;
+                while (ldr != null) {
+
+                    synchronized (ldr) {
+                        ldr.notify();
+                        ldr = ldr.next;
+                    }
+                }
+                parent.processConnectionClosure();
             }
-            parent.processConnectionClosure();
         }
     }
 
--- a/jdk/src/share/classes/com/sun/jndi/toolkit/ctx/Continuation.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/jndi/toolkit/ctx/Continuation.java	Wed Jul 05 17:35:13 2017 +0200
@@ -143,7 +143,7 @@
         e.setRemainingName(remainingName);
         e.setResolvedObj(resolvedObj);
 
-        if (starter == null)
+        if (starter == null || starter.isEmpty())
             e.setResolvedName(null);
         else if (remainingName == null)
             e.setResolvedName(starter);
--- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -24,145 +24,147 @@
 #
 
 # CacheRowSetImpl exceptions
-cachedrowsetimpl.populate = Ung\u00fcltiges Objekt ResultSet zum Auff\u00fcllen der Methode
-cachedrowsetimpl.invalidp = Ung\u00fcltiger Best\u00e4ndigkeits-Provider generiert
-cachedrowsetimpl.nullhash = Instanz CachedRowSetImpl konnte nicht instanziiert werden. Hash-Tabelle mit Nullwert f\u00fcr Konstruktor angegeben
-cachedrowsetimpl.invalidop = Ung\u00fcltiger Vorgang beim Zeileneinf\u00fcgen
-cachedrowsetimpl.accfailed = acceptChanges fehlgeschlagen
-cachedrowsetimpl.invalidcp = Ung\u00fcltige Cursorposition
-cachedrowsetimpl.illegalop = Ung\u00fcltiger Vorgang bei nicht eingef\u00fcgter Zeile
-cachedrowsetimpl.clonefail = Fehler bei Klon: {0}
-cachedrowsetimpl.invalidcol = Ung\u00fcltiger Spaltenindex
-cachedrowsetimpl.invalcolnm = Ung\u00fcltiger Spaltenname
-cachedrowsetimpl.boolfail = getBoolen bei Wert ( {0} ) in Spalte {1} fehlgeschlagen
-cachedrowsetimpl.bytefail = getByte bei Wert ( {0} ) in Spalte {1} fehlgeschlagen
-cachedrowsetimpl.shortfail = getShort bei Wert ( {0} ) in Spalte {1} fehlgeschlagen
-cachedrowsetimpl.intfail = getInt bei Wert ( {0} ) in Spalte {1} fehlgeschlagen
-cachedrowsetimpl.longfail = getLong bei Wert ( {0} ) in Spalte {1} fehlgeschlagen
-cachedrowsetimpl.floatfail = getFloat bei Wert ( {0} ) in Spalte {1} fehlgeschlagen
-cachedrowsetimpl.doublefail = getDouble bei Wert ( {0} ) in Spalte {1} fehlgeschlagen
-cachedrowsetimpl.dtypemismt = Keine Datentyp\u00fcbereinstimmung 
-cachedrowsetimpl.datefail = getDate bei Wert ( {0} ) in Spalte {1} fehlgeschlagen; keine Konvertierung m\u00f6glich
-cachedrowsetimpl.timefail = getTime bei Wert ( {0} ) in Spalte {1} fehlgeschlagen; keine Konvertierung m\u00f6glich
-cachedrowsetimpl.posupdate = Positionierte Aktualisierungen werden nicht unterst\u00fctzt
-cachedrowsetimpl.unableins = Keine Instanziierung m\u00f6glich: {0}
-cachedrowsetimpl.beforefirst = beforeFirst : Ung\u00fcltiger Cursorvorgang
-cachedrowsetimpl.first = First : Ung\u00fcltiger Cursorvorgang
-cachedrowsetimpl.last = last : TYPE_FORWARD_ONLY
-cachedrowsetimpl.absolute = absolute: Ung\u00fcltige Cursorposition
-cachedrowsetimpl.relative = relative: Ung\u00fcltige Cursorposition
-cachedrowsetimpl.asciistream = Lesen von ASCII-Strom fehlgeschlagen
-cachedrowsetimpl.binstream = Lesen von Bin\u00e4rstrom fehlgeschlagen
-cachedrowsetimpl.failedins = Fehler beim Zeileneinf\u00fcgen
-cachedrowsetimpl.updateins = Aufrufen von updateRow beim Zeileneinf\u00fcgen
+cachedrowsetimpl.populate = Ung\u00FCltiges ResultSet-Objekt zum Auff\u00FCllen der Methode angegeben
+cachedrowsetimpl.invalidp = Ung\u00FCltiger Persistence-Provider generiert
+cachedrowsetimpl.nullhash = CachedRowSetImpl-Instanz kann nicht instanziiert werden. Null-Hash-Tabelle f\u00FCr Constructor angegeben
+cachedrowsetimpl.invalidop = Ung\u00FCltiger Vorgang beim Zeileneinf\u00FCgen
+cachedrowsetimpl.accfailed = acceptChanges nicht erfolgreich
+cachedrowsetimpl.invalidcp = Ung\u00FCltige Cursorposition
+cachedrowsetimpl.illegalop = Ung\u00FCltiger Vorgang bei nicht eingef\u00FCgter Zeile
+cachedrowsetimpl.clonefail = Clonen nicht erfolgreich: {0}
+cachedrowsetimpl.invalidcol = Ung\u00FCltiger Spaltenindex
+cachedrowsetimpl.invalcolnm = Ung\u00FCltiger Spaltenname
+cachedrowsetimpl.boolfail = getBoolen bei Wert ( {0} ) in Spalte {1} nicht erfolgreich
+cachedrowsetimpl.bytefail = getByte bei Wert ( {0} ) in Spalte {1} nicht erfolgreich
+cachedrowsetimpl.shortfail = getShort bei Wert ( {0} ) in Spalte {1} nicht erfolgreich
+cachedrowsetimpl.intfail = getInt bei Wert ( {0} ) in Spalte {1} nicht erfolgreich
+cachedrowsetimpl.longfail = getLong bei Wert ( {0} ) in Spalte {1} nicht erfolgreich
+cachedrowsetimpl.floatfail = getFloat bei Wert ( {0} ) in Spalte {1} nicht erfolgreich
+cachedrowsetimpl.doublefail = getDouble bei Wert ( {0} ) in Spalte {1} nicht erfolgreich
+cachedrowsetimpl.dtypemismt = Keine Datentyp\u00FCbereinstimmung 
+cachedrowsetimpl.datefail = getDate bei Wert ( {0} ) in Spalte {1} nicht erfolgreich. Keine Konvertierung m\u00F6glich
+cachedrowsetimpl.timefail = getTime bei Wert ( {0} ) in Spalte {1} nicht erfolgreich. Keine Konvertierung m\u00F6glich
+cachedrowsetimpl.posupdate = Positionierte Updates werden nicht unterst\u00FCtzt
+cachedrowsetimpl.unableins = Keine Instanziierung m\u00F6glich: {0}
+cachedrowsetimpl.beforefirst = beforeFirst: Ung\u00FCltiger Cursorvorgang
+cachedrowsetimpl.first = First: Ung\u00FCltiger Cursorvorgang
+cachedrowsetimpl.last = last: TYPE_FORWARD_ONLY
+cachedrowsetimpl.absolute = absolute: Ung\u00FCltige Cursorposition
+cachedrowsetimpl.relative = relative: Ung\u00FCltige Cursorposition
+cachedrowsetimpl.asciistream = Lesen von ASCII-Stream nicht erfolgreich
+cachedrowsetimpl.binstream = Lesen von Bin\u00E4r-Stream nicht erfolgreich
+cachedrowsetimpl.failedins = Fehler beim Zeileneinf\u00FCgen
+cachedrowsetimpl.updateins = updateRow beim Zeileneinf\u00FCgen aufgerufen
 cachedrowsetimpl.movetoins = moveToInsertRow: CONCUR_READ_ONLY
 cachedrowsetimpl.movetoins1 = moveToInsertRow: keine Metadaten
-cachedrowsetimpl.movetoins2 = moveToInsertRow: ung\u00fcltige Spaltenanzahl
-cachedrowsetimpl.tablename = Tabellenname darf nicht Null sein
-cachedrowsetimpl.keycols = Ung\u00fcltige Schl\u00fcsselspalten
-cachedrowsetimpl.opnotsupp = Datenbank unterst\u00fctzt Vorgang nicht
-cachedrowsetimpl.matchcols = \u00dcbereinstimmende Spalten entsprechen nicht den definierten Spalten
-cachedrowsetimpl.setmatchcols = \u00dcbereinstimmende Spalten m\u00fcssen vor dem Abrufen definiert werden
-cachedrowsetimpl.matchcols1 = Wert f\u00fcr \u00fcbereinstimmende Spalten muss gr\u00f6\u00dfer als 0 sein
-cachedrowsetimpl.matchcols2 = \u00dcbereinstimmende Spalten m\u00fcssen leer sein oder eine Nullzeichenfolge aufweisen
-cachedrowsetimpl.unsetmatch = Spalten ohne definierten Wert entsprechen nicht Spalten mit definiertem Wert
-cachedrowsetimpl.unsetmatch1 = Spaltenname als Argument f\u00fcr unsetMatchColumn verwenden
-cachedrowsetimpl.unsetmatch2 = Spalten-ID als Argument f\u00fcr unsetMatchColumn verwenden
-cachedrowsetimpl.numrows = Zeilenanzahl ist kleiner als Null oder kleiner als Abrufgr\u00f6\u00dfe
+cachedrowsetimpl.movetoins2 = moveToInsertRow: ung\u00FCltige Spaltenanzahl
+cachedrowsetimpl.tablename = Tabellenname darf nicht null sein
+cachedrowsetimpl.keycols = Ung\u00FCltige Schl\u00FCsselspalten
+cachedrowsetimpl.invalidcol = Ung\u00FCltiger Spaltenindex
+cachedrowsetimpl.opnotsupp = Vorgang nicht von Datenbank unterst\u00FCtzt
+cachedrowsetimpl.matchcols = \u00DCbereinstimmungsspalten entsprechen nicht den festgelegten Spalten
+cachedrowsetimpl.setmatchcols = \u00DCbereinstimmungsspalten m\u00FCssen vor dem Abrufen festgelegt werden
+cachedrowsetimpl.matchcols1 = Wert f\u00FCr \u00DCbereinstimmungsspalten muss gr\u00F6\u00DFer als 0 sein
+cachedrowsetimpl.matchcols2 = \u00DCbereinstimmungsspalten m\u00FCssen leer sein oder eine Nullzeichenfolge aufweisen
+cachedrowsetimpl.unsetmatch = Spalten, deren Wert aufgehoben wird, entsprechen nicht den festgelegten Spalten
+cachedrowsetimpl.unsetmatch1 = Spaltenname als Argument f\u00FCr unsetMatchColumn verwenden
+cachedrowsetimpl.unsetmatch2 = Spalten-ID als Argument f\u00FCr unsetMatchColumn verwenden
+cachedrowsetimpl.numrows = Zeilenanzahl ist kleiner als null oder kleiner als Abrufgr\u00F6\u00DFe
 cachedrowsetimpl.startpos = Startposition darf keinen Negativwert aufweisen
-cachedrowsetimpl.nextpage = Daten m\u00fcssen vor dem Abrufen ausgef\u00fcllt werden 
-cachedrowsetimpl.pagesize = Seitengr\u00f6\u00dfe darf nicht kleiner als Null sein
-cachedrowsetimpl.pagesize1 = Seitengr\u00f6\u00dfe darf nicht gr\u00f6\u00dfer als maxRows sein
-cachedrowsetimpl.fwdonly = ResultSet kann nur vorw\u00e4rts gerichtet sein
-cachedrowsetimpl.type = Typ : {0}
-cachedrowsetimpl.opnotysupp = Vorgang noch nicht unterst\u00fctzt
-cachedrowsetimpl.featnotsupp = Funktion nicht unterst\u00fctzt
+cachedrowsetimpl.nextpage = Daten m\u00FCssen vor dem Aufruf ausgef\u00FCllt werden 
+cachedrowsetimpl.pagesize = Seitengr\u00F6\u00DFe darf nicht kleiner als null sein
+cachedrowsetimpl.pagesize1 = Seitengr\u00F6\u00DFe darf nicht gr\u00F6\u00DFer als maxRows sein
+cachedrowsetimpl.fwdonly = ResultSet kann nur vorw\u00E4rts gerichtet sein
+cachedrowsetimpl.type = Typ ist: {0}
+cachedrowsetimpl.opnotysupp = Vorgang noch nicht unterst\u00FCtzt
+cachedrowsetimpl.featnotsupp = Feature nicht unterst\u00FCtzt
 
 # WebRowSetImpl exceptions
-webrowsetimpl.nullhash = Instanz WebRowSetImpl konnte nicht instanziiert werden. Hash-Tabelle mit Nullwert f\u00fcr Konstruktor angegeben
-webrowsetimpl.invalidwr = Ung\u00fcltiger Schreiber
-webrowsetimpl.invalidrd = Ung\u00fcltiger Leser
+webrowsetimpl.nullhash = WebRowSetImpl-Instanz kann nicht instanziiert werden. Null-Hash-Tabelle f\u00FCr Constructor angegeben
+webrowsetimpl.invalidwr = Ung\u00FCltiger Writer
+webrowsetimpl.invalidrd = Ung\u00FCltiger Reader
 
 #FilteredRowSetImpl exceptions
-filteredrowsetimpl.relative = relative: Ung\u00fcltiger Cursorvorgang 
-filteredrowsetimpl.absolute = absolute: Ung\u00fcltiger Cursorvorgang
-filteredrowsetimpl.notallowed = Kein zul\u00e4ssiger Wert im Filter
+filteredrowsetimpl.relative = relative: Ung\u00FCltiger Cursorvorgang 
+filteredrowsetimpl.absolute = absolute: Ung\u00FCltiger Cursorvorgang
+filteredrowsetimpl.notallowed = Kein zul\u00E4ssiger Wert im Filter
 
 #JoinRowSetImpl exceptions
 joinrowsetimpl.notinstance = Keine Instanz von rowset
-joinrowsetimpl.matchnotset = \u00dcbereinstimmende Spalte wurde nicht f\u00fcr Verkn\u00fcpfung definiert
-joinrowsetimpl.numnotequal = Elementanzahl in rowset nicht gleich \u00fcbereinstimmende Spalte
-joinrowsetimpl.notdefined = Kein definierter Verkn\u00fcpfungstyp
-joinrowsetimpl.notsupported = Verkn\u00fcpfungstyp wird nicht unterst\u00fctzt
-joinrowsetimpl.initerror = Initialisierungsfehler bei JoinRowSet
+joinrowsetimpl.matchnotset = \u00DCbereinstimmungsspalte wurde nicht f\u00FCr Join festgelegt
+joinrowsetimpl.numnotequal = Elementanzahl in rowset nicht gleich \u00DCbereinstimmungsspalte
+joinrowsetimpl.notdefined = Kein definierter Join-Typ
+joinrowsetimpl.notsupported = Join-Typ wird nicht unterst\u00FCtzt
+joinrowsetimpl.initerror = JoinRowSet-Initialisierungsfehler
 joinrowsetimpl.genericerr = Generischer Anfangsfehler bei joinrowset
-joinrowsetimpl.emptyrowset = Leeres rowset kann nicht zu diesem JoinRowSet hinzugef\u00fcgt werden
+joinrowsetimpl.emptyrowset = Leeres rowset kann nicht zu diesem JoinRowSet hinzugef\u00FCgt werden
 
 #JdbcRowSetImpl exceptions
-jdbcrowsetimpl.invalstate = Ung\u00fcltiger Status
-jdbcrowsetimpl.connect = JdbcRowSet (verbinden), keine JNDI-Verbindung m\u00f6glich
-jdbcrowsetimpl.paramtype = Parametertyp konnte nicht abgeleitet werden
-jdbcrowsetimpl.matchcols = \u00dcbereinstimmende Spalten entsprechen nicht den definierten Spalten
-jdbcrowsetimpl.setmatchcols = \u00dcbereinstimmende Spalten m\u00fcssen vor dem Abrufen definiert werden
-jdbcrowsetimpl.matchcols1 = Wert f\u00fcr \u00fcbereinstimmende Spalten muss gr\u00f6\u00dfer als 0 sein
-jdbcrowsetimpl.matchcols2 = \u00dcbereinstimmende Spalten k\u00f6nnen keine Null- oder leere Zeichenfolge aufweisen
-jdbcrowsetimpl.unsetmatch = Spalten ohne definierten Wert entsprechen nicht Spalten mit definiertem Wert
-jdbcrowsetimpl.usecolname = Spaltenname als Argument f\u00fcr unsetMatchColumn verwenden
-jdbcrowsetimpl.usecolid = Spalten-ID als Argument f\u00fcr unsetMatchColumn verwenden
+jdbcrowsetimpl.invalstate = Ung\u00FCltiger Status
+jdbcrowsetimpl.connect = JdbcRowSet (verbinden), keine JNDI-Verbindung m\u00F6glich
+jdbcrowsetimpl.paramtype = Parametertyp kann nicht abgeleitet werden
+jdbcrowsetimpl.matchcols = \u00DCbereinstimmungsspalten entsprechen nicht den festgelegten Spalten
+jdbcrowsetimpl.setmatchcols = \u00DCbereinstimmungsspalten m\u00FCssen vor dem Abrufen festgelegt werden
+jdbcrowsetimpl.matchcols1 = Wert f\u00FCr \u00DCbereinstimmungsspalten muss gr\u00F6\u00DFer als 0 sein
+jdbcrowsetimpl.matchcols2 = \u00DCbereinstimmungsspalten k\u00F6nnen keine Null- oder leere Zeichenfolge aufweisen
+jdbcrowsetimpl.unsetmatch = Spalten, deren Wert aufgehoben wird, entsprechen nicht den festgelegten Spalten
+jdbcrowsetimpl.usecolname = Spaltenname als Argument f\u00FCr unsetMatchColumn verwenden
+jdbcrowsetimpl.usecolid = Spalten-ID als Argument f\u00FCr unsetMatchColumn verwenden
 jdbcrowsetimpl.resnotupd = ResultSet kann nicht aktualisiert werden
-jdbcrowsetimpl.opnotysupp = Vorgang noch nicht unterst\u00fctzt
-jdbcrowsetimpl.featnotsupp = Funktion nicht unterst\u00fctzt
+jdbcrowsetimpl.opnotysupp = Vorgang noch nicht unterst\u00FCtzt
+jdbcrowsetimpl.featnotsupp = Feature nicht unterst\u00FCtzt
 
 #CachedRowSetReader exceptions
-crsreader.connect = (JNDI) Verbindung nicht m\u00f6glich
-crsreader.paramtype = Parametertyp konnte nicht abgeleitet werden
+crsreader.connect = (JNDI) Verbindung nicht m\u00F6glich
+crsreader.paramtype = Parametertyp kann nicht abgeleitet werden
 crsreader.connecterr = Interner Fehler in RowSetReader: Keine Verbindung oder kein Befehl
 crsreader.datedetected = Datum festgestellt
 crsreader.caldetected = Kalender festgestellt
 
 #CachedRowSetWriter exceptions
-crswriter.connect = Verbindung konnte nicht hergestellt werden
-crswriter.tname = writeData kann Tabellennamen nicht feststellen
-crswriter.params1 = Wert f\u00fcr params1: {0} 
-crswriter.params2 = Wert f\u00fcr params2: {0} 
-crswriter.conflictsno =  Konflikt beim Synchronisieren 
+crswriter.connect = Verbindung kann nicht hergestellt werden
+crswriter.tname = writeData kann Tabellennamen nicht bestimmen
+crswriter.params1 = Wert f\u00FCr params1: {0} 
+crswriter.params2 = Wert f\u00FCr params2: {0} 
+crswriter.conflictsno =  Konflikte beim Synchronisieren 
 
 #InsertRow exceptions
-insertrow.novalue = Es wurde kein Wert eingef\u00fcgt
+insertrow.novalue = Es wurde kein Wert eingef\u00FCgt
 
 #SyncResolverImpl exceptions
-syncrsimpl.indexval = Indexwert liegt au\u00dferhalb des Bereichs  
+syncrsimpl.indexval = Indexwert liegt au\u00DFerhalb des Bereichs  
 syncrsimpl.noconflict = Kein Konflikt bei dieser Spalte
-syncrsimpl.syncnotpos = Keine Synchronisation m\u00f6glich
-syncrsimpl.valtores = Aufzul\u00f6sender Wert befindet sich entweder in der Datenbank oder in cachedrowset
+syncrsimpl.syncnotpos = Keine Synchronisierung m\u00F6glich
+syncrsimpl.valtores = Aufzul\u00F6sender Wert kann sich entweder in der Datenbank oder in cachedrowset befinden
 
 #WebRowSetXmlReader exception
-wrsxmlreader.invalidcp = Ende von RowSet wurde erreicht. Ung\u00fcltige Cursorposition
+wrsxmlreader.invalidcp = Ende von RowSet wurde erreicht. Ung\u00FCltige Cursorposition
 wrsxmlreader.readxml = readXML: {0}
-wrsxmlreader.parseerr = ** Parsing-Fehler: {0}, Zeile: {1} , uri: {2}
+wrsxmlreader.parseerr = ** Parsing-Fehler: {0}, Zeile: {1} , URI: {2}
 
 #WebRowSetXmlWriter exceptions
 wrsxmlwriter.ioex = IOException: {0}
 wrsxmlwriter.sqlex = SQLException: {0}
-wrsxmlwriter.failedwrite = Schreiben des Werts fehlgeschlagen
-wsrxmlwriter.notproper = Kein zul\u00e4ssiger Typ
+wrsxmlwriter.failedwrite = Schreiben des Wertes nicht erfolgreich
+wsrxmlwriter.notproper = Kein zul\u00E4ssiger Typ
 
 #XmlReaderContentHandler exceptions
-xmlrch.errmap = Fehler beim Definieren der Zuordnung: {0}
-xmlrch.errmetadata = Fehler beim Definieren der Metadaten: {0}
-xmlrch.errinsertval = Fehler beim Einf\u00fcgen der Werte: {0}
+xmlrch.errmap = Fehler beim Festlegen der Zuordnung: {0}
+xmlrch.errmetadata = Fehler beim Festlegen der Metadaten: {0}
+xmlrch.errinsertval = Fehler beim Einf\u00FCgen der Werte: {0}
 xmlrch.errconstr = Fehler beim Erstellen der Zeile: {0}
-xmlrch.errdel = Fehler beim L\u00f6schen der Zeile: {0}
-xmlrch.errinsdel = Fehler beim Erstellen der Einf\u00fcge- oder L\u00f6schzeile: {0}
-xmlrch.errupdate = Fehler beim Erstellen der Aktualisierungszeile: {0}
+xmlrch.errdel = Fehler beim L\u00F6schen der Zeile: {0}
+xmlrch.errinsert = Fehler beim Erstellen der Einf\u00FCgezeile: {0}
+xmlrch.errinsdel = Fehler beim Erstellen der Einf\u00FCge- oder L\u00F6schzeile: {0}
+xmlrch.errupdate = Fehler beim Erstellen der Updatezeile: {0}
 xmlrch.errupdrow = Fehler beim Aktualisieren der Zeile: {0}
 xmlrch.chars = Zeichen:
-xmlrch.badvalue = Fehlerhafter Wert; Eigenschaft darf nicht Null sein.
-xmlrch.badvalue1 = Fehlerhafter Wert; Metadaten d\u00fcrfen nicht Null sein.
-xmlrch.warning =  ** Warnung: {0}, Zeile: {1} , uri: {2}
+xmlrch.badvalue = Ung\u00FCltiger Wert. Eigenschaft kann nicht auf null gesetzt werden
+xmlrch.badvalue1 = Ung\u00FCltiger Wert. Metadaten k\u00F6nnen nicht auf null gesetzt werden
+xmlrch.warning =  ** Warnung: {0}, Zeile: {1} , URI: {2}
 
 #RIOptimisticProvider Exceptions
-riop.locking = Sperren der Klassifizierung wird nicht unterst\u00fctzt
+riop.locking = Sperren der Klassifizierung wird nicht unterst\u00FCtzt
 
 #RIXMLProvider exceptions
-rixml.unsupp = Keine Unterst\u00fctzung f\u00fcr RIXMLProvider
+rixml.unsupp = Keine Unterst\u00FCtzung bei RIXMLProvider
--- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_es.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_es.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -24,16 +24,16 @@
 #
 
 # CacheRowSetImpl exceptions
-cachedrowsetimpl.populate = Objeto ResultSet no v\u00e1lido para m\u00e9todo de relleno
-cachedrowsetimpl.invalidp = El proveedor de persistencia generado no es v\u00e1lido
-cachedrowsetimpl.nullhash = La instancia CachedRowSetImpl no se puede crear. Hashtable nula proporcionada al constructor
-cachedrowsetimpl.invalidop = Operaci\u00f3n no v\u00e1lida al insertar fila
+cachedrowsetimpl.populate = Se ha proporcionado un objeto ResultSet no v\u00E1lido para el m\u00E9todo de relleno
+cachedrowsetimpl.invalidp = El proveedor de persistencia generado no es v\u00E1lido
+cachedrowsetimpl.nullhash = La instancia CachedRowSetImpl no se puede crear. Se ha proporcionado una tabla hash nula al constructor
+cachedrowsetimpl.invalidop = Operaci\u00F3n no v\u00E1lida al insertar fila
 cachedrowsetimpl.accfailed = Fallo de acceptChanges
-cachedrowsetimpl.invalidcp = Posici\u00f3n de cursor no v\u00e1lida
-cachedrowsetimpl.illegalop = Operaci\u00f3n no permitida en fila no insertada
-cachedrowsetimpl.clonefail = Fallo en la clonaci\u00f3n: {0}
-cachedrowsetimpl.invalidcol = \u00cdndice de columnas no v\u00e1lido
-cachedrowsetimpl.invalcolnm = Nombre de columna no v\u00e1lido
+cachedrowsetimpl.invalidcp = Posici\u00F3n de cursor no v\u00E1lida
+cachedrowsetimpl.illegalop = Operaci\u00F3n no permitida en fila no insertada
+cachedrowsetimpl.clonefail = Fallo en la clonaci\u00F3n: {0}
+cachedrowsetimpl.invalidcol = \u00CDndice de columnas no v\u00E1lido
+cachedrowsetimpl.invalcolnm = Nombre de columna no v\u00E1lido
 cachedrowsetimpl.boolfail = Fallo de getBoolen en valor ( {0} ) de columna {1}
 cachedrowsetimpl.bytefail = Fallo de getByte en valor ( {0} ) de columna {1}
 cachedrowsetimpl.shortfail = Fallo de getShort en valor ( {0} ) de columna {1}
@@ -41,128 +41,130 @@
 cachedrowsetimpl.longfail = Fallo de getLong en valor ( {0} ) de columna {1}
 cachedrowsetimpl.floatfail = Fallo de getFloat en valor ( {0} ) de columna {1}
 cachedrowsetimpl.doublefail = Fallo de getDouble en valor ( {0} ) de columna {1}
-cachedrowsetimpl.dtypemismt = Discordancia entre tipos de datos 
-cachedrowsetimpl.datefail = Fallo de getDate en valor ( {0} ) de columna {1} no es posible convertir
-cachedrowsetimpl.timefail = Fallo de getTime en valor ( {0} ) de columna {1} no es posible convertir
-cachedrowsetimpl.posupdate = Actualizaciones posicionadas incompatibles
-cachedrowsetimpl.unableins = No se puede crear instancia: {0}
-cachedrowsetimpl.beforefirst = beforeFirst: Operaci\u00f3n de cursor no v\u00e1lida
-cachedrowsetimpl.first = First: Operaci\u00f3n de cursor no v\u00e1lida
-cachedrowsetimpl.last = last: TYPE_FORWARD_ONLY
-cachedrowsetimpl.absolute = absolute: Posici\u00f3n de cursor no v\u00e1lida
-cachedrowsetimpl.relative = relative: Posici\u00f3n de cursor no v\u00e1lida
+cachedrowsetimpl.dtypemismt = Discordancia entre Tipos de Datos 
+cachedrowsetimpl.datefail = Fallo de getDate en valor ( {0} ) de columna {1}. No es posible convertir
+cachedrowsetimpl.timefail = Fallo de getTime en valor ( {0} ) de columna {1}. No es posible convertir
+cachedrowsetimpl.posupdate = Actualizaciones posicionadas no soportadas
+cachedrowsetimpl.unableins = No se ha podido crear la instancia: {0}
+cachedrowsetimpl.beforefirst = beforeFirst: Operaci\u00F3n de cursor no v\u00E1lida
+cachedrowsetimpl.first = First: Operaci\u00F3n de cursor no v\u00E1lida
+cachedrowsetimpl.last = last : TYPE_FORWARD_ONLY
+cachedrowsetimpl.absolute = absolute: Posici\u00F3n de cursor no v\u00E1lida
+cachedrowsetimpl.relative = relative: Posici\u00F3n de cursor no v\u00E1lida
 cachedrowsetimpl.asciistream = fallo en lectura de flujo de caracteres ascii
 cachedrowsetimpl.binstream = fallo de lectura de flujo binario
-cachedrowsetimpl.failedins = Fallo en inserci\u00f3n de fila
+cachedrowsetimpl.failedins = Fallo en inserci\u00F3n de fila
 cachedrowsetimpl.updateins = llamada a updateRow mientras se insertaba fila
-cachedrowsetimpl.movetoins = moveToInsertRow: CONCUR_READ_ONLY
+cachedrowsetimpl.movetoins = moveToInsertRow : CONCUR_READ_ONLY
 cachedrowsetimpl.movetoins1 = moveToInsertRow: no hay metadatos
-cachedrowsetimpl.movetoins2 = moveToInsertRow: n\u00famero de columnas no v\u00e1lido
+cachedrowsetimpl.movetoins2 = moveToInsertRow: n\u00FAmero de columnas no v\u00E1lido
 cachedrowsetimpl.tablename = El nombre de la tabla no puede ser nulo
-cachedrowsetimpl.keycols = Columnas clave no v\u00e1lidas
-cachedrowsetimpl.opnotsupp = La base de datos no admite esta operaci\u00f3n
-cachedrowsetimpl.matchcols = Las columnas emparejadas no concuerdan con las definidas
-cachedrowsetimpl.setmatchcols = Configurar emparejamiento de columnas antes de obtenerlas
-cachedrowsetimpl.matchcols1 = Las columnas emparejadas deben ser mayores que 0
-cachedrowsetimpl.matchcols2 = Las columnas emparejadas deben estar vac\u00edas o ser una cadena nula
-cachedrowsetimpl.unsetmatch = Las columnas que se est\u00e1n desconfigurando no coinciden con las configuradas
-cachedrowsetimpl.unsetmatch1 = Usar nombre de columna como argumento en unsetMatchColumn
-cachedrowsetimpl.unsetmatch2 = Usar ID de columna como argumento en unsetMatchColumn
-cachedrowsetimpl.numrows = El n\u00famero de filas es menor que cero o menor que el tama\u00f1o obtenido
-cachedrowsetimpl.startpos = La posici\u00f3n de inicio no puede ser negativa
-cachedrowsetimpl.nextpage = Rellenar datos antes de realizar llamada 
-cachedrowsetimpl.pagesize = El tama\u00f1o de p\u00e1gina no puede ser menor que cero
-cachedrowsetimpl.pagesize1 = El tama\u00f1o de p\u00e1gina no puede ser mayor que maxRows
-cachedrowsetimpl.fwdonly = ResultSet s\u00f3lo se reenv\u00eda
+cachedrowsetimpl.keycols = Columnas clave no v\u00E1lidas
+cachedrowsetimpl.invalidcol = \u00CDndice de columnas no v\u00E1lido
+cachedrowsetimpl.opnotsupp = La base de datos no admite esta operaci\u00F3n
+cachedrowsetimpl.matchcols = Las columnas coincidentes no concuerdan con las definidas
+cachedrowsetimpl.setmatchcols = Defina las columnas coincidentes antes de obtenerlas
+cachedrowsetimpl.matchcols1 = Las columnas coincidentes deben ser mayores que 0
+cachedrowsetimpl.matchcols2 = Las columnas coincidentes deben estar vac\u00EDas o ser una cadena nula
+cachedrowsetimpl.unsetmatch = Las columnas cuya definici\u00F3n se est\u00E1 anulando no concuerdan con las definidas
+cachedrowsetimpl.unsetmatch1 = Use el nombre de columna como argumento en unsetMatchColumn
+cachedrowsetimpl.unsetmatch2 = Use el identificador de columna como argumento en unsetMatchColumn
+cachedrowsetimpl.numrows = El n\u00FAmero de filas es menor que cero o menor que el tama\u00F1o recuperado
+cachedrowsetimpl.startpos = La posici\u00F3n de inicio no puede ser negativa
+cachedrowsetimpl.nextpage = Rellene los datos antes de realizar la llamada 
+cachedrowsetimpl.pagesize = El tama\u00F1o de p\u00E1gina no puede ser menor que cero
+cachedrowsetimpl.pagesize1 = El tama\u00F1o de p\u00E1gina no puede ser mayor que maxRows
+cachedrowsetimpl.fwdonly = ResultSet s\u00F3lo se reenv\u00EDa
 cachedrowsetimpl.type = El tipo es: {0}
-cachedrowsetimpl.opnotysupp = Operaci\u00f3n no admitida todav\u00eda
-cachedrowsetimpl.featnotsupp = Funci\u00f3n no admitida
+cachedrowsetimpl.opnotysupp = Operaci\u00F3n no soportada todav\u00EDa
+cachedrowsetimpl.featnotsupp = Funci\u00F3n no soportada
 
 # WebRowSetImpl exceptions
-webrowsetimpl.nullhash = La instancia WebRowSetImpl no se puede crear. Hashtable nula proporcionada al constructor
-webrowsetimpl.invalidwr = Escritor no v\u00e1lido
-webrowsetimpl.invalidrd = Lector no v\u00e1lido
+webrowsetimpl.nullhash = La instancia WebRowSetImpl no se puede crear. Se ha proporcionado una tabla hash nula al constructor
+webrowsetimpl.invalidwr = Escritor no v\u00E1lido
+webrowsetimpl.invalidrd = Lector no v\u00E1lido
 
 #FilteredRowSetImpl exceptions
-filteredrowsetimpl.relative = relative: Operaci\u00f3n de cursor no v\u00e1lida 
-filteredrowsetimpl.absolute = absolute: Operaci\u00f3n de cursor no v\u00e1lida
+filteredrowsetimpl.relative = relative: Operaci\u00F3n de cursor no v\u00E1lida 
+filteredrowsetimpl.absolute = absolute: Operaci\u00F3n de cursor no v\u00E1lida
 filteredrowsetimpl.notallowed = El filtro no admite este valor
 
 #JoinRowSetImpl exceptions
 joinrowsetimpl.notinstance = No es una instancia de rowset
-joinrowsetimpl.matchnotset = Emparejamiento de columnas no configurado para unir
-joinrowsetimpl.numnotequal = El n\u00famero de elementos de rowset y el de emparejamiento de columnas no es el mismo
-joinrowsetimpl.notdefined = No es un tipo de uni\u00f3n definido
-joinrowsetimpl.notsupported = Este tipo de uni\u00f3n no es compatible
-joinrowsetimpl.initerror = Error de inicio de JoinRowSet
-joinrowsetimpl.genericerr = Error de Genric joinrowset intial
-joinrowsetimpl.emptyrowset = No se puede a\u00f1adir un rowset vac\u00edo a este JoinRowSet
+joinrowsetimpl.matchnotset = Las columnas coincidentes no est\u00E1n definidas para la uni\u00F3n
+joinrowsetimpl.numnotequal = El n\u00FAmero de elementos de rowset y el de columnas coincidentes no es el mismo
+joinrowsetimpl.notdefined = No es un tipo de uni\u00F3n definido
+joinrowsetimpl.notsupported = Este tipo de uni\u00F3n no est\u00E1 soportado
+joinrowsetimpl.initerror = Error de inicializaci\u00F3n de JoinRowSet
+joinrowsetimpl.genericerr = Error de inicializaci\u00F3n gen\u00E9rico de joinrowset
+joinrowsetimpl.emptyrowset = No se puede agregar un juego de filas vac\u00EDo a este JoinRowSet
 
 #JdbcRowSetImpl exceptions
-jdbcrowsetimpl.invalstate = Estado no v\u00e1lido
-jdbcrowsetimpl.connect = JdbcRowSet (conectar) JNDI no se puede conectar
-jdbcrowsetimpl.paramtype = No se puede deducir tipo de par\u00e1metro
-jdbcrowsetimpl.matchcols = Las columnas emparejadas no concuerdan con las definidas
-jdbcrowsetimpl.setmatchcols = Configurar emparejamiento de columnas antes de obtenerlas
-jdbcrowsetimpl.matchcols1 = Las columnas emparejadas deben ser mayores que 0
-jdbcrowsetimpl.matchcols2 = Las columnas emparejadas no pueden estar vac\u00edas ni ser una cadena nula
-jdbcrowsetimpl.unsetmatch = Las columnas que se est\u00e1n desconfigurando no son las mismas que las configuradas
-jdbcrowsetimpl.usecolname = Usar nombre de columna como argumento en unsetMatchColumn
-jdbcrowsetimpl.usecolid = Usar ID de columna como argumento en unsetMatchColumn
+jdbcrowsetimpl.invalstate = Estado no v\u00E1lido
+jdbcrowsetimpl.connect = JdbcRowSet (connect): JNDI no se puede conectar
+jdbcrowsetimpl.paramtype = No se puede deducir el tipo de par\u00E1metro
+jdbcrowsetimpl.matchcols = Las columnas coincidentes no concuerdan con las definidas
+jdbcrowsetimpl.setmatchcols = Defina las columnas coincidentes antes de obtenerlas
+jdbcrowsetimpl.matchcols1 = Las columnas coincidentes deben ser mayores que 0
+jdbcrowsetimpl.matchcols2 = Las columnas coincidentes no pueden estar vac\u00EDas ni ser una cadena nula
+jdbcrowsetimpl.unsetmatch = Las columnas cuya definici\u00F3n se est\u00E1 anulando no concuerdan con las definidas
+jdbcrowsetimpl.usecolname = Use el nombre de columna como argumento en unsetMatchColumn
+jdbcrowsetimpl.usecolid = Use el identificador de columna como argumento en unsetMatchColumn
 jdbcrowsetimpl.resnotupd = ResultSet no se puede actualizar
-jdbcrowsetimpl.opnotysupp = Operaci\u00f3n no admitida todav\u00eda
-jdbcrowsetimpl.featnotsupp = Funci\u00f3n no admitida
+jdbcrowsetimpl.opnotysupp = Operaci\u00F3n no soportada todav\u00EDa
+jdbcrowsetimpl.featnotsupp = Funci\u00F3n no soportada
 
 #CachedRowSetReader exceptions
-crsreader.connect = (JNDI) No se puede conectar
-crsreader.paramtype = No se puede deducir tipo de par\u00e1metro
-crsreader.connecterr = Error interno en RowSetReader: no hay conexi\u00f3n o comando
-crsreader.datedetected = Fecha detectada
-crsreader.caldetected = Calendario detectado
+crsreader.connect = (JNDI) No se ha podido conectar
+crsreader.paramtype = No se ha podido deducir el tipo de par\u00E1metro
+crsreader.connecterr = Error interno en RowSetReader: no hay conexi\u00F3n o comando
+crsreader.datedetected = Fecha Detectada
+crsreader.caldetected = Calendario Detectado
 
 #CachedRowSetWriter exceptions
-crswriter.connect = No se puede obtener una conexi\u00f3n
+crswriter.connect = No se ha podido obtener una conexi\u00F3n
 crswriter.tname = writeData no puede determinar el nombre de tabla
 crswriter.params1 = Valor de params1: {0} 
 crswriter.params2 = Valor de params2: {0} 
-crswriter.conflictsno =  conflictos en la sincronizaci\u00f3n 
+crswriter.conflictsno =  conflictos en la sincronizaci\u00F3n 
 
 #InsertRow exceptions
-insertrow.novalue = No se ha insertado ning\u00fan valor
+insertrow.novalue = No se ha insertado ning\u00FAn valor
 
 #SyncResolverImpl exceptions
-syncrsimpl.indexval = El valor de \u00edndice est\u00e1 fuera del intervalo  
-syncrsimpl.noconflict = Esta columna no est\u00e1 en conflicto
+syncrsimpl.indexval = El valor de \u00EDndice est\u00E1 fuera de rango  
+syncrsimpl.noconflict = Esta columna no est\u00E1 en conflicto
 syncrsimpl.syncnotpos = No se puede sincronizar
-syncrsimpl.valtores = El valor que se debe definir puede estar en la base de datos o en cachedrowset
+syncrsimpl.valtores = El valor que se debe resolver puede estar en la base de datos o en cachedrowset
 
 #WebRowSetXmlReader exception
-wrsxmlreader.invalidcp = Se ha llegado al final de RowSet. Posici\u00f3n de cursor no v\u00e1lida
-wrsxmlreader.readxml = readXML: {0}
-wrsxmlreader.parseerr = ** Error de an\u00e1lisis: {0} , l\u00ednea: {1} , uri: {2}
+wrsxmlreader.invalidcp = Se ha llegado al final de RowSet. Posici\u00F3n de cursor no v\u00E1lida
+wrsxmlreader.readxml = readXML : {0}
+wrsxmlreader.parseerr = ** Error de an\u00E1lisis: {0} , l\u00EDnea: {1} , uri: {2}
 
 #WebRowSetXmlWriter exceptions
-wrsxmlwriter.ioex = IOException: {0}
-wrsxmlwriter.sqlex = SQLException: {0}
-wrsxmlwriter.failedwrite = No se pudo escribir valor
+wrsxmlwriter.ioex = IOException : {0}
+wrsxmlwriter.sqlex = SQLException : {0}
+wrsxmlwriter.failedwrite = Error al escribir el valor
 wsrxmlwriter.notproper = Tipo incorrecto
 
 #XmlReaderContentHandler exceptions
-xmlrch.errmap = Error al configurar la asignaci\u00f3n: {0}
-xmlrch.errmetadata = Error al configurar metadatos: {0}
+xmlrch.errmap = Error al definir la asignaci\u00F3n: {0}
+xmlrch.errmetadata = Error al definir metadatos: {0}
 xmlrch.errinsertval = Error al insertar los valores: {0}
-xmlrch.errconstr = Error al construir fila: {0}
-xmlrch.errdel = Error al borrar fila: {0}
-xmlrch.errinsdel = Error al construir insertar o suprimir fila: {0}
-xmlrch.errupdate = Error al construir actualizar fila: {0}
+xmlrch.errconstr = Error al construir la fila: {0}
+xmlrch.errdel = Error al suprimir la fila: {0}
+xmlrch.errinsert = Error al construir la fila de inserci\u00F3n: {0}
+xmlrch.errinsdel = Error al construir la fila de inserci\u00F3n o supresi\u00F3n: {0}
+xmlrch.errupdate = Error al construir la fila de actualizaci\u00F3n: {0}
 xmlrch.errupdrow = Error al actualizar la fila: {0}
 xmlrch.chars = caracteres:
 xmlrch.badvalue = Valor incorrecto; la propiedad no puede ser nula
 xmlrch.badvalue1 = Valor incorrecto; los metadatos no pueden ser nulos
-xmlrch.warning =  ** Advertencia: {0} , l\u00ednea: {1} , uri: {2}
+xmlrch.warning =  ** Advertencia: {0} , l\u00EDnea: {1} , uri: {2}
 
 #RIOptimisticProvider Exceptions
-riop.locking = No se permite bloquear la clasificaci\u00f3n
+riop.locking = No se permite bloquear la clasificaci\u00F3n
 
 #RIXMLProvider exceptions
-rixml.unsupp = No compatible con RIXMLProvider
+rixml.unsupp = No soportado con RIXMLProvider
--- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_fr.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_fr.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -24,117 +24,118 @@
 #
 
 # CacheRowSetImpl exceptions
-cachedrowsetimpl.populate = L'objet ResultSet fourni en entr\u00e9e de la m\u00e9thode n'est pas valide
-cachedrowsetimpl.invalidp = Le fournisseur de persistance g\u00e9n\u00e9r\u00e9 n'est pas valide
-cachedrowsetimpl.nullhash = Impossible de cr\u00e9er une instance de CachedRowSetImpl. Table de hachage null fournie au constructeur
-cachedrowsetimpl.invalidop = Op\u00e9ration non valide lors de l'insertion de ligne
-cachedrowsetimpl.accfailed = \u00c9chec de acceptChanges
+cachedrowsetimpl.populate = L'objet ResultSet fourni en entr\u00E9e de la m\u00E9thode n'est pas valide
+cachedrowsetimpl.invalidp = Le fournisseur de persistance g\u00E9n\u00E9r\u00E9 n'est pas valide
+cachedrowsetimpl.nullhash = Impossible de cr\u00E9er une instance de CachedRowSetImpl. Table de hachage NULL fournie au constructeur
+cachedrowsetimpl.invalidop = Op\u00E9ration non valide lors de l'insertion de ligne
+cachedrowsetimpl.accfailed = Echec de acceptChanges
 cachedrowsetimpl.invalidcp = Position du curseur non valide
-cachedrowsetimpl.illegalop = Op\u00e9ration non autoris\u00e9e sur ligne non ins\u00e9r\u00e9e
-cachedrowsetimpl.clonefail = \u00c9chec du clonage : {0}
+cachedrowsetimpl.illegalop = Op\u00E9ration non admise sur une ligne non ins\u00E9r\u00E9e
+cachedrowsetimpl.clonefail = Echec du clonage : {0}
 cachedrowsetimpl.invalidcol = Index de colonne non valide
 cachedrowsetimpl.invalcolnm = Nom de colonne non valide
-cachedrowsetimpl.boolfail = \u00c9chec de getBoolen pour la valeur ({0}) de la colonne {1}
-cachedrowsetimpl.bytefail = \u00c9chec de getByte pour la valeur ({0}) de la colonne {1}
-cachedrowsetimpl.shortfail = \u00c9chec de getShort pour la valeur ({0}) de la colonne {1}
-cachedrowsetimpl.intfail = \u00c9chec de getInt pour la valeur ({0}) de la colonne {1}
-cachedrowsetimpl.longfail = \u00c9chec de getLong pour la valeur ({0}) de la colonne {1}
-cachedrowsetimpl.floatfail = \u00c9chec de getFloat pour la valeur ({0}) de la colonne {1}
-cachedrowsetimpl.doublefail = \u00c9chec de getDouble pour la valeur ({0}) de la colonne {1}
-cachedrowsetimpl.dtypemismt = Le type de donn\u00e9es ne correspond pas 
-cachedrowsetimpl.datefail = \u00c9chec de getDate pour la valeur ({0}) de la colonne {1} - Aucune conversion possible
-cachedrowsetimpl.timefail = \u00c9chec de getDate pour la valeur ({0}) de la colonne {1} - Aucune conversion possible
-cachedrowsetimpl.posupdate = Mises \u00e0 jour choisies non prises en charge
+cachedrowsetimpl.boolfail = Echec de getBoolen pour la valeur ({0}) de la colonne {1}
+cachedrowsetimpl.bytefail = Echec de getByte pour la valeur ({0}) de la colonne {1}
+cachedrowsetimpl.shortfail = Echec de getShort pour la valeur ({0}) de la colonne {1}
+cachedrowsetimpl.intfail = Echec de getInt pour la valeur ({0}) de la colonne {1}
+cachedrowsetimpl.longfail = Echec de getLong pour la valeur ({0}) de la colonne {1}
+cachedrowsetimpl.floatfail = Echec de getFloat pour la valeur ({0}) de la colonne {1}
+cachedrowsetimpl.doublefail = Echec de getDouble pour la valeur ({0}) de la colonne {1}
+cachedrowsetimpl.dtypemismt = Le type de donn\u00E9es ne correspond pas 
+cachedrowsetimpl.datefail = Echec de getDate pour la valeur ({0}) de la colonne {1} - Aucune conversion possible
+cachedrowsetimpl.timefail = Echec de getTime pour la valeur ({0}) de la colonne {1} - Aucune conversion possible
+cachedrowsetimpl.posupdate = Mises \u00E0 jour choisies non prises en charge
 cachedrowsetimpl.unableins = Instanciation impossible : {0}
-cachedrowsetimpl.beforefirst = beforeFirst : op\u00e9ration de curseur non valide
-cachedrowsetimpl.first = First : op\u00e9ration de curseur non valide
+cachedrowsetimpl.beforefirst = beforeFirst : op\u00E9ration de curseur non valide
+cachedrowsetimpl.first = First : op\u00E9ration de curseur non valide
 cachedrowsetimpl.last = last : TYPE_FORWARD_ONLY
 cachedrowsetimpl.absolute = absolute : position de curseur non valide
 cachedrowsetimpl.relative = relative : position de curseur non valide
-cachedrowsetimpl.asciistream = \u00e9chec de la lecture pour le flux ascii
-cachedrowsetimpl.binstream = \u00e9chec de la lecture pour le flux binaire
-cachedrowsetimpl.failedins = \u00c9chec de l'insertion de ligne
+cachedrowsetimpl.asciistream = \u00E9chec de la lecture pour le flux ASCII
+cachedrowsetimpl.binstream = \u00E9chec de la lecture pour le flux binaire
+cachedrowsetimpl.failedins = Echec de l'insertion de ligne
 cachedrowsetimpl.updateins = appel de updateRow lors de l'insertion de ligne
 cachedrowsetimpl.movetoins = moveToInsertRow : CONCUR_READ_ONLY
-cachedrowsetimpl.movetoins1 = moveToInsertRow : aucune m\u00e9tadonn\u00e9e
-cachedrowsetimpl.movetoins2 = moveToInsertRow : Nombre de colonnes non valide
-cachedrowsetimpl.tablename = Le nom du tableau ne peut pas \u00eatre null
-cachedrowsetimpl.keycols = Colonnes de cl\u00e9 non valides
-cachedrowsetimpl.opnotsupp = Op\u00e9ration non prise en charge par la base de donn\u00e9es
-cachedrowsetimpl.matchcols = Les colonnes correspondantes ne sont pas les m\u00eames que les colonnes d\u00e9finies
-cachedrowsetimpl.setmatchcols = D\u00e9finissez les colonnes correspondantes avant de les prendre
-cachedrowsetimpl.matchcols1 = Les colonnes correspondantes doivent \u00eatre sup\u00e9rieures \u00e0 z\u00e9ro
-cachedrowsetimpl.matchcols2 = Les colonnes correspondantes doivent \u00eatres vides ou ne contenir que des cha\u00eenes vides
-cachedrowsetimpl.unsetmatch = Les colonnes d\u00e9finies et  non d\u00e9finies sont diff\u00e9rentes
-cachedrowsetimpl.unsetmatch1 = Utilisez le nom de la colonne en argument de unsetMatchColumn
-cachedrowsetimpl.unsetmatch2 = Utilisez l'ID de la colonne en argument de unsetMatchColumn
-cachedrowsetimpl.numrows = Le nombre de lignes est inf\u00e9rieur \u00e0 z\u00e9ro ou \u00e0 la taille d'extraction
-cachedrowsetimpl.startpos = La position de d\u00e9part ne peut pas \u00eatre n\u00e9gative
-cachedrowsetimpl.nextpage = Entrez les donn\u00e9es avant l'appel 
-cachedrowsetimpl.pagesize = La taille de la page ne peut pas \u00eatre n\u00e9gative
-cachedrowsetimpl.pagesize1 = La taille de la page ne peut pas \u00eatre sup\u00e9rieure \u00e0 maxRows
-cachedrowsetimpl.fwdonly = ResultSet est en avant seulement
+cachedrowsetimpl.movetoins1 = moveToInsertRow : aucune m\u00E9tadonn\u00E9e
+cachedrowsetimpl.movetoins2 = moveToInsertRow : nombre de colonnes non valide
+cachedrowsetimpl.tablename = Le nom de la table ne peut pas \u00EAtre NULL
+cachedrowsetimpl.keycols = Colonnes de cl\u00E9 non valides
+cachedrowsetimpl.invalidcol = Index de colonne non valide
+cachedrowsetimpl.opnotsupp = Op\u00E9ration non prise en charge par la base de donn\u00E9es
+cachedrowsetimpl.matchcols = Les colonnes correspondantes ne sont pas les m\u00EAmes que les colonnes d\u00E9finies
+cachedrowsetimpl.setmatchcols = D\u00E9finir les colonnes correspondantes avant de les prendre
+cachedrowsetimpl.matchcols1 = Les colonnes correspondantes doivent \u00EAtre sup\u00E9rieures \u00E0 z\u00E9ro
+cachedrowsetimpl.matchcols2 = Les colonnes correspondantes doivent \u00EAtres vides ou ne contenir que des cha\u00EEnes NULL
+cachedrowsetimpl.unsetmatch = Les colonnes d\u00E9finies et non d\u00E9finies sont diff\u00E9rentes
+cachedrowsetimpl.unsetmatch1 = Utiliser le nom de colonne comme argument pour unsetMatchColumn
+cachedrowsetimpl.unsetmatch2 = Utiliser l'ID de colonne comme argument pour unsetMatchColumn
+cachedrowsetimpl.numrows = Le nombre de lignes est inf\u00E9rieur \u00E0 z\u00E9ro ou \u00E0 la taille d'extraction
+cachedrowsetimpl.startpos = La position de d\u00E9part ne peut pas \u00EAtre n\u00E9gative
+cachedrowsetimpl.nextpage = Entrer les donn\u00E9es avant l'appel 
+cachedrowsetimpl.pagesize = La taille de la page ne peut pas \u00EAtre n\u00E9gative
+cachedrowsetimpl.pagesize1 = La taille de la page ne peut pas \u00EAtre sup\u00E9rieure \u00E0 maxRows
+cachedrowsetimpl.fwdonly = ResultSet va en avant seulement
 cachedrowsetimpl.type = Le type est : {0}
-cachedrowsetimpl.opnotysupp = Op\u00e9ration non encore prise en charge
-cachedrowsetimpl.featnotsupp = Fonction non prise en charge
+cachedrowsetimpl.opnotysupp = Op\u00E9ration non encore prise en charge
+cachedrowsetimpl.featnotsupp = Fonctionnalit\u00E9 non prise en charge
 
 # WebRowSetImpl exceptions
-webrowsetimpl.nullhash = Impossible de cr\u00e9er une instance de WebRowSetImpl. Table de hachage null fournie au constructeur
-webrowsetimpl.invalidwr = G\u00e9n\u00e9rateur non valide
-webrowsetimpl.invalidrd = Lecteur non valide
+webrowsetimpl.nullhash = Impossible de cr\u00E9er une instance de WebRowSetImpl. Table de hachage NULL fournie au constructeur
+webrowsetimpl.invalidwr = Processus d'\u00E9criture non valide
+webrowsetimpl.invalidrd = Processus de lecture non valide
 
 #FilteredRowSetImpl exceptions
-filteredrowsetimpl.relative = relative : op\u00e9ration de curseur non valide 
-filteredrowsetimpl.absolute = absolute : op\u00e9ration de curseur non valide
-filteredrowsetimpl.notallowed = Cette valeur n'est pas autoris\u00e9e via le filtre
+filteredrowsetimpl.relative = relative : op\u00E9ration de curseur non valide 
+filteredrowsetimpl.absolute = absolute : op\u00E9ration de curseur non valide
+filteredrowsetimpl.notallowed = Cette valeur n'est pas autoris\u00E9e via le filtre
 
 #JoinRowSetImpl exceptions
 joinrowsetimpl.notinstance = N'est pas une instance de RowSet
-joinrowsetimpl.matchnotset = Les colonnes correspondantes ne sont pas group\u00e9es pour jointure
-joinrowsetimpl.numnotequal = Le nombre d'\u00e9l\u00e9ments dans RowSet est diff\u00e9rent du nombre de colonnes correspondantes
-joinrowsetimpl.notdefined = Ce n'est pas un type de jointure d\u00e9fini
+joinrowsetimpl.matchnotset = Les colonnes correspondantes ne sont pas d\u00E9finies pour la jointure
+joinrowsetimpl.numnotequal = Le nombre d'\u00E9l\u00E9ments dans RowSet est diff\u00E9rent du nombre de colonnes correspondantes
+joinrowsetimpl.notdefined = Ce n'est pas un type de jointure d\u00E9fini
 joinrowsetimpl.notsupported = Ce type de jointure n'est pas pris en charge
 joinrowsetimpl.initerror = Erreur d'initialisation de JoinRowSet
-joinrowsetimpl.genericerr = Erreur initiale g\u00e9n\u00e9rique de JoinRowSet
-joinrowsetimpl.emptyrowset = Impossible d'ajouter un objet RowSet vide \u00e0 ce JoinRowSet
+joinrowsetimpl.genericerr = Erreur initiale g\u00E9n\u00E9rique de JoinRowSet
+joinrowsetimpl.emptyrowset = Impossible d'ajouter un objet RowSet vide \u00E0 ce JoinRowSet
 
 #JdbcRowSetImpl exceptions
-jdbcrowsetimpl.invalstate = \u00c9tat non valide
+jdbcrowsetimpl.invalstate = Etat non valide
 jdbcrowsetimpl.connect = Impossible de connecter JNDI JdbcRowSet (connexion)
-jdbcrowsetimpl.paramtype = Impossible de d\u00e9duire le type de param\u00e8tre
-jdbcrowsetimpl.matchcols = Les colonnes correspondantes ne sont pas les m\u00eames que les colonnes d\u00e9finies
-jdbcrowsetimpl.setmatchcols = D\u00e9finissez les colonnes correspondantes avant de les prendre
-jdbcrowsetimpl.matchcols1 = Le nombre de colonnes correspondantes doit \u00eatre sup\u00e9rieur \u00e0 z\u00e9ro
-jdbcrowsetimpl.matchcols2 = Les colonnes correspondantes ne doivent pas \u00eatres vides ni contenir des cha\u00eenes vides
-jdbcrowsetimpl.unsetmatch = Les colonnes non d\u00e9finies ne sont pas les m\u00eames que les colonnes d\u00e9finies
-jdbcrowsetimpl.usecolname = Utilisez le nom de la colonne en argument de unsetMatchColumn
-jdbcrowsetimpl.usecolid = Utilisez l'ID de la colonne en argument de unsetMatchColumn
-jdbcrowsetimpl.resnotupd = La mise \u00e0 jour de ResultSet est interdite
-jdbcrowsetimpl.opnotysupp = Op\u00e9ration non encore prise en charge
-jdbcrowsetimpl.featnotsupp = Fonction non prise en charge
+jdbcrowsetimpl.paramtype = Impossible de d\u00E9duire le type de param\u00E8tre
+jdbcrowsetimpl.matchcols = Les colonnes correspondantes ne sont pas les m\u00EAmes que les colonnes d\u00E9finies
+jdbcrowsetimpl.setmatchcols = D\u00E9finir les colonnes correspondantes avant de les prendre
+jdbcrowsetimpl.matchcols1 = Les colonnes correspondantes doivent \u00EAtre sup\u00E9rieures \u00E0 z\u00E9ro
+jdbcrowsetimpl.matchcols2 = Les colonnes correspondantes ne doivent pas \u00EAtres NULL ni contenir des cha\u00EEnes vides
+jdbcrowsetimpl.unsetmatch = Les colonnes non d\u00E9finies ne sont pas les m\u00EAmes que les colonnes d\u00E9finies
+jdbcrowsetimpl.usecolname = Utiliser le nom de colonne comme argument pour unsetMatchColumn
+jdbcrowsetimpl.usecolid = Utiliser l'ID de colonne comme argument pour unsetMatchColumn
+jdbcrowsetimpl.resnotupd = La mise \u00E0 jour de ResultSet est interdite
+jdbcrowsetimpl.opnotysupp = Op\u00E9ration non encore prise en charge
+jdbcrowsetimpl.featnotsupp = Fonctionnalit\u00E9 non prise en charge
 
 #CachedRowSetReader exceptions
 crsreader.connect = Impossible de connecter (JNDI)
-crsreader.paramtype = Impossible de d\u00e9duire le type de param\u00e8tre
-crsreader.connecterr = Erreur interne dans RowSetReader\u00a0: pas de connexion ni de commande
-crsreader.datedetected = Une date a \u00e9t\u00e9 d\u00e9tect\u00e9e
-crsreader.caldetected = Un calendrier a \u00e9t\u00e9 d\u00e9tect\u00e9
+crsreader.paramtype = Impossible de d\u00E9duire le type de param\u00E8tre
+crsreader.connecterr = Erreur interne dans RowSetReader\u00A0: pas de connexion ni de commande
+crsreader.datedetected = Une date a \u00E9t\u00E9 d\u00E9tect\u00E9e
+crsreader.caldetected = Un calendrier a \u00E9t\u00E9 d\u00E9tect\u00E9
 
 #CachedRowSetWriter exceptions
 crswriter.connect = Impossible d'obtenir la connexion
-crswriter.tname = writeData ne peut pas d\u00e9terminer le nom du tableau
+crswriter.tname = writeData ne peut pas d\u00E9terminer le nom de la table
 crswriter.params1 = Valeur de params1 : {0} 
 crswriter.params2 = Valeur de params2 : {0} 
 crswriter.conflictsno =  conflits lors de la synchronisation 
 
 #InsertRow exceptions
-insertrow.novalue = Aucune valeur n'a \u00e9t\u00e9 ins\u00e9r\u00e9e
+insertrow.novalue = Aucune valeur n'a \u00E9t\u00E9 ins\u00E9r\u00E9e
 
 #SyncResolverImpl exceptions
 syncrsimpl.indexval = Valeur d'index hors plage  
 syncrsimpl.noconflict = Cette colonne n'est pas en conflit
 syncrsimpl.syncnotpos = La synchronisation est impossible
-syncrsimpl.valtores = La valeur \u00e0 r\u00e9soudre peut \u00eatre soit dans la base de donn\u00e9es soit dans CachedrowSet
+syncrsimpl.valtores = La valeur \u00E0 r\u00E9soudre peut \u00EAtre soit dans la base de donn\u00E9es, soit dans CachedrowSet
 
 #WebRowSetXmlReader exception
 wrsxmlreader.invalidcp = Fin de RowSet atteinte. Position de curseur non valide
@@ -142,23 +143,24 @@
 wrsxmlreader.parseerr = ** Erreur d''analyse : {0} , ligne : {1} , URI : {2}
 
 #WebRowSetXmlWriter exceptions
-wrsxmlwriter.ioex = IOException : {0}
-wrsxmlwriter.sqlex = SQLException : {0}
-wrsxmlwriter.failedwrite = \u00c9chec d'\u00e9criture de la valeur
+wrsxmlwriter.ioex = Exception d''E/S : {0}
+wrsxmlwriter.sqlex = Exception SQL : {0}
+wrsxmlwriter.failedwrite = Echec d'\u00E9criture de la valeur
 wsrxmlwriter.notproper = N'est pas un type correct
 
 #XmlReaderContentHandler exceptions
-xmlrch.errmap = Erreur lors de la d\u00e9finition de Map : {0}
-xmlrch.errmetadata = Erreur lors de la d\u00e9finition des m\u00e9tadonn\u00e9es : {0}
-xmlrch.errinsertval = Erreur lors de l''insertion des valeurs\u00a0: {0}
+xmlrch.errmap = Erreur lors de la d\u00E9finition du mappage : {0}
+xmlrch.errmetadata = Erreur lors de la d\u00E9finition des m\u00E9tadonn\u00E9es : {0}
+xmlrch.errinsertval = Erreur lors de l''insertion des valeurs\u00A0: {0}
 xmlrch.errconstr = Erreur lors de la construction de la ligne : {0}
 xmlrch.errdel = Erreur lors de la suppression de la ligne : {0}
+xmlrch.errinsert = Erreur lors de la construction de la ligne \u00E0 ins\u00E9rer : {0}
 xmlrch.errinsdel = Erreur lors de la construction de la ligne insdel : {0}
-xmlrch.errupdate = Erreur lors de la construction de la ligne \u00e0 mettre \u00e0 jour : {0}
-xmlrch.errupdrow = Erreur lors de la mise \u00e0 jour de la ligne\u00a0: {0}
-xmlrch.chars = caract\u00e8res :
-xmlrch.badvalue = Valeur incorrecte ; null impossible pour cette propri\u00e9t\u00e9
-xmlrch.badvalue1 = Valeur incorrecte ; null impossible pour ces m\u00e9tadonn\u00e9es
+xmlrch.errupdate = Erreur lors de la construction de la ligne \u00E0 mettre \u00E0 jour : {0}
+xmlrch.errupdrow = Erreur lors de la mise \u00E0 jour de la ligne\u00A0: {0}
+xmlrch.chars = caract\u00E8res :
+xmlrch.badvalue = Valeur incorrecte ; cette propri\u00E9t\u00E9 ne peut pas \u00EAtre NULL
+xmlrch.badvalue1 = Valeur incorrecte ; ces m\u00E9tadonn\u00E9es ne peuvent pas \u00EAtre NULL
 xmlrch.warning =  ** Avertissement : {0} , ligne : {1} , URI : {2}
 
 #RIOptimisticProvider Exceptions
--- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_it.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_it.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -25,13 +25,13 @@
 
 # CacheRowSetImpl exceptions
 cachedrowsetimpl.populate = Oggetto ResultSet non valido fornito per l'inserimento dati nel metodo
-cachedrowsetimpl.invalidp = Generato fornitore di persistenza non valido
-cachedrowsetimpl.nullhash = Impossibile istanziare l'istanza CachedRowSetImpl. Tabella hash nulla fornita al costruttore
+cachedrowsetimpl.invalidp = Generato provider di persistenza non valido
+cachedrowsetimpl.nullhash = Impossibile creare istanza CachedRowSetImpl. Tabella hash nulla fornita al costruttore
 cachedrowsetimpl.invalidop = Operazione non valida nella riga di inserimento
 cachedrowsetimpl.accfailed = acceptChanges non riuscito
 cachedrowsetimpl.invalidcp = Posizione cursore non valida
-cachedrowsetimpl.illegalop = Operazione non consentita nella riga non inserita
-cachedrowsetimpl.clonefail = Clone non riuscito: {0}
+cachedrowsetimpl.illegalop = Operazione non valida nella riga non inserita
+cachedrowsetimpl.clonefail = Copia non riuscita: {0}
 cachedrowsetimpl.invalidcol = Indice di colonna non valido
 cachedrowsetimpl.invalcolnm = Nome di colonna non valido
 cachedrowsetimpl.boolfail = getBoolen non riuscito per il valore ( {0} ) nella colonna {1}
@@ -41,11 +41,11 @@
 cachedrowsetimpl.longfail = getLong non riuscito per il valore ( {0} ) nella colonna {1}
 cachedrowsetimpl.floatfail = getFloat non riuscito per il valore ( {0} ) nella colonna {1}
 cachedrowsetimpl.doublefail = getDouble non riuscito per il valore ( {0} ) nella colonna {1}
-cachedrowsetimpl.dtypemismt = Mancata corrispondenza dei tipi di dati 
+cachedrowsetimpl.dtypemismt = Mancata corrispondenza tipo di dati 
 cachedrowsetimpl.datefail = getDate non riuscito per il valore ( {0} ) nella colonna {1}. Nessuna conversione disponibile.
 cachedrowsetimpl.timefail = getTime non riuscito per il valore ( {0} ) nella colonna {1}. Nessuna conversione disponibile.
 cachedrowsetimpl.posupdate = Aggiornamenti posizionati non supportati
-cachedrowsetimpl.unableins = Impossibile istanziare: {0}
+cachedrowsetimpl.unableins = Impossibile creare istanza: {0}
 cachedrowsetimpl.beforefirst = beforeFirst: operazione cursore non valida
 cachedrowsetimpl.first = First: operazione cursore non valida
 cachedrowsetimpl.last = last: TYPE_FORWARD_ONLY
@@ -58,8 +58,9 @@
 cachedrowsetimpl.movetoins = moveToInsertRow: CONCUR_READ_ONLY
 cachedrowsetimpl.movetoins1 = moveToInsertRow: nessun metadato
 cachedrowsetimpl.movetoins2 = moveToInsertRow: numero di colonne non valido
-cachedrowsetimpl.tablename = Il nome di tabella non pu\u00f2 essere nullo
+cachedrowsetimpl.tablename = Il nome di tabella non pu\u00F2 essere nullo
 cachedrowsetimpl.keycols = Colonne chiave non valide
+cachedrowsetimpl.invalidcol = Indice di colonna non valido
 cachedrowsetimpl.opnotsupp = Operazione non supportata dal database
 cachedrowsetimpl.matchcols = Le colonne di corrispondenza non coincidono con le colonne impostate
 cachedrowsetimpl.setmatchcols = Impostare le colonne di corrispondenza prima di recuperarle
@@ -68,32 +69,32 @@
 cachedrowsetimpl.unsetmatch = Le colonne rimosse non coincidono con le colonne impostate
 cachedrowsetimpl.unsetmatch1 = Utilizzare il nome di colonna come argomento per unsetMatchColumn
 cachedrowsetimpl.unsetmatch2 = Utilizzare l'ID di colonna come argomento per unsetMatchColumn
-cachedrowsetimpl.numrows = Il numero di righe \u00e8 inferiore a zero o alla dimensione di recupero
-cachedrowsetimpl.startpos = La posizione iniziale non pu\u00f2 essere negativa
+cachedrowsetimpl.numrows = Il numero di righe \u00E8 inferiore a zero o alla dimensione di recupero
+cachedrowsetimpl.startpos = La posizione iniziale non pu\u00F2 essere negativa
 cachedrowsetimpl.nextpage = Inserire i dati prima di chiamare 
-cachedrowsetimpl.pagesize = La dimensione della pagina non pu\u00f2 essere inferiore a zero
-cachedrowsetimpl.pagesize1 = La dimensione della pagina non pu\u00f2 essere superiore a maxRows
-cachedrowsetimpl.fwdonly = ResultSet \u00e8 a solo inoltro
-cachedrowsetimpl.type = Il tipo \u00e8: {0}
+cachedrowsetimpl.pagesize = La dimensione della pagina non pu\u00F2 essere inferiore a zero
+cachedrowsetimpl.pagesize1 = La dimensione della pagina non pu\u00F2 essere superiore a maxRows
+cachedrowsetimpl.fwdonly = ResultSet \u00E8 a solo inoltro
+cachedrowsetimpl.type = Il tipo \u00E8: {0}
 cachedrowsetimpl.opnotysupp = Operazione attualmente non supportata
-cachedrowsetimpl.featnotsupp = Funzionalit\u00e0 non supportata
+cachedrowsetimpl.featnotsupp = Funzione non supportata
 
 # WebRowSetImpl exceptions
-webrowsetimpl.nullhash = Impossibile istanziare l'istanza WebRowSetImpl. Tabella hash nulla fornita al costruttore
-webrowsetimpl.invalidwr = Autore non valido
-webrowsetimpl.invalidrd = Lettore non valido
+webrowsetimpl.nullhash = Impossibile creare istanza WebRowSetImpl. Tabella hash nulla fornita al costruttore
+webrowsetimpl.invalidwr = Processo di scrittura non valido
+webrowsetimpl.invalidrd = Processo di lettura non valido
 
 #FilteredRowSetImpl exceptions
 filteredrowsetimpl.relative = relative: operazione cursore non valida 
 filteredrowsetimpl.absolute = absolute: operazione cursore non valida
-filteredrowsetimpl.notallowed = Questo valore non \u00e8 consentito nel filtro
+filteredrowsetimpl.notallowed = Questo valore non \u00E8 consentito nel filtro
 
 #JoinRowSetImpl exceptions
-joinrowsetimpl.notinstance = Non \u00e8 un'istanza di rowset
+joinrowsetimpl.notinstance = Non \u00E8 un'istanza di rowset
 joinrowsetimpl.matchnotset = Colonna di corrispondenza non impostata per l'unione
 joinrowsetimpl.numnotequal = Numero di elementi in rowset diverso dalla colonna di corrispondenza
-joinrowsetimpl.notdefined = Non \u00e8 un tipo di unione definito
-joinrowsetimpl.notsupported = Questo tipo di unione non \u00e8 supportato
+joinrowsetimpl.notdefined = Non \u00E8 un tipo di unione definito
+joinrowsetimpl.notsupported = Questo tipo di unione non \u00E8 supportato
 joinrowsetimpl.initerror = Errore di inizializzazione di JoinRowSet
 joinrowsetimpl.genericerr = Errore iniziale di joinrowset generico
 joinrowsetimpl.emptyrowset = Impossibile aggiungere un set di righe vuoto al JoinRowSet corrente
@@ -109,16 +110,16 @@
 jdbcrowsetimpl.unsetmatch = Le colonne rimosse non coincidono con le colonne impostate
 jdbcrowsetimpl.usecolname = Utilizzare il nome di colonna come argomento per unsetMatchColumn
 jdbcrowsetimpl.usecolid = Utilizzare l'ID di colonna come argomento per unsetMatchColumn
-jdbcrowsetimpl.resnotupd = ResultSet non \u00e8 aggiornabile
+jdbcrowsetimpl.resnotupd = ResultSet non \u00E8 aggiornabile
 jdbcrowsetimpl.opnotysupp = Operazione attualmente non supportata
-jdbcrowsetimpl.featnotsupp = Funzionalit\u00e0 non supportata
+jdbcrowsetimpl.featnotsupp = Funzione non supportata
 
 #CachedRowSetReader exceptions
 crsreader.connect = (JNDI) Impossibile stabilire una connessione
 crsreader.paramtype = Impossibile dedurre il tipo di parametro
 crsreader.connecterr = Errore interno in RowSetReader: nessuna connessione o comando
-crsreader.datedetected = \u00c8 stata rilevata una data
-crsreader.caldetected = \u00c8 stato rilevato un calendario
+crsreader.datedetected = \u00C8 stata rilevata una data
+crsreader.caldetected = \u00C8 stato rilevato un calendario
 
 #CachedRowSetWriter exceptions
 crswriter.connect = Impossibile stabilire una connessione
@@ -128,13 +129,13 @@
 crswriter.conflictsno =  Conflitti durante la sincronizzazione 
 
 #InsertRow exceptions
-insertrow.novalue = Non \u00e8 stato inserito alcun valore
+insertrow.novalue = Non \u00E8 stato inserito alcun valore
 
 #SyncResolverImpl exceptions
-syncrsimpl.indexval = Il valore di indice non rientra nell'intervallo  
-syncrsimpl.noconflict = Questa colonna non \u00e8 in conflitto
+syncrsimpl.indexval = Valore indice non compreso nell'intervallo  
+syncrsimpl.noconflict = Questa colonna non \u00E8 in conflitto
 syncrsimpl.syncnotpos = Impossibile eseguire la sincronizzazione
-syncrsimpl.valtores = Il valore da risolvere pu\u00f2 essere nel database o in cachedrowset
+syncrsimpl.valtores = Il valore da risolvere pu\u00F2 essere nel database o in cachedrowset
 
 #WebRowSetXmlReader exception
 wrsxmlreader.invalidcp = Raggiunta la fine di RowSet. Posizione cursore non valida
@@ -153,16 +154,17 @@
 xmlrch.errinsertval = Errore durante l''inserimento dei valori: {0}
 xmlrch.errconstr = Errore durante la costruzione della riga: {0}
 xmlrch.errdel = Errore durante l''eliminazione della riga: {0}
+xmlrch.errinsert = Errore durante la costruzione della riga di inserimento: {0}
 xmlrch.errinsdel = Errore durante la costruzione della riga insdel: {0}
 xmlrch.errupdate = Errore durante la costruzione della riga di aggiornamento: {0}
 xmlrch.errupdrow = Errore durante l''aggiornamento della riga: {0}
 xmlrch.chars = caratteri:
-xmlrch.badvalue = valore non valido; propriet\u00e0 non annullabile
+xmlrch.badvalue = valore non valido; propriet\u00E0 non annullabile
 xmlrch.badvalue1 = valore non valido; metadati non annullabili
-xmlrch.warning =  **Avviso: {0}, riga: {1}, URI: {2}
+xmlrch.warning =  **Avvertenza: {0}, riga: {1}, URI: {2}
 
 #RIOptimisticProvider Exceptions
-riop.locking = La classificazione di blocco non \u00e8 supportata
+riop.locking = La classificazione di blocco non \u00E8 supportata
 
 #RIXMLProvider exceptions
 rixml.unsupp = Non supportato con RIXMLProvider
--- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_ja.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_ja.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -24,145 +24,147 @@
 #
 
 # CacheRowSetImpl exceptions
-cachedrowsetimpl.populate = populate \u30e1\u30bd\u30c3\u30c9\u306b\u7121\u52b9\u306a ResultSet \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u4f7f\u7528\u3055\u308c\u307e\u3057\u305f\u3002
-cachedrowsetimpl.invalidp = \u7121\u52b9\u306a\u6301\u7d9a\u6027\u30d7\u30ed\u30d0\u30a4\u30c0\u304c\u751f\u6210\u3055\u308c\u307e\u3057\u305f\u3002
-cachedrowsetimpl.nullhash = CachedRowSetImpl \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3067\u304d\u307e\u305b\u3093\u3002\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306b null \u306e Hashtable \u304c\u4f7f\u7528\u3055\u308c\u307e\u3057\u305f\u3002
-cachedrowsetimpl.invalidop = \u633f\u5165\u884c\u3067\u306e\u7121\u52b9\u306a\u64cd\u4f5c
-cachedrowsetimpl.accfailed = acceptChanges \u306e\u5931\u6557
-cachedrowsetimpl.invalidcp = \u7121\u52b9\u306a\u30ab\u30fc\u30bd\u30eb\u4f4d\u7f6e
-cachedrowsetimpl.illegalop = \u633f\u5165\u3055\u308c\u306a\u304b\u3063\u305f\u884c\u306e\u4e0d\u6b63\u306a\u64cd\u4f5c
-cachedrowsetimpl.clonefail = \u8907\u88fd\u306e\u5931\u6557 : {0}
-cachedrowsetimpl.invalidcol = \u7121\u52b9\u306a\u5217\u30a4\u30f3\u30c7\u30c3\u30af\u30b9
-cachedrowsetimpl.invalcolnm = \u7121\u52b9\u306a\u5217\u540d
-cachedrowsetimpl.boolfail = \u5217 {1} \u306e\u5024 ( {0} ) \u3067 getBoolen \u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002
-cachedrowsetimpl.bytefail = \u5217 {1} \u306e\u5024 ( {0} ) \u3067 getByte \u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002
-cachedrowsetimpl.shortfail = \u5217 {1} \u306e\u5024 ( {0} ) \u3067 getShort \u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002
-cachedrowsetimpl.intfail = \u5217 {1} \u306e\u5024 ( {0} ) \u3067 getInt \u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002
-cachedrowsetimpl.longfail = \u5217 {1} \u306e\u5024 ( {0} ) \u3067 getLong \u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002
-cachedrowsetimpl.floatfail = \u5217 {1} \u306e\u5024 ( {0} ) \u3067 getFloat \u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002
-cachedrowsetimpl.doublefail = \u5217 {1} \u306e\u5024 ( {0} ) \u3067 getDouble \u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002
-cachedrowsetimpl.dtypemismt = \u30c7\u30fc\u30bf\u578b\u306e\u30df\u30b9\u30de\u30c3\u30c1 
-cachedrowsetimpl.datefail = \u5217 {1} \u306e\u5024 ( {0} ) \u3067 getDate \u304c\u5931\u6557\u3002\u5909\u63db\u3067\u304d\u307e\u305b\u3093\u3002
-cachedrowsetimpl.timefail = \u5217 {1} \u306e\u5024 ( {0} ) \u3067 getTime \u304c\u5931\u6557\u3002\u5909\u63db\u3067\u304d\u307e\u305b\u3093\u3002
-cachedrowsetimpl.posupdate = \u4f4d\u7f6e\u6c7a\u3081\u3055\u308c\u305f\u66f4\u65b0\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093\u3002
-cachedrowsetimpl.unableins = \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3067\u304d\u306a\u3044 : {0}
-cachedrowsetimpl.beforefirst = beforeFirst : \u7121\u52b9\u306a\u30ab\u30fc\u30bd\u30eb\u64cd\u4f5c
-cachedrowsetimpl.first = First : \u7121\u52b9\u306a\u30ab\u30fc\u30bd\u30eb\u64cd\u4f5c
-cachedrowsetimpl.last = last : TYPE_FORWARD_ONLY
-cachedrowsetimpl.absolute = absolute : \u7121\u52b9\u306a\u30ab\u30fc\u30bd\u30eb\u64cd\u4f5c
-cachedrowsetimpl.relative = relative : \u7121\u52b9\u306a\u30ab\u30fc\u30bd\u30eb\u64cd\u4f5c
-cachedrowsetimpl.asciistream = ascii \u30b9\u30c8\u30ea\u30fc\u30e0\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002
-cachedrowsetimpl.binstream = \u30d0\u30a4\u30ca\u30ea\u30b9\u30c8\u30ea\u30fc\u30e0\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002
-cachedrowsetimpl.failedins = \u884c\u306e\u633f\u5165\u306b\u5931\u6557
-cachedrowsetimpl.updateins = \u633f\u5165\u884c\u306b\u3066 updateRow \u304c\u547c\u3073\u51fa\u3055\u308c\u307e\u3057\u305f\u3002
-cachedrowsetimpl.movetoins = moveToInsertRow : CONCUR_READ_ONLY
-cachedrowsetimpl.movetoins1 = moveToInsertRow : \u30e1\u30bf\u30c7\u30fc\u30bf\u306a\u3057
-cachedrowsetimpl.movetoins2 = moveToInsertRow : \u7121\u52b9\u306a\u5217\u6570
-cachedrowsetimpl.tablename = \u8868\u540d\u306b null \u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002
-cachedrowsetimpl.keycols = \u7121\u52b9\u306a\u30ad\u30fc\u5217
-cachedrowsetimpl.opnotsupp = \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u306a\u3044\u64cd\u4f5c
-cachedrowsetimpl.matchcols = \u4e00\u81f4\u5217\u304c\u5217\u306e\u30bb\u30c3\u30c8\u3068\u540c\u3058\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-cachedrowsetimpl.setmatchcols = \u4e00\u81f4\u5217\u3092\u53d6\u5f97\u3059\u308b\u524d\u306b\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-cachedrowsetimpl.matchcols1 = \u4e00\u81f4\u5217\u306f 0 \u3088\u308a\u5927\u304d\u3044\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
-cachedrowsetimpl.matchcols2 = \u4e00\u81f4\u5217\u306f\u7a7a\u304b null \u6587\u5b57\u5217\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
-cachedrowsetimpl.unsetmatch = \u8a2d\u5b9a\u89e3\u9664\u3055\u308c\u3066\u3044\u308b\u5217\u306f\u30bb\u30c3\u30c8\u3068\u540c\u3058\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-cachedrowsetimpl.unsetmatch1 = unsetMatchColumn \u3078\u306e\u5f15\u6570\u3068\u3057\u3066\u5217\u540d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-cachedrowsetimpl.unsetmatch2 = unsetMatchColumn \u3078\u306e\u5f15\u6570\u3068\u3057\u3066\u5217 ID \u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-cachedrowsetimpl.numrows = \u884c\u6570\u304c\u30bc\u30ed\u307e\u305f\u306f\u30d5\u30a7\u30c3\u30c1\u30b5\u30a4\u30ba\u3088\u308a\u5c0f\u3055\u3044\u3067\u3059\u3002
-cachedrowsetimpl.startpos = \u958b\u59cb\u4f4d\u7f6e\u306f\u8ca0\u3067\u306f\u306a\u308a\u307e\u305b\u3093\u3002
-cachedrowsetimpl.nextpage = \u547c\u3073\u51fa\u3057\u524d\u306b\u30c7\u30fc\u30bf\u3092\u751f\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002 
-cachedrowsetimpl.pagesize = \u30da\u30fc\u30b8\u30b5\u30a4\u30ba\u306f\u30bc\u30ed\u3088\u308a\u5c0f\u3055\u304f\u3066\u306f\u306a\u308a\u307e\u305b\u3093\u3002
-cachedrowsetimpl.pagesize1 = \u30da\u30fc\u30b8\u30b5\u30a4\u30ba\u306f maxRows \u3088\u308a\u5927\u304d\u304f\u3066\u306f\u306a\u308a\u307e\u305b\u3093\u3002
-cachedrowsetimpl.fwdonly = ResultSet \u306f\u9806\u65b9\u5411\u306e\u307f\u3067\u3059\u3002
-cachedrowsetimpl.type = \u578b : {0}
-cachedrowsetimpl.opnotysupp = \u307e\u3060\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u64cd\u4f5c
-cachedrowsetimpl.featnotsupp = \u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u6a5f\u80fd
+cachedrowsetimpl.populate = populate\u30E1\u30BD\u30C3\u30C9\u306B\u7121\u52B9\u306AResultSet\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u4F7F\u7528\u3055\u308C\u307E\u3057\u305F
+cachedrowsetimpl.invalidp = \u7121\u52B9\u306A\u6C38\u7D9A\u6027\u30D7\u30ED\u30D0\u30A4\u30C0\u304C\u751F\u6210\u3055\u308C\u307E\u3057\u305F
+cachedrowsetimpl.nullhash = CachedRowSetImpl\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u5316\u3067\u304D\u307E\u305B\u3093\u3002\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306Bnull\u306EHashtable\u304C\u4F7F\u7528\u3055\u308C\u307E\u3057\u305F
+cachedrowsetimpl.invalidop = \u633F\u5165\u884C\u3067\u306E\u7121\u52B9\u306A\u64CD\u4F5C
+cachedrowsetimpl.accfailed = acceptChanges\u306E\u5931\u6557
+cachedrowsetimpl.invalidcp = \u7121\u52B9\u306A\u30AB\u30FC\u30BD\u30EB\u4F4D\u7F6E
+cachedrowsetimpl.illegalop = \u633F\u5165\u3055\u308C\u306A\u304B\u3063\u305F\u884C\u306E\u4E0D\u6B63\u306A\u64CD\u4F5C
+cachedrowsetimpl.clonefail = \u30AF\u30ED\u30FC\u30F3\u306E\u5931\u6557: {0}
+cachedrowsetimpl.invalidcol = \u7121\u52B9\u306A\u5217\u7D22\u5F15
+cachedrowsetimpl.invalcolnm = \u7121\u52B9\u306A\u5217\u540D
+cachedrowsetimpl.boolfail = \u5217{1}\u306E\u5024({0})\u3067getBoolean\u304C\u5931\u6557\u3057\u307E\u3057\u305F
+cachedrowsetimpl.bytefail = \u5217{1}\u306E\u5024({0})\u3067getByte\u304C\u5931\u6557\u3057\u307E\u3057\u305F
+cachedrowsetimpl.shortfail = \u5217{1}\u306E\u5024({0})\u3067getShort\u304C\u5931\u6557\u3057\u307E\u3057\u305F
+cachedrowsetimpl.intfail = \u5217{1}\u306E\u5024({0})\u3067getInt\u304C\u5931\u6557\u3057\u307E\u3057\u305F
+cachedrowsetimpl.longfail = \u5217{1}\u306E\u5024({0})\u3067getLong\u304C\u5931\u6557\u3057\u307E\u3057\u305F
+cachedrowsetimpl.floatfail = \u5217{1}\u306E\u5024({0})\u3067getFloat\u304C\u5931\u6557\u3057\u307E\u3057\u305F
+cachedrowsetimpl.doublefail = \u5217{1}\u306E\u5024({0})\u3067getDouble\u304C\u5931\u6557\u3057\u307E\u3057\u305F
+cachedrowsetimpl.dtypemismt = \u30C7\u30FC\u30BF\u578B\u306E\u4E0D\u4E00\u81F4 
+cachedrowsetimpl.datefail = \u5217{1}\u306E\u5024({0})\u3067getDate\u304C\u5931\u6557\u3002\u5909\u63DB\u3067\u304D\u307E\u305B\u3093
+cachedrowsetimpl.timefail = \u5217{1}\u306E\u5024({0})\u3067getTime\u304C\u5931\u6557\u3002\u5909\u63DB\u3067\u304D\u307E\u305B\u3093
+cachedrowsetimpl.posupdate = \u4F4D\u7F6E\u6C7A\u3081\u3055\u308C\u305F\u66F4\u65B0\u304C\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u307E\u305B\u3093
+cachedrowsetimpl.unableins = \u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u5316\u3067\u304D\u306A\u3044: {0}
+cachedrowsetimpl.beforefirst = beforeFirst: \u7121\u52B9\u306A\u30AB\u30FC\u30BD\u30EB\u64CD\u4F5C
+cachedrowsetimpl.first = First: \u7121\u52B9\u306A\u30AB\u30FC\u30BD\u30EB\u64CD\u4F5C
+cachedrowsetimpl.last = last: TYPE_FORWARD_ONLY
+cachedrowsetimpl.absolute = absolute: \u7121\u52B9\u306A\u30AB\u30FC\u30BD\u30EB\u4F4D\u7F6E
+cachedrowsetimpl.relative = relative: \u7121\u52B9\u306A\u30AB\u30FC\u30BD\u30EB\u4F4D\u7F6E
+cachedrowsetimpl.asciistream = ascii\u30B9\u30C8\u30EA\u30FC\u30E0\u306E\u8AAD\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F
+cachedrowsetimpl.binstream = \u30D0\u30A4\u30CA\u30EA\u30FB\u30B9\u30C8\u30EA\u30FC\u30E0\u306E\u8AAD\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F
+cachedrowsetimpl.failedins = \u884C\u306E\u633F\u5165\u306B\u5931\u6557
+cachedrowsetimpl.updateins = \u633F\u5165\u884C\u306B\u304A\u3044\u3066updateRow\u304C\u547C\u3073\u51FA\u3055\u308C\u307E\u3057\u305F
+cachedrowsetimpl.movetoins = moveToInsertRow: CONCUR_READ_ONLY
+cachedrowsetimpl.movetoins1 = moveToInsertRow: \u30E1\u30BF\u30C7\u30FC\u30BF\u306A\u3057
+cachedrowsetimpl.movetoins2 = moveToInsertRow: \u7121\u52B9\u306A\u5217\u6570
+cachedrowsetimpl.tablename = \u8868\u540D\u306Bnull\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
+cachedrowsetimpl.keycols = \u7121\u52B9\u306A\u30AD\u30FC\u5217
+cachedrowsetimpl.invalidcol = \u7121\u52B9\u306A\u5217\u7D22\u5F15
+cachedrowsetimpl.opnotsupp = \u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u306A\u3044\u64CD\u4F5C
+cachedrowsetimpl.matchcols = \u4E00\u81F4\u5217\u304C\u5217\u306E\u30BB\u30C3\u30C8\u3068\u540C\u3058\u3067\u306F\u3042\u308A\u307E\u305B\u3093
+cachedrowsetimpl.setmatchcols = \u4E00\u81F4\u5217\u3092\u53D6\u5F97\u3059\u308B\u524D\u306B\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044
+cachedrowsetimpl.matchcols1 = \u4E00\u81F4\u5217\u306F0\u3088\u308A\u5927\u304D\u3044\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+cachedrowsetimpl.matchcols2 = \u4E00\u81F4\u5217\u306F\u7A7A\u304Bnull\u6587\u5B57\u5217\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+cachedrowsetimpl.unsetmatch = \u8A2D\u5B9A\u89E3\u9664\u3055\u308C\u3066\u3044\u308B\u5217\u306F\u30BB\u30C3\u30C8\u3068\u540C\u3058\u3067\u306F\u3042\u308A\u307E\u305B\u3093
+cachedrowsetimpl.unsetmatch1 = unsetMatchColumn\u3078\u306E\u5F15\u6570\u3068\u3057\u3066\u5217\u540D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044
+cachedrowsetimpl.unsetmatch2 = unsetMatchColumn\u3078\u306E\u5F15\u6570\u3068\u3057\u3066\u5217ID\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044
+cachedrowsetimpl.numrows = \u884C\u6570\u304C\u30BC\u30ED\u307E\u305F\u306F\u30D5\u30A7\u30C3\u30C1\u30FB\u30B5\u30A4\u30BA\u3088\u308A\u5C0F\u3055\u3044\u3067\u3059
+cachedrowsetimpl.startpos = \u958B\u59CB\u4F4D\u7F6E\u3092\u8CA0\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+cachedrowsetimpl.nextpage = \u547C\u51FA\u3057\u524D\u306B\u30C7\u30FC\u30BF\u3092\u79FB\u5165\u3057\u307E\u3059 
+cachedrowsetimpl.pagesize = \u30DA\u30FC\u30B8\u30FB\u30B5\u30A4\u30BA\u3092\u30BC\u30ED\u3088\u308A\u5C0F\u3055\u304F\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+cachedrowsetimpl.pagesize1 = \u30DA\u30FC\u30B8\u30FB\u30B5\u30A4\u30BA\u3092maxRows\u3088\u308A\u5927\u304D\u304F\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093
+cachedrowsetimpl.fwdonly = ResultSet\u306F\u9806\u65B9\u5411\u306E\u307F\u3067\u3059
+cachedrowsetimpl.type = \u30BF\u30A4\u30D7: {0}
+cachedrowsetimpl.opnotysupp = \u307E\u3060\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u64CD\u4F5C
+cachedrowsetimpl.featnotsupp = \u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u6A5F\u80FD
 
 # WebRowSetImpl exceptions
-webrowsetimpl.nullhash = WebRowSetImpl \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3067\u304d\u307e\u305b\u3093\u3002\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306b null \u306e Hashtable \u304c\u4f7f\u7528\u3055\u308c\u307e\u3057\u305f\u3002
-webrowsetimpl.invalidwr = \u7121\u52b9\u306a\u30e9\u30a4\u30bf\u30fc
-webrowsetimpl.invalidrd = \u7121\u52b9\u306a\u30ea\u30fc\u30c0\u30fc
+webrowsetimpl.nullhash = WebRowSetImpl\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u5316\u3067\u304D\u307E\u305B\u3093\u3002\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306Bnull\u306EHashtable\u304C\u4F7F\u7528\u3055\u308C\u307E\u3057\u305F
+webrowsetimpl.invalidwr = \u7121\u52B9\u306A\u30E9\u30A4\u30BF\u30FC
+webrowsetimpl.invalidrd = \u7121\u52B9\u306A\u30EA\u30FC\u30C0\u30FC
 
 #FilteredRowSetImpl exceptions
-filteredrowsetimpl.relative = relative : \u7121\u52b9\u306a\u30ab\u30fc\u30bd\u30eb\u64cd\u4f5c 
-filteredrowsetimpl.absolute = absolute : \u7121\u52b9\u306a\u30ab\u30fc\u30bd\u30eb\u64cd\u4f5c
-filteredrowsetimpl.notallowed = \u3053\u306e\u5024\u306f\u30d5\u30a3\u30eb\u30bf\u3067\u8a31\u5bb9\u3055\u308c\u307e\u305b\u3093\u3002
+filteredrowsetimpl.relative = relative: \u7121\u52B9\u306A\u30AB\u30FC\u30BD\u30EB\u64CD\u4F5C 
+filteredrowsetimpl.absolute = absolute: \u7121\u52B9\u306A\u30AB\u30FC\u30BD\u30EB\u64CD\u4F5C
+filteredrowsetimpl.notallowed = \u3053\u306E\u5024\u306F\u30D5\u30A3\u30EB\u30BF\u3067\u8A31\u5BB9\u3055\u308C\u307E\u305B\u3093
 
 #JoinRowSetImpl exceptions
-joinrowsetimpl.notinstance = \u884c\u30bb\u30c3\u30c8\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-joinrowsetimpl.matchnotset = \u4e00\u81f4\u5217\u304c\u7d50\u5408\u7528\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-joinrowsetimpl.numnotequal = \u884c\u30bb\u30c3\u30c8\u306e\u8981\u7d20\u6570\u304c\u4e00\u81f4\u5217\u3068\u7b49\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002
-joinrowsetimpl.notdefined = \u5b9a\u7fa9\u3055\u308c\u305f\u7d50\u5408\u306e\u578b\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-joinrowsetimpl.notsupported = \u3053\u306e\u578b\u306e\u7d50\u5408\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-joinrowsetimpl.initerror = JoinRowSet \u521d\u671f\u5316\u30a8\u30e9\u30fc
-joinrowsetimpl.genericerr = \u6c4e\u7528 joinrowset \u306e\u521d\u671f\u30a8\u30e9\u30fc
-joinrowsetimpl.emptyrowset = \u3053\u306e JoinRowSet \u306b\u7a7a\u306e\u884c\u30bb\u30c3\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+joinrowsetimpl.notinstance = \u884C\u30BB\u30C3\u30C8\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093
+joinrowsetimpl.matchnotset = \u4E00\u81F4\u5217\u304C\u7D50\u5408\u7528\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+joinrowsetimpl.numnotequal = \u884C\u30BB\u30C3\u30C8\u306E\u8981\u7D20\u6570\u304C\u4E00\u81F4\u5217\u3068\u7B49\u3057\u304F\u3042\u308A\u307E\u305B\u3093
+joinrowsetimpl.notdefined = \u5B9A\u7FA9\u3055\u308C\u305F\u7D50\u5408\u306E\u30BF\u30A4\u30D7\u3067\u306F\u3042\u308A\u307E\u305B\u3093
+joinrowsetimpl.notsupported = \u3053\u306E\u30BF\u30A4\u30D7\u306E\u7D50\u5408\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+joinrowsetimpl.initerror = JoinRowSet\u521D\u671F\u5316\u30A8\u30E9\u30FC
+joinrowsetimpl.genericerr = \u6C4E\u7528joinrowset\u306E\u521D\u671F\u30A8\u30E9\u30FC
+joinrowsetimpl.emptyrowset = \u3053\u306EJoinRowSet\u306B\u7A7A\u306E\u884C\u30BB\u30C3\u30C8\u3092\u8FFD\u52A0\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
 
 #JdbcRowSetImpl exceptions
-jdbcrowsetimpl.invalstate = \u7121\u52b9\u306a\u72b6\u614b
-jdbcrowsetimpl.connect = JdbcRowSet (connect) JNDI \u304c\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3002
-jdbcrowsetimpl.paramtype = \u30d1\u30e9\u30e1\u30fc\u30bf\u578b\u3092\u63a8\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002
-jdbcrowsetimpl.matchcols = \u4e00\u81f4\u5217\u304c\u5217\u306e\u30bb\u30c3\u30c8\u3068\u540c\u3058\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-jdbcrowsetimpl.setmatchcols = \u4e00\u81f4\u5217\u3092\u53d6\u5f97\u3059\u308b\u524d\u306b\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-jdbcrowsetimpl.matchcols1 = \u4e00\u81f4\u5217\u306f 0 \u3088\u308a\u5927\u304d\u3044\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
-jdbcrowsetimpl.matchcols2 = \u4e00\u81f4\u5217\u306f\u7a7a\u3084 null \u6587\u5b57\u5217\u3067\u306f\u306a\u308a\u307e\u305b\u3093\u3002
-jdbcrowsetimpl.unsetmatch = \u8a2d\u5b9a\u89e3\u9664\u3055\u308c\u3066\u3044\u308b\u5217\u306f\u30bb\u30c3\u30c8\u3068\u540c\u3058\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-jdbcrowsetimpl.usecolname = unsetMatchColumn \u3078\u306e\u5f15\u6570\u3068\u3057\u3066\u5217\u540d\u3092\u4f7f\u7528\u3066\u304f\u3060\u3055\u3044\u3002
-jdbcrowsetimpl.usecolid = unsetMatchColumn \u3078\u306e\u5f15\u6570\u3068\u3057\u3066\u5217 ID \u3092\u4f7f\u7528\u3066\u304f\u3060\u3055\u3044\u3002
-jdbcrowsetimpl.resnotupd = ResultSet \u306f\u66f4\u65b0\u3067\u304d\u307e\u305b\u3093\u3002
-jdbcrowsetimpl.opnotysupp = \u307e\u3060\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u64cd\u4f5c
-jdbcrowsetimpl.featnotsupp = \u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u6a5f\u80fd
+jdbcrowsetimpl.invalstate = \u7121\u52B9\u306A\u72B6\u614B
+jdbcrowsetimpl.connect = JdbcRowSet(connect): JNDI\u304C\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093
+jdbcrowsetimpl.paramtype = \u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30BF\u30A4\u30D7\u3092\u63A8\u5B9A\u3067\u304D\u307E\u305B\u3093
+jdbcrowsetimpl.matchcols = \u4E00\u81F4\u5217\u304C\u5217\u306E\u30BB\u30C3\u30C8\u3068\u540C\u3058\u3067\u306F\u3042\u308A\u307E\u305B\u3093
+jdbcrowsetimpl.setmatchcols = \u4E00\u81F4\u5217\u3092\u53D6\u5F97\u3059\u308B\u524D\u306B\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044
+jdbcrowsetimpl.matchcols1 = \u4E00\u81F4\u5217\u306F0\u3088\u308A\u5927\u304D\u3044\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+jdbcrowsetimpl.matchcols2 = \u4E00\u81F4\u5217\u3092\u7A7A\u307E\u305F\u306Fnull\u6587\u5B57\u5217\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+jdbcrowsetimpl.unsetmatch = \u8A2D\u5B9A\u89E3\u9664\u3055\u308C\u3066\u3044\u308B\u5217\u306F\u30BB\u30C3\u30C8\u3068\u540C\u3058\u3067\u306F\u3042\u308A\u307E\u305B\u3093
+jdbcrowsetimpl.usecolname = unsetMatchColumn\u3078\u306E\u5F15\u6570\u3068\u3057\u3066\u5217\u540D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044
+jdbcrowsetimpl.usecolid = unsetMatchColumn\u3078\u306E\u5F15\u6570\u3068\u3057\u3066\u5217ID\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044
+jdbcrowsetimpl.resnotupd = ResultSet\u306F\u66F4\u65B0\u3067\u304D\u307E\u305B\u3093
+jdbcrowsetimpl.opnotysupp = \u307E\u3060\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u64CD\u4F5C
+jdbcrowsetimpl.featnotsupp = \u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u6A5F\u80FD
 
 #CachedRowSetReader exceptions
-crsreader.connect = (JNDI) \u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3002
-crsreader.paramtype = \u30d1\u30e9\u30e1\u30fc\u30bf\u578b\u3092\u63a8\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002
-crsreader.connecterr = RowSetReader \u306e\u5185\u90e8\u30a8\u30e9\u30fc: \u63a5\u7d9a\u307e\u305f\u306f\u30b3\u30de\u30f3\u30c9\u306a\u3057
-crsreader.datedetected = \u65e5\u4ed8\u3092\u691c\u51fa\u3057\u307e\u3057\u305f\u3002
-crsreader.caldetected = \u30ab\u30ec\u30f3\u30c0\u3092\u691c\u51fa\u3057\u307e\u3057\u305f\u3002
+crsreader.connect = (JNDI)\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093
+crsreader.paramtype = \u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30BF\u30A4\u30D7\u3092\u63A8\u5B9A\u3067\u304D\u307E\u305B\u3093
+crsreader.connecterr = RowSetReader\u306E\u5185\u90E8\u30A8\u30E9\u30FC: \u63A5\u7D9A\u307E\u305F\u306F\u30B3\u30DE\u30F3\u30C9\u306A\u3057
+crsreader.datedetected = \u65E5\u4ED8\u3092\u691C\u51FA\u3057\u307E\u3057\u305F
+crsreader.caldetected = \u30AB\u30EC\u30F3\u30C0\u3092\u691C\u51FA\u3057\u307E\u3057\u305F
 
 #CachedRowSetWriter exceptions
-crswriter.connect = \u63a5\u7d9a\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002
-crswriter.tname = writeData \u304c\u8868\u540d\u3092\u5224\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002
-crswriter.params1 = params1 \u306e\u5024 : {0} 
-crswriter.params2 = params2 \u306e\u5024 : {0} 
-crswriter.conflictsno =  \u540c\u671f\u4e2d\u306b\u7af6\u5408\u304c\u767a\u751f\u3057\u307e\u3059\u3002 
+crswriter.connect = \u63A5\u7D9A\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093
+crswriter.tname = writeData\u304C\u8868\u540D\u3092\u5224\u5225\u3067\u304D\u307E\u305B\u3093
+crswriter.params1 = params1\u306E\u5024: {0} 
+crswriter.params2 = params2\u306E\u5024: {0} 
+crswriter.conflictsno =  \u540C\u671F\u4E2D\u306B\u7AF6\u5408\u304C\u767A\u751F\u3057\u307E\u3059 
 
 #InsertRow exceptions
-insertrow.novalue = \u5024\u306f\u633f\u5165\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+insertrow.novalue = \u5024\u306F\u633F\u5165\u3055\u308C\u3066\u3044\u307E\u305B\u3093
 
 #SyncResolverImpl exceptions
-syncrsimpl.indexval = \u7bc4\u56f2\u5916\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5024  
-syncrsimpl.noconflict = \u3053\u306e\u5217\u306f\u7af6\u5408\u3057\u3066\u3044\u307e\u305b\u3093\u3002
-syncrsimpl.syncnotpos = \u540c\u671f\u3067\u304d\u307e\u305b\u3093\u3002
-syncrsimpl.valtores = \u89e3\u6c7a\u3055\u308c\u308b\u5024\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b cachedrowset \u306b\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
+syncrsimpl.indexval = \u7BC4\u56F2\u5916\u306E\u7D22\u5F15\u5024  
+syncrsimpl.noconflict = \u3053\u306E\u5217\u306F\u7AF6\u5408\u3057\u3066\u3044\u307E\u305B\u3093
+syncrsimpl.syncnotpos = \u540C\u671F\u3067\u304D\u307E\u305B\u3093
+syncrsimpl.valtores = \u89E3\u6C7A\u3055\u308C\u308B\u5024\u306F\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u307E\u305F\u306Fcachedrowset\u306B\u3042\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059
 
 #WebRowSetXmlReader exception
-wrsxmlreader.invalidcp = RowSet \u306e\u6700\u5f8c\u306b\u5230\u9054\u3057\u307e\u3057\u305f\u3002\u7121\u52b9\u306a\u30ab\u30fc\u30bd\u30eb\u4f4d\u7f6e
-wrsxmlreader.readxml = readXML : {0}
-wrsxmlreader.parseerr = ** \u89e3\u6790\u30a8\u30e9\u30fc : {0} , \u884c : {1} , URI : {2}
+wrsxmlreader.invalidcp = RowSet\u306E\u6700\u5F8C\u306B\u5230\u9054\u3057\u307E\u3057\u305F\u3002\u7121\u52B9\u306A\u30AB\u30FC\u30BD\u30EB\u4F4D\u7F6E
+wrsxmlreader.readxml = readXML: {0}
+wrsxmlreader.parseerr = **\u89E3\u6790\u30A8\u30E9\u30FC: {0}\u3001\u884C: {1}\u3001URI: {2}
 
 #WebRowSetXmlWriter exceptions
-wrsxmlwriter.ioex = IOException : {0}
-wrsxmlwriter.sqlex = SQLException : {0}
-wrsxmlwriter.failedwrite = \u5024\u306e\u66f8\u304d\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002
-wsrxmlwriter.notproper = \u9069\u5207\u306a\u578b\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+wrsxmlwriter.ioex = IOException: {0}
+wrsxmlwriter.sqlex = SQLException: {0}
+wrsxmlwriter.failedwrite = \u5024\u306E\u66F8\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F
+wsrxmlwriter.notproper = \u9069\u5207\u306A\u30BF\u30A4\u30D7\u3067\u306F\u3042\u308A\u307E\u305B\u3093
 
 #XmlReaderContentHandler exceptions
-xmlrch.errmap = Map \u8a2d\u5b9a\u30a8\u30e9\u30fc : {0}
-xmlrch.errmetadata = \u30e1\u30bf\u30c7\u30fc\u30bf\u8a2d\u5b9a\u30a8\u30e9\u30fc : {0}
-xmlrch.errinsertval = \u5024\u306e\u633f\u5165\u30a8\u30e9\u30fc : {0}
-xmlrch.errconstr = \u884c\u306e\u751f\u6210\u30a8\u30e9\u30fc : {0}
-xmlrch.errdel = \u884c\u306e\u524a\u9664\u30a8\u30e9\u30fc : {0}
-xmlrch.errinsdel = insdel \u884c\u306e\u751f\u6210\u30a8\u30e9\u30fc : {0}
-xmlrch.errupdate = \u66f4\u65b0\u884c\u306e\u751f\u6210\u30a8\u30e9\u30fc : {0}
-xmlrch.errupdrow = \u884c\u306e\u66f4\u65b0\u30a8\u30e9\u30fc : {0}
-xmlrch.chars = \u6587\u5b57 :
-xmlrch.badvalue = \u4e0d\u6b63\u306a\u5024 ; null \u306b\u3067\u304d\u306a\u3044\u30d7\u30ed\u30d1\u30c6\u30a3
-xmlrch.badvalue1 = \u4e0d\u6b63\u306a\u5024 ; null \u306b\u3067\u304d\u306a\u3044\u30e1\u30bf\u30c7\u30fc\u30bf
-xmlrch.warning =  ** \u8b66\u544a : {0} , \u884c : {1} , URI : {2}
+xmlrch.errmap = Map\u8A2D\u5B9A\u30A8\u30E9\u30FC: {0}
+xmlrch.errmetadata = \u30E1\u30BF\u30C7\u30FC\u30BF\u8A2D\u5B9A\u30A8\u30E9\u30FC: {0}
+xmlrch.errinsertval = \u5024\u306E\u633F\u5165\u30A8\u30E9\u30FC: {0}
+xmlrch.errconstr = \u884C\u306E\u751F\u6210\u30A8\u30E9\u30FC: {0}
+xmlrch.errdel = \u884C\u306E\u524A\u9664\u30A8\u30E9\u30FC: {0}
+xmlrch.errinsert = \u633F\u5165\u884C\u306E\u751F\u6210\u30A8\u30E9\u30FC: {0}
+xmlrch.errinsdel = insdel\u884C\u306E\u751F\u6210\u30A8\u30E9\u30FC: {0}
+xmlrch.errupdate = \u66F4\u65B0\u884C\u306E\u751F\u6210\u30A8\u30E9\u30FC: {0}
+xmlrch.errupdrow = \u884C\u306E\u66F4\u65B0\u30A8\u30E9\u30FC: {0}
+xmlrch.chars = \u6587\u5B57:
+xmlrch.badvalue = \u4E0D\u6B63\u306A\u5024: null\u306B\u3067\u304D\u306A\u3044\u30D7\u30ED\u30D1\u30C6\u30A3
+xmlrch.badvalue1 = \u4E0D\u6B63\u306A\u5024: null\u306B\u3067\u304D\u306A\u3044\u30E1\u30BF\u30C7\u30FC\u30BF
+xmlrch.warning =  **\u8B66\u544A: {0}\u3001\u884C: {1}\u3001URI: {2}
 
 #RIOptimisticProvider Exceptions
-riop.locking = \u30ed\u30c3\u30af\u306e\u5206\u985e\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+riop.locking = \u30ED\u30C3\u30AF\u306E\u5206\u985E\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
 
 #RIXMLProvider exceptions
-rixml.unsupp = RIXMLProvider \u3067\u306f\u672a\u30b5\u30dd\u30fc\u30c8
+rixml.unsupp = RIXMLProvider\u3067\u306F\u672A\u30B5\u30DD\u30FC\u30C8
--- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_ko.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_ko.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -24,145 +24,147 @@
 #
 
 # CacheRowSetImpl exceptions
-cachedrowsetimpl.populate = \uc798\ubabb\ub41c ResultSet \uac1d\uccb4\uac00 \uc81c\uacf5\ub418\uc5b4 \uba54\uc18c\ub4dc\ub97c \ucc44\uc6b8 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.invalidp = \uc798\ubabb\ub41c \uc9c0\uc18d\uc131 \uacf5\uae09\uc790\uac00 \uc0dd\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.nullhash = CachedRowSetImpl \uc778\uc2a4\ud134\uc2a4\ub97c \uc778\uc2a4\ud134\uc2a4\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uad6c\uc131\uc790\uc5d0 \ub110 Hashtable\uc774 \uc81c\uacf5\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.invalidop = \ud589\uc744 \uc0bd\uc785\ud558\ub294 \ub3d9\uc548 \uc798\ubabb\ub41c \uc791\uc5c5\uc744 \uc218\ud589\ud588\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.accfailed = acceptChanges\uac00 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.invalidcp = \uc798\ubabb\ub41c \ucee4\uc11c \uc704\uce58\uc785\ub2c8\ub2e4.
-cachedrowsetimpl.illegalop = \uc0bd\uc785\ub41c \ud589\uc774 \uc544\ub2cc \ud589\uc5d0\uc11c \uc798\ubabb\ub41c \uc791\uc5c5\uc744 \uc218\ud589\ud588\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.clonefail = \ubcf5\uc81c \uc2e4\ud328: {0}
-cachedrowsetimpl.invalidcol = \uc798\ubabb\ub41c \uc5f4 \uc0c9\uc778\uc785\ub2c8\ub2e4.
-cachedrowsetimpl.invalcolnm = \uc798\ubabb\ub41c \uc5f4 \uc774\ub984\uc785\ub2c8\ub2e4.
-cachedrowsetimpl.boolfail = \uc5f4 {1}\uc758 \uac12({0})\uc5d0\uc11c getBoolen\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.bytefail = \uc5f4 {1}\uc758 \uac12({0})\uc5d0\uc11c getByte\uac00 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.shortfail = \uc5f4 {1}\uc758 \uac12({0})\uc5d0\uc11c getShort\uac00 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.intfail = \uc5f4 {1}\uc758 \uac12({0})\uc5d0\uc11c getInt\uac00 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.longfail = \uc5f4 {1}\uc758 \uac12({0})\uc5d0\uc11c getLong\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.floatfail = \uc5f4 {1}\uc758 \uac12({0})\uc5d0\uc11c getFloat\uac00 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.doublefail = \uc5f4 {1}\uc758 \uac12({0})\uc5d0\uc11c getDouble\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.dtypemismt = \ub370\uc774\ud130 \uc720\ud615\uc774 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. 
-cachedrowsetimpl.datefail = \uc5f4 {1}\uc758 \uac12({0})\uc5d0\uc11c getDate\uac00 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. \ubcc0\ud658\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.timefail = \uc5f4 {1}\uc758 \uac12({0})\uc5d0\uc11c getLong\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. \ubcc0\ud658\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.posupdate = \uc704\uce58 \uc9c0\uc815 \uc5c5\ub370\uc774\ud2b8\ub97c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.unableins = \uc778\uc2a4\ud134\uc2a4\ud654 \ud560 \uc218 \uc5c6\uc74c: {0}
-cachedrowsetimpl.beforefirst = beforeFirst: \uc798\ubabb\ub41c \ucee4\uc11c \uc791\uc5c5\uc785\ub2c8\ub2e4.
-cachedrowsetimpl.first = \ucc98\uc74c: \uc798\ubabb\ub41c \ucee4\uc11c \uc791\uc5c5\uc785\ub2c8\ub2e4.
-cachedrowsetimpl.last = \ub9c8\uc9c0\ub9c9: TYPE_FORWARD_ONLY
-cachedrowsetimpl.absolute = \uc808\ub300: \uc798\ubabb\ub41c \ucee4\uc11c \uc704\uce58\uc785\ub2c8\ub2e4.
-cachedrowsetimpl.relative = \uc0c1\ub300: \uc798\ubabb\ub41c \ucee4\uc11c \uc704\uce58\uc785\ub2c8\ub2e4.
-cachedrowsetimpl.asciistream = Ascii \uc2a4\ud2b8\ub9bc\uc744 \uc77d\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.binstream = \uc774\uc9c4 \uc2a4\ud2b8\ub9bc\uc744 \uc77d\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.failedins = \ud589\uc744 \uc0bd\uc785\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.updateins = \ud589\uc744 \uc0bd\uc785\ud558\ub294 \ub3d9\uc548 updateRow\uac00 \ud638\ucd9c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+cachedrowsetimpl.populate = \uBD80\uC801\uD569\uD55C ResultSet \uAC1D\uCCB4\uAC00 \uC81C\uACF5\uB418\uC5B4 \uBA54\uC18C\uB4DC\uB97C \uCC44\uC6B8 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.invalidp = \uBD80\uC801\uD569\uD55C \uC9C0\uC18D\uC131 \uC81C\uACF5\uC790\uAC00 \uC0DD\uC131\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.nullhash = CachedRowSetImpl \uC778\uC2A4\uD134\uC2A4\uB97C \uC778\uC2A4\uD134\uC2A4\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC0DD\uC131\uC790\uC5D0 \uB110 Hashtable\uC774 \uC81C\uACF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.invalidop = \uD589\uC744 \uC0BD\uC785\uD558\uB294 \uC911 \uBD80\uC801\uD569\uD55C \uC791\uC5C5\uC774 \uC218\uD589\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.accfailed = acceptChanges\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.invalidcp = \uCEE4\uC11C \uC704\uCE58\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
+cachedrowsetimpl.illegalop = \uC0BD\uC785\uB41C \uD589\uC774 \uC544\uB2CC \uD589\uC5D0\uC11C \uC798\uBABB\uB41C \uC791\uC5C5\uC774 \uC218\uD589\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.clonefail = \uBCF5\uC81C \uC2E4\uD328: {0}
+cachedrowsetimpl.invalidcol = \uC5F4 \uC778\uB371\uC2A4\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
+cachedrowsetimpl.invalcolnm = \uC5F4 \uC774\uB984\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
+cachedrowsetimpl.boolfail = {1} \uC5F4\uC758 \uAC12({0})\uC5D0\uC11C getBoolen\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.bytefail = {1} \uC5F4\uC758 \uAC12({0})\uC5D0\uC11C getByte\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.shortfail = {1} \uC5F4\uC758 \uAC12({0})\uC5D0\uC11C getShort\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.intfail = {1} \uC5F4\uC758 \uAC12({0})\uC5D0\uC11C getInt\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.longfail = {1} \uC5F4\uC758 \uAC12({0})\uC5D0\uC11C getLong\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.floatfail = {1} \uC5F4\uC758 \uAC12({0})\uC5D0\uC11C getFloat\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.doublefail = {1} \uC5F4\uC758 \uAC12({0})\uC5D0\uC11C getDouble\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.dtypemismt = \uB370\uC774\uD130 \uC720\uD615\uC774 \uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. 
+cachedrowsetimpl.datefail = {1} \uC5F4\uC758 \uAC12({0})\uC5D0\uC11C getDate\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. \uBCC0\uD658\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.timefail = {1} \uC5F4\uC758 \uAC12({0})\uC5D0\uC11C getTime\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. \uBCC0\uD658\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.posupdate = \uC704\uCE58\uAC00 \uC9C0\uC815\uB41C \uAC31\uC2E0\uC774 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.unableins = \uC778\uC2A4\uD134\uC2A4\uD654\uD560 \uC218 \uC5C6\uC74C: {0}
+cachedrowsetimpl.beforefirst = beforeFirst: \uCEE4\uC11C \uC791\uC5C5\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
+cachedrowsetimpl.first = \uCC98\uC74C: \uCEE4\uC11C \uC791\uC5C5\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
+cachedrowsetimpl.last = \uB9C8\uC9C0\uB9C9: TYPE_FORWARD_ONLY
+cachedrowsetimpl.absolute = \uC808\uB300: \uCEE4\uC11C \uC704\uCE58\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
+cachedrowsetimpl.relative = \uC0C1\uB300: \uCEE4\uC11C \uC704\uCE58\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
+cachedrowsetimpl.asciistream = ASCII \uC2A4\uD2B8\uB9BC\uC5D0 \uB300\uD55C \uC77D\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.binstream = \uC774\uC9C4 \uC2A4\uD2B8\uB9BC\uC5D0\uC11C \uC77D\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.failedins = \uD589 \uC0BD\uC785\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.updateins = \uD589\uC744 \uC0BD\uC785\uD558\uB294 \uC911 updateRow\uAC00 \uD638\uCD9C\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
 cachedrowsetimpl.movetoins = moveToInsertRow: CONCUR_READ_ONLY
-cachedrowsetimpl.movetoins1 = moveToInsertRow: \uba54\ud0c0 \ub370\uc774\ud130\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.movetoins2 = moveToInsertRow: \uc798\ubabb\ub41c \uc5f4 \uac1c\uc218\uc785\ub2c8\ub2e4.
-cachedrowsetimpl.tablename = \ud14c\uc774\ube14 \uc774\ub984\uc740 \ub110\uc77c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.keycols = \uc798\ubabb\ub41c \ud0a4 \uc5f4\uc785\ub2c8\ub2e4.
-cachedrowsetimpl.opnotsupp = \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \uc791\uc5c5\uc785\ub2c8\ub2e4.
-cachedrowsetimpl.matchcols = \uc77c\uce58 \uc5f4\uc774 \uc124\uc815\ub41c \uc5f4\uacfc \uac19\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.setmatchcols = \uc77c\uce58 \uc5f4\uc744 \uc124\uc815\ud55c \ub2e4\uc74c\uc5d0 \uac00\uc838\uc624\uc2ed\uc2dc\uc624.
-cachedrowsetimpl.matchcols1 = \uc77c\uce58 \uc5f4\uc774 0\uac1c \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
-cachedrowsetimpl.matchcols2 = \uc77c\uce58 \uc5f4\uc740 \ube44\uc5b4 \uc788\uac70\ub098 \ub110 \ubb38\uc790\uc5f4\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
-cachedrowsetimpl.unsetmatch = \uc124\uc815 \ud574\uc81c\ud560 \uc5f4\uc774 \uc124\uc815\ub41c \uc5f4\uacfc \uac19\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.unsetmatch1 = \uc5f4 \uc774\ub984\uc744 unsetMatchColumn\uc758 \uc778\uc218\ub85c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624.
-cachedrowsetimpl.unsetmatch2 = \uc5f4 ID\ub97c unsetMatchColumn\uc758 \uc778\uc218\ub85c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624.
-cachedrowsetimpl.numrows = \ud589 \uac1c\uc218\uac00 0\ubcf4\ub2e4 \uc791\uac70\ub098 \ubc18\uc785 \ud06c\uae30\ubcf4\ub2e4 \uc791\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.startpos = \uc2dc\uc791 \uc704\uce58\ub294 \uc74c\uc218\uc77c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.nextpage = \ud638\ucd9c\ud558\uae30 \uc804\uc5d0 \ub370\uc774\ud130\ub97c \ucc44\uc6b0\uc2ed\uc2dc\uc624. 
-cachedrowsetimpl.pagesize = \ud398\uc774\uc9c0 \ud06c\uae30\ub294 0\ubcf4\ub2e4 \uc791\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.pagesize1 = \ud398\uc774\uc9c0 \ud06c\uae30\ub294 maxRows\ubcf4\ub2e4 \ud074 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-cachedrowsetimpl.fwdonly = ResultSet\ub294 \uc804\ub2ec \uc804\uc6a9\uc785\ub2c8\ub2e4.
-cachedrowsetimpl.type = \uc720\ud615: {0}
-cachedrowsetimpl.opnotysupp = \uc791\uc5c5\uc774 \uc544\uc9c1 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc74c
-cachedrowsetimpl.featnotsupp = \uae30\ub2a5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc74c
+cachedrowsetimpl.movetoins1 = moveToInsertRow: \uBA54\uD0C0 \uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.movetoins2 = moveToInsertRow: \uC5F4 \uC218\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
+cachedrowsetimpl.tablename = \uD14C\uC774\uBE14 \uC774\uB984\uC740 \uB110\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.keycols = \uD0A4 \uC5F4\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
+cachedrowsetimpl.invalidcol = \uC5F4 \uC778\uB371\uC2A4\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
+cachedrowsetimpl.opnotsupp = \uB370\uC774\uD130\uBCA0\uC774\uC2A4\uC5D0\uC11C \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 \uC791\uC5C5\uC785\uB2C8\uB2E4.
+cachedrowsetimpl.matchcols = \uC77C\uCE58 \uC5F4\uC774 \uC124\uC815\uB41C \uC5F4\uACFC \uB3D9\uC77C\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.setmatchcols = \uC77C\uCE58 \uC5F4\uC744 \uC124\uC815\uD55C \uD6C4 \uAC00\uC838\uC624\uC2ED\uC2DC\uC624.
+cachedrowsetimpl.matchcols1 = \uC77C\uCE58 \uC5F4\uC740 0\uAC1C \uC774\uC0C1\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+cachedrowsetimpl.matchcols2 = \uC77C\uCE58 \uC5F4\uC740 \uBE44\uC5B4 \uC788\uAC70\uB098 \uB110 \uBB38\uC790\uC5F4\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+cachedrowsetimpl.unsetmatch = \uC124\uC815\uC744 \uD574\uC81C\uD558\uB824\uB294 \uC5F4\uC774 \uC124\uC815\uB41C \uC5F4\uACFC \uB2E4\uB985\uB2C8\uB2E4.
+cachedrowsetimpl.unsetmatch1 = \uC5F4 \uC774\uB984\uC744 unsetMatchColumn\uC758 \uC778\uC218\uB85C \uC0AC\uC6A9\uD558\uC2ED\uC2DC\uC624.
+cachedrowsetimpl.unsetmatch2 = \uC5F4 ID\uB97C unsetMatchColumn\uC758 \uC778\uC218\uB85C \uC0AC\uC6A9\uD558\uC2ED\uC2DC\uC624.
+cachedrowsetimpl.numrows = \uD589 \uC218\uAC00 0\uBCF4\uB2E4 \uC791\uAC70\uB098 \uC778\uCD9C \uD06C\uAE30\uBCF4\uB2E4 \uC791\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.startpos = \uC2DC\uC791 \uC704\uCE58\uB294 \uC74C\uC218\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.nextpage = \uD638\uCD9C\uD558\uAE30 \uC804\uC5D0 \uB370\uC774\uD130\uB97C \uCC44\uC6B0\uC2ED\uC2DC\uC624. 
+cachedrowsetimpl.pagesize = \uD398\uC774\uC9C0 \uD06C\uAE30\uB294 0\uBCF4\uB2E4 \uC791\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.pagesize1 = \uD398\uC774\uC9C0 \uD06C\uAE30\uB294 maxRows\uBCF4\uB2E4 \uD074 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.fwdonly = ResultSet\uB294 \uC804\uB2EC \uC804\uC6A9\uC785\uB2C8\uB2E4.
+cachedrowsetimpl.type = \uC720\uD615: {0}
+cachedrowsetimpl.opnotysupp = \uC791\uC5C5\uC774 \uC544\uC9C1 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.featnotsupp = \uAE30\uB2A5\uC774 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
 
 # WebRowSetImpl exceptions
-webrowsetimpl.nullhash = WebRowSetImpl \uc778\uc2a4\ud134\uc2a4\ub97c \uc778\uc2a4\ud134\uc2a4\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uad6c\uc131\uc790\uc5d0 \ub110 Hashtable\uc774 \uc81c\uacf5\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
-webrowsetimpl.invalidwr = \uc798\ubabb\ub41c \uae30\ub85d\uae30\uc785\ub2c8\ub2e4.
-webrowsetimpl.invalidrd = \uc798\ubabb\ub41c \ud310\ub3c5\uae30\uc785\ub2c8\ub2e4.
+webrowsetimpl.nullhash = WebRowSetImpl \uC778\uC2A4\uD134\uC2A4\uB97C \uC778\uC2A4\uD134\uC2A4\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC0DD\uC131\uC790\uC5D0 \uB110 Hashtable\uC774 \uC81C\uACF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+webrowsetimpl.invalidwr = \uAE30\uB85D \uC7A5\uCE58\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
+webrowsetimpl.invalidrd = \uC77D\uAE30 \uD504\uB85C\uADF8\uB7A8\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
 
 #FilteredRowSetImpl exceptions
-filteredrowsetimpl.relative = \uc0c1\ub300: \uc798\ubabb\ub41c \ucee4\uc11c \uc791\uc5c5\uc785\ub2c8\ub2e4. 
-filteredrowsetimpl.absolute = \uc808\ub300: \uc798\ubabb\ub41c \ucee4\uc11c \uc791\uc5c5\uc785\ub2c8\ub2e4.
-filteredrowsetimpl.notallowed = \uc774 \uac12\uc740 \ud544\ud130\ub97c \ud1b5\uacfc\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+filteredrowsetimpl.relative = \uC0C1\uB300: \uCEE4\uC11C \uC791\uC5C5\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
+filteredrowsetimpl.absolute = \uC808\uB300: \uCEE4\uC11C \uC791\uC5C5\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
+filteredrowsetimpl.notallowed = \uC774 \uAC12\uC740 \uD544\uD130\uB97C \uD1B5\uACFC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
 
 #JoinRowSetImpl exceptions
-joinrowsetimpl.notinstance = Rowset\uc758 \uc778\uc2a4\ud134\uc2a4\uac00 \uc544\ub2d9\ub2c8\ub2e4.
-joinrowsetimpl.matchnotset = \uacb0\ud569\ud560 \uc77c\uce58 \uc5f4\uc744 \uc124\uc815\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
-joinrowsetimpl.numnotequal = Rowset\uc758 \uc694\uc18c \uc218\uac00 \uc77c\uce58 \uc5f4\uacfc \uac19\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
-joinrowsetimpl.notdefined = \uc815\uc758\ub41c \uacb0\ud569 \uc720\ud615\uc774 \uc544\ub2d9\ub2c8\ub2e4.
-joinrowsetimpl.notsupported = \uc774 \uacb0\ud569 \uc720\ud615\uc740 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
-joinrowsetimpl.initerror = JoinRowSet \ucd08\uae30\ud654 \uc624\ub958
-joinrowsetimpl.genericerr = \uc77c\ubc18 joinrowset \ucd08\uae30 \uc624\ub958
-joinrowsetimpl.emptyrowset = \ube48 rowset\uc744 \uc774 JoinRowSet\uc5d0 \ucd94\uac00\ud560 \uc218 \uc5c6\uc74c
+joinrowsetimpl.notinstance = Rowset\uC758 \uC778\uC2A4\uD134\uC2A4\uAC00 \uC544\uB2D9\uB2C8\uB2E4.
+joinrowsetimpl.matchnotset = \uC870\uC778\uD560 \uC77C\uCE58 \uC5F4\uC774 \uC124\uC815\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
+joinrowsetimpl.numnotequal = Rowset\uC758 \uC694\uC18C \uC218\uAC00 \uC77C\uCE58 \uC5F4\uACFC \uAC19\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+joinrowsetimpl.notdefined = \uC815\uC758\uB41C \uC870\uC778 \uC720\uD615\uC774 \uC544\uB2D9\uB2C8\uB2E4.
+joinrowsetimpl.notsupported = \uC774 \uC870\uC778 \uC720\uD615\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+joinrowsetimpl.initerror = JoinRowSet \uCD08\uAE30\uD654 \uC624\uB958
+joinrowsetimpl.genericerr = \uC77C\uBC18 joinrowset \uCD08\uAE30 \uC624\uB958
+joinrowsetimpl.emptyrowset = \uBE48 rowset\uB97C \uC774 JoinRowSet\uC5D0 \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
 
 #JdbcRowSetImpl exceptions
-jdbcrowsetimpl.invalstate = \uc798\ubabb\ub41c \uc0c1\ud0dc\uc785\ub2c8\ub2e4.
-jdbcrowsetimpl.connect = JdbcRowSet(\uc5f0\uacb0) JNDI\uac00 \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-jdbcrowsetimpl.paramtype = \ub9e4\uac1c \ubcc0\uc218 \uc720\ud615\uc744 \ucd94\ub860\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-jdbcrowsetimpl.matchcols = \uc77c\uce58 \uc5f4\uc774 \uc124\uc815\ub41c \uc5f4\uacfc \uac19\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
-jdbcrowsetimpl.setmatchcols = \uc77c\uce58 \uc5f4\uc744 \uc124\uc815\ud55c \ub2e4\uc74c\uc5d0 \uac00\uc838\uc624\uc2ed\uc2dc\uc624.
-jdbcrowsetimpl.matchcols1 = \uc77c\uce58 \uc5f4\uc740 0\uac1c \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
-jdbcrowsetimpl.matchcols2 = \uc77c\uce58 \uc5f4\uc740 \ub110 \ub610\ub294 \ube48 \ubb38\uc790\uc5f4\uc77c \uc218\ub294 \uc5c6\uc2b5\ub2c8\ub2e4.
-jdbcrowsetimpl.unsetmatch = \uc124\uc815 \ud574\uc81c\ud560 \uc5f4\uc774 \uc124\uc815\ub41c \uc5f4\uacfc \uac19\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
-jdbcrowsetimpl.usecolname = \uc5f4 \uc774\ub984\uc744 unsetMatchColumn\uc758 \uc778\uc218\ub85c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624.
-jdbcrowsetimpl.usecolid = \uc5f4 ID\ub97c unsetMatchColumn\uc758 \uc778\uc218\ub85c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624.
-jdbcrowsetimpl.resnotupd = ResultSet\uc740 \uc5c5\ub370\uc774\ud2b8\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-jdbcrowsetimpl.opnotysupp = \uc791\uc5c5\uc774 \uc544\uc9c1 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc74c
-jdbcrowsetimpl.featnotsupp = \uae30\ub2a5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc74c
+jdbcrowsetimpl.invalstate = \uC0C1\uD0DC\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
+jdbcrowsetimpl.connect = JdbcRowSet(\uC811\uC18D) JNDI\uAC00 \uC811\uC18D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+jdbcrowsetimpl.paramtype = \uB9E4\uAC1C\uBCC0\uC218 \uC720\uD615\uC744 \uCD94\uB860\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+jdbcrowsetimpl.matchcols = \uC77C\uCE58 \uC5F4\uC774 \uC124\uC815\uB41C \uC5F4\uACFC \uB3D9\uC77C\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+jdbcrowsetimpl.setmatchcols = \uC77C\uCE58 \uC5F4\uC744 \uC124\uC815\uD55C \uD6C4 \uAC00\uC838\uC624\uC2ED\uC2DC\uC624.
+jdbcrowsetimpl.matchcols1 = \uC77C\uCE58 \uC5F4\uC740 0\uAC1C \uC774\uC0C1\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4.
+jdbcrowsetimpl.matchcols2 = \uC77C\uCE58 \uC5F4\uC740 \uB110 \uB610\uB294 \uBE48 \uBB38\uC790\uC5F4\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+jdbcrowsetimpl.unsetmatch = \uC124\uC815\uC744 \uD574\uC81C\uD558\uB824\uB294 \uC5F4\uC774 \uC124\uC815\uB41C \uC5F4\uACFC \uB2E4\uB985\uB2C8\uB2E4.
+jdbcrowsetimpl.usecolname = \uC5F4 \uC774\uB984\uC744 unsetMatchColumn\uC758 \uC778\uC218\uB85C \uC0AC\uC6A9\uD558\uC2ED\uC2DC\uC624.
+jdbcrowsetimpl.usecolid = \uC5F4 ID\uB97C unsetMatchColumn\uC758 \uC778\uC218\uB85C \uC0AC\uC6A9\uD558\uC2ED\uC2DC\uC624.
+jdbcrowsetimpl.resnotupd = ResultSet\uB97C \uAC31\uC2E0\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+jdbcrowsetimpl.opnotysupp = \uC791\uC5C5\uC774 \uC544\uC9C1 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+jdbcrowsetimpl.featnotsupp = \uAE30\uB2A5\uC774 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
 
 #CachedRowSetReader exceptions
-crsreader.connect = (JNDI) \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-crsreader.paramtype = \ub9e4\uac1c \ubcc0\uc218 \uc720\ud615\uc744 \ucd94\ub860\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-crsreader.connecterr = RowSetReader\uc758 \ub0b4\ubd80 \uc624\ub958: \uc5f0\uacb0 \ub610\ub294 \uba85\ub839\uc774 \uc5c6\uc74c
-crsreader.datedetected = \ub0a0\uc9dc\uac00 \uac10\uc9c0\ub428
-crsreader.caldetected = \ub2ec\ub825\uc774 \uac10\uc9c0\ub428
+crsreader.connect = (JNDI) \uC811\uC18D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+crsreader.paramtype = \uB9E4\uAC1C\uBCC0\uC218 \uC720\uD615\uC744 \uCD94\uB860\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+crsreader.connecterr = RowSetReader\uC5D0 \uB0B4\uBD80 \uC624\uB958 \uBC1C\uC0DD: \uC811\uC18D \uB610\uB294 \uBA85\uB839\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.
+crsreader.datedetected = \uB0A0\uC9DC\uB97C \uAC10\uC9C0\uD568
+crsreader.caldetected = \uB2EC\uB825\uC744 \uAC10\uC9C0\uD568
 
 #CachedRowSetWriter exceptions
-crswriter.connect = \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-crswriter.tname = writeData\uc5d0\uc11c \ud14c\uc774\ube14 \uc774\ub984\uc744 \ud655\uc778\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-crswriter.params1 = params1\uc758 \uac12: {0} 
-crswriter.params2 = params2\uc758 \uac12: {0} 
-crswriter.conflictsno =  \ub3d9\uae30\ud654\ud558\ub294 \ub3d9\uc548 \ucda9\ub3cc\ud568 
+crswriter.connect = \uC811\uC18D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+crswriter.tname = writeData\uC5D0\uC11C \uD14C\uC774\uBE14 \uC774\uB984\uC744 \uD655\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+crswriter.params1 = params1\uC758 \uAC12: {0} 
+crswriter.params2 = params2\uC758 \uAC12: {0} 
+crswriter.conflictsno =  \uB3D9\uAE30\uD654\uD558\uB294 \uC911 \uCDA9\uB3CC\uD568 
 
 #InsertRow exceptions
-insertrow.novalue = \uac12\uc774 \uc0bd\uc785\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
+insertrow.novalue = \uAC12\uC774 \uC0BD\uC785\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
 
 #SyncResolverImpl exceptions
-syncrsimpl.indexval = \uc0c9\uc778 \uac12\uc774 \ubc94\uc704\ub97c \ubc97\uc5b4\ub0ac\uc2b5\ub2c8\ub2e4.  
-syncrsimpl.noconflict = \uc774 \uc5f4\uc740 \ucda9\ub3cc\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
-syncrsimpl.syncnotpos = \ub3d9\uae30\ud654\ub97c \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-syncrsimpl.valtores = \ud655\uc778\ud560 \uac12\uc774 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub098 cachedrowset\uc5d0 \uc788\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+syncrsimpl.indexval = \uC778\uB371\uC2A4 \uAC12\uC774 \uBC94\uC704\uB97C \uBC97\uC5B4\uB0AC\uC2B5\uB2C8\uB2E4.  
+syncrsimpl.noconflict = \uC774 \uC5F4\uC740 \uCDA9\uB3CC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+syncrsimpl.syncnotpos = \uB3D9\uAE30\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+syncrsimpl.valtores = \uBD84\uC11D\uD560 \uAC12\uC774 \uB370\uC774\uD130\uBCA0\uC774\uC2A4 \uB610\uB294 cachedrowset\uC5D0 \uC788\uC744 \uC218 \uC788\uC2B5\uB2C8\uB2E4.
 
 #WebRowSetXmlReader exception
-wrsxmlreader.invalidcp = RowSet\uc758 \ub05d\uc5d0 \ub3c4\ub2ec\ud588\uc2b5\ub2c8\ub2e4. \uc798\ubabb\ub41c \ucee4\uc11c \uc704\uce58\uc785\ub2c8\ub2e4.
+wrsxmlreader.invalidcp = RowSet\uC758 \uB05D\uC5D0 \uB3C4\uB2EC\uD588\uC2B5\uB2C8\uB2E4. \uCEE4\uC11C \uC704\uCE58\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
 wrsxmlreader.readxml = readXML: {0}
-wrsxmlreader.parseerr = ** \uad6c\ubb38 \ubd84\uc11d \uc624\ub958 : {0} , \ud589 : {1} , uri : {2}
+wrsxmlreader.parseerr = ** \uAD6C\uBB38 \uBD84\uC11D \uC624\uB958: {0}, \uD589: {1}, URI: {2}
 
 #WebRowSetXmlWriter exceptions
-wrsxmlwriter.ioex = IOException: {0}
-wrsxmlwriter.sqlex = SQLException: {0}
-wrsxmlwriter.failedwrite = \uac12\uc744 \uc4f0\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4.
-wsrxmlwriter.notproper = \uc62c\ubc14\ub978 \uc720\ud615\uc774 \uc544\ub2d9\ub2c8\ub2e4.
+wrsxmlwriter.ioex = IOException : {0}
+wrsxmlwriter.sqlex = SQLException : {0}
+wrsxmlwriter.failedwrite = \uAC12 \uC4F0\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+wsrxmlwriter.notproper = \uC801\uC808\uD55C \uC720\uD615\uC774 \uC544\uB2D9\uB2C8\uB2E4.
 
 #XmlReaderContentHandler exceptions
-xmlrch.errmap = \ub9e4\ud551\uc744 \uc124\uc815\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0}
-xmlrch.errmetadata = \uba54\ud0c0\ub370\uc774\ud130\ub97c \uc124\uc815\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0}
-xmlrch.errinsertval = \ub2e4\uc74c \uac12\uc744 \uc0bd\uc785\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd : {0}
-xmlrch.errconstr = \ud589\uc744 \ub9cc\ub4dc\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0}
-xmlrch.errdel = \ud589\uc744 \uc81c\uac70\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0}
-xmlrch.errinsdel = insdel \ud589\uc744 \ub9cc\ub4dc\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0}
-xmlrch.errupdate = update \ud589\uc744 \ub9cc\ub4dc\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0}
-xmlrch.errupdrow = \ub2e4\uc74c \ud589\uc744 \uc5c5\ub370\uc774\ud2b8\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd : {0}
-xmlrch.chars = \ubb38\uc790:
-xmlrch.badvalue = \uc798\ubabb\ub41c \uac12; \ub110\uc77c \uc218 \uc5c6\ub294 \ub4f1\ub85d \uc815\ubcf4
-xmlrch.badvalue1 = \uc798\ubabb\ub41c \uac12; \ub110\uc77c \uc218 \uc5c6\ub294 \uba54\ud0c0\ub370\uc774\ud130
-xmlrch.warning =  ** \uacbd\uace0 : {0} , \ud589 : {1} , uri : {2}
+xmlrch.errmap = \uB9F5\uC744 \uC124\uC815\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0}
+xmlrch.errmetadata = \uBA54\uD0C0 \uB370\uC774\uD130\uB97C \uC124\uC815\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0}
+xmlrch.errinsertval = \uAC12\uC744 \uC0BD\uC785\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0}
+xmlrch.errconstr = \uD589\uC744 \uC0DD\uC131\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0}
+xmlrch.errdel = \uD589\uC744 \uC0AD\uC81C\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0}
+xmlrch.errinsert = insert \uD589\uC744 \uC0DD\uC131\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0}
+xmlrch.errinsdel = insdel \uD589\uC744 \uC0DD\uC131\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0}
+xmlrch.errupdate = update \uD589\uC744 \uC0DD\uC131\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0}
+xmlrch.errupdrow = \uD589\uC744 \uAC31\uC2E0\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0}
+xmlrch.chars = \uBB38\uC790:
+xmlrch.badvalue = \uC798\uBABB\uB41C \uAC12: \uB110\uC77C \uC218 \uC5C6\uB294 \uC18D\uC131\uC785\uB2C8\uB2E4.
+xmlrch.badvalue1 = \uC798\uBABB\uB41C \uAC12: \uB110\uC77C \uC218 \uC5C6\uB294 \uBA54\uD0C0 \uB370\uC774\uD130\uC785\uB2C8\uB2E4.
+xmlrch.warning =  ** \uACBD\uACE0: {0}, \uD589: {1}, URI: {2}
 
 #RIOptimisticProvider Exceptions
-riop.locking = \ub4f1\uae09 \uc7a0\uae08\uc744 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+riop.locking = \uBD84\uB958 \uC7A0\uAE08\uC774 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
 
 #RIXMLProvider exceptions
-rixml.unsupp = RIXMLProvider\uc5d0\uc11c \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+rixml.unsupp = RIXMLProvider\uC5D0\uC11C \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
--- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_pt_BR.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_pt_BR.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -24,147 +24,147 @@
 #
 
 # CacheRowSetImpl exceptions
-cachedrowsetimpl.populate = Objeto ResultSet inv\u00e1lido fornecido para preencher o m\u00e9todo
-cachedrowsetimpl.invalidp = Fornecedor de persist\u00eancias inv\u00e1lido gerado
-cachedrowsetimpl.nullhash = N\u00e3o \u00e9 poss\u00edvel instanciar a inst\u00e2ncia CachedRowSetImpl. Hashtable nulo fornecido ao construtor
-cachedrowsetimpl.invalidop = Opera\u00e7\u00e3o inv\u00e1lida durante a inser\u00e7\u00e3o de linha
-cachedrowsetimpl.accfailed = acceptChanges falho
-cachedrowsetimpl.invalidcp = Posi\u00e7\u00e3o inv\u00e1lida do cursor
-cachedrowsetimpl.illegalop = Opera\u00e7\u00e3o ilegal em linha n\u00e3o inserida
-cachedrowsetimpl.clonefail = Clone falho: {0}
-cachedrowsetimpl.invalidcol = \u00cdndice de coluna inv\u00e1lido
-cachedrowsetimpl.invalcolnm = Nome de coluna inv\u00e1lido
-cachedrowsetimpl.boolfail = getBoolen falhou no valor ( {0} ) na coluna {1}
-cachedrowsetimpl.bytefail = getByte falhou no valor ( {0} ) na coluna {1}
-cachedrowsetimpl.shortfail = getShort falhou no valor ( {0} ) na coluna {1}
-cachedrowsetimpl.intfail = getInt falhou no valor ( {0} ) na coluna {1}
-cachedrowsetimpl.longfail = getLong falhou no valor ( {0} ) na coluna {1}
-cachedrowsetimpl.floatfail = getFloat falhou no valor ( {0} ) na coluna {1}
-cachedrowsetimpl.doublefail = getDouble falhou no valor ( {0} ) na coluna {1}
-cachedrowsetimpl.dtypemismt = Tipo de dados incompat\u00edvel 
-cachedrowsetimpl.datefail = getDate falhou no valor ( {0} ) na coluna {1} sem convers\u00e3o dispon\u00edvel
-cachedrowsetimpl.timefail = getTime falhou no valor ( {0} ) na coluna {1} sem convers\u00e3o dispon\u00edvel
-cachedrowsetimpl.posupdate = Atualiza\u00e7\u00f5es posicionadas n\u00e3o suportadas
-cachedrowsetimpl.unableins = N\u00e3o \u00e9 poss\u00edvel instanciar: {0}
-cachedrowsetimpl.beforefirst = beforeFirst : posi\u00e7\u00e3o inv\u00e1lida do cursor
-cachedrowsetimpl.first = First : opera\u00e7\u00e3o inv\u00e1lida do cursor
+cachedrowsetimpl.populate = Objeto ResultSet inv\u00E1lido fornecido para preencher o m\u00E9todo
+cachedrowsetimpl.invalidp = Fornecedor de persist\u00EAncias inv\u00E1lido gerado
+cachedrowsetimpl.nullhash = N\u00E3o \u00E9 poss\u00EDvel instanciar a inst\u00E2ncia CachedRowSetImpl. Hashtable Nulo fornecido ao construtor
+cachedrowsetimpl.invalidop = Opera\u00E7\u00E3o inv\u00E1lida durante a inser\u00E7\u00E3o de linha
+cachedrowsetimpl.accfailed = Falha em acceptChanges
+cachedrowsetimpl.invalidcp = Posi\u00E7\u00E3o inv\u00E1lida do cursor
+cachedrowsetimpl.illegalop = Opera\u00E7\u00E3o inv\u00E1lida em linha n\u00E3o inserida
+cachedrowsetimpl.clonefail = Falha ao clonar: {0}
+cachedrowsetimpl.invalidcol = \u00CDndice de coluna inv\u00E1lido
+cachedrowsetimpl.invalcolnm = Nome de coluna inv\u00E1lido
+cachedrowsetimpl.boolfail = Falha em getBoolen no valor ( {0} ) na coluna {1}
+cachedrowsetimpl.bytefail = Falha em getByte no valor ( {0} ) na coluna {1}
+cachedrowsetimpl.shortfail = Falha em getShort no valor ( {0} ) na coluna {1}
+cachedrowsetimpl.intfail = Falha em getInt no valor ( {0} ) na coluna {1}
+cachedrowsetimpl.longfail = Falha em getLong no valor ( {0} ) na coluna {1}
+cachedrowsetimpl.floatfail = Falha em getFloat no valor ( {0} ) na coluna {1}
+cachedrowsetimpl.doublefail = Falha em getDouble no valor ( {0} ) na coluna {1}
+cachedrowsetimpl.dtypemismt = Tipo de Dados Incompat\u00EDvel 
+cachedrowsetimpl.datefail = Falha em getDate no valor ( {0} ) na coluna {1} sem convers\u00E3o dispon\u00EDvel
+cachedrowsetimpl.timefail = Falha em getTime no valor ( {0} ) na coluna {1} sem convers\u00E3o dispon\u00EDvel
+cachedrowsetimpl.posupdate = Atualiza\u00E7\u00F5es posicionadas n\u00E3o suportadas
+cachedrowsetimpl.unableins = N\u00E3o \u00E9 poss\u00EDvel instanciar : {0}
+cachedrowsetimpl.beforefirst = beforeFirst : Opera\u00E7\u00E3o do cursor inv\u00E1lida
+cachedrowsetimpl.first = First : Opera\u00E7\u00E3o inv\u00E1lida do cursor
 cachedrowsetimpl.last = last : TYPE_FORWARD_ONLY
-cachedrowsetimpl.absolute = absolute : posi\u00e7\u00e3o inv\u00e1lida do cursor
-cachedrowsetimpl.relative = relative : posi\u00e7\u00e3o inv\u00e1lida do cursor
-cachedrowsetimpl.asciistream = leitura falha do fluxo ascii
-cachedrowsetimpl.binstream = leitura falha em fluxo bin\u00e1rio
-cachedrowsetimpl.failedins = Falha ao inserir linha
-cachedrowsetimpl.updateins = updateRow chamado durante a inser\u00e7\u00e3o de linha
+cachedrowsetimpl.absolute = absolute : Posi\u00E7\u00E3o inv\u00E1lida do cursor
+cachedrowsetimpl.relative = relative : Posi\u00E7\u00E3o inv\u00E1lida do cursor
+cachedrowsetimpl.asciistream = falha na leitura do fluxo ascii
+cachedrowsetimpl.binstream = falha na leitura do fluxo bin\u00E1rio
+cachedrowsetimpl.failedins = Falha ao inserir a linha
+cachedrowsetimpl.updateins = updateRow chamado durante a inser\u00E7\u00E3o de linha
 cachedrowsetimpl.movetoins = moveToInsertRow : CONCUR_READ_ONLY
 cachedrowsetimpl.movetoins1 = moveToInsertRow : sem metadados
-cachedrowsetimpl.movetoins2 = moveToInsertRow : n\u00famero de colunas inv\u00e1lido
-cachedrowsetimpl.tablename = O nome da tabela n\u00e3o pode ser nulo
-cachedrowsetimpl.keycols = Colunas de chaves inv\u00e1lidas
-cachedrowsetimpl.invalidcol = \u00cdndice de coluna inv\u00e1lido
-cachedrowsetimpl.opnotsupp = Opera\u00e7\u00e3o n\u00e3o suportada pelo banco de dados
-cachedrowsetimpl.matchcols = As colunas correspondentes n\u00e3o s\u00e3o iguais \u00e0s colunas definidas
-cachedrowsetimpl.setmatchcols = Definir colunas correspondentes antes de obt\u00ea-las
+cachedrowsetimpl.movetoins2 = moveToInsertRow : n\u00FAmero de colunas inv\u00E1lido
+cachedrowsetimpl.tablename = O nome da tabela n\u00E3o pode ser nulo
+cachedrowsetimpl.keycols = Colunas de chaves inv\u00E1lidas
+cachedrowsetimpl.invalidcol = \u00CDndice de coluna inv\u00E1lido
+cachedrowsetimpl.opnotsupp = Opera\u00E7\u00E3o n\u00E3o suportada pelo Banco de Dados
+cachedrowsetimpl.matchcols = As colunas correspondentes n\u00E3o s\u00E3o iguais \u00E0s colunas definidas
+cachedrowsetimpl.setmatchcols = Definir Colunas correspondentes antes de obt\u00EA-las
 cachedrowsetimpl.matchcols1 = As colunas correspondentes devem ser maior do que 0
-cachedrowsetimpl.matchcols2 = As colunas correspondentes devem ser sequ\u00eancias vazias ou nulas
-cachedrowsetimpl.unsetmatch = As colunas n\u00e3o definidas n\u00e3o s\u00e3o iguais \u00e0s colunas definidas
+cachedrowsetimpl.matchcols2 = As colunas correspondentes devem ser strings vazias ou nulas
+cachedrowsetimpl.unsetmatch = As colunas n\u00E3o definidas n\u00E3o s\u00E3o iguais \u00E0s colunas definidas
 cachedrowsetimpl.unsetmatch1 = Usar o nome da coluna como argumento para unsetMatchColumn
 cachedrowsetimpl.unsetmatch2 = Usar o ID da coluna como argumento para unsetMatchColumn
-cachedrowsetimpl.numrows = O n\u00famero de linhas \u00e9 menor do que zero ou menor do que o tamanho obtido
-cachedrowsetimpl.startpos = A posi\u00e7\u00e3o de in\u00edcio n\u00e3o pode ser negativa
+cachedrowsetimpl.numrows = O n\u00FAmero de linhas \u00E9 menor do que zero ou menor do que o tamanho obtido
+cachedrowsetimpl.startpos = A posi\u00E7\u00E3o de in\u00EDcio n\u00E3o pode ser negativa
 cachedrowsetimpl.nextpage = Preencher dados antes de chamar 
-cachedrowsetimpl.pagesize = O tamanho da p\u00e1gina n\u00e3o pode ser menor do que zero
-cachedrowsetimpl.pagesize1 = O tamanho da p\u00e1gina n\u00e3o pode ser maior do que maxRows
-cachedrowsetimpl.fwdonly = ResultSet \u00e9 somente para frente
-cachedrowsetimpl.type = O tipo \u00e9 : {0}
-cachedrowsetimpl.opnotysupp = Opera\u00e7\u00e3o ainda n\u00e3o suportada
-cachedrowsetimpl.featnotsupp = Recurso n\u00e3o suportado
+cachedrowsetimpl.pagesize = O tamanho da p\u00E1gina n\u00E3o pode ser menor do que zero
+cachedrowsetimpl.pagesize1 = O tamanho da p\u00E1gina n\u00E3o pode ser maior do que maxRows
+cachedrowsetimpl.fwdonly = ResultSet \u00E9 somente para frente
+cachedrowsetimpl.type = O tipo \u00E9 : {0}
+cachedrowsetimpl.opnotysupp = Opera\u00E7\u00E3o ainda n\u00E3o suportada
+cachedrowsetimpl.featnotsupp = Recurso n\u00E3o suportado
 
 # WebRowSetImpl exceptions
-webrowsetimpl.nullhash = N\u00e3o \u00e9 poss\u00edvel instanciar a inst\u00e2ncia WebRowSetImpl. Hashtable nulo fornecido ao construtor
-webrowsetimpl.invalidwr = Gravador inv\u00e1lido
-webrowsetimpl.invalidrd = Leitor inv\u00e1lido
+webrowsetimpl.nullhash = N\u00E3o \u00E9 poss\u00EDvel instanciar a inst\u00E2ncia WebRowSetImpl. Hashtable nulo fornecido ao construtor
+webrowsetimpl.invalidwr = Gravador inv\u00E1lido
+webrowsetimpl.invalidrd = Leitor inv\u00E1lido
 
 #FilteredRowSetImpl exceptions
-filteredrowsetimpl.relative = relative : opera\u00e7\u00e3o inv\u00e1lida do cursor 
-filteredrowsetimpl.absolute = absolute : opera\u00e7\u00e3o inv\u00e1lida do cursor
-filteredrowsetimpl.notallowed = Este valor n\u00e3o \u00e9 permitido no filtro
+filteredrowsetimpl.relative = relative : Opera\u00E7\u00E3o inv\u00E1lida do cursor 
+filteredrowsetimpl.absolute = absolute : Opera\u00E7\u00E3o inv\u00E1lida do cursor
+filteredrowsetimpl.notallowed = Este valor n\u00E3o \u00E9 permitido no filtro
 
 #JoinRowSetImpl exceptions
-joinrowsetimpl.notinstance = N\u00e3o \u00e9 uma inst\u00e2ncia do conjunto de linhas
-joinrowsetimpl.matchnotset = Coluna correspondente n\u00e3o definida para jun\u00e7\u00e3o
-joinrowsetimpl.numnotequal = N\u00famero de elementos no conjunto de linhas diferente da coluna correspondente
-joinrowsetimpl.notdefined = N\u00e3o \u00e9 um tipo definido de jun\u00e7\u00e3o
-joinrowsetimpl.notsupported = Este tipo de jun\u00e7\u00e3o n\u00e3o \u00e9 suportada
-joinrowsetimpl.initerror = Erro de inicializa\u00e7\u00e3o do JoinRowSet
-joinrowsetimpl.genericerr = Erro inicial de joinrowset gen\u00e9rico
-joinrowsetimpl.emptyrowset = O conjunto de linha vazio n\u00e3o pode ser adicionado a este JoinRowSet
+joinrowsetimpl.notinstance = N\u00E3o \u00E9 uma inst\u00E2ncia do conjunto de linhas
+joinrowsetimpl.matchnotset = Coluna Correspondente n\u00E3o definida para jun\u00E7\u00E3o
+joinrowsetimpl.numnotequal = N\u00FAmero de elementos no conjunto de linhas diferente da coluna correspondente
+joinrowsetimpl.notdefined = N\u00E3o \u00E9 um tipo definido de jun\u00E7\u00E3o
+joinrowsetimpl.notsupported = Este tipo de jun\u00E7\u00E3o n\u00E3o \u00E9 suportada
+joinrowsetimpl.initerror = Erro de inicializa\u00E7\u00E3o do JoinRowSet
+joinrowsetimpl.genericerr = Erro inicial de joinrowset gen\u00E9rico
+joinrowsetimpl.emptyrowset = O conjunto de linha vazio n\u00E3o pode ser adicionado a este JoinRowSet
 
 #JdbcRowSetImpl exceptions
-jdbcrowsetimpl.invalstate = Estado inv\u00e1lido
-jdbcrowsetimpl.connect = N\u00e3o \u00e9 poss\u00edvel conectar JdbcRowSet (connect) a JNDI
-jdbcrowsetimpl.paramtype = N\u00e3o \u00e9 poss\u00edvel deduzir o tipo de par\u00e2metro
-jdbcrowsetimpl.matchcols = As colunas correspondentes n\u00e3o s\u00e3o iguais \u00e0s colunas definidas
-jdbcrowsetimpl.setmatchcols = Definir as colunas correspondentes antes de obt\u00ea-las
+jdbcrowsetimpl.invalstate = Estado inv\u00E1lido
+jdbcrowsetimpl.connect = N\u00E3o \u00E9 poss\u00EDvel conectar JdbcRowSet (connect) a JNDI
+jdbcrowsetimpl.paramtype = N\u00E3o \u00E9 poss\u00EDvel deduzir o tipo de par\u00E2metro
+jdbcrowsetimpl.matchcols = As Colunas Correspondentes n\u00E3o s\u00E3o iguais \u00E0s colunas definidas
+jdbcrowsetimpl.setmatchcols = Definir as colunas correspondentes antes de obt\u00EA-las
 jdbcrowsetimpl.matchcols1 = As colunas correspondentes devem ser maior do que 0
-jdbcrowsetimpl.matchcols2 = As colunas correspondentes n\u00e3o podem ser sequ\u00eancias vazias ou nulas
-jdbcrowsetimpl.unsetmatch = As colunas n\u00e3o definidas n\u00e3o s\u00e3o iguais \u00e0s colunas definidas
+jdbcrowsetimpl.matchcols2 = As colunas correspondentes n\u00E3o podem ser strings vazias ou nulas
+jdbcrowsetimpl.unsetmatch = As colunas n\u00E3o definidas n\u00E3o s\u00E3o iguais \u00E0s colunas definidas
 jdbcrowsetimpl.usecolname = Usar o nome da coluna como argumento para unsetMatchColumn
 jdbcrowsetimpl.usecolid = Usar o ID da coluna como argumento para unsetMatchColumn
-jdbcrowsetimpl.resnotupd = ResultSet n\u00e3o \u00e9 atualiz\u00e1vel
-jdbcrowsetimpl.opnotysupp = Opera\u00e7\u00e3o ainda n\u00e3o suportada
-jdbcrowsetimpl.featnotsupp = Recurso n\u00e3o suportado
+jdbcrowsetimpl.resnotupd = ResultSet n\u00E3o \u00E9 atualiz\u00E1vel
+jdbcrowsetimpl.opnotysupp = Opera\u00E7\u00E3o ainda n\u00E3o suportada
+jdbcrowsetimpl.featnotsupp = Recurso n\u00E3o suportado
 
 #CachedRowSetReader exceptions
-crsreader.connect = (JNDI) N\u00e3o \u00e9 poss\u00edvel conectar
-crsreader.paramtype = N\u00e3o \u00e9 poss\u00edvel deduzir o tipo de par\u00e2metro
-crsreader.connecterr = Erro interno no RowSetReader: sem conex\u00e3o ou comando
-crsreader.datedetected = Data detectada
-crsreader.caldetected = Calend\u00e1rio detectado
+crsreader.connect = (JNDI) N\u00E3o \u00E9 poss\u00EDvel conectar
+crsreader.paramtype = N\u00E3o \u00E9 poss\u00EDvel deduzir o tipo de par\u00E2metro
+crsreader.connecterr = Erro Interno no RowSetReader: sem conex\u00E3o ou comando
+crsreader.datedetected = Data Detectada
+crsreader.caldetected = Calend\u00E1rio Detectado
 
 #CachedRowSetWriter exceptions
-crswriter.connect = N\u00e3o \u00e9 poss\u00edvel obter a conex\u00e3o
-crswriter.tname = writeData n\u00e3o pode determinar o nome da tabela
+crswriter.connect = N\u00E3o \u00E9 poss\u00EDvel obter a conex\u00E3o
+crswriter.tname = writeData n\u00E3o pode determinar o nome da tabela
 crswriter.params1 = Valor de params1 : {0} 
 crswriter.params2 = Valor de params2 : {0} 
-crswriter.conflictsno =  conflitos durante a sincroniza\u00e7\u00e3o 
+crswriter.conflictsno =  conflitos durante a sincroniza\u00E7\u00E3o 
 
 #InsertRow exceptions
 insertrow.novalue = Nenhum valor foi inserido
 
 #SyncResolverImpl exceptions
-syncrsimpl.indexval = Valor de \u00edndice fora do intervalo  
-syncrsimpl.noconflict = Est\u00e1 coluna n\u00e3o est\u00e1 em conflito
-syncrsimpl.syncnotpos = A sincroniza\u00e7\u00e3o n\u00e3o \u00e9 poss\u00edvel
-syncrsimpl.valtores = O valor a ser decidido pode estar no banco de dados ou no conjunto de linhas armazenado em cache
+syncrsimpl.indexval = Valor de \u00EDndice fora da faixa  
+syncrsimpl.noconflict = Est\u00E1 coluna n\u00E3o est\u00E1 em conflito
+syncrsimpl.syncnotpos = A sincroniza\u00E7\u00E3o n\u00E3o \u00E9 poss\u00EDvel
+syncrsimpl.valtores = O valor a ser decidido pode estar no banco de dados ou no conjunto de linhas armazenado no cache
 
 #WebRowSetXmlReader exception
-wrsxmlreader.invalidcp = Fim de RowSet atingido. Posi\u00e7\u00e3o inv\u00e1lida do cursor
+wrsxmlreader.invalidcp = Fim de RowSet atingido. Posi\u00E7\u00E3o inv\u00E1lida do cursor
 wrsxmlreader.readxml = readXML : {0}
-wrsxmlreader.parseerr = ** Analisando erro : {0} , linha : {1} , uri : {2}
+wrsxmlreader.parseerr = ** Erro de Parse : {0} , linha : {1} , uri : {2}
 
 #WebRowSetXmlWriter exceptions
 wrsxmlwriter.ioex = IOException : {0}
 wrsxmlwriter.sqlex = SQLException : {0}
-wrsxmlwriter.failedwrite = Falha ao gravar valor
-wsrxmlwriter.notproper = N\u00e3o \u00e9 um tipo adequado
+wrsxmlwriter.failedwrite = Falha ao gravar o valor
+wsrxmlwriter.notproper = N\u00E3o \u00E9 um tipo adequado
 
 #XmlReaderContentHandler exceptions
-xmlrch.errmap = Erro ao definir mapa : {0}
+xmlrch.errmap = Erro ao definir o Mapa : {0}
 xmlrch.errmetadata = Erro ao definir metadados : {0}
 xmlrch.errinsertval = Erro ao inserir valores : {0}
-xmlrch.errconstr = Erro ao construir linha : {0}
-xmlrch.errdel = Erro ao excluir linha : {0}
-xmlrch.errinsert = Erro ao construir linha de inser\u00e7\u00e3o : {0}
-xmlrch.errinsdel = Erro ao construir linha insdel : {0}
-xmlrch.errupdate = Erro ao construir linha de atualiza\u00e7\u00e3o : {0}
-xmlrch.errupdrow = Erro ao atualizar linha : {0}
+xmlrch.errconstr = Erro ao construir a linha : {0}
+xmlrch.errdel = Erro ao deletar a linha : {0}
+xmlrch.errinsert = Erro ao construir a linha de inser\u00E7\u00E3o : {0}
+xmlrch.errinsdel = Erro ao construir a linha insdel : {0}
+xmlrch.errupdate = Erro ao construir a linha de atualiza\u00E7\u00E3o : {0}
+xmlrch.errupdrow = Erro ao atualizar a linha : {0}
 xmlrch.chars = caracteres :
-xmlrch.badvalue = Valor incorreto ; propriedade n\u00e3o anul\u00e1vel
-xmlrch.badvalue1 = Valor incorreto ; metadado n\u00e3o anul\u00e1vel
-xmlrch.warning =  ** Aviso : {0} , linha : {1} , uri : {2}
+xmlrch.badvalue = Valor incorreto ; propriedade n\u00E3o anul\u00E1vel
+xmlrch.badvalue1 = Valor incorreto ; metadado n\u00E3o anul\u00E1vel
+xmlrch.warning =  ** Advert\u00EAncia : {0} , linha : {1} , uri : {2}
 
 #RIOptimisticProvider Exceptions
-riop.locking = O bloqueio de classifica\u00e7\u00e3o n\u00e3o \u00e9 suportado
+riop.locking = O bloqueio de classifica\u00E7\u00E3o n\u00E3o \u00E9 suportado
 
 #RIXMLProvider exceptions
-rixml.unsupp = N\u00e3o suportado com RIXMLProvider
+rixml.unsupp = N\u00E3o suportado com RIXMLProvider
--- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_sv.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_sv.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -25,144 +25,146 @@
 
 # CacheRowSetImpl exceptions
 cachedrowsetimpl.populate = Ifyllningsmetoden fick ett ogiltigt ResultSet-objekt
-cachedrowsetimpl.invalidp = En ogiltig best\u00e4ndig leverant\u00f6r genererades
-cachedrowsetimpl.nullhash = Det g\u00e5r inte att skapa instansen CachedRowSetImpl. Tom hashtabell skickades till konstrukt\u00f6r
-cachedrowsetimpl.invalidop = En ogiltig \u00e5tg\u00e4rd utf\u00f6rdes i infogningsraden
-cachedrowsetimpl.accfailed = acceptChanges misslyckades
-cachedrowsetimpl.invalidcp = Mark\u00f6rpositionen \u00e4r ogiltig
-cachedrowsetimpl.illegalop = En ogiltig \u00e5tg\u00e4rd utf\u00f6rdes p\u00e5 en icke infogad rad
-cachedrowsetimpl.clonefail = Kloningen misslyckades: {0}
-cachedrowsetimpl.invalidcol = Kolumnindexet \u00e4r ogiltigt
-cachedrowsetimpl.invalcolnm = Kolumnnamnet \u00e4r ogiltigt
-cachedrowsetimpl.boolfail = getBoolen misslyckades f\u00f6r v\u00e4rdet ({0}) i kolumnen {1}
-cachedrowsetimpl.bytefail = getByte misslyckades f\u00f6r v\u00e4rdet ({0}) i kolumnen {1}
-cachedrowsetimpl.shortfail = getShort misslyckades f\u00f6r v\u00e4rdet ({0}) i kolumnen {1}
-cachedrowsetimpl.intfail = getInt misslyckades f\u00f6r v\u00e4rdet ({0}) i kolumnen {1}
-cachedrowsetimpl.longfail = getLong misslyckades f\u00f6r v\u00e4rdet ({0}) i kolumnen {1}
-cachedrowsetimpl.floatfail = getFloat misslyckades f\u00f6r v\u00e4rdet ({0}) i kolumnen {1}
-cachedrowsetimpl.doublefail = getDouble misslyckades f\u00f6r v\u00e4rdet ({0}) i kolumnen {1}
+cachedrowsetimpl.invalidp = En ogiltig best\u00E4ndig leverant\u00F6r genererades
+cachedrowsetimpl.nullhash = Kan inte instansiera CachedRowSetImpl. Null-hashtabell skickades till konstruktor
+cachedrowsetimpl.invalidop = En ogiltig \u00E5tg\u00E4rd utf\u00F6rdes p\u00E5 infogad rad
+cachedrowsetimpl.accfailed = acceptChanges utf\u00F6rdes inte
+cachedrowsetimpl.invalidcp = Mark\u00F6rpositionen \u00E4r ogiltig
+cachedrowsetimpl.illegalop = En otill\u00E5ten \u00E5tg\u00E4rd utf\u00F6rdes p\u00E5 en icke infogad rad
+cachedrowsetimpl.clonefail = Kloningen utf\u00F6rdes inte: {0}
+cachedrowsetimpl.invalidcol = Kolumnindexet \u00E4r ogiltigt
+cachedrowsetimpl.invalcolnm = Kolumnnamnet \u00E4r ogiltigt
+cachedrowsetimpl.boolfail = getBoolen utf\u00F6rdes inte f\u00F6r v\u00E4rdet ({0}) i kolumnen {1}
+cachedrowsetimpl.bytefail = getByte utf\u00F6rdes inte f\u00F6r v\u00E4rdet ({0}) i kolumnen {1}
+cachedrowsetimpl.shortfail = getShort utf\u00F6rdes inte f\u00F6r v\u00E4rdet ({0}) i kolumnen {1}
+cachedrowsetimpl.intfail = getInt utf\u00F6rdes inte f\u00F6r v\u00E4rdet ({0}) i kolumnen {1}
+cachedrowsetimpl.longfail = getLong utf\u00F6rdes inte f\u00F6r v\u00E4rdet ({0}) i kolumnen {1}
+cachedrowsetimpl.floatfail = getFloat utf\u00F6rdes inte f\u00F6r v\u00E4rdet ({0}) i kolumnen {1}
+cachedrowsetimpl.doublefail = getDouble utf\u00F6rdes inte f\u00F6r v\u00E4rdet ({0}) i kolumnen {1}
 cachedrowsetimpl.dtypemismt = Inkompatibel datatyp 
-cachedrowsetimpl.datefail = getDate misslyckades f\u00f6r v\u00e4rdet ({0}) i kolumnen {1}, ingen konvertering tillg\u00e4nglig
-cachedrowsetimpl.timefail = getTime misslyckades f\u00f6r v\u00e4rdet ({0}) i kolumnen {1}, ingen konvertering tillg\u00e4nglig
-cachedrowsetimpl.posupdate = Det finns inte st\u00f6d f\u00f6r positionerad uppdatering
-cachedrowsetimpl.unableins = Det g\u00e5r inte att skapa {0}
-cachedrowsetimpl.beforefirst = beforeFirst: Ogiltig mark\u00f6r\u00e5tg\u00e4rd
-cachedrowsetimpl.first = First: Ogiltig mark\u00f6r\u00e5tg\u00e4rd
+cachedrowsetimpl.datefail = getDate utf\u00F6rdes inte f\u00F6r v\u00E4rdet ({0}) i kolumnen {1}, ingen konvertering tillg\u00E4nglig
+cachedrowsetimpl.timefail = getTime utf\u00F6rdes inte f\u00F6r v\u00E4rdet ({0}) i kolumnen {1}, ingen konvertering tillg\u00E4nglig
+cachedrowsetimpl.posupdate = Det finns inte st\u00F6d f\u00F6r positionerad uppdatering
+cachedrowsetimpl.unableins = Kan inte instansiera {0}
+cachedrowsetimpl.beforefirst = beforeFirst: Ogiltig mark\u00F6r\u00E5tg\u00E4rd
+cachedrowsetimpl.first = First: Ogiltig mark\u00F6r\u00E5tg\u00E4rd
 cachedrowsetimpl.last = last: TYPE_FORWARD_ONLY
-cachedrowsetimpl.absolute = absolute: Mark\u00f6rpositionen \u00e4r ogiltig
-cachedrowsetimpl.relative = relative: Mark\u00f6rpositionen \u00e4r ogiltig
-cachedrowsetimpl.asciistream = det gick inte att l\u00e4sa ASCII-str\u00f6mmen
-cachedrowsetimpl.binstream = det gick inte l\u00e4sa den bin\u00e4ra str\u00f6mmen
-cachedrowsetimpl.failedins = Fel vid infogningsrad
-cachedrowsetimpl.updateins = updateRow anropade vid infogningsrad
+cachedrowsetimpl.absolute = absolute: Mark\u00F6rpositionen \u00E4r ogiltig
+cachedrowsetimpl.relative = relative: Mark\u00F6rpositionen \u00E4r ogiltig
+cachedrowsetimpl.asciistream = kunde inte l\u00E4sa ASCII-str\u00F6mmen
+cachedrowsetimpl.binstream = kunde inte l\u00E4sa den bin\u00E4ra str\u00F6mmen
+cachedrowsetimpl.failedins = Kunde inte infoga rad
+cachedrowsetimpl.updateins = updateRow anropades fr\u00E5n infogad rad
 cachedrowsetimpl.movetoins = moveToInsertRow : CONCUR_READ_ONLY
 cachedrowsetimpl.movetoins1 = moveToInsertRow: inga metadata
 cachedrowsetimpl.movetoins2 = moveToInsertRow: ogiltigt antal kolumner
-cachedrowsetimpl.tablename = Tabellnamnet kan inte vara tomt
+cachedrowsetimpl.tablename = Tabellnamnet kan inte vara null
 cachedrowsetimpl.keycols = Ogiltiga nyckelkolumner
-cachedrowsetimpl.opnotsupp = Databasen har inte st\u00f6d f\u00f6r denna \u00e5tg\u00e4rd
-cachedrowsetimpl.matchcols = Matchningskolumnerna \u00e4r inte samma som de som st\u00e4llts in
-cachedrowsetimpl.setmatchcols = St\u00e4ll in matchningskolumnerna innan du h\u00e4mtar dem
-cachedrowsetimpl.matchcols1 = Matchningskolumnerna m\u00e5ste vara st\u00f6rre \u00e4n 0
-cachedrowsetimpl.matchcols2 = Matchningskolumnerna m\u00e5ste vara tomma eller en nollstr\u00e4ng
-cachedrowsetimpl.unsetmatch = Kolumnerna som \u00e5terst\u00e4lls \u00e4r inte samma som de som st\u00e4llts in
-cachedrowsetimpl.unsetmatch1 = Anv\u00e4nd kolumnnamn som argument f\u00f6r unsetMatchColumn
-cachedrowsetimpl.unsetmatch2 = Anv\u00e4nd kolumnn-id som argument f\u00f6r unsetMatchColumn
-cachedrowsetimpl.numrows = Antalet rader understiger noll eller \u00e4r mindre \u00e4n h\u00e4mtningsstorleken
-cachedrowsetimpl.startpos = Startpositionen f\u00e5r inte vara negativ
+cachedrowsetimpl.invalidcol = Kolumnindexet \u00E4r ogiltigt
+cachedrowsetimpl.opnotsupp = Databasen har inte st\u00F6d f\u00F6r denna \u00E5tg\u00E4rd
+cachedrowsetimpl.matchcols = Matchningskolumnerna \u00E4r inte samma som de som st\u00E4llts in
+cachedrowsetimpl.setmatchcols = St\u00E4ll in matchningskolumnerna innan du h\u00E4mtar dem
+cachedrowsetimpl.matchcols1 = Matchningskolumnerna m\u00E5ste vara st\u00F6rre \u00E4n 0
+cachedrowsetimpl.matchcols2 = Matchningskolumnerna m\u00E5ste vara tomma eller en null-str\u00E4ng
+cachedrowsetimpl.unsetmatch = Kolumnerna som \u00E5terst\u00E4lls \u00E4r inte samma som de som st\u00E4llts in
+cachedrowsetimpl.unsetmatch1 = Anv\u00E4nd kolumnnamn som argument f\u00F6r unsetMatchColumn
+cachedrowsetimpl.unsetmatch2 = Anv\u00E4nd kolumn-id som argument f\u00F6r unsetMatchColumn
+cachedrowsetimpl.numrows = Antalet rader understiger noll eller \u00E4r mindre \u00E4n h\u00E4mtningsstorleken
+cachedrowsetimpl.startpos = Startpositionen f\u00E5r inte vara negativ
 cachedrowsetimpl.nextpage = Fyll i data innan anrop 
-cachedrowsetimpl.pagesize = Sidstorleken f\u00e5r inte understiga noll
-cachedrowsetimpl.pagesize1 = Sidstorleken f\u00e5r inte \u00f6verstiga maxRows
-cachedrowsetimpl.fwdonly = ResultSet kan endast g\u00e5 fram\u00e5t
+cachedrowsetimpl.pagesize = Sidstorleken f\u00E5r inte understiga noll
+cachedrowsetimpl.pagesize1 = Sidstorleken f\u00E5r inte \u00F6verstiga maxRows
+cachedrowsetimpl.fwdonly = ResultSet kan endast g\u00E5 fram\u00E5t
 cachedrowsetimpl.type = Typ: {0}
-cachedrowsetimpl.opnotysupp = Det finns \u00e4nnu inget st\u00f6d f\u00f6r denna \u00e5tg\u00e4rd
-cachedrowsetimpl.featnotsupp = Det finns inget st\u00f6d f\u00f6r denna funktion
+cachedrowsetimpl.opnotysupp = Det finns \u00E4nnu inget st\u00F6d f\u00F6r denna \u00E5tg\u00E4rd
+cachedrowsetimpl.featnotsupp = Det finns inget st\u00F6d f\u00F6r denna funktion
 
 # WebRowSetImpl exceptions
-webrowsetimpl.nullhash = Det g\u00e5r inte att skapa instansen WebRowSetImpl. Tom hashtabell skickades till konstrukt\u00f6r.
-webrowsetimpl.invalidwr = Ogiltig f\u00f6rfattare
-webrowsetimpl.invalidrd = Ogiltig l\u00e4sare
+webrowsetimpl.nullhash = Kan inte instansiera WebRowSetImpl. Null-hashtabell skickades till konstruktor.
+webrowsetimpl.invalidwr = Ogiltig f\u00F6rfattare
+webrowsetimpl.invalidrd = Ogiltig l\u00E4sare
 
 #FilteredRowSetImpl exceptions
-filteredrowsetimpl.relative = relative: Ogiltig mark\u00f6r\u00e5tg\u00e4rd 
-filteredrowsetimpl.absolute = absolute: Ogiltig mark\u00f6r\u00e5tg\u00e4rd
-filteredrowsetimpl.notallowed = Detta v\u00e4rde kommer att filtreras bort
+filteredrowsetimpl.relative = relative: Ogiltig mark\u00F6r\u00E5tg\u00E4rd 
+filteredrowsetimpl.absolute = absolute: Ogiltig mark\u00F6r\u00E5tg\u00E4rd
+filteredrowsetimpl.notallowed = Detta v\u00E4rde kommer att filtreras bort
 
 #JoinRowSetImpl exceptions
-joinrowsetimpl.notinstance = Detta \u00e4r inte en instans av rowset
-joinrowsetimpl.matchnotset = Matchningskolumnen \u00e4r inte inst\u00e4lld p\u00e5 koppling
-joinrowsetimpl.numnotequal = Antalet element i RowSet \u00e4r inte lika med matchningskolumnens
-joinrowsetimpl.notdefined = Detta \u00e4r inte n\u00e5gon definierad kopplingstyp
-joinrowsetimpl.notsupported = Det finns inget st\u00f6d f\u00f6r denna kopplingstyp
-joinrowsetimpl.initerror = Initieringsfel f\u00f6r JoinRowSet
-joinrowsetimpl.genericerr = Allm\u00e4nt initieringsfel f\u00f6r JoinRowSet
-joinrowsetimpl.emptyrowset = Tomma radupps\u00e4ttningar kan inte l\u00e4ggas till i denna JoinRowSet
+joinrowsetimpl.notinstance = Detta \u00E4r inte en instans av radupps\u00E4ttning
+joinrowsetimpl.matchnotset = Matchningskolumnen \u00E4r inte inst\u00E4lld p\u00E5 koppling
+joinrowsetimpl.numnotequal = Antal objekt i radupps\u00E4ttning st\u00E4mmer inte med matchningskolumnens
+joinrowsetimpl.notdefined = Detta \u00E4r inte n\u00E5gon definierad kopplingstyp
+joinrowsetimpl.notsupported = Det finns inget st\u00F6d f\u00F6r denna kopplingstyp
+joinrowsetimpl.initerror = Initieringsfel f\u00F6r JoinRowSet
+joinrowsetimpl.genericerr = Allm\u00E4nt initieringsfel f\u00F6r JoinRowSet
+joinrowsetimpl.emptyrowset = Tomma radupps\u00E4ttningar kan inte l\u00E4ggas till i denna JoinRowSet
 
 #JdbcRowSetImpl exceptions
 jdbcrowsetimpl.invalstate = Ogiltig status
 jdbcrowsetimpl.connect = JdbcRowSet (anslut) JNDI kan inte anslutas
-jdbcrowsetimpl.paramtype = Det g\u00e5r inte att fastst\u00e4lla parametertypen
-jdbcrowsetimpl.matchcols = Matchningskolumnerna \u00e4r inte samma som de som st\u00e4llts in
-jdbcrowsetimpl.setmatchcols = St\u00e4ll in matchningskolumnerna innan du h\u00e4mtar dem
-jdbcrowsetimpl.matchcols1 = Matchningskolumnerna m\u00e5ste vara st\u00f6rre \u00e4n 0
-jdbcrowsetimpl.matchcols2 = Matchningskolumnerna kan inte vara en nollstr\u00e4ng eller tomma
-jdbcrowsetimpl.unsetmatch = Kolumnerna som \u00e5terst\u00e4lls \u00e4r inte samma som de som st\u00e4llts in
-jdbcrowsetimpl.usecolname = Anv\u00e4nd kolumnnamn som argument f\u00f6r unsetMatchColumn
-jdbcrowsetimpl.usecolid = Anv\u00e4nd kolumnn-id som argument f\u00f6r unsetMatchColumn
-jdbcrowsetimpl.resnotupd = ResultSet \u00e4r inte uppdateringsbart
-jdbcrowsetimpl.opnotysupp = Det finns \u00e4nnu inget st\u00f6d f\u00f6r denna \u00e5tg\u00e4rd
-jdbcrowsetimpl.featnotsupp = Det finns inget st\u00f6d f\u00f6r denna funktion
+jdbcrowsetimpl.paramtype = Kan inte h\u00E4rleda parametertypen
+jdbcrowsetimpl.matchcols = Matchningskolumnerna \u00E4r inte samma som de som st\u00E4llts in
+jdbcrowsetimpl.setmatchcols = St\u00E4ll in matchningskolumnerna innan du h\u00E4mtar dem
+jdbcrowsetimpl.matchcols1 = Matchningskolumnerna m\u00E5ste vara st\u00F6rre \u00E4n 0
+jdbcrowsetimpl.matchcols2 = Matchningskolumnerna kan inte vara en null-str\u00E4ng eller tomma
+jdbcrowsetimpl.unsetmatch = Kolumnerna som \u00E5terst\u00E4lls \u00E4r inte samma som de som st\u00E4llts in
+jdbcrowsetimpl.usecolname = Anv\u00E4nd kolumnnamn som argument f\u00F6r unsetMatchColumn
+jdbcrowsetimpl.usecolid = Anv\u00E4nd kolumn-id som argument f\u00F6r unsetMatchColumn
+jdbcrowsetimpl.resnotupd = ResultSet \u00E4r inte uppdateringsbart
+jdbcrowsetimpl.opnotysupp = Det finns \u00E4nnu inget st\u00F6d f\u00F6r denna \u00E5tg\u00E4rd
+jdbcrowsetimpl.featnotsupp = Det finns inget st\u00F6d f\u00F6r denna funktion
 
 #CachedRowSetReader exceptions
 crsreader.connect = (JNDI) kan inte anslutas
-crsreader.paramtype = Det g\u00e5r inte att fastst\u00e4lla parametertypen
+crsreader.paramtype = Kan inte h\u00E4rleda parametertypen
 crsreader.connecterr = Internt fel i RowSetReader: ingen anslutning eller inget kommando
 crsreader.datedetected = Ett datum har identifierats
 crsreader.caldetected = En kalender har identifierats
 
 #CachedRowSetWriter exceptions
-crswriter.connect = Det g\u00e5r inte att uppr\u00e4tta n\u00e5gon anslutning
-crswriter.tname = writeData kan inte fastst\u00e4lla tabellnamnet
-crswriter.params1 = Parameterv\u00e4rde1: {0} 
-crswriter.params2 = Parameterv\u00e4rde2: {0} 
-crswriter.conflictsno =  konflikter under synkronisering 
+crswriter.connect = Kan inte uppr\u00E4tta n\u00E5gon anslutning
+crswriter.tname = writeData kan inte fastst\u00E4lla tabellnamnet
+crswriter.params1 = Parameterv\u00E4rde1: {0} 
+crswriter.params2 = Parameterv\u00E4rde2: {0} 
+crswriter.conflictsno =  orsakar konflikt vid synkronisering 
 
 #InsertRow exceptions
-insertrow.novalue = Inget v\u00e4rde har infogats
+insertrow.novalue = Inget v\u00E4rde har infogats
 
 #SyncResolverImpl exceptions
-syncrsimpl.indexval = Indexv\u00e4rdet ligger utanf\u00f6r intervallet  
-syncrsimpl.noconflict = Denna kolumn st\u00e5r inte i konflikt
-syncrsimpl.syncnotpos = Synkronisering \u00e4r inte m\u00f6jlig
-syncrsimpl.valtores = V\u00e4rdet som ska analyseras kan antingen finnas i databasen eller i cachedrowset
+syncrsimpl.indexval = Indexv\u00E4rdet ligger utanf\u00F6r intervallet  
+syncrsimpl.noconflict = Kolumnen orsakar ingen konflikt
+syncrsimpl.syncnotpos = Synkronisering \u00E4r inte m\u00F6jlig
+syncrsimpl.valtores = V\u00E4rdet som ska fastst\u00E4llas kan antingen finnas i databasen eller i cachedrowset
 
 #WebRowSetXmlReader exception
-wrsxmlreader.invalidcp = Slutet p\u00e5 RowSet har n\u00e5tts. Mark\u00f6rpositionen \u00e4r ogiltig.
+wrsxmlreader.invalidcp = Slutet p\u00E5 RowSet har n\u00E5tts. Mark\u00F6rpositionen \u00E4r ogiltig.
 wrsxmlreader.readxml = readXML: {0}
 wrsxmlreader.parseerr = ** Tolkningsfel: {0}, rad: {1}, URI: {2}
 
 #WebRowSetXmlWriter exceptions
 wrsxmlwriter.ioex = IOException: {0}
 wrsxmlwriter.sqlex = SQLException: {0}
-wrsxmlwriter.failedwrite = Det gick inte att skriva v\u00e4rdet
+wrsxmlwriter.failedwrite = Kunde inte skriva v\u00E4rdet
 wsrxmlwriter.notproper = Ingen riktig typ
 
 #XmlReaderContentHandler exceptions
-xmlrch.errmap = Ett fel uppstod vid inst\u00e4llningen av f\u00f6ljande bild: {0}
-xmlrch.errmetadata = Ett fel uppstod vid inst\u00e4llningen av f\u00f6ljande metadata: {0}
-xmlrch.errinsertval = Ett fel uppstod n\u00e4r f\u00f6ljande v\u00e4rden skulle infogas: {0}
-xmlrch.errconstr = Ett fel uppstod n\u00e4r f\u00f6ljande rad skulle skapas: {0}
-xmlrch.errdel = Ett fel uppstod n\u00e4r f\u00f6ljande rad skulle raderas: {0}
-xmlrch.errinsdel = Ett fel uppstod n\u00e4r raden insdel skulle skapas: {0}
-xmlrch.errupdate = Ett fel uppstod n\u00e4r f\u00f6ljande uppdateringsrad skulle skapas: {0}
-xmlrch.errupdrow = Ett fel uppstod n\u00e4r f\u00f6ljande rad skulle uppdateras: {0}
+xmlrch.errmap = Fel uppstod vid inst\u00E4llning av mappning: {0}
+xmlrch.errmetadata = Fel uppstod vid inst\u00E4llning av metadata: {0}
+xmlrch.errinsertval = Fel uppstod vid infogning av v\u00E4rden: {0}
+xmlrch.errconstr = Fel uppstod vid konstruktion av rad: {0}
+xmlrch.errdel = Fel uppstod vid borttagning av rad: {0}
+xmlrch.errinsert = Fel uppstod vid konstruktion av infogad rad: {0}
+xmlrch.errinsdel = Fel uppstod vid konstruktion av insdel-rad: {0}
+xmlrch.errupdate = Fel uppstod vid konstruktion av uppdateringsrad: {0}
+xmlrch.errupdrow = Fel uppstod vid uppdatering av rad: {0}
 xmlrch.chars = tecken:
-xmlrch.badvalue = Felaktigt v\u00e4rde; egenskapen kan inte ha ett tomt v\u00e4rde
-xmlrch.badvalue1 = Felaktigt v\u00e4rde; metadatan kan inte ha ett tomt v\u00e4rde
+xmlrch.badvalue = Felaktigt v\u00E4rde; egenskapen kan inte ha ett tomt v\u00E4rde
+xmlrch.badvalue1 = Felaktigt v\u00E4rde; metadatan kan inte ha ett tomt v\u00E4rde
 xmlrch.warning =  ** Varning! {0}, rad: {1}, URI: {2}
 
 #RIOptimisticProvider Exceptions
-riop.locking = Det finns inte st\u00f6d f\u00f6r denna l\u00e5sningsklassifikation
+riop.locking = Det finns inte st\u00F6d f\u00F6r denna l\u00E5sningsklassificering
 
 #RIXMLProvider exceptions
-rixml.unsupp = RIXMLProvider har inte st\u00f6d f\u00f6r detta
+rixml.unsupp = RIXMLProvider har inte st\u00F6d f\u00F6r detta
--- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_zh_CN.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_zh_CN.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -24,145 +24,147 @@
 #
 
 # CacheRowSetImpl exceptions
-cachedrowsetimpl.populate = \u63d0\u4f9b\u7ed9\u586b\u5145\u65b9\u6cd5\u7684 ResultSet \u5bf9\u8c61\u65e0\u6548
-cachedrowsetimpl.invalidp = \u751f\u6210\u7684\u6301\u4e45\u6027\u63d0\u4f9b\u8005\u65e0\u6548
-cachedrowsetimpl.nullhash = \u65e0\u6cd5\u5b9e\u4f8b\u5316 CachedRowSetImpl \u5b9e\u4f8b\u3002\u63d0\u4f9b\u7ed9\u6784\u9020\u51fd\u6570\u7684 Hashtable \u4e3a Null
-cachedrowsetimpl.invalidop = \u5bf9\u63d2\u5165\u884c\u6267\u884c\u7684\u64cd\u4f5c\u65e0\u6548
-cachedrowsetimpl.accfailed = acceptChanges \u5931\u8d25
-cachedrowsetimpl.invalidcp = \u5149\u6807\u4f4d\u7f6e\u65e0\u6548
-cachedrowsetimpl.illegalop = \u5bf9\u975e\u63d2\u5165\u884c\u6267\u884c\u7684\u64cd\u4f5c\u975e\u6cd5
-cachedrowsetimpl.clonefail = \u514b\u9686\u5931\u8d25: {0}
-cachedrowsetimpl.invalidcol = \u5217\u7d22\u5f15\u65e0\u6548
-cachedrowsetimpl.invalcolnm = \u5217\u540d\u65e0\u6548
-cachedrowsetimpl.boolfail = \u5bf9\u5217 {1} \u4e2d\u7684\u503c ({0}) \u6267\u884c getBoolen \u5931\u8d25
-cachedrowsetimpl.bytefail = \u5bf9\u5217 {1} \u4e2d\u7684\u503c ({0}) \u6267\u884c getByte \u5931\u8d25
-cachedrowsetimpl.shortfail = \u5bf9\u5217 {1} \u4e2d\u7684\u503c ({0}) \u6267\u884c getShort \u5931\u8d25
-cachedrowsetimpl.intfail = \u5bf9\u5217 {1} \u4e2d\u7684\u503c ({0}) \u6267\u884c getInt \u5931\u8d25
-cachedrowsetimpl.longfail = \u5bf9\u5217 {1} \u4e2d\u7684\u503c ({0}) \u6267\u884c getLong \u5931\u8d25
-cachedrowsetimpl.floatfail = \u5bf9\u5217 {1} \u4e2d\u7684\u503c ({0}) \u6267\u884c getFloat \u5931\u8d25
-cachedrowsetimpl.doublefail = \u5bf9\u5217 {1} \u4e2d\u7684\u503c ({0}) \u6267\u884c getDouble \u5931\u8d25
-cachedrowsetimpl.dtypemismt = \u6570\u636e\u7c7b\u578b\u4e0d\u5339\u914d 
-cachedrowsetimpl.datefail = \u5bf9\u5217 {1} \u4e2d\u7684\u503c ({0}) \u6267\u884c getDate \u5931\u8d25\uff0c\u65e0\u53ef\u7528\u8f6c\u6362
-cachedrowsetimpl.timefail = \u5bf9\u5217 {1} \u4e2d\u7684\u503c ({0}) \u6267\u884c getTime \u5931\u8d25\uff0c\u65e0\u53ef\u7528\u8f6c\u6362
-cachedrowsetimpl.posupdate = \u4e0d\u652f\u6301\u5b9a\u4f4d\u66f4\u65b0
-cachedrowsetimpl.unableins = \u65e0\u6cd5\u5b9e\u4f8b\u5316: {0}
-cachedrowsetimpl.beforefirst = beforeFirst: \u5149\u6807\u64cd\u4f5c\u65e0\u6548
-cachedrowsetimpl.first = First: \u5149\u6807\u64cd\u4f5c\u65e0\u6548
+cachedrowsetimpl.populate = \u63D0\u4F9B\u7ED9\u586B\u5145\u65B9\u6CD5\u7684 ResultSet \u5BF9\u8C61\u65E0\u6548
+cachedrowsetimpl.invalidp = \u751F\u6210\u7684\u6301\u4E45\u6027\u63D0\u4F9B\u65B9\u65E0\u6548
+cachedrowsetimpl.nullhash = \u65E0\u6CD5\u5B9E\u4F8B\u5316 CachedRowSetImpl \u5B9E\u4F8B\u3002\u63D0\u4F9B\u7ED9\u6784\u9020\u5668\u7684 Hashtable \u4E3A\u7A7A\u503C
+cachedrowsetimpl.invalidop = \u5BF9\u63D2\u5165\u884C\u6267\u884C\u7684\u64CD\u4F5C\u65E0\u6548
+cachedrowsetimpl.accfailed = acceptChanges \u5931\u8D25
+cachedrowsetimpl.invalidcp = \u5149\u6807\u4F4D\u7F6E\u65E0\u6548
+cachedrowsetimpl.illegalop = \u5BF9\u975E\u63D2\u5165\u884C\u6267\u884C\u7684\u64CD\u4F5C\u975E\u6CD5
+cachedrowsetimpl.clonefail = \u514B\u9686\u5931\u8D25: {0}
+cachedrowsetimpl.invalidcol = \u5217\u7D22\u5F15\u65E0\u6548
+cachedrowsetimpl.invalcolnm = \u5217\u540D\u65E0\u6548
+cachedrowsetimpl.boolfail = \u5BF9\u5217 {1} \u4E2D\u7684\u503C ({0}) \u6267\u884C getBoolen \u5931\u8D25
+cachedrowsetimpl.bytefail = \u5BF9\u5217 {1} \u4E2D\u7684\u503C ({0}) \u6267\u884C getByte \u5931\u8D25
+cachedrowsetimpl.shortfail = \u5BF9\u5217 {1} \u4E2D\u7684\u503C ({0}) \u6267\u884C getShort \u5931\u8D25
+cachedrowsetimpl.intfail = \u5BF9\u5217 {1} \u4E2D\u7684\u503C ({0}) \u6267\u884C getInt \u5931\u8D25
+cachedrowsetimpl.longfail = \u5BF9\u5217 {1} \u4E2D\u7684\u503C ({0}) \u6267\u884C getLong \u5931\u8D25
+cachedrowsetimpl.floatfail = \u5BF9\u5217 {1} \u4E2D\u7684\u503C ({0}) \u6267\u884C getFloat \u5931\u8D25
+cachedrowsetimpl.doublefail = \u5BF9\u5217 {1} \u4E2D\u7684\u503C ({0}) \u6267\u884C getDouble \u5931\u8D25
+cachedrowsetimpl.dtypemismt = \u6570\u636E\u7C7B\u578B\u4E0D\u5339\u914D 
+cachedrowsetimpl.datefail = \u5BF9\u5217 {1} \u4E2D\u7684\u503C ({0}) \u6267\u884C getDate \u5931\u8D25, \u65E0\u53EF\u7528\u8F6C\u6362
+cachedrowsetimpl.timefail = \u5BF9\u5217 {1} \u4E2D\u7684\u503C ({0}) \u6267\u884C getTime \u5931\u8D25, \u65E0\u53EF\u7528\u8F6C\u6362
+cachedrowsetimpl.posupdate = \u4E0D\u652F\u6301\u5B9A\u4F4D\u66F4\u65B0
+cachedrowsetimpl.unableins = \u65E0\u6CD5\u5B9E\u4F8B\u5316: {0}
+cachedrowsetimpl.beforefirst = beforeFirst: \u5149\u6807\u64CD\u4F5C\u65E0\u6548
+cachedrowsetimpl.first = First: \u5149\u6807\u64CD\u4F5C\u65E0\u6548
 cachedrowsetimpl.last = last: TYPE_FORWARD_ONLY
-cachedrowsetimpl.absolute = absolute: \u5149\u6807\u4f4d\u7f6e\u65e0\u6548
-cachedrowsetimpl.relative = relative: \u5149\u6807\u4f4d\u7f6e\u65e0\u6548
-cachedrowsetimpl.asciistream = \u8bfb\u53d6 ASCII \u6d41\u5931\u8d25
-cachedrowsetimpl.binstream = \u8bfb\u53d6\u4e8c\u8fdb\u5236\u6d41\u5931\u8d25
-cachedrowsetimpl.failedins = \u5bf9\u63d2\u5165\u884c\u6267\u884c\u64cd\u4f5c\u5931\u8d25
-cachedrowsetimpl.updateins = \u4e3a\u63d2\u5165\u884c\u8c03\u7528 updateRow
+cachedrowsetimpl.absolute = absolute: \u5149\u6807\u4F4D\u7F6E\u65E0\u6548
+cachedrowsetimpl.relative = relative: \u5149\u6807\u4F4D\u7F6E\u65E0\u6548
+cachedrowsetimpl.asciistream = \u672A\u80FD\u8BFB\u53D6 ASCII \u6D41
+cachedrowsetimpl.binstream = \u672A\u80FD\u8BFB\u53D6\u4E8C\u8FDB\u5236\u6D41
+cachedrowsetimpl.failedins = \u5BF9\u63D2\u5165\u884C\u6267\u884C\u64CD\u4F5C\u5931\u8D25
+cachedrowsetimpl.updateins = \u4E3A\u63D2\u5165\u884C\u8C03\u7528 updateRow
 cachedrowsetimpl.movetoins = moveToInsertRow: CONCUR_READ_ONLY
-cachedrowsetimpl.movetoins1 = moveToInsertRow: \u65e0\u5143\u6570\u636e
-cachedrowsetimpl.movetoins2 = moveToInsertRow: \u5217\u6570\u65e0\u6548
-cachedrowsetimpl.tablename = \u8868\u540d\u4e0d\u80fd\u4e3a Null
-cachedrowsetimpl.keycols = \u952e\u5217\u65e0\u6548
-cachedrowsetimpl.opnotsupp = \u64cd\u4f5c\u4e0d\u53d7\u6570\u636e\u5e93\u652f\u6301
-cachedrowsetimpl.matchcols = \u5339\u914d\u5217\u4e0e\u8bbe\u7f6e\u7684\u90a3\u4e9b\u5339\u914d\u5217\u4e0d\u540c
-cachedrowsetimpl.setmatchcols = \u5728\u83b7\u53d6\u5339\u914d\u5217\u4e4b\u524d\u5148\u8bbe\u7f6e\u5339\u914d\u5217
-cachedrowsetimpl.matchcols1 = \u5339\u914d\u5217\u6570\u5e94\u5f53\u5927\u4e8e 0
-cachedrowsetimpl.matchcols2 = \u5339\u914d\u5217\u6570\u5e94\u5f53\u4e3a\u7a7a\u6216 Null \u5b57\u7b26\u4e32
-cachedrowsetimpl.unsetmatch = \u8981\u590d\u539f\u7684\u5217\u4e0e\u8bbe\u7f6e\u7684\u4e0d\u540c
-cachedrowsetimpl.unsetmatch1 = \u4f7f\u7528\u5217\u540d\u4f5c\u4e3a unsetMatchColumn \u7684\u53c2\u6570
-cachedrowsetimpl.unsetmatch2 = \u4f7f\u7528\u5217 ID \u4f5c\u4e3a unsetMatchColumn \u7684\u53c2\u6570
-cachedrowsetimpl.numrows = \u884c\u6570\u5c0f\u4e8e\u96f6\u6216\u5c0f\u4e8e\u8981\u63d0\u53d6\u7684\u884c\u6570
-cachedrowsetimpl.startpos = \u8d77\u59cb\u4f4d\u7f6e\u4e0d\u80fd\u4e3a\u8d1f\u6570
-cachedrowsetimpl.nextpage = \u5728\u8c03\u7528\u4e4b\u524d\u5148\u586b\u5145\u6570\u636e 
-cachedrowsetimpl.pagesize = \u9875\u9762\u5927\u5c0f\u4e0d\u80fd\u5c0f\u4e8e\u96f6
-cachedrowsetimpl.pagesize1 = \u9875\u9762\u5927\u5c0f\u4e0d\u80fd\u5927\u4e8e maxRows
-cachedrowsetimpl.fwdonly = ResultSet \u7684\u7c7b\u578b\u4e3a\u4ec5\u5411\u524d\u7c7b\u578b
-cachedrowsetimpl.type = \u7c7b\u578b\u4e3a: {0}
-cachedrowsetimpl.opnotysupp = \u5c1a\u4e0d\u652f\u6301\u7684\u64cd\u4f5c
-cachedrowsetimpl.featnotsupp = \u5c1a\u4e0d\u652f\u6301\u7684\u529f\u80fd
+cachedrowsetimpl.movetoins1 = moveToInsertRow: \u65E0\u5143\u6570\u636E
+cachedrowsetimpl.movetoins2 = moveToInsertRow: \u5217\u6570\u65E0\u6548
+cachedrowsetimpl.tablename = \u8868\u540D\u4E0D\u80FD\u4E3A\u7A7A\u503C
+cachedrowsetimpl.keycols = \u5173\u952E\u5B57\u5217\u65E0\u6548
+cachedrowsetimpl.invalidcol = \u5217\u7D22\u5F15\u65E0\u6548
+cachedrowsetimpl.opnotsupp = \u64CD\u4F5C\u4E0D\u53D7\u6570\u636E\u5E93\u652F\u6301
+cachedrowsetimpl.matchcols = \u5339\u914D\u5217\u4E0E\u8BBE\u7F6E\u7684\u90A3\u4E9B\u5339\u914D\u5217\u4E0D\u540C
+cachedrowsetimpl.setmatchcols = \u5728\u83B7\u53D6\u5339\u914D\u5217\u4E4B\u524D\u5148\u8BBE\u7F6E\u5339\u914D\u5217
+cachedrowsetimpl.matchcols1 = \u5339\u914D\u5217\u6570\u5E94\u5F53\u5927\u4E8E 0
+cachedrowsetimpl.matchcols2 = \u5339\u914D\u5217\u6570\u5E94\u5F53\u4E3A\u7A7A\u6216\u7A7A\u503C\u5B57\u7B26\u4E32
+cachedrowsetimpl.unsetmatch = \u8981\u53D6\u6D88\u8BBE\u7F6E\u7684\u5217\u4E0E\u8BBE\u7F6E\u7684\u5217\u4E0D\u540C
+cachedrowsetimpl.unsetmatch1 = \u4F7F\u7528\u5217\u540D\u4F5C\u4E3A unsetMatchColumn \u7684\u53C2\u6570
+cachedrowsetimpl.unsetmatch2 = \u4F7F\u7528\u5217 ID \u4F5C\u4E3A unsetMatchColumn \u7684\u53C2\u6570
+cachedrowsetimpl.numrows = \u884C\u6570\u5C0F\u4E8E\u96F6\u6216\u5C0F\u4E8E\u8981\u63D0\u53D6\u7684\u884C\u6570
+cachedrowsetimpl.startpos = \u8D77\u59CB\u4F4D\u7F6E\u4E0D\u80FD\u4E3A\u8D1F\u6570
+cachedrowsetimpl.nextpage = \u5728\u8C03\u7528\u4E4B\u524D\u5148\u586B\u5145\u6570\u636E 
+cachedrowsetimpl.pagesize = \u9875\u9762\u5927\u5C0F\u4E0D\u80FD\u5C0F\u4E8E\u96F6
+cachedrowsetimpl.pagesize1 = \u9875\u9762\u5927\u5C0F\u4E0D\u80FD\u5927\u4E8E maxRows
+cachedrowsetimpl.fwdonly = ResultSet \u7684\u7C7B\u578B\u4E3A\u4EC5\u5411\u524D\u7C7B\u578B
+cachedrowsetimpl.type = \u7C7B\u578B\u4E3A: {0}
+cachedrowsetimpl.opnotysupp = \u5C1A\u4E0D\u652F\u6301\u8BE5\u64CD\u4F5C
+cachedrowsetimpl.featnotsupp = \u5C1A\u4E0D\u652F\u6301\u8BE5\u529F\u80FD
 
 # WebRowSetImpl exceptions
-webrowsetimpl.nullhash = \u65e0\u6cd5\u5b9e\u4f8b\u5316 WebRowSetImpl \u5b9e\u4f8b\u3002\u63d0\u4f9b\u7ed9\u6784\u9020\u51fd\u6570\u7684 Hashtable \u4e3a Null
-webrowsetimpl.invalidwr = \u7f16\u5199\u5668\u65e0\u6548
-webrowsetimpl.invalidrd = \u8bfb\u53d6\u5668\u65e0\u6548
+webrowsetimpl.nullhash = \u65E0\u6CD5\u5B9E\u4F8B\u5316 WebRowSetImpl \u5B9E\u4F8B\u3002\u63D0\u4F9B\u7ED9\u6784\u9020\u5668\u7684 Hashtable \u4E3A\u7A7A\u503C
+webrowsetimpl.invalidwr = \u5199\u8FDB\u7A0B\u65E0\u6548
+webrowsetimpl.invalidrd = \u8BFB\u8FDB\u7A0B\u65E0\u6548
 
 #FilteredRowSetImpl exceptions
-filteredrowsetimpl.relative = relative: \u5149\u6807\u64cd\u4f5c\u65e0\u6548 
-filteredrowsetimpl.absolute = absolute: \u5149\u6807\u64cd\u4f5c\u65e0\u6548
-filteredrowsetimpl.notallowed = \u4e0d\u5141\u8bb8\u6b64\u503c\u901a\u8fc7\u8fc7\u6ee4\u5668
+filteredrowsetimpl.relative = relative: \u5149\u6807\u64CD\u4F5C\u65E0\u6548 
+filteredrowsetimpl.absolute = absolute: \u5149\u6807\u64CD\u4F5C\u65E0\u6548
+filteredrowsetimpl.notallowed = \u4E0D\u5141\u8BB8\u6B64\u503C\u901A\u8FC7\u7B5B\u9009\u5668
 
 #JoinRowSetImpl exceptions
-joinrowsetimpl.notinstance = \u4e0d\u662f RowSet \u7684\u5b9e\u4f8b
-joinrowsetimpl.matchnotset = \u672a\u8bbe\u7f6e\u5339\u914d\u5217\u4ee5\u8fdb\u884c\u8fde\u63a5
-joinrowsetimpl.numnotequal = RowSet \u4e2d\u7684\u5143\u7d20\u4e2a\u6570\u4e0d\u7b49\u4e8e\u5339\u914d\u5217\u6570
-joinrowsetimpl.notdefined = \u8fd9\u4e0d\u662f\u5b9a\u4e49\u7684\u8fde\u63a5\u7c7b\u578b
-joinrowsetimpl.notsupported = \u4e0d\u652f\u6301\u6b64\u8fde\u63a5\u7c7b\u578b
-joinrowsetimpl.initerror = JoinRowSet \u521d\u59cb\u5316\u9519\u8bef
-joinrowsetimpl.genericerr = \u4e00\u822c JoinRowSet \u521d\u59cb\u5316\u9519\u8bef
-joinrowsetimpl.emptyrowset = \u65e0\u6cd5\u5c06\u7a7a RowSet \u6dfb\u52a0\u5230\u6b64 JoinRowSet
+joinrowsetimpl.notinstance = \u4E0D\u662F RowSet \u7684\u5B9E\u4F8B
+joinrowsetimpl.matchnotset = \u672A\u8BBE\u7F6E\u5339\u914D\u5217\u4EE5\u8FDB\u884C\u8054\u63A5
+joinrowsetimpl.numnotequal = RowSet \u4E2D\u7684\u5143\u7D20\u4E2A\u6570\u4E0D\u7B49\u4E8E\u5339\u914D\u5217\u6570
+joinrowsetimpl.notdefined = \u8FD9\u4E0D\u662F\u5B9A\u4E49\u7684\u8054\u63A5\u7C7B\u578B
+joinrowsetimpl.notsupported = \u4E0D\u652F\u6301\u6B64\u8054\u63A5\u7C7B\u578B
+joinrowsetimpl.initerror = JoinRowSet \u521D\u59CB\u5316\u9519\u8BEF
+joinrowsetimpl.genericerr = \u4E00\u822C JoinRowSet \u521D\u59CB\u5316\u9519\u8BEF
+joinrowsetimpl.emptyrowset = \u65E0\u6CD5\u5C06\u7A7A RowSet \u6DFB\u52A0\u5230\u6B64 JoinRowSet
 
 #JdbcRowSetImpl exceptions
-jdbcrowsetimpl.invalstate = \u72b6\u6001\u65e0\u6548
-jdbcrowsetimpl.connect = JdbcRowSet\uff08\u8fde\u63a5\uff09JNDI \u65e0\u6cd5\u8fde\u63a5
-jdbcrowsetimpl.paramtype = \u65e0\u6cd5\u63a8\u65ad\u53c2\u6570\u7c7b\u578b
-jdbcrowsetimpl.matchcols = \u5339\u914d\u5217\u4e0e\u8bbe\u7f6e\u7684\u90a3\u4e9b\u5339\u914d\u5217\u4e0d\u540c
-jdbcrowsetimpl.setmatchcols = \u5728\u83b7\u53d6\u5339\u914d\u5217\u4e4b\u524d\u5148\u8bbe\u7f6e\u5339\u914d\u5217
-jdbcrowsetimpl.matchcols1 = \u5339\u914d\u5217\u6570\u5e94\u5f53\u5927\u4e8e 0
-jdbcrowsetimpl.matchcols2 = \u5339\u914d\u5217\u4e0d\u80fd\u4e3a Null \u6216\u7a7a\u5b57\u7b26\u4e32
-jdbcrowsetimpl.unsetmatch = \u8981\u590d\u539f\u7684\u5217\u4e0e\u8bbe\u7f6e\u7684\u4e0d\u540c
-jdbcrowsetimpl.usecolname = \u4f7f\u7528\u5217\u540d\u4f5c\u4e3a unsetMatchColumn \u7684\u53c2\u6570
-jdbcrowsetimpl.usecolid = \u4f7f\u7528\u5217 ID \u4f5c\u4e3a unsetMatchColumn \u7684\u53c2\u6570
-jdbcrowsetimpl.resnotupd = ResultSet \u4e0d\u53ef\u66f4\u65b0
-jdbcrowsetimpl.opnotysupp = \u5c1a\u4e0d\u652f\u6301\u7684\u64cd\u4f5c
-jdbcrowsetimpl.featnotsupp = \u5c1a\u4e0d\u652f\u6301\u7684\u529f\u80fd
+jdbcrowsetimpl.invalstate = \u72B6\u6001\u65E0\u6548
+jdbcrowsetimpl.connect = JdbcRowSet (\u8FDE\u63A5) JNDI \u65E0\u6CD5\u8FDE\u63A5
+jdbcrowsetimpl.paramtype = \u65E0\u6CD5\u63A8\u65AD\u53C2\u6570\u7C7B\u578B
+jdbcrowsetimpl.matchcols = \u5339\u914D\u5217\u4E0E\u8BBE\u7F6E\u7684\u90A3\u4E9B\u5339\u914D\u5217\u4E0D\u540C
+jdbcrowsetimpl.setmatchcols = \u5728\u83B7\u53D6\u5339\u914D\u5217\u4E4B\u524D\u5148\u8BBE\u7F6E\u5339\u914D\u5217
+jdbcrowsetimpl.matchcols1 = \u5339\u914D\u5217\u6570\u5E94\u5F53\u5927\u4E8E 0
+jdbcrowsetimpl.matchcols2 = \u5339\u914D\u5217\u4E0D\u80FD\u4E3A\u7A7A\u503C\u6216\u7A7A\u5B57\u7B26\u4E32
+jdbcrowsetimpl.unsetmatch = \u8981\u53D6\u6D88\u8BBE\u7F6E\u7684\u5217\u4E0E\u8BBE\u7F6E\u7684\u5217\u4E0D\u540C
+jdbcrowsetimpl.usecolname = \u4F7F\u7528\u5217\u540D\u4F5C\u4E3A unsetMatchColumn \u7684\u53C2\u6570
+jdbcrowsetimpl.usecolid = \u4F7F\u7528\u5217 ID \u4F5C\u4E3A unsetMatchColumn \u7684\u53C2\u6570
+jdbcrowsetimpl.resnotupd = ResultSet \u4E0D\u53EF\u66F4\u65B0
+jdbcrowsetimpl.opnotysupp = \u5C1A\u4E0D\u652F\u6301\u8BE5\u64CD\u4F5C
+jdbcrowsetimpl.featnotsupp = \u5C1A\u4E0D\u652F\u6301\u8BE5\u529F\u80FD
 
 #CachedRowSetReader exceptions
-crsreader.connect = (JNDI) \u65e0\u6cd5\u8fde\u63a5
-crsreader.paramtype = \u65e0\u6cd5\u63a8\u65ad\u53c2\u6570\u7c7b\u578b
-crsreader.connecterr = RowSetReader \u4e2d\u51fa\u73b0\u5185\u90e8\u9519\u8bef\uff1a\u65e0\u8fde\u63a5\u6216\u547d\u4ee4
-crsreader.datedetected = \u68c0\u6d4b\u5230\u65e5\u671f
-crsreader.caldetected = \u68c0\u6d4b\u5230\u65e5\u5386
+crsreader.connect = (JNDI) \u65E0\u6CD5\u8FDE\u63A5
+crsreader.paramtype = \u65E0\u6CD5\u63A8\u65AD\u53C2\u6570\u7C7B\u578B
+crsreader.connecterr = RowSetReader \u4E2D\u51FA\u73B0\u5185\u90E8\u9519\u8BEF: \u65E0\u8FDE\u63A5\u6216\u547D\u4EE4
+crsreader.datedetected = \u68C0\u6D4B\u5230\u65E5\u671F
+crsreader.caldetected = \u68C0\u6D4B\u5230\u65E5\u5386
 
 #CachedRowSetWriter exceptions
-crswriter.connect = \u65e0\u6cd5\u8fdb\u884c\u8fde\u63a5
-crswriter.tname = writeData \u65e0\u6cd5\u786e\u5b9a\u8868\u540d
-crswriter.params1 = params1 \u7684\u503c: {0} 
-crswriter.params2 = params2 \u7684\u503c: {0} 
-crswriter.conflictsno =  \u540c\u6b65\u5316\u65f6\u53d1\u751f\u51b2\u7a81 
+crswriter.connect = \u65E0\u6CD5\u83B7\u53D6\u8FDE\u63A5
+crswriter.tname = writeData \u65E0\u6CD5\u786E\u5B9A\u8868\u540D
+crswriter.params1 = params1 \u7684\u503C: {0} 
+crswriter.params2 = params2 \u7684\u503C: {0} 
+crswriter.conflictsno =  \u540C\u6B65\u65F6\u53D1\u751F\u51B2\u7A81 
 
 #InsertRow exceptions
-insertrow.novalue = \u5c1a\u672a\u63d2\u5165\u4efb\u4f55\u503c
+insertrow.novalue = \u5C1A\u672A\u63D2\u5165\u4EFB\u4F55\u503C
 
 #SyncResolverImpl exceptions
-syncrsimpl.indexval = \u7d22\u5f15\u503c\u8d85\u51fa\u8303\u56f4  
-syncrsimpl.noconflict = \u6b64\u5217\u4e0d\u51b2\u7a81
-syncrsimpl.syncnotpos = \u4e0d\u80fd\u540c\u6b65
-syncrsimpl.valtores = \u8981\u89e3\u6790\u7684\u503c\u53ef\u4ee5\u5728\u6570\u636e\u5e93\u4e2d\uff0c\u4e5f\u53ef\u4ee5\u5728 CachedRowSet \u4e2d
+syncrsimpl.indexval = \u7D22\u5F15\u503C\u8D85\u51FA\u8303\u56F4  
+syncrsimpl.noconflict = \u6B64\u5217\u4E0D\u51B2\u7A81
+syncrsimpl.syncnotpos = \u4E0D\u80FD\u540C\u6B65
+syncrsimpl.valtores = \u8981\u89E3\u6790\u7684\u503C\u53EF\u4EE5\u5728\u6570\u636E\u5E93\u4E2D, \u4E5F\u53EF\u4EE5\u5728 CachedRowSet \u4E2D
 
 #WebRowSetXmlReader exception
-wrsxmlreader.invalidcp = \u5df2\u5230\u8fbe RowSet \u7684\u7ed3\u5c3e\u3002\u5149\u6807\u4f4d\u7f6e\u65e0\u6548
+wrsxmlreader.invalidcp = \u5DF2\u5230\u8FBE RowSet \u7684\u7ED3\u5C3E\u3002\u5149\u6807\u4F4D\u7F6E\u65E0\u6548
 wrsxmlreader.readxml = readXML: {0}
-wrsxmlreader.parseerr = ** \u8bed\u6cd5\u89e3\u6790\u9519\u8bef: {0}\uff0c\u884c: {1}\uff0cURI: {2}
+wrsxmlreader.parseerr = ** \u8BED\u6CD5\u5206\u6790\u9519\u8BEF: {0}, \u884C: {1}, URI: {2}
 
 #WebRowSetXmlWriter exceptions
 wrsxmlwriter.ioex = IOException: {0}
 wrsxmlwriter.sqlex = SQLException: {0}
-wrsxmlwriter.failedwrite = \u65e0\u6cd5\u5199\u5165\u503c
-wsrxmlwriter.notproper = \u7c7b\u578b\u4e0d\u6b63\u786e
+wrsxmlwriter.failedwrite = \u65E0\u6CD5\u5199\u5165\u503C
+wsrxmlwriter.notproper = \u7C7B\u578B\u4E0D\u6B63\u786E
 
 #XmlReaderContentHandler exceptions
-xmlrch.errmap = \u8bbe\u7f6e\u6620\u5c04\u65f6\u51fa\u9519: {0}
-xmlrch.errmetadata = \u8bbe\u7f6e\u5143\u6570\u636e\u65f6\u51fa\u9519: {0}
-xmlrch.errinsertval = \u63d2\u5165\u503c\u65f6\u51fa\u9519: {0}
-xmlrch.errconstr = \u6784\u9020\u884c\u65f6\u51fa\u9519: {0}
-xmlrch.errdel = \u5220\u9664\u884c\u65f6\u51fa\u9519: {0}
-xmlrch.errinsdel = \u6784\u9020 insdel \u884c\u65f6\u51fa\u9519: {0}
-xmlrch.errupdate = \u6784\u9020\u66f4\u65b0\u884c\u65f6\u51fa\u9519: {0}
-xmlrch.errupdrow = \u66f4\u65b0\u884c\u65f6\u51fa\u9519: {0}
-xmlrch.chars = \u5b57\u7b26:
-xmlrch.badvalue = \u503c\u9519\u8bef\uff1b\u5c5e\u6027\u4e0d\u53ef\u4e3a Null
-xmlrch.badvalue1 = \u503c\u9519\u8bef\uff1b\u5143\u6570\u636e\u4e0d\u53ef\u4e3a Null
-xmlrch.warning =  ** \u8b66\u544a: {0}\uff0c\u884c: {1}\uff0cURI: {2}
+xmlrch.errmap = \u8BBE\u7F6E\u6620\u5C04\u65F6\u51FA\u9519: {0}
+xmlrch.errmetadata = \u8BBE\u7F6E\u5143\u6570\u636E\u65F6\u51FA\u9519: {0}
+xmlrch.errinsertval = \u63D2\u5165\u503C\u65F6\u51FA\u9519: {0}
+xmlrch.errconstr = \u6784\u9020\u884C\u65F6\u51FA\u9519: {0}
+xmlrch.errdel = \u5220\u9664\u884C\u65F6\u51FA\u9519: {0}
+xmlrch.errinsert = \u6784\u9020\u63D2\u5165\u884C\u65F6\u51FA\u9519: {0}
+xmlrch.errinsdel = \u6784\u9020 insdel \u884C\u65F6\u51FA\u9519: {0}
+xmlrch.errupdate = \u6784\u9020\u66F4\u65B0\u884C\u65F6\u51FA\u9519: {0}
+xmlrch.errupdrow = \u66F4\u65B0\u884C\u65F6\u51FA\u9519: {0}
+xmlrch.chars = \u5B57\u7B26:
+xmlrch.badvalue = \u503C\u9519\u8BEF; \u5C5E\u6027\u4E0D\u53EF\u4E3A\u7A7A\u503C
+xmlrch.badvalue1 = \u503C\u9519\u8BEF; \u5143\u6570\u636E\u4E0D\u53EF\u4E3A\u7A7A\u503C
+xmlrch.warning =  ** \u8B66\u544A: {0}, \u884C: {1}, URI: {2}
 
 #RIOptimisticProvider Exceptions
-riop.locking = \u4e0d\u652f\u6301\u9501\u5b9a\u5206\u7c7b
+riop.locking = \u4E0D\u652F\u6301\u9501\u5B9A\u5206\u7C7B
 
 #RIXMLProvider exceptions
-rixml.unsupp = \u4e0d\u652f\u6301 RIXMLProvider
+rixml.unsupp = \u4E0D\u652F\u6301 RIXMLProvider
--- a/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_zh_TW.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/rowset/RowSetResourceBundle_zh_TW.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -24,145 +24,147 @@
 #
 
 # CacheRowSetImpl exceptions
-cachedrowsetimpl.populate = \u70ba\u690d\u5165\u65b9\u6cd5\u63d0\u4f9b\u7684 ResultSet \u7269\u4ef6\u7121\u6548
-cachedrowsetimpl.invalidp = \u7522\u751f\u7684\u6301\u7e8c\u6027\u63d0\u4f9b\u8005\u7121\u6548
-cachedrowsetimpl.nullhash = \u7121\u6cd5\u5275\u8a2d CachedRowSetImpl \u5be6\u4f8b\u3002\u70ba\u5efa\u69cb\u5b50\u63d0\u4f9b\u7684 Hashtable \u70ba\u7a7a
-cachedrowsetimpl.invalidop = \u5c0d\u63d2\u5165\u5217\u9032\u884c\u7684\u4f5c\u696d\u7121\u6548
+cachedrowsetimpl.populate = \u70BA\u690D\u5165\u65B9\u6CD5\u63D0\u4F9B\u7684 ResultSet \u7269\u4EF6\u7121\u6548
+cachedrowsetimpl.invalidp = \u7522\u751F\u7684\u6301\u7E8C\u6027\u63D0\u4F9B\u8005\u7121\u6548
+cachedrowsetimpl.nullhash = \u7121\u6CD5\u5EFA\u7ACB CachedRowSetImpl \u57F7\u884C\u8655\u7406\u3002\u70BA\u5EFA\u69CB\u5B50\u63D0\u4F9B\u7684 Hashtable \u70BA\u7A7A\u503C
+cachedrowsetimpl.invalidop = \u63D2\u5165\u5217\u6642\u7684\u4F5C\u696D\u7121\u6548
 cachedrowsetimpl.accfailed = acceptChanges \u5931\u6557
-cachedrowsetimpl.invalidcp = \u6e38\u6a19\u4f4d\u7f6e\u7121\u6548
-cachedrowsetimpl.illegalop = \u975e\u63d2\u5165\u5217\u4e0a\u5b58\u5728\u975e\u6cd5\u4f5c\u696d
-cachedrowsetimpl.clonefail = \u8907\u88fd\u5931\u6557\uff1a{0}
-cachedrowsetimpl.invalidcol = \u6b04\u7d22\u5f15\u7121\u6548
-cachedrowsetimpl.invalcolnm = \u6b04\u540d\u7121\u6548
-cachedrowsetimpl.boolfail = \u5c0d\u6b04 {1} \u4e2d\u7684\u503c ( {0} ) \u57f7\u884c getBoolen \u5931\u6557
-cachedrowsetimpl.bytefail = \u5c0d\u6b04 {1} \u4e2d\u7684\u503c ( {0} ) \u57f7\u884c getByte \u5931\u6557
-cachedrowsetimpl.shortfail = \u5c0d\u6b04 {1} \u4e2d\u7684\u503c ( {0} ) \u57f7\u884c getShort \u5931\u6557
-cachedrowsetimpl.intfail = \u5c0d\u6b04 {1} \u4e2d\u7684\u503c ( {0} ) \u57f7\u884c getInt \u5931\u6557
-cachedrowsetimpl.longfail = \u5c0d\u6b04 {1} \u4e2d\u7684\u503c ( {0} ) \u57f7\u884c getLong \u5931\u6557
-cachedrowsetimpl.floatfail = \u5c0d\u6b04 {1} \u4e2d\u7684\u503c ( {0} ) \u57f7\u884c getFloat \u5931\u6557
-cachedrowsetimpl.doublefail = \u5c0d\u6b04 {1} \u4e2d\u7684\u503c ( {0} ) \u57f7\u884c getDouble \u5931\u6557
-cachedrowsetimpl.dtypemismt = \u8cc7\u6599\u985e\u578b\u4e0d\u5339\u914d 
-cachedrowsetimpl.datefail = \u5c0d\u6b04 {1} \u4e2d\u7684\u503c ( {0} ) \u57f7\u884c getDate \u5931\u6557\uff0c\u672a\u9032\u884c\u8f49\u63db
-cachedrowsetimpl.timefail = \u5c0d\u6b04 {1} \u4e2d\u7684\u503c ( {0} ) \u57f7\u884c getTime \u5931\u6557\uff0c\u672a\u9032\u884c\u8f49\u63db
-cachedrowsetimpl.posupdate = \u4e0d\u652f\u63f4\u5b9a\u4f4d\u7684\u66f4\u65b0
-cachedrowsetimpl.unableins = \u7121\u6cd5\u5275\u8a2d\uff1a{0}
-cachedrowsetimpl.beforefirst = beforeFirst\uff1a\u6e38\u6a19\u4f5c\u696d\u7121\u6548
-cachedrowsetimpl.first = First\uff1a\u6e38\u6a19\u4f5c\u696d\u7121\u6548
-cachedrowsetimpl.last = last\uff1aTYPE_FORWARD_ONLY
-cachedrowsetimpl.absolute = absolute\uff1a\u6e38\u6a19\u4f4d\u7f6e\u7121\u6548
-cachedrowsetimpl.relative = relative\uff1a\u6e38\u6a19\u4f4d\u7f6e\u7121\u6548
-cachedrowsetimpl.asciistream = \u5c0d ascii \u4e32\u6d41\u57f7\u884c read \u5931\u6557
-cachedrowsetimpl.binstream = \u5c0d\u4e8c\u9032\u4f4d\u4e32\u6d41\u57f7\u884c read \u5931\u6557
-cachedrowsetimpl.failedins = \u5728\u63d2\u5165\u5217\u4e0a\u5931\u6557
-cachedrowsetimpl.updateins = \u5c0d\u63d2\u5165\u5217\u547c\u53eb updateRow
-cachedrowsetimpl.movetoins = moveToInsertRow\uff1aCONCUR_READ_ONLY
-cachedrowsetimpl.movetoins1 = moveToInsertRow\uff1a\u6c92\u6709\u5143\u8cc7\u6599
-cachedrowsetimpl.movetoins2 = moveToInsertRow\uff1a\u6b04\u6578\u7121\u6548
-cachedrowsetimpl.tablename = \u8868\u540d\u7a31\u4e0d\u80fd\u70ba\u7a7a
-cachedrowsetimpl.keycols = \u95dc\u9375\u6b04\u7121\u6548
-cachedrowsetimpl.opnotsupp = \u8cc7\u6599\u5eab\u4e0d\u652f\u63f4\u4f5c\u696d
-cachedrowsetimpl.matchcols = \u5339\u914d\u6b04\u548c\u8a2d\u5b9a\u7684\u6b04\u4e0d\u540c
-cachedrowsetimpl.setmatchcols = \u5728\u53d6\u5f97\u5339\u914d\u6b04\u4e4b\u524d\u8a2d\u5b9a\u5b83\u5011
-cachedrowsetimpl.matchcols1 = \u5339\u914d\u6b04\u61c9\u5927\u65bc 0
-cachedrowsetimpl.matchcols2 = \u5339\u914d\u6b04\u61c9\u70ba\u7a7a\u767d\u5b57\u4e32\u6216\u7a7a\u5b57\u4e32
-cachedrowsetimpl.unsetmatch = \u672a\u8a2d\u5b9a\u7684\u6b04\u548c\u8a2d\u5b9a\u7684\u6b04\u4e0d\u540c
-cachedrowsetimpl.unsetmatch1 = \u4f7f\u7528\u6b04\u540d\u505a\u70ba unsetMatchColumn \u7684\u5f15\u6578
-cachedrowsetimpl.unsetmatch2 = \u4f7f\u7528\u6b04 ID \u505a\u70ba unsetMatchColumn \u7684\u5f15\u6578
-cachedrowsetimpl.numrows = \u5217\u6578\u5c0f\u65bc\u96f6\u6216\u5c0f\u65bc\u64f7\u53d6\u5927\u5c0f
-cachedrowsetimpl.startpos = \u8d77\u59cb\u4f4d\u7f6e\u4e0d\u80fd\u70ba\u8ca0
-cachedrowsetimpl.nextpage = \u5728\u547c\u53eb\u4e4b\u524d\u690d\u5165\u8cc7\u6599 
-cachedrowsetimpl.pagesize = \u9801\u9762\u5927\u5c0f\u4e0d\u80fd\u5c0f\u65bc\u96f6
-cachedrowsetimpl.pagesize1 = \u9801\u9762\u5927\u5c0f\u4e0d\u80fd\u5927\u65bc maxRows
-cachedrowsetimpl.fwdonly = ResultSet \u53ea\u80fd\u5411\u524d\u9032\u884c
-cachedrowsetimpl.type = \u985e\u578b\u662f\uff1a{0}
-cachedrowsetimpl.opnotysupp = \u5c1a\u4e0d\u652f\u63f4\u8a72\u4f5c\u696d
-cachedrowsetimpl.featnotsupp = \u4e0d\u652f\u63f4\u8a72\u529f\u80fd
+cachedrowsetimpl.invalidcp = \u6E38\u6A19\u4F4D\u7F6E\u7121\u6548
+cachedrowsetimpl.illegalop = \u975E\u63D2\u5165\u5217\u4E0A\u5B58\u5728\u7121\u6548\u4F5C\u696D
+cachedrowsetimpl.clonefail = \u8907\u88FD\u5931\u6557: {0}
+cachedrowsetimpl.invalidcol = \u6B04\u7D22\u5F15\u7121\u6548
+cachedrowsetimpl.invalcolnm = \u6B04\u540D\u7121\u6548
+cachedrowsetimpl.boolfail = \u5C0D\u6B04 {1} \u4E2D\u7684\u503C ( {0} ) \u57F7\u884C getBoolen \u5931\u6557
+cachedrowsetimpl.bytefail = \u5C0D\u6B04 {1} \u4E2D\u7684\u503C ( {0} ) \u57F7\u884C getByte \u5931\u6557
+cachedrowsetimpl.shortfail = \u5C0D\u6B04 {1} \u4E2D\u7684\u503C ( {0} ) \u57F7\u884C getShort \u5931\u6557
+cachedrowsetimpl.intfail = \u5C0D\u6B04 {1} \u4E2D\u7684\u503C ( {0} ) \u57F7\u884C getInt \u5931\u6557
+cachedrowsetimpl.longfail = \u5C0D\u6B04 {1} \u4E2D\u7684\u503C ( {0} ) \u57F7\u884C getLong \u5931\u6557
+cachedrowsetimpl.floatfail = \u5C0D\u6B04 {1} \u4E2D\u7684\u503C ( {0} ) \u57F7\u884C getFloat \u5931\u6557
+cachedrowsetimpl.doublefail = \u5C0D\u6B04 {1} \u4E2D\u7684\u503C ( {0} ) \u57F7\u884C getDouble \u5931\u6557
+cachedrowsetimpl.dtypemismt = \u8CC7\u6599\u985E\u578B\u4E0D\u76F8\u7B26
+cachedrowsetimpl.datefail = \u5C0D\u6B04 {1} \u4E2D\u7684\u503C ( {0} ) \u57F7\u884C getDate \u5931\u6557\uFF0C\u672A\u9032\u884C\u8F49\u63DB
+cachedrowsetimpl.timefail = \u5C0D\u6B04 {1} \u4E2D\u7684\u503C ( {0} ) \u57F7\u884C getTime \u5931\u6557\uFF0C\u672A\u9032\u884C\u8F49\u63DB
+cachedrowsetimpl.posupdate = \u4E0D\u652F\u63F4\u5B9A\u4F4D\u7684\u66F4\u65B0
+cachedrowsetimpl.unableins = \u7121\u6CD5\u5EFA\u7ACB: {0}
+cachedrowsetimpl.beforefirst = beforeFirst: \u6E38\u6A19\u4F5C\u696D\u7121\u6548
+cachedrowsetimpl.first = First: \u6E38\u6A19\u4F5C\u696D\u7121\u6548
+cachedrowsetimpl.last = last : TYPE_FORWARD_ONLY
+cachedrowsetimpl.absolute = absolute: \u6E38\u6A19\u4F4D\u7F6E\u7121\u6548
+cachedrowsetimpl.relative = relative: \u6E38\u6A19\u4F4D\u7F6E\u7121\u6548
+cachedrowsetimpl.asciistream = \u8B80\u53D6 ascii \u4E32\u6D41\u5931\u6557
+cachedrowsetimpl.binstream = \u8B80\u53D6\u4E8C\u9032\u4F4D\u4E32\u6D41\u5931\u6557
+cachedrowsetimpl.failedins = \u63D2\u5165\u5217\u5931\u6557
+cachedrowsetimpl.updateins = \u63D2\u5165\u5217\u6642\u547C\u53EB updateRow
+cachedrowsetimpl.movetoins = moveToInsertRow: CONCUR_READ_ONLY
+cachedrowsetimpl.movetoins1 = moveToInsertRow: \u6C92\u6709\u63CF\u8FF0\u8CC7\u6599
+cachedrowsetimpl.movetoins2 = moveToInsertRow: \u6B04\u6578\u7121\u6548
+cachedrowsetimpl.tablename = \u8868\u683C\u540D\u7A31\u4E0D\u80FD\u70BA\u7A7A\u503C
+cachedrowsetimpl.keycols = \u95DC\u9375\u6B04\u7121\u6548
+cachedrowsetimpl.invalidcol = \u6B04\u7D22\u5F15\u7121\u6548
+cachedrowsetimpl.opnotsupp = \u8CC7\u6599\u5EAB\u4E0D\u652F\u63F4\u4F5C\u696D
+cachedrowsetimpl.matchcols = \u5339\u914D\u6B04\u548C\u8A2D\u5B9A\u7684\u6B04\u4E0D\u540C
+cachedrowsetimpl.setmatchcols = \u5728\u53D6\u5F97\u5339\u914D\u6B04\u4E4B\u524D\u8A2D\u5B9A\u5B83\u5011
+cachedrowsetimpl.matchcols1 = \u5339\u914D\u6B04\u61C9\u5927\u65BC 0
+cachedrowsetimpl.matchcols2 = \u5339\u914D\u6B04\u61C9\u70BA\u7A7A\u767D\u5B57\u4E32\u6216\u7A7A\u503C\u5B57\u4E32
+cachedrowsetimpl.unsetmatch = \u53D6\u6D88\u8A2D\u5B9A\u7684\u6B04\u548C\u8A2D\u5B9A\u7684\u6B04\u4E0D\u540C
+cachedrowsetimpl.unsetmatch1 = \u4F7F\u7528\u6B04\u540D\u505A\u70BA unsetMatchColumn \u7684\u5F15\u6578
+cachedrowsetimpl.unsetmatch2 = \u4F7F\u7528\u6B04 ID \u505A\u70BA unsetMatchColumn \u7684\u5F15\u6578
+cachedrowsetimpl.numrows = \u5217\u6578\u5C0F\u65BC\u96F6\u6216\u5C0F\u65BC\u64F7\u53D6\u5927\u5C0F
+cachedrowsetimpl.startpos = \u8D77\u59CB\u4F4D\u7F6E\u4E0D\u80FD\u70BA\u8CA0\u6578
+cachedrowsetimpl.nextpage = \u5728\u547C\u53EB\u4E4B\u524D\u690D\u5165\u8CC7\u6599 
+cachedrowsetimpl.pagesize = \u9801\u9762\u5927\u5C0F\u4E0D\u80FD\u5C0F\u65BC\u96F6
+cachedrowsetimpl.pagesize1 = \u9801\u9762\u5927\u5C0F\u4E0D\u80FD\u5927\u65BC maxRows
+cachedrowsetimpl.fwdonly = ResultSet \u53EA\u80FD\u5411\u524D\u9032\u884C
+cachedrowsetimpl.type = \u985E\u578B\u662F: {0}
+cachedrowsetimpl.opnotysupp = \u5C1A\u4E0D\u652F\u63F4\u8A72\u4F5C\u696D
+cachedrowsetimpl.featnotsupp = \u4E0D\u652F\u63F4\u8A72\u529F\u80FD
 
 # WebRowSetImpl exceptions
-webrowsetimpl.nullhash = \u7121\u6cd5\u5275\u8a2d WebRowSetImpl \u5be6\u4f8b\u3002\u70ba\u5efa\u69cb\u5b50\u63d0\u4f9b\u7684 Hashtable \u70ba\u7a7a
-webrowsetimpl.invalidwr = \u5beb\u5165\u5668\u7121\u6548
-webrowsetimpl.invalidrd = \u8b80\u53d6\u5668\u7121\u6548
+webrowsetimpl.nullhash = \u7121\u6CD5\u5EFA\u7ACB WebRowSetImpl \u57F7\u884C\u8655\u7406\u3002\u70BA\u5EFA\u69CB\u5B50\u63D0\u4F9B\u7684 Hashtable \u70BA\u7A7A\u503C
+webrowsetimpl.invalidwr = \u5BEB\u5165\u5668\u7121\u6548
+webrowsetimpl.invalidrd = \u8B80\u53D6\u5668\u7121\u6548
 
 #FilteredRowSetImpl exceptions
-filteredrowsetimpl.relative = relative\uff1a\u6e38\u6a19\u4f5c\u696d\u7121\u6548 
-filteredrowsetimpl.absolute = absolute\uff1a\u6e38\u6a19\u4f5c\u696d\u7121\u6548
-filteredrowsetimpl.notallowed = \u4e0d\u5141\u8a31\u6b64\u503c\u901a\u904e\u904e\u6ffe\u5668
+filteredrowsetimpl.relative = relative: \u6E38\u6A19\u4F5C\u696D\u7121\u6548 
+filteredrowsetimpl.absolute = absolute: \u6E38\u6A19\u4F5C\u696D\u7121\u6548
+filteredrowsetimpl.notallowed = \u4E0D\u5141\u8A31\u6B64\u503C\u901A\u904E\u7BE9\u9078
 
 #JoinRowSetImpl exceptions
-joinrowsetimpl.notinstance = \u4e0d\u662f rowset \u7684\u5be6\u4f8b
-joinrowsetimpl.matchnotset = \u672a\u8a2d\u5b9a\u7528\u65bc\u9023\u7d50\u7684\u5339\u914d\u6b04
-joinrowsetimpl.numnotequal = rowset \u4e2d\u7684\u5143\u7d20\u6578\u4e0d\u7b49\u65bc\u5339\u914d\u6b04
-joinrowsetimpl.notdefined = \u9019\u4e0d\u662f\u9023\u7d50\u7684\u5df2\u5b9a\u7fa9\u985e\u578b
-joinrowsetimpl.notsupported = \u4e0d\u652f\u63f4\u6b64\u985e\u9023\u7d50
-joinrowsetimpl.initerror = JoinRowSet \u521d\u59cb\u5316\u932f\u8aa4
-joinrowsetimpl.genericerr = \u5e38\u898f\u7684 joinrowset \u521d\u59cb\u5316\u932f\u8aa4
-joinrowsetimpl.emptyrowset = \u7121\u6cd5\u5c07\u7a7a rowset \u65b0\u589e\u81f3\u6b64 JoinRowSet
+joinrowsetimpl.notinstance = \u4E0D\u662F rowset \u7684\u57F7\u884C\u8655\u7406
+joinrowsetimpl.matchnotset = \u672A\u8A2D\u5B9A\u7528\u65BC\u9023\u7D50\u7684\u5339\u914D\u6B04
+joinrowsetimpl.numnotequal = rowset \u4E2D\u7684\u5143\u7D20\u6578\u4E0D\u7B49\u65BC\u5339\u914D\u6B04
+joinrowsetimpl.notdefined = \u9019\u4E0D\u662F\u9023\u7D50\u7684\u5DF2\u5B9A\u7FA9\u985E\u578B
+joinrowsetimpl.notsupported = \u4E0D\u652F\u63F4\u6B64\u985E\u9023\u7D50
+joinrowsetimpl.initerror = JoinRowSet \u521D\u59CB\u5316\u932F\u8AA4
+joinrowsetimpl.genericerr = \u4E00\u822C\u7684 joinrowset \u521D\u59CB\u5316\u932F\u8AA4
+joinrowsetimpl.emptyrowset = \u7121\u6CD5\u5C07\u7A7A rowset \u65B0\u589E\u81F3\u6B64 JoinRowSet
 
 #JdbcRowSetImpl exceptions
-jdbcrowsetimpl.invalstate = \u72c0\u614b\u7121\u6548
-jdbcrowsetimpl.connect = JdbcRowSet (\u9023\u7dda) JNDI \u7121\u6cd5\u9023\u7dda
-jdbcrowsetimpl.paramtype = \u7121\u6cd5\u63a8\u65b7\u53c3\u6578\u985e\u578b
-jdbcrowsetimpl.matchcols = \u5339\u914d\u6b04\u548c\u8a2d\u5b9a\u7684\u6b04\u4e0d\u540c
-jdbcrowsetimpl.setmatchcols = \u5728\u53d6\u5f97\u5339\u914d\u6b04\u4e4b\u524d\u8a2d\u5b9a\u5b83\u5011
-jdbcrowsetimpl.matchcols1 = \u5339\u914d\u6b04\u61c9\u5927\u65bc 0
-jdbcrowsetimpl.matchcols2 = \u5339\u914d\u6b04\u4e0d\u80fd\u70ba\u7a7a\u5b57\u4e32\u6216\u7a7a\u767d\u5b57\u4e32
-jdbcrowsetimpl.unsetmatch = \u672a\u8a2d\u5b9a\u7684\u6b04\u548c\u8a2d\u5b9a\u7684\u6b04\u4e0d\u540c
-jdbcrowsetimpl.usecolname = \u4f7f\u7528\u6b04\u540d\u505a\u70ba unsetMatchColumn \u7684\u5f15\u6578
-jdbcrowsetimpl.usecolid = \u4f7f\u7528\u6b04 ID \u505a\u70ba unsetMatchColumn \u7684\u5f15\u6578
-jdbcrowsetimpl.resnotupd = ResultSet \u4e0d\u53ef\u66f4\u65b0
-jdbcrowsetimpl.opnotysupp = \u5c1a\u4e0d\u652f\u63f4\u8a72\u4f5c\u696d
-jdbcrowsetimpl.featnotsupp = \u4e0d\u652f\u63f4\u8a72\u529f\u80fd
+jdbcrowsetimpl.invalstate = \u72C0\u614B\u7121\u6548
+jdbcrowsetimpl.connect = JdbcRowSet (\u9023\u7DDA) JNDI \u7121\u6CD5\u9023\u7DDA
+jdbcrowsetimpl.paramtype = \u7121\u6CD5\u63A8\u65B7\u53C3\u6578\u985E\u578B
+jdbcrowsetimpl.matchcols = \u5339\u914D\u6B04\u548C\u8A2D\u5B9A\u7684\u6B04\u4E0D\u540C
+jdbcrowsetimpl.setmatchcols = \u8981\u5148\u8A2D\u5B9A\u5339\u914D\u6B04\uFF0C\u624D\u80FD\u53D6\u5F97\u5B83\u5011
+jdbcrowsetimpl.matchcols1 = \u5339\u914D\u6B04\u61C9\u5927\u65BC 0
+jdbcrowsetimpl.matchcols2 = \u5339\u914D\u6B04\u4E0D\u80FD\u70BA\u7A7A\u767D\u5B57\u4E32\u6216\u7A7A\u503C\u5B57\u4E32
+jdbcrowsetimpl.unsetmatch = \u53D6\u6D88\u8A2D\u5B9A\u7684\u6B04\u548C\u8A2D\u5B9A\u7684\u6B04\u4E0D\u540C
+jdbcrowsetimpl.usecolname = \u4F7F\u7528\u6B04\u540D\u505A\u70BA unsetMatchColumn \u7684\u5F15\u6578
+jdbcrowsetimpl.usecolid = \u4F7F\u7528\u6B04 ID \u505A\u70BA unsetMatchColumn \u7684\u5F15\u6578
+jdbcrowsetimpl.resnotupd = ResultSet \u4E0D\u53EF\u66F4\u65B0
+jdbcrowsetimpl.opnotysupp = \u5C1A\u4E0D\u652F\u63F4\u8A72\u4F5C\u696D
+jdbcrowsetimpl.featnotsupp = \u4E0D\u652F\u63F4\u8A72\u529F\u80FD
 
 #CachedRowSetReader exceptions
-crsreader.connect = (JNDI) \u7121\u6cd5\u9023\u7dda
-crsreader.paramtype = \u7121\u6cd5\u63a8\u65b7\u53c3\u6578\u985e\u578b
-crsreader.connecterr = RowSetReader \u4e2d\u51fa\u73fe\u5167\u90e8\u932f\u8aa4\ufe30\u7121\u9023\u7dda\u6216\u6307\u4ee4
-crsreader.datedetected = \u5075\u6e2c\u5230\u65e5\u671f
-crsreader.caldetected = \u5075\u6e2c\u5230\u884c\u4e8b\u66c6
+crsreader.connect = (JNDI) \u7121\u6CD5\u9023\u7DDA
+crsreader.paramtype = \u7121\u6CD5\u63A8\u65B7\u53C3\u6578\u985E\u578B
+crsreader.connecterr = RowSetReader \u4E2D\u51FA\u73FE\u5167\u90E8\u932F\u8AA4: \u7121\u9023\u7DDA\u6216\u547D\u4EE4
+crsreader.datedetected = \u5075\u6E2C\u5230\u65E5\u671F
+crsreader.caldetected = \u5075\u6E2C\u5230\u884C\u4E8B\u66C6
 
 #CachedRowSetWriter exceptions
-crswriter.connect = \u7121\u6cd5\u5efa\u7acb\u9023\u7dda
-crswriter.tname = writeData \u4e0d\u80fd\u6c7a\u5b9a\u8868\u540d\u7a31
-crswriter.params1 = params1 \u7684\u503c\uff1a{0} 
-crswriter.params2 = params2 \u7684\u503c\uff1a{0} 
-crswriter.conflictsno =  \u540c\u6b65\u5316\u6642\u767c\u751f\u885d\u7a81 
+crswriter.connect = \u7121\u6CD5\u53D6\u5F97\u9023\u7DDA
+crswriter.tname = writeData \u4E0D\u80FD\u6C7A\u5B9A\u8868\u683C\u540D\u7A31
+crswriter.params1 = params1 \u7684\u503C: {0} 
+crswriter.params2 = params2 \u7684\u503C: {0} 
+crswriter.conflictsno =  \u540C\u6B65\u5316\u6642\u767C\u751F\u885D\u7A81 
 
 #InsertRow exceptions
-insertrow.novalue = \u5c1a\u672a\u63d2\u5165\u503c
+insertrow.novalue = \u5C1A\u672A\u63D2\u5165\u503C
 
 #SyncResolverImpl exceptions
-syncrsimpl.indexval = \u7d22\u5f15\u503c\u8d85\u51fa\u7bc4\u570d  
-syncrsimpl.noconflict = \u6b64\u6b04\u4e0d\u885d\u7a81
-syncrsimpl.syncnotpos = \u4e0d\u53ef\u80fd\u540c\u6b65\u5316
-syncrsimpl.valtores = \u8981\u89e3\u6790\u7684\u503c\u53ef\u4f4d\u65bc\u8cc7\u6599\u5eab\u6216 cachedrowset \u4e2d
+syncrsimpl.indexval = \u7D22\u5F15\u503C\u8D85\u51FA\u7BC4\u570D  
+syncrsimpl.noconflict = \u6B64\u6B04\u4E0D\u885D\u7A81
+syncrsimpl.syncnotpos = \u4E0D\u53EF\u80FD\u540C\u6B65\u5316
+syncrsimpl.valtores = \u8981\u89E3\u6790\u7684\u503C\u53EF\u4F4D\u65BC\u8CC7\u6599\u5EAB\u6216 cachedrowset \u4E2D
 
 #WebRowSetXmlReader exception
-wrsxmlreader.invalidcp = \u5df2\u5230\u9054 RowSet \u672b\u5c3e\u3002\u6e38\u6a19\u4f4d\u7f6e\u7121\u6548
-wrsxmlreader.readxml = readXML\uff1a{0}
-wrsxmlreader.parseerr = ** \u5256\u6790\u932f\u8aa4: {0}\uff0c\u884c: {1}\uff0curi: {2}
+wrsxmlreader.invalidcp = \u5DF2\u5230\u9054 RowSet \u7D50\u5C3E\u3002\u6E38\u6A19\u4F4D\u7F6E\u7121\u6548
+wrsxmlreader.readxml = readXML: {0}
+wrsxmlreader.parseerr = ** \u5256\u6790\u932F\u8AA4: {0}\uFF0C\u884C: {1}\uFF0Curi: {2}
 
 #WebRowSetXmlWriter exceptions
-wrsxmlwriter.ioex = IOException\uff1a{0}
-wrsxmlwriter.sqlex = SQLException\uff1a{0}
-wrsxmlwriter.failedwrite = \u5beb\u5165\u503c\u5931\u6557
-wsrxmlwriter.notproper = \u4e0d\u662f\u6b63\u78ba\u985e\u578b
+wrsxmlwriter.ioex = IOException : {0}
+wrsxmlwriter.sqlex = SQLException : {0}
+wrsxmlwriter.failedwrite = \u5BEB\u5165\u503C\u5931\u6557
+wsrxmlwriter.notproper = \u4E0D\u662F\u6B63\u78BA\u985E\u578B
 
 #XmlReaderContentHandler exceptions
-xmlrch.errmap = \u8a2d\u5b9a\u5c0d\u6620\u6642\u767c\u751f\u932f\u8aa4\uff1a{0}
-xmlrch.errmetadata = \u8a2d\u5b9a\u5143\u8cc7\u6599\u6642\u767c\u751f\u932f\u8aa4\uff1a{0}
-xmlrch.errinsertval = \u63d2\u5165\u503c\u6642\u767c\u751f\u932f\u8aa4: {0}
-xmlrch.errconstr = \u5efa\u69cb\u5217\u6642\u767c\u751f\u932f\u8aa4\uff1a{0}
-xmlrch.errdel = \u522a\u9664\u5217\u6642\u767c\u751f\u932f\u8aa4\uff1a{0}
-xmlrch.errinsdel = \u5efa\u69cb insdel \u5217\u6642\u767c\u751f\u932f\u8aa4\uff1a{0}
-xmlrch.errupdate = \u5efa\u69cb\u66f4\u65b0\u5217\u6642\u767c\u751f\u932f\u8aa4\uff1a{0}
-xmlrch.errupdrow = \u66f4\u65b0\u5217\u6642\u767c\u751f\u932f\u8aa4: {0}
-xmlrch.chars = \u5b57\u5143\uff1a
-xmlrch.badvalue = \u932f\u8aa4\u7684\u503c\uff1b\u7279\u6027\u4e0d\u80fd\u70ba\u7a7a
-xmlrch.badvalue1 = \u932f\u8aa4\u7684\u503c\uff1b\u5143\u8cc7\u6599\u4e0d\u80fd\u70ba\u7a7a
-xmlrch.warning =  ** \u8b66\u544a: {0}\uff0c\u884c: {1}\uff0curi: {2}
+xmlrch.errmap = \u8A2D\u5B9A\u5C0D\u6620\u6642\u767C\u751F\u932F\u8AA4: {0}
+xmlrch.errmetadata = \u8A2D\u5B9A\u63CF\u8FF0\u8CC7\u6599\u6642\u767C\u751F\u932F\u8AA4: {0}
+xmlrch.errinsertval = \u63D2\u5165\u503C\u6642\u767C\u751F\u932F\u8AA4: {0}
+xmlrch.errconstr = \u5EFA\u69CB\u5217\u6642\u767C\u751F\u932F\u8AA4: {0}
+xmlrch.errdel = \u522A\u9664\u5217\u6642\u767C\u751F\u932F\u8AA4: {0}
+xmlrch.errinsert = \u5EFA\u69CB\u63D2\u5165\u5217\u6642\u767C\u751F\u932F\u8AA4 : {0}
+xmlrch.errinsdel = \u5EFA\u69CB insdel \u5217\u6642\u767C\u751F\u932F\u8AA4: {0}
+xmlrch.errupdate = \u5EFA\u69CB\u66F4\u65B0\u5217\u6642\u767C\u751F\u932F\u8AA4: {0}
+xmlrch.errupdrow = \u66F4\u65B0\u5217\u6642\u767C\u751F\u932F\u8AA4: {0}
+xmlrch.chars = \u5B57\u5143: 
+xmlrch.badvalue = \u932F\u8AA4\u7684\u503C; \u5C6C\u6027\u4E0D\u80FD\u70BA\u7A7A\u503C
+xmlrch.badvalue1 = \u932F\u8AA4\u7684\u503C; \u63CF\u8FF0\u8CC7\u6599\u4E0D\u80FD\u70BA\u7A7A\u503C
+xmlrch.warning =  ** \u8B66\u544A: {0}\uFF0C\u884C: {1}\uFF0Curi: {2}
 
 #RIOptimisticProvider Exceptions
-riop.locking = \u4e0d\u652f\u63f4\u9396\u5b9a\u5206\u985e
+riop.locking = \u4E0D\u652F\u63F4\u9396\u5B9A\u5206\u985E
 
 #RIXMLProvider exceptions
-rixml.unsupp = RIXMLProvider \u4e0d\u652f\u63f4
+rixml.unsupp = RIXMLProvider \u4E0D\u652F\u63F4
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -50,25 +50,25 @@
 FileChooser.newFolderErrorText=Fehler beim Erstellen eines neuen Ordners
 FileChooser.newFolderErrorSeparator= : 
 FileChooser.newFolderParentDoesntExistTitleText=Ordner kann nicht erstellt werden
-FileChooser.newFolderParentDoesntExistText=Der Ordner kann nicht erstellt werden.\n\nDas System kann den angegebenen Pfad nicht finden.
-FileChooser.renameErrorTitleText=Fehler beim Umbenennen der Datei oder des Ordners
+FileChooser.newFolderParentDoesntExistText=Ordner kann nicht erstellt werden.\n\nSystem kann den angegebenen Pfad nicht finden.
+FileChooser.renameErrorTitleText=Fehler beim Umbenennen von Datei oder Ordner
 FileChooser.renameErrorText={0} kann nicht umbenannt werden
-FileChooser.renameErrorFileExistsText={0} kann nicht umbenannt werden: Es ist bereits eine Datei mit diesem Namen vorhanden. Geben Sie einen anderen Dateinamen an. 
+FileChooser.renameErrorFileExistsText={0} kann nicht umbenannt werden: Es ist bereits eine Datei mit dem angegebenen Namen vorhanden. Geben Sie einen anderen Dateinamen an. 
 FileChooser.acceptAllFileFilterText=Alle Dateien
 FileChooser.cancelButtonText=Abbrechen
-FileChooser.cancelButtonMnemonic=65
+FileChooser.cancelButtonMnemonic=67
 FileChooser.saveButtonText=Speichern
 FileChooser.saveButtonMnemonic=83
-FileChooser.openButtonText=\u00d6ffnen
-FileChooser.openButtonMnemonic=70
+FileChooser.openButtonText=\u00D6ffnen
+FileChooser.openButtonMnemonic=79
 FileChooser.saveDialogTitleText=Speichern
-FileChooser.openDialogTitleText=\u00d6ffnen
+FileChooser.openDialogTitleText=\u00D6ffnen
 FileChooser.updateButtonText=Aktualisieren
-FileChooser.updateButtonMnemonic=75
+FileChooser.updateButtonMnemonic=85
 FileChooser.helpButtonText=Hilfe
 FileChooser.helpButtonMnemonic=72
-FileChooser.directoryOpenButtonText=\u00d6ffnen
-FileChooser.directoryOpenButtonMnemonic=69
+FileChooser.directoryOpenButtonText=\u00D6ffnen
+FileChooser.directoryOpenButtonMnemonic=79
 
 # File Size Units
 FileChooser.fileSizeKiloBytes={0} KB
@@ -78,28 +78,28 @@
 # These strings are platform dependent not look and feel dependent.
 FileChooser.win32.newFolder=Neuer Ordner
 FileChooser.win32.newFolder.subsequent=Neuer Ordner ({0})
-FileChooser.other.newFolder=Neuer Ordner
-FileChooser.other.newFolder.subsequent=Neuer Ordner.{0}
+FileChooser.other.newFolder=NewFolder
+FileChooser.other.newFolder.subsequent=NewFolder.{0}
 
 
 ## file chooser tooltips ###
-FileChooser.cancelButtonToolTipText=Dialogfeld f\u00fcr Dateiauswahl abbrechen
-FileChooser.saveButtonToolTipText=Ausgew\u00e4hlte Datei speichern
-FileChooser.openButtonToolTipText=Ausgew\u00e4hlte Datei \u00f6ffnen
+FileChooser.cancelButtonToolTipText=Dialogfeld f\u00FCr Dateiauswahl schlie\u00DFen
+FileChooser.saveButtonToolTipText=Ausgew\u00E4hlte Datei speichern
+FileChooser.openButtonToolTipText=Ausgew\u00E4hlte Datei \u00F6ffnen
 FileChooser.updateButtonToolTipText=Verzeichnisliste aktualisieren
-FileChooser.helpButtonToolTipText=Hilfe f\u00fcr Dateiauswahl
-FileChooser.directoryOpenButtonToolTipText=Markiertes Verzeichnis \u00f6ffnen
+FileChooser.helpButtonToolTipText=FileChooser-Hilfe
+FileChooser.directoryOpenButtonToolTipText=Ausgew\u00E4hltes Verzeichnis \u00F6ffnen
 
 ############ COLOR CHOOSER STRINGS #############
 ColorChooser.previewText=Vorschau
 ColorChooser.okText=OK
 ColorChooser.cancelText=Abbrechen
-ColorChooser.resetText=Zur\u00fccksetzen
+ColorChooser.resetText=Zur\u00FCcksetzen
 # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic
-ColorChooser.resetMnemonic=90
+ColorChooser.resetMnemonic=82
 ColorChooser.sampleText=Beispieltext  Beispieltext
 ColorChooser.swatchesNameText=Muster
-ColorChooser.swatchesMnemonic=77
+ColorChooser.swatchesMnemonic=83
 ColorChooser.swatchesRecentText=Aktuell:
 # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX
 # constant, and an index into the text to render the mnemonic as. The
@@ -108,20 +108,20 @@
 ColorChooser.hsvNameText=HSV
 ColorChooser.hsvMnemonic=72
 ColorChooser.hsvHueText=Farbton
-ColorChooser.hsvSaturationText=S\u00e4ttigung
+ColorChooser.hsvSaturationText=S\u00E4ttigung
 ColorChooser.hsvValueText=Wert
 ColorChooser.hsvTransparencyText=Transparenz
 ColorChooser.hslNameText=HSL
 ColorChooser.hslMnemonic=76
 ColorChooser.hslHueText=Farbton
-ColorChooser.hslSaturationText=S\u00e4ttigung
+ColorChooser.hslSaturationText=S\u00E4ttigung
 ColorChooser.hslLightnessText=Helligkeit
 ColorChooser.hslTransparencyText=Transparenz
 ColorChooser.rgbNameText=RGB
 ColorChooser.rgbMnemonic=71
 ColorChooser.rgbRedText=Rot
-ColorChooser.rgbRedMnemonic=82
-ColorChooser.rgbGreenText=Gr\u00fcn
+ColorChooser.rgbRedMnemonic=68
+ColorChooser.rgbGreenText=Gr\u00FCn
 ColorChooser.rgbGreenMnemonic=78
 ColorChooser.rgbBlueText=Blau
 ColorChooser.rgbBlueMnemonic=66
@@ -130,7 +130,7 @@
 ColorChooser.rgbHexCodeMnemonic=67
 ColorChooser.cmykNameText=CMYK
 ColorChooser.cmykMnemonic=77
-ColorChooser.cmykCyanText=Cyan
+ColorChooser.cmykCyanText=Zyan
 ColorChooser.cmykMagentaText=Magenta
 ColorChooser.cmykYellowText=Gelb
 ColorChooser.cmykBlackText=Schwarz
@@ -141,26 +141,26 @@
 # We only define mnemonics for YES/NO, but for completeness you can
 # define mnemonics for any of the buttons.
 OptionPane.yesButtonText=Ja
-OptionPane.yesButtonMnemonic=74
+OptionPane.yesButtonMnemonic=89
 OptionPane.noButtonText=Nein
 OptionPane.noButtonMnemonic=78
 OptionPane.okButtonText=OK
-OptionPane.okButtonMnemonic=79
+OptionPane.okButtonMnemonic=0
 OptionPane.cancelButtonText=Abbrechen
-OptionPane.cancelButtonMnemonic=65
-OptionPane.titleText=W\u00e4hlen Sie eine Option aus
+OptionPane.cancelButtonMnemonic=0
+OptionPane.titleText=Option ausw\u00E4hlen
 # Title for the dialog for the showInputDialog methods. Only used if
 # the developer uses one of the variants that doesn't take a title.
 OptionPane.inputDialogTitle=Eingabe
 # Title for the dialog for the showMessageDialog methods. Only used if
 # the developer uses one of the variants that doesn't take a title.
-OptionPane.messageDialogTitle=Nachricht
+OptionPane.messageDialogTitle=Meldung
 
 ############ Printing Dialog Strings ############
 PrintingDialog.titleProgressText=Drucken
 PrintingDialog.titleAbortingText=Drucken (Abbruch)
 
-PrintingDialog.contentInitialText=Druckvorgang l\u00e4uft...
+PrintingDialog.contentInitialText=Druckvorgang l\u00E4uft...
 
 # The following string will be formatted by a MessageFormat
 # and {0} will be replaced by page number being printed
@@ -169,57 +169,57 @@
 PrintingDialog.contentAbortingText=Druckvorgang wird abgebrochen...
 
 PrintingDialog.abortButtonText=Abbrechen
-PrintingDialog.abortButtonMnemonic=66
-PrintingDialog.abortButtonDisplayedMnemonicIndex=1
+PrintingDialog.abortButtonMnemonic=65
+PrintingDialog.abortButtonDisplayedMnemonicIndex=0
 PrintingDialog.abortButtonToolTipText=Druckvorgang abbrechen
 
 ############ Internal Frame Strings ############
 InternalFrame.iconButtonToolTip=Minimieren
 InternalFrame.maxButtonToolTip=Maximieren
 InternalFrame.restoreButtonToolTip=Wiederherstellen
-InternalFrame.closeButtonToolTip=Schlie\u00dfen
+InternalFrame.closeButtonToolTip=Schlie\u00DFen
 
 ############ Internal Frame Title Pane Strings ############
 InternalFrameTitlePane.restoreButtonText=Wiederherstellen
 InternalFrameTitlePane.moveButtonText=Verschieben
-InternalFrameTitlePane.sizeButtonText=Gr\u00f6\u00dfe
+InternalFrameTitlePane.sizeButtonText=Gr\u00F6\u00DFe
 InternalFrameTitlePane.minimizeButtonText=Minimieren
 InternalFrameTitlePane.maximizeButtonText=Maximieren
-InternalFrameTitlePane.closeButtonText=Schlie\u00dfen
+InternalFrameTitlePane.closeButtonText=Schlie\u00DFen
 
 ############ Text strings #############
 # Used for html forms
-FormView.submitButtonText=Abfrage senden
-FormView.resetButtonText=Zur\u00fccksetzen
+FormView.submitButtonText=Abfrage weiterleiten
+FormView.resetButtonText=Zur\u00FCcksetzen
 FormView.browseFileButtonText=Durchsuchen...
 
 ############ Abstract Document Strings ############
-AbstractDocument.styleChangeText=Formatvorlagen\u00e4nderung
-AbstractDocument.additionText=Hinzuf\u00fcgen
-AbstractDocument.deletionText=L\u00f6schen
-AbstractDocument.undoText=R\u00fcckg\u00e4ngig
+AbstractDocument.styleChangeText=Formatvorlagen\u00E4nderung
+AbstractDocument.additionText=Hinzuf\u00FCgen
+AbstractDocument.deletionText=L\u00F6schen
+AbstractDocument.undoText=R\u00FCckg\u00E4ngig
 AbstractDocument.redoText=Wiederherstellen
 
 ############ Abstract Button Strings ############
 AbstractButton.clickText=Klicken
 
 ############ Abstract Undoable Edit Strings ############
-AbstractUndoableEdit.undoText=R\u00fcckg\u00e4ngig
+AbstractUndoableEdit.undoText=R\u00FCckg\u00E4ngig
 AbstractUndoableEdit.redoText=Wiederherstellen
 
 ############ Combo Box Strings ############
-ComboBox.togglePopupText=Popup umschalten
+ComboBox.togglePopupText=togglePopup
 
 ############ Progress Monitor Strings ############
 ProgressMonitor.progressText=Fortschritt...
 
 ############ Split Pane Strings ############
-SplitPane.leftButtonText=linke Taste
-SplitPane.rightButtonText=rechte Taste
+SplitPane.leftButtonText=linke Schaltfl\u00E4che
+SplitPane.rightButtonText=rechte Schaltfl\u00E4che
 # Used for Isindex
-IsindexView.prompt=Dieser Index kann durchsucht werden. Geben Sie ein Schlagwort ein:
+IsindexView.prompt=Dieser Index kann durchsucht werden. Geben Sie Schl\u00FCsselw\u00F6rter f\u00FCr die Suche ein:
 
 ############ InternalFrameTitlePane Strings ############
 InternalFrameTitlePane.iconifyButtonAccessibleName=Als Symbol darstellen
 InternalFrameTitlePane.maximizeButtonAccessibleName=Maximieren
-InternalFrameTitlePane.closeButtonAccessibleName=Schlie\u00dfen
+InternalFrameTitlePane.closeButtonAccessibleName=Schlie\u00DFen
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -45,30 +45,30 @@
 # @author Steve Wilson
 
 ############ FILE CHOOSER STRINGS #############
-FileChooser.fileDescriptionText=Archivo gen\u00e9rico
+FileChooser.fileDescriptionText=Archivo Gen\u00E9rico
 FileChooser.directoryDescriptionText=Directorio
 FileChooser.newFolderErrorText=Error al crear una nueva carpeta
 FileChooser.newFolderErrorSeparator= : 
 FileChooser.newFolderParentDoesntExistTitleText=No se ha podido crear la carpeta
-FileChooser.newFolderParentDoesntExistText=No se ha podido crear la carpeta.\n\nEl sistema no puede encontrar la ruta especificada.
-FileChooser.renameErrorTitleText=Error al cambiar de nombre el archivo o la carpeta
-FileChooser.renameErrorText=No se puede cambiar de nombre {0}
-FileChooser.renameErrorFileExistsText=No se puede cambiar de nombre {0}: Ya existe un archivo con el nombre que ha especificado. Especifique otro nombre de archivo. 
-FileChooser.acceptAllFileFilterText=Todos los archivos
+FileChooser.newFolderParentDoesntExistText=No se ha podido crear la carpeta.\n\nEl sistema no puede encontrar la ruta de acceso especificada.
+FileChooser.renameErrorTitleText=Error al cambiar el nombre del archivo o carpeta
+FileChooser.renameErrorText=No se puede cambiar el nombre de {0}
+FileChooser.renameErrorFileExistsText=No se puede cambiar el nombre de {0}: ya existe un archivo con el nombre especificado. Especifique otro nombre de archivo. 
+FileChooser.acceptAllFileFilterText=Todos los Archivos
 FileChooser.cancelButtonText=Cancelar
 FileChooser.cancelButtonMnemonic=67
 FileChooser.saveButtonText=Guardar
-FileChooser.saveButtonMnemonic=71
+FileChooser.saveButtonMnemonic=83
 FileChooser.openButtonText=Abrir
-FileChooser.openButtonMnemonic=65
+FileChooser.openButtonMnemonic=79
 FileChooser.saveDialogTitleText=Guardar
 FileChooser.openDialogTitleText=Abrir
 FileChooser.updateButtonText=Actualizar
-FileChooser.updateButtonMnemonic=84
+FileChooser.updateButtonMnemonic=85
 FileChooser.helpButtonText=Ayuda
-FileChooser.helpButtonMnemonic=89
+FileChooser.helpButtonMnemonic=72
 FileChooser.directoryOpenButtonText=Abrir
-FileChooser.directoryOpenButtonMnemonic=82
+FileChooser.directoryOpenButtonMnemonic=79
 
 # File Size Units
 FileChooser.fileSizeKiloBytes={0} KB
@@ -76,30 +76,30 @@
 FileChooser.fileSizeGigaBytes={0} GB
 
 # These strings are platform dependent not look and feel dependent.
-FileChooser.win32.newFolder=Carpeta nueva
-FileChooser.win32.newFolder.subsequent=Carpeta nueva ({0})
-FileChooser.other.newFolder=Carpeta nueva
-FileChooser.other.newFolder.subsequent=Carpeta nueva.{0}
+FileChooser.win32.newFolder=Nueva Carpeta
+FileChooser.win32.newFolder.subsequent=Nueva Carpeta ({0})
+FileChooser.other.newFolder=Nueva Carpeta
+FileChooser.other.newFolder.subsequent=Nueva Carpeta.{0}
 
 
 ## file chooser tooltips ###
-FileChooser.cancelButtonToolTipText=Cuadro de di\u00e1logo para cancelar elector de archivo
+FileChooser.cancelButtonToolTipText=Cuadro de di\u00E1logo para abortar el selector de archivos
 FileChooser.saveButtonToolTipText=Guardar archivo seleccionado
 FileChooser.openButtonToolTipText=Abrir archivo seleccionado
 FileChooser.updateButtonToolTipText=Actualizar lista de directorios
-FileChooser.helpButtonToolTipText=Ayuda elector de archivos
+FileChooser.helpButtonToolTipText=Ayuda del Selector de Archivos
 FileChooser.directoryOpenButtonToolTipText=Abrir directorio seleccionado
 
 ############ COLOR CHOOSER STRINGS #############
-ColorChooser.previewText=Vista previa
+ColorChooser.previewText=Presentaci\u00F3n Preliminar
 ColorChooser.okText=Aceptar
 ColorChooser.cancelText=Cancelar
 ColorChooser.resetText=Restablecer
 # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic
 ColorChooser.resetMnemonic=82
-ColorChooser.sampleText=Texto de ejemplo  Texto de ejemplo
+ColorChooser.sampleText=Texto de Ejemplo  Texto de Ejemplo
 ColorChooser.swatchesNameText=Muestras
-ColorChooser.swatchesMnemonic=77
+ColorChooser.swatchesMnemonic=83
 ColorChooser.swatchesRecentText=Reciente:
 # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX
 # constant, and an index into the text to render the mnemonic as. The
@@ -107,26 +107,26 @@
 # xxxDisplayedMnemonicIndex.
 ColorChooser.hsvNameText=HSV
 ColorChooser.hsvMnemonic=72
-ColorChooser.hsvHueText=Matriz
-ColorChooser.hsvSaturationText=Saturaci\u00f3n
+ColorChooser.hsvHueText=Matiz
+ColorChooser.hsvSaturationText=Saturaci\u00F3n
 ColorChooser.hsvValueText=Valor
 ColorChooser.hsvTransparencyText=Transparencia
 ColorChooser.hslNameText=HSL
 ColorChooser.hslMnemonic=76
-ColorChooser.hslHueText=Matriz
-ColorChooser.hslSaturationText=Saturaci\u00f3n
-ColorChooser.hslLightnessText=Brillo
+ColorChooser.hslHueText=Matiz
+ColorChooser.hslSaturationText=Saturaci\u00F3n
+ColorChooser.hslLightnessText=Iluminaci\u00F3n
 ColorChooser.hslTransparencyText=Transparencia
 ColorChooser.rgbNameText=RGB
 ColorChooser.rgbMnemonic=71
 ColorChooser.rgbRedText=Rojo
-ColorChooser.rgbRedMnemonic=74
+ColorChooser.rgbRedMnemonic=68
 ColorChooser.rgbGreenText=Verde
-ColorChooser.rgbGreenMnemonic=86
+ColorChooser.rgbGreenMnemonic=78
 ColorChooser.rgbBlueText=Azul
-ColorChooser.rgbBlueMnemonic=76
-ColorChooser.rgbAlphaText=Alpha
-ColorChooser.rgbHexCodeText=C\u00f3digo de color
+ColorChooser.rgbBlueMnemonic=66
+ColorChooser.rgbAlphaText=Alfa
+ColorChooser.rgbHexCodeText=C\u00F3digo de Color
 ColorChooser.rgbHexCodeMnemonic=67
 ColorChooser.cmykNameText=CMYK
 ColorChooser.cmykMnemonic=77
@@ -134,21 +134,21 @@
 ColorChooser.cmykMagentaText=Magenta
 ColorChooser.cmykYellowText=Amarillo
 ColorChooser.cmykBlackText=Negro
-ColorChooser.cmykAlphaText=Alpha
+ColorChooser.cmykAlphaText=Alfa
 
 ############ OPTION PANE STRINGS #############
 # Mnemonic keys correspond to KeyEvent.VK_XXX constant
 # We only define mnemonics for YES/NO, but for completeness you can
 # define mnemonics for any of the buttons.
-OptionPane.yesButtonText=S\u00ed
-OptionPane.yesButtonMnemonic=83
+OptionPane.yesButtonText=S\u00ED
+OptionPane.yesButtonMnemonic=89
 OptionPane.noButtonText=No
 OptionPane.noButtonMnemonic=78
 OptionPane.okButtonText=Aceptar
 OptionPane.okButtonMnemonic=0
 OptionPane.cancelButtonText=Cancelar
 OptionPane.cancelButtonMnemonic=0
-OptionPane.titleText=Seleccionar una opci\u00f3n
+OptionPane.titleText=Seleccionar una Opci\u00F3n
 # Title for the dialog for the showInputDialog methods. Only used if
 # the developer uses one of the variants that doesn't take a title.
 OptionPane.inputDialogTitle=Entrada
@@ -157,21 +157,21 @@
 OptionPane.messageDialogTitle=Mensaje
 
 ############ Printing Dialog Strings ############
-PrintingDialog.titleProgressText=Impresi\u00f3n
-PrintingDialog.titleAbortingText=Impresi\u00f3n (cancelaci\u00f3n)
+PrintingDialog.titleProgressText=Impresi\u00F3n
+PrintingDialog.titleAbortingText=Impresi\u00F3n (Abortando)
 
-PrintingDialog.contentInitialText=Impresi\u00f3n en curso...
+PrintingDialog.contentInitialText=Impresi\u00F3n en curso...
 
 # The following string will be formatted by a MessageFormat
 # and {0} will be replaced by page number being printed
-PrintingDialog.contentProgressText=P\u00e1gina impresa {0}...
+PrintingDialog.contentProgressText=P\u00E1gina impresa {0}...
 
-PrintingDialog.contentAbortingText=Cancelando la impresi\u00f3n...
+PrintingDialog.contentAbortingText=Abortando la impresi\u00F3n...
 
-PrintingDialog.abortButtonText=Cancelar
-PrintingDialog.abortButtonMnemonic=67
+PrintingDialog.abortButtonText=Abortar
+PrintingDialog.abortButtonMnemonic=65
 PrintingDialog.abortButtonDisplayedMnemonicIndex=0
-PrintingDialog.abortButtonToolTipText=Cancelar la impresi\u00f3n
+PrintingDialog.abortButtonToolTipText=Abortar Impresi\u00F3n
 
 ############ Internal Frame Strings ############
 InternalFrame.iconButtonToolTip=Minimizar
@@ -182,21 +182,21 @@
 ############ Internal Frame Title Pane Strings ############
 InternalFrameTitlePane.restoreButtonText=Restaurar
 InternalFrameTitlePane.moveButtonText=Mover
-InternalFrameTitlePane.sizeButtonText=Tama\u00f1o
+InternalFrameTitlePane.sizeButtonText=Tama\u00F1o
 InternalFrameTitlePane.minimizeButtonText=Minimizar
 InternalFrameTitlePane.maximizeButtonText=Maximizar
 InternalFrameTitlePane.closeButtonText=Cerrar
 
 ############ Text strings #############
 # Used for html forms
-FormView.submitButtonText=Enviar consulta
+FormView.submitButtonText=Enviar Consulta
 FormView.resetButtonText=Restablecer
 FormView.browseFileButtonText=Examinar...
 
 ############ Abstract Document Strings ############
 AbstractDocument.styleChangeText=cambio de estilo
-AbstractDocument.additionText=adici\u00f3n
-AbstractDocument.deletionText=supresi\u00f3n
+AbstractDocument.additionText=agregaci\u00F3n
+AbstractDocument.deletionText=supresi\u00F3n
 AbstractDocument.undoText=Deshacer
 AbstractDocument.redoText=Rehacer
 
@@ -214,12 +214,12 @@
 ProgressMonitor.progressText=Progreso...
 
 ############ Split Pane Strings ############
-SplitPane.leftButtonText=bot\u00f3n izquierdo
-SplitPane.rightButtonText=bot\u00f3n derecho
+SplitPane.leftButtonText=bot\u00F3n izquierdo
+SplitPane.rightButtonText=bot\u00F3n derecho
 # Used for Isindex
-IsindexView.prompt=En este \u00edndice se pueden efectuar b\u00fasquedas. Escriba las palabras clave de b\u00fasqueda:
+IsindexView.prompt=En este \u00EDndice se pueden efectuar b\u00FAsquedas. Escriba las palabras clave de b\u00FAsqueda:
 
 ############ InternalFrameTitlePane Strings ############
-InternalFrameTitlePane.iconifyButtonAccessibleName=Convertir en icono
+InternalFrameTitlePane.iconifyButtonAccessibleName=Convertir en Icono
 InternalFrameTitlePane.maximizeButtonAccessibleName=Maximizar
 InternalFrameTitlePane.closeButtonAccessibleName=Cerrar
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -45,90 +45,90 @@
 # @author Steve Wilson
 
 ############ FILE CHOOSER STRINGS #############
-FileChooser.fileDescriptionText=Fichier g\u00e9n\u00e9rique
-FileChooser.directoryDescriptionText=R\u00e9pertoire
-FileChooser.newFolderErrorText=Erreur lors de la cr\u00e9ation du nouveau dossier
+FileChooser.fileDescriptionText=Fichier g\u00E9n\u00E9rique
+FileChooser.directoryDescriptionText=R\u00E9pertoire
+FileChooser.newFolderErrorText=Erreur lors de la cr\u00E9ation du dossier
 FileChooser.newFolderErrorSeparator= : 
-FileChooser.newFolderParentDoesntExistTitleText=Impossible de cr\u00e9er le dossier
-FileChooser.newFolderParentDoesntExistText=Impossible de cr\u00e9er le dossier.\n\nLe syst\u00e8me ne trouve pas le chemin sp\u00e9cifi\u00e9.
-FileChooser.renameErrorTitleText=Erreur lors de la modification du nom du fichier ou du dossier
+FileChooser.newFolderParentDoesntExistTitleText=Impossible de cr\u00E9er le dossier
+FileChooser.newFolderParentDoesntExistText=Impossible de cr\u00E9er le dossier.\n\nLe syst\u00E8me ne parvient pas \u00E0 trouver le chemin indiqu\u00E9.
+FileChooser.renameErrorTitleText=Erreur lors du changement de nom du fichier ou du dossier
 FileChooser.renameErrorText=Impossible de renommer {0}
-FileChooser.renameErrorFileExistsText=Impossible de renommer {0}\u00a0: un fichier portant ce nom existe d\u00e9j\u00e0. Choisissez un nom diff\u00e9rent. 
+FileChooser.renameErrorFileExistsText=Impossible de renommer {0} : il existe d\u00E9j\u00E0 un fichier portant le nom indiqu\u00E9. Indiquez-en un autre. 
 FileChooser.acceptAllFileFilterText=Tous les fichiers
 FileChooser.cancelButtonText=Annuler
-FileChooser.cancelButtonMnemonic=65
+FileChooser.cancelButtonMnemonic=67
 FileChooser.saveButtonText=Enregistrer
-FileChooser.saveButtonMnemonic=69
+FileChooser.saveButtonMnemonic=83
 FileChooser.openButtonText=Ouvrir
 FileChooser.openButtonMnemonic=79
 FileChooser.saveDialogTitleText=Enregistrer
 FileChooser.openDialogTitleText=Ouvrir
-FileChooser.updateButtonText=Mise \u00e0 jour
-FileChooser.updateButtonMnemonic=77
+FileChooser.updateButtonText=Mettre \u00E0 jour
+FileChooser.updateButtonMnemonic=85
 FileChooser.helpButtonText=Aide
-FileChooser.helpButtonMnemonic=68
+FileChooser.helpButtonMnemonic=72
 FileChooser.directoryOpenButtonText=Ouvrir
 FileChooser.directoryOpenButtonMnemonic=79
 
 # File Size Units
-FileChooser.fileSizeKiloBytes={0} Ko
-FileChooser.fileSizeMegaBytes={0} Mo
-FileChooser.fileSizeGigaBytes={0} Go
+FileChooser.fileSizeKiloBytes={0} KB
+FileChooser.fileSizeMegaBytes={0} MB
+FileChooser.fileSizeGigaBytes={0} GB
 
 # These strings are platform dependent not look and feel dependent.
 FileChooser.win32.newFolder=Nouveau dossier
 FileChooser.win32.newFolder.subsequent=Nouveau dossier ({0})
-FileChooser.other.newFolder=Nouveau dossier
-FileChooser.other.newFolder.subsequent=Nouveau dossier.{0}
+FileChooser.other.newFolder=NewFolder
+FileChooser.other.newFolder.subsequent=NewFolder.{0}
 
 
 ## file chooser tooltips ###
-FileChooser.cancelButtonToolTipText=Ferme la bo\u00eete de dialogue du s\u00e9lecteur de fichiers
-FileChooser.saveButtonToolTipText=Enregistre le fichier s\u00e9lectionn\u00e9
-FileChooser.openButtonToolTipText=Ouvre le fichier s\u00e9lectionn\u00e9
-FileChooser.updateButtonToolTipText=Met \u00e0 jour la liste des r\u00e9pertoires
-FileChooser.helpButtonToolTipText=Aide sur le s\u00e9lecteur de fichiers
-FileChooser.directoryOpenButtonToolTipText=Ouvrir le r\u00e9pertoire s\u00e9lectionn\u00e9
+FileChooser.cancelButtonToolTipText=Ferme la bo\u00EEte de dialogue du s\u00E9lecteur de fichiers
+FileChooser.saveButtonToolTipText=Enregistre le fichier s\u00E9lectionn\u00E9
+FileChooser.openButtonToolTipText=Ouvre le fichier s\u00E9lectionn\u00E9
+FileChooser.updateButtonToolTipText=Met \u00E0 jour la liste des r\u00E9pertoires
+FileChooser.helpButtonToolTipText=Aide du s\u00E9lecteur de fichiers
+FileChooser.directoryOpenButtonToolTipText=Ouvre le r\u00E9pertoire s\u00E9lectionn\u00E9
 
 ############ COLOR CHOOSER STRINGS #############
-ColorChooser.previewText=Aper\u00e7u
+ColorChooser.previewText=Aper\u00E7u
 ColorChooser.okText=OK
 ColorChooser.cancelText=Annuler
-ColorChooser.resetText=Restaurer
+ColorChooser.resetText=R\u00E9initialiser
 # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic
 ColorChooser.resetMnemonic=82
 ColorChooser.sampleText=Echantillon de texte  Echantillon de texte
 ColorChooser.swatchesNameText=Echantillons
-ColorChooser.swatchesMnemonic=69
+ColorChooser.swatchesMnemonic=83
 ColorChooser.swatchesRecentText=Dernier :
 # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX
 # constant, and an index into the text to render the mnemonic as. The
 # mnemonic is xxxMnemonic and the index of the character to underline is
 # xxxDisplayedMnemonicIndex.
-ColorChooser.hsvNameText=HSV
+ColorChooser.hsvNameText=TSV
 ColorChooser.hsvMnemonic=72
 ColorChooser.hsvHueText=Teinte
 ColorChooser.hsvSaturationText=Saturation
 ColorChooser.hsvValueText=Valeur
 ColorChooser.hsvTransparencyText=Transparence
-ColorChooser.hslNameText=HSL
+ColorChooser.hslNameText=TSL
 ColorChooser.hslMnemonic=76
 ColorChooser.hslHueText=Teinte
 ColorChooser.hslSaturationText=Saturation
-ColorChooser.hslLightnessText=Clart\u00e9
+ColorChooser.hslLightnessText=Lumi\u00E8re
 ColorChooser.hslTransparencyText=Transparence
 ColorChooser.rgbNameText=RVB
-ColorChooser.rgbMnemonic=86
+ColorChooser.rgbMnemonic=71
 ColorChooser.rgbRedText=Rouge
-ColorChooser.rgbRedMnemonic=71
+ColorChooser.rgbRedMnemonic=68
 ColorChooser.rgbGreenText=Vert
-ColorChooser.rgbGreenMnemonic=84
+ColorChooser.rgbGreenMnemonic=78
 ColorChooser.rgbBlueText=Bleu
 ColorChooser.rgbBlueMnemonic=66
 ColorChooser.rgbAlphaText=Alpha
 ColorChooser.rgbHexCodeText=Code couleur
 ColorChooser.rgbHexCodeMnemonic=67
-ColorChooser.cmykNameText=CMYK
+ColorChooser.cmykNameText=CMJN
 ColorChooser.cmykMnemonic=77
 ColorChooser.cmykCyanText=Cyan
 ColorChooser.cmykMagentaText=Magenta
@@ -141,30 +141,30 @@
 # We only define mnemonics for YES/NO, but for completeness you can
 # define mnemonics for any of the buttons.
 OptionPane.yesButtonText=Oui
-OptionPane.yesButtonMnemonic=79
+OptionPane.yesButtonMnemonic=89
 OptionPane.noButtonText=Non
 OptionPane.noButtonMnemonic=78
 OptionPane.okButtonText=OK
 OptionPane.okButtonMnemonic=0
 OptionPane.cancelButtonText=Annuler
 OptionPane.cancelButtonMnemonic=0
-OptionPane.titleText=S\u00e9lectionnez une option
+OptionPane.titleText=S\u00E9lectionner une option
 # Title for the dialog for the showInputDialog methods. Only used if
 # the developer uses one of the variants that doesn't take a title.
-OptionPane.inputDialogTitle=Entr\u00e9e
+OptionPane.inputDialogTitle=Entr\u00E9e
 # Title for the dialog for the showMessageDialog methods. Only used if
 # the developer uses one of the variants that doesn't take a title.
 OptionPane.messageDialogTitle=Message
 
 ############ Printing Dialog Strings ############
 PrintingDialog.titleProgressText=Impression
-PrintingDialog.titleAbortingText=Impression (Abandon)
+PrintingDialog.titleAbortingText=Impression (abandon)
 
 PrintingDialog.contentInitialText=Impression en cours...
 
 # The following string will be formatted by a MessageFormat
 # and {0} will be replaced by page number being printed
-PrintingDialog.contentProgressText=Page imprim\u00e9e {0}...
+PrintingDialog.contentProgressText=Page {0} imprim\u00E9e...
 
 PrintingDialog.contentAbortingText=Abandon de l'impression...
 
@@ -174,38 +174,38 @@
 PrintingDialog.abortButtonToolTipText=Abandonner l'impression
 
 ############ Internal Frame Strings ############
-InternalFrame.iconButtonToolTip=R\u00e9duire
+InternalFrame.iconButtonToolTip=R\u00E9duire
 InternalFrame.maxButtonToolTip=Agrandir
 InternalFrame.restoreButtonToolTip=Restaurer
 InternalFrame.closeButtonToolTip=Fermer
 
 ############ Internal Frame Title Pane Strings ############
 InternalFrameTitlePane.restoreButtonText=Restaurer
-InternalFrameTitlePane.moveButtonText=D\u00e9placer
+InternalFrameTitlePane.moveButtonText=D\u00E9placer
 InternalFrameTitlePane.sizeButtonText=Taille
-InternalFrameTitlePane.minimizeButtonText=R\u00e9duire
+InternalFrameTitlePane.minimizeButtonText=R\u00E9duire
 InternalFrameTitlePane.maximizeButtonText=Agrandir
 InternalFrameTitlePane.closeButtonText=Fermer
 
 ############ Text strings #############
 # Used for html forms
-FormView.submitButtonText=Soumettre la requ\u00eate
-FormView.resetButtonText=Restaurer
+FormView.submitButtonText=Soumettre la requ\u00EAte
+FormView.resetButtonText=R\u00E9initialiser
 FormView.browseFileButtonText=Parcourir...
 
 ############ Abstract Document Strings ############
 AbstractDocument.styleChangeText=modification de style
 AbstractDocument.additionText=ajout
 AbstractDocument.deletionText=suppression
-AbstractDocument.undoText=D\u00e9faire
-AbstractDocument.redoText=Refaire
+AbstractDocument.undoText=Annuler
+AbstractDocument.redoText=R\u00E9tablir
 
 ############ Abstract Button Strings ############
-AbstractButton.clickText=cliquez sur
+AbstractButton.clickText=cliquer
 
 ############ Abstract Undoable Edit Strings ############
-AbstractUndoableEdit.undoText=D\u00e9faire
-AbstractUndoableEdit.redoText=Refaire
+AbstractUndoableEdit.undoText=Annuler
+AbstractUndoableEdit.redoText=R\u00E9tablir
 
 ############ Combo Box Strings ############
 ComboBox.togglePopupText=togglePopup
@@ -217,9 +217,9 @@
 SplitPane.leftButtonText=bouton gauche
 SplitPane.rightButtonText=bouton droit
 # Used for Isindex
-IsindexView.prompt=Ceci est un index de recherche.  Tapez des mots-cl\u00e9s pour la recherche :
+IsindexView.prompt=Ceci est un index de recherche. Tapez des mots-cl\u00E9s pour la recherche :
 
 ############ InternalFrameTitlePane Strings ############
-InternalFrameTitlePane.iconifyButtonAccessibleName=R\u00e9duire
+InternalFrameTitlePane.iconifyButtonAccessibleName=R\u00E9duire
 InternalFrameTitlePane.maximizeButtonAccessibleName=Agrandir
 InternalFrameTitlePane.closeButtonAccessibleName=Fermer
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_it.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_it.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -50,25 +50,25 @@
 FileChooser.newFolderErrorText=Errore durante la creazione della nuova cartella
 FileChooser.newFolderErrorSeparator= : 
 FileChooser.newFolderParentDoesntExistTitleText=Impossibile creare la cartella
-FileChooser.newFolderParentDoesntExistText=Impossibile creare  la cartella.\n\nPercorso specificato non trovato nel sistema.
-FileChooser.renameErrorTitleText=Errore di ridenominazione del file o della cartella
+FileChooser.newFolderParentDoesntExistText=Impossibile creare la cartella.\n\nIl sistema non \u00E8 in grado di trovare il percorso specificato.
+FileChooser.renameErrorTitleText=Errore durante la ridenominazione del file o della cartella
 FileChooser.renameErrorText=Impossibile rinominare {0}
-FileChooser.renameErrorFileExistsText=Impossibile rinominare {0}: esiste gi\u00e0 un file con il nome specificato. Specificare un nome file alternativo. 
+FileChooser.renameErrorFileExistsText=Impossibile rinominare {0}: esiste gi\u00E0 un file con il nome specificato. Specificare un altro nome. 
 FileChooser.acceptAllFileFilterText=Tutti i file
 FileChooser.cancelButtonText=Annulla
-FileChooser.cancelButtonMnemonic=65
+FileChooser.cancelButtonMnemonic=67
 FileChooser.saveButtonText=Salva
 FileChooser.saveButtonMnemonic=83
 FileChooser.openButtonText=Apri
-FileChooser.openButtonMnemonic=80
+FileChooser.openButtonMnemonic=79
 FileChooser.saveDialogTitleText=Salva
 FileChooser.openDialogTitleText=Apri
 FileChooser.updateButtonText=Aggiorna
-FileChooser.updateButtonMnemonic=71
+FileChooser.updateButtonMnemonic=85
 FileChooser.helpButtonText=?
-FileChooser.helpButtonMnemonic=63
+FileChooser.helpButtonMnemonic=72
 FileChooser.directoryOpenButtonText=Apri
-FileChooser.directoryOpenButtonMnemonic=82
+FileChooser.directoryOpenButtonMnemonic=79
 
 # File Size Units
 FileChooser.fileSizeKiloBytes={0} KB
@@ -78,28 +78,28 @@
 # These strings are platform dependent not look and feel dependent.
 FileChooser.win32.newFolder=Nuova cartella
 FileChooser.win32.newFolder.subsequent=Nuova cartella ({0})
-FileChooser.other.newFolder=Nuova cartella
-FileChooser.other.newFolder.subsequent=Nuova cartella.{0}
+FileChooser.other.newFolder=NewFolder
+FileChooser.other.newFolder.subsequent=NewFolder.{0}
 
 
 ## file chooser tooltips ###
-FileChooser.cancelButtonToolTipText=Finestra di dialogo Interrompi selezione file
-FileChooser.saveButtonToolTipText=Salva file selezionato
-FileChooser.openButtonToolTipText=Apri file selezionato
-FileChooser.updateButtonToolTipText=Aggiorna elenco directory
-FileChooser.helpButtonToolTipText=Guida di Selezione file
-FileChooser.directoryOpenButtonToolTipText=Apri directory selezionata
+FileChooser.cancelButtonToolTipText=Chiude la finestra di dialogo di selezione file
+FileChooser.saveButtonToolTipText=Salva il file selezionato
+FileChooser.openButtonToolTipText=Apre il file selezionato
+FileChooser.updateButtonToolTipText=Aggiorna la lista directory
+FileChooser.helpButtonToolTipText=Guida FileChooser
+FileChooser.directoryOpenButtonToolTipText=Apre la directory selezionata
 
 ############ COLOR CHOOSER STRINGS #############
 ColorChooser.previewText=Anteprima
 ColorChooser.okText=OK
 ColorChooser.cancelText=Annulla
-ColorChooser.resetText=Ripristina
+ColorChooser.resetText=Reimposta
 # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic
 ColorChooser.resetMnemonic=82
 ColorChooser.sampleText=Testo di prova          Testo di prova
 ColorChooser.swatchesNameText=Colori campione
-ColorChooser.swatchesMnemonic=67
+ColorChooser.swatchesMnemonic=83
 ColorChooser.swatchesRecentText=Recenti:
 # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX
 # constant, and an index into the text to render the mnemonic as. The
@@ -107,26 +107,26 @@
 # xxxDisplayedMnemonicIndex.
 ColorChooser.hsvNameText=HSV
 ColorChooser.hsvMnemonic=72
-ColorChooser.hsvHueText=Tonalit\u00e0
+ColorChooser.hsvHueText=Tonalit\u00E0
 ColorChooser.hsvSaturationText=Saturazione
 ColorChooser.hsvValueText=Valore
 ColorChooser.hsvTransparencyText=Trasparenza
 ColorChooser.hslNameText=HSL
 ColorChooser.hslMnemonic=76
-ColorChooser.hslHueText=Tonalit\u00e0
+ColorChooser.hslHueText=Tonalit\u00E0
 ColorChooser.hslSaturationText=Saturazione
-ColorChooser.hslLightnessText=Luminosit\u00e0
+ColorChooser.hslLightnessText=Luminosit\u00E0
 ColorChooser.hslTransparencyText=Trasparenza
 ColorChooser.rgbNameText=RGB
 ColorChooser.rgbMnemonic=71
 ColorChooser.rgbRedText=Rosso
-ColorChooser.rgbRedMnemonic=79
+ColorChooser.rgbRedMnemonic=68
 ColorChooser.rgbGreenText=Verde
-ColorChooser.rgbGreenMnemonic=69
+ColorChooser.rgbGreenMnemonic=78
 ColorChooser.rgbBlueText=Blu
 ColorChooser.rgbBlueMnemonic=66
 ColorChooser.rgbAlphaText=Alfa
-ColorChooser.rgbHexCodeText=Codice colore
+ColorChooser.rgbHexCodeText=Codice colori
 ColorChooser.rgbHexCodeMnemonic=67
 ColorChooser.cmykNameText=CMYK
 ColorChooser.cmykMnemonic=77
@@ -140,14 +140,14 @@
 # Mnemonic keys correspond to KeyEvent.VK_XXX constant
 # We only define mnemonics for YES/NO, but for completeness you can
 # define mnemonics for any of the buttons.
-OptionPane.yesButtonText=S\u00ec
-OptionPane.yesButtonMnemonic=83
+OptionPane.yesButtonText=S\u00EC
+OptionPane.yesButtonMnemonic=89
 OptionPane.noButtonText=No
 OptionPane.noButtonMnemonic=78
 OptionPane.okButtonText=OK
-OptionPane.okButtonMnemonic=79
+OptionPane.okButtonMnemonic=0
 OptionPane.cancelButtonText=Annulla
-OptionPane.cancelButtonMnemonic=65
+OptionPane.cancelButtonMnemonic=0
 OptionPane.titleText=Selezionare una opzione
 # Title for the dialog for the showInputDialog methods. Only used if
 # the developer uses one of the variants that doesn't take a title.
@@ -169,7 +169,7 @@
 PrintingDialog.contentAbortingText=Interruzione della stampa...
 
 PrintingDialog.abortButtonText=Interrompi
-PrintingDialog.abortButtonMnemonic=73
+PrintingDialog.abortButtonMnemonic=65
 PrintingDialog.abortButtonDisplayedMnemonicIndex=0
 PrintingDialog.abortButtonToolTipText=Interrompi la stampa
 
@@ -189,12 +189,12 @@
 
 ############ Text strings #############
 # Used for html forms
-FormView.submitButtonText=Invia query
-FormView.resetButtonText=Ripristina
+FormView.submitButtonText=Sottometti query
+FormView.resetButtonText=Reimposta
 FormView.browseFileButtonText=Sfoglia...
 
 ############ Abstract Document Strings ############
-AbstractDocument.styleChangeText=cambiamento di stile
+AbstractDocument.styleChangeText=modifica di stile
 AbstractDocument.additionText=aggiunta
 AbstractDocument.deletionText=eliminazione
 AbstractDocument.undoText=Annulla
@@ -217,7 +217,7 @@
 SplitPane.leftButtonText=tasto sinistro
 SplitPane.rightButtonText=tasto destro
 # Used for Isindex
-IsindexView.prompt=Questo \u00e8 un indice di ricerca. Immettere le parole chiave:
+IsindexView.prompt=Questo \u00E8 un indice di ricerca. Immettere le parole chiave:
 
 ############ InternalFrameTitlePane Strings ############
 InternalFrameTitlePane.iconifyButtonAccessibleName=Riduci a icona
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ja.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ja.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -45,181 +45,181 @@
 # @author Steve Wilson
 
 ############ FILE CHOOSER STRINGS #############
-FileChooser.fileDescriptionText=\u6c4e\u7528\u30d5\u30a1\u30a4\u30eb
-FileChooser.directoryDescriptionText=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea
-FileChooser.newFolderErrorText=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0\u306e\u4f5c\u6210\u306b\u5931\u6557
+FileChooser.fileDescriptionText=\u6C4E\u7528\u30D5\u30A1\u30A4\u30EB
+FileChooser.directoryDescriptionText=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA
+FileChooser.newFolderErrorText=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0\u306E\u4F5C\u6210\u30A8\u30E9\u30FC
 FileChooser.newFolderErrorSeparator= : 
-FileChooser.newFolderParentDoesntExistTitleText=\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093
-FileChooser.newFolderParentDoesntExistText=\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002\n\n\u6307\u5b9a\u3055\u308c\u305f\u30d1\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
-FileChooser.renameErrorTitleText=\u30d5\u30a1\u30a4\u30eb\u307e\u305f\u306f\u30d5\u30a9\u30eb\u30c0\u306e\u540d\u524d\u5909\u66f4\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002
-FileChooser.renameErrorText={0} \u306e\u540d\u524d\u3092\u5909\u66f4\u3067\u304d\u307e\u305b\u3093\u3002
-FileChooser.renameErrorFileExistsText={0} \u306e\u540d\u524d\u3092\u5909\u66f4\u3067\u304d\u307e\u305b\u3093: \u6307\u5b9a\u3055\u308c\u305f\u540d\u524d\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u3059\u3067\u306b\u5b58\u5728\u3057\u3066\u3044\u307e\u3059\u3002\u5225\u306e\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 
-FileChooser.acceptAllFileFilterText=\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb
-FileChooser.cancelButtonText=\u53d6\u6d88\u3057
+FileChooser.newFolderParentDoesntExistTitleText=\u30D5\u30A9\u30EB\u30C0\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093
+FileChooser.newFolderParentDoesntExistText=\u30D5\u30A9\u30EB\u30C0\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002\n\n\u6307\u5B9A\u3057\u305F\u30D1\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
+FileChooser.renameErrorTitleText=\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30D5\u30A9\u30EB\u30C0\u306E\u540D\u524D\u5909\u66F4\u30A8\u30E9\u30FC
+FileChooser.renameErrorText={0}\u306E\u540D\u524D\u3092\u5909\u66F4\u3067\u304D\u307E\u305B\u3093
+FileChooser.renameErrorFileExistsText={0}\u306E\u540D\u524D\u3092\u5909\u66F4\u3067\u304D\u307E\u305B\u3093: \u6307\u5B9A\u3057\u305F\u540D\u524D\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059\u3002\u5225\u306E\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002 
+FileChooser.acceptAllFileFilterText=\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB
+FileChooser.cancelButtonText=\u53D6\u6D88
 FileChooser.cancelButtonMnemonic=67
-FileChooser.saveButtonText=\u4fdd\u5b58
+FileChooser.saveButtonText=\u4FDD\u5B58
 FileChooser.saveButtonMnemonic=83
-FileChooser.openButtonText=\u958b\u304f
+FileChooser.openButtonText=\u958B\u304F
 FileChooser.openButtonMnemonic=79
-FileChooser.saveDialogTitleText=\u4fdd\u5b58
-FileChooser.openDialogTitleText=\u958b\u304f
-FileChooser.updateButtonText=\u66f4\u65b0(U)
+FileChooser.saveDialogTitleText=\u4FDD\u5B58
+FileChooser.openDialogTitleText=\u958B\u304F
+FileChooser.updateButtonText=\u66F4\u65B0
 FileChooser.updateButtonMnemonic=85
-FileChooser.helpButtonText=\u30d8\u30eb\u30d7(H)
+FileChooser.helpButtonText=\u30D8\u30EB\u30D7
 FileChooser.helpButtonMnemonic=72
-FileChooser.directoryOpenButtonText=\u958b\u304f
+FileChooser.directoryOpenButtonText=\u958B\u304F
 FileChooser.directoryOpenButtonMnemonic=79
 
 # File Size Units
-FileChooser.fileSizeKiloBytes={0} K \u30d0\u30a4\u30c8
-FileChooser.fileSizeMegaBytes={0} M \u30d0\u30a4\u30c8
-FileChooser.fileSizeGigaBytes={0} G \u30d0\u30a4\u30c8
+FileChooser.fileSizeKiloBytes={0} KB
+FileChooser.fileSizeMegaBytes={0} MB
+FileChooser.fileSizeGigaBytes={0} GB
 
 # These strings are platform dependent not look and feel dependent.
-FileChooser.win32.newFolder=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0
-FileChooser.win32.newFolder.subsequent=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0 ({0})
-FileChooser.other.newFolder=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0
-FileChooser.other.newFolder.subsequent=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0.{0}
+FileChooser.win32.newFolder=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0
+FileChooser.win32.newFolder.subsequent=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0({0})
+FileChooser.other.newFolder=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0
+FileChooser.other.newFolder.subsequent=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0.{0}
 
 
 ## file chooser tooltips ###
-FileChooser.cancelButtonToolTipText=\u30d5\u30a1\u30a4\u30eb\u30c1\u30e5\u30fc\u30b6\u30c0\u30a4\u30a2\u30ed\u30b0\u3092\u7d42\u4e86
-FileChooser.saveButtonToolTipText=\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58
-FileChooser.openButtonToolTipText=\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f
-FileChooser.updateButtonToolTipText=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u4e00\u89a7\u3092\u66f4\u65b0
-FileChooser.helpButtonToolTipText=\u30d5\u30a1\u30a4\u30eb\u30c1\u30e5\u30fc\u30b6\u30d8\u30eb\u30d7
-FileChooser.directoryOpenButtonToolTipText=\u9078\u629e\u3057\u305f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u958b\u304f
+FileChooser.cancelButtonToolTipText=\u30D5\u30A1\u30A4\u30EB\u30FB\u30C1\u30E5\u30FC\u30B6\u30FB\u30C0\u30A4\u30A2\u30ED\u30B0\u3092\u7D42\u4E86\u3057\u307E\u3059
+FileChooser.saveButtonToolTipText=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u4FDD\u5B58\u3057\u307E\u3059
+FileChooser.openButtonToolTipText=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304D\u307E\u3059
+FileChooser.updateButtonToolTipText=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30EA\u30B9\u30C8\u3092\u66F4\u65B0\u3057\u307E\u3059
+FileChooser.helpButtonToolTipText=FileChooser\u306E\u30D8\u30EB\u30D7\u3067\u3059
+FileChooser.directoryOpenButtonToolTipText=\u9078\u629E\u3057\u305F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u958B\u304D\u307E\u3059
 
 ############ COLOR CHOOSER STRINGS #############
-ColorChooser.previewText=\u30d7\u30ec\u30d3\u30e5\u30fc
-ColorChooser.okText=\u4e86\u89e3
-ColorChooser.cancelText=\u53d6\u6d88\u3057
-ColorChooser.resetText=\u30ea\u30bb\u30c3\u30c8(R)
+ColorChooser.previewText=\u30D7\u30EC\u30D3\u30E5\u30FC
+ColorChooser.okText=OK
+ColorChooser.cancelText=\u53D6\u6D88
+ColorChooser.resetText=\u30EA\u30BB\u30C3\u30C8
 # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic
 ColorChooser.resetMnemonic=82
-ColorChooser.sampleText=\u30b5\u30f3\u30d7\u30eb\u30c6\u30ad\u30b9\u30c8 \u30b5\u30f3\u30d7\u30eb\u30c6\u30ad\u30b9\u30c8
-ColorChooser.swatchesNameText=\u30b5\u30f3\u30d7\u30eb(S)
+ColorChooser.sampleText=\u30B5\u30F3\u30D7\u30EB\u30FB\u30C6\u30AD\u30B9\u30C8  \u30B5\u30F3\u30D7\u30EB\u30FB\u30C6\u30AD\u30B9\u30C8
+ColorChooser.swatchesNameText=\u30B5\u30F3\u30D7\u30EB
 ColorChooser.swatchesMnemonic=83
-ColorChooser.swatchesRecentText=\u6700\u65b0:
+ColorChooser.swatchesRecentText=\u6700\u65B0:
 # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX
 # constant, and an index into the text to render the mnemonic as. The
 # mnemonic is xxxMnemonic and the index of the character to underline is
 # xxxDisplayedMnemonicIndex.
 ColorChooser.hsvNameText=HSV
 ColorChooser.hsvMnemonic=72
-ColorChooser.hsvHueText=\u8272\u5408\u3044
-ColorChooser.hsvSaturationText=\u5f69\u5ea6
+ColorChooser.hsvHueText=\u8272\u76F8
+ColorChooser.hsvSaturationText=\u5F69\u5EA6
 ColorChooser.hsvValueText=\u5024
-ColorChooser.hsvTransparencyText=\u900f\u660e\u5ea6
+ColorChooser.hsvTransparencyText=\u900F\u660E\u5EA6
 ColorChooser.hslNameText=HSL
 ColorChooser.hslMnemonic=76
-ColorChooser.hslHueText=\u8272\u5408\u3044
-ColorChooser.hslSaturationText=\u5f69\u5ea6
-ColorChooser.hslLightnessText=\u660e\u5ea6
-ColorChooser.hslTransparencyText=\u900f\u660e\u5ea6
+ColorChooser.hslHueText=\u8272\u76F8
+ColorChooser.hslSaturationText=\u5F69\u5EA6
+ColorChooser.hslLightnessText=\u660E\u5EA6
+ColorChooser.hslTransparencyText=\u900F\u660E\u5EA6
 ColorChooser.rgbNameText=RGB
 ColorChooser.rgbMnemonic=71
-ColorChooser.rgbRedText=\u8d64(D)
+ColorChooser.rgbRedText=\u8D64
 ColorChooser.rgbRedMnemonic=68
-ColorChooser.rgbGreenText=\u7dd1(N)
+ColorChooser.rgbGreenText=\u7DD1
 ColorChooser.rgbGreenMnemonic=78
-ColorChooser.rgbBlueText=\u9752(B)
+ColorChooser.rgbBlueText=\u9752
 ColorChooser.rgbBlueMnemonic=66
-ColorChooser.rgbAlphaText=\u30a2\u30eb\u30d5\u30a1
-ColorChooser.rgbHexCodeText=\u8272\u30b3\u30fc\u30c9
+ColorChooser.rgbAlphaText=\u30A2\u30EB\u30D5\u30A1
+ColorChooser.rgbHexCodeText=\u8272\u30B3\u30FC\u30C9
 ColorChooser.rgbHexCodeMnemonic=67
 ColorChooser.cmykNameText=CMYK
 ColorChooser.cmykMnemonic=77
-ColorChooser.cmykCyanText=\u30b7\u30a2\u30f3
-ColorChooser.cmykMagentaText=\u30de\u30bc\u30f3\u30c0
-ColorChooser.cmykYellowText=\u9ec4
-ColorChooser.cmykBlackText=\u9ed2
-ColorChooser.cmykAlphaText=\u30a2\u30eb\u30d5\u30a1
+ColorChooser.cmykCyanText=\u30B7\u30A2\u30F3
+ColorChooser.cmykMagentaText=\u30DE\u30BC\u30F3\u30BF
+ColorChooser.cmykYellowText=\u9EC4
+ColorChooser.cmykBlackText=\u9ED2
+ColorChooser.cmykAlphaText=\u30A2\u30EB\u30D5\u30A1
 
 ############ OPTION PANE STRINGS #############
 # Mnemonic keys correspond to KeyEvent.VK_XXX constant
 # We only define mnemonics for YES/NO, but for completeness you can
 # define mnemonics for any of the buttons.
-OptionPane.yesButtonText=\u306f\u3044(Y)
+OptionPane.yesButtonText=\u306F\u3044
 OptionPane.yesButtonMnemonic=89
-OptionPane.noButtonText=\u3044\u3044\u3048(N)
+OptionPane.noButtonText=\u3044\u3044\u3048
 OptionPane.noButtonMnemonic=78
-OptionPane.okButtonText=\u4e86\u89e3
+OptionPane.okButtonText=OK
 OptionPane.okButtonMnemonic=0
-OptionPane.cancelButtonText=\u53d6\u6d88\u3057
+OptionPane.cancelButtonText=\u53D6\u6D88
 OptionPane.cancelButtonMnemonic=0
-OptionPane.titleText=\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u9078\u629e
+OptionPane.titleText=\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u9078\u629E
 # Title for the dialog for the showInputDialog methods. Only used if
 # the developer uses one of the variants that doesn't take a title.
-OptionPane.inputDialogTitle=\u5165\u529b
+OptionPane.inputDialogTitle=\u5165\u529B
 # Title for the dialog for the showMessageDialog methods. Only used if
 # the developer uses one of the variants that doesn't take a title.
-OptionPane.messageDialogTitle=\u30e1\u30c3\u30bb\u30fc\u30b8
+OptionPane.messageDialogTitle=\u30E1\u30C3\u30BB\u30FC\u30B8
 
 ############ Printing Dialog Strings ############
-PrintingDialog.titleProgressText=\u5370\u5237\u3057\u3066\u3044\u307e\u3059
-PrintingDialog.titleAbortingText=\u5370\u5237\u3092\u4e2d\u6b62\u3057\u3066\u3044\u307e\u3059
+PrintingDialog.titleProgressText=\u5370\u5237\u3057\u3066\u3044\u307E\u3059
+PrintingDialog.titleAbortingText=\u5370\u5237\u3092\u4E2D\u6B62\u3057\u3066\u3044\u307E\u3059
 
-PrintingDialog.contentInitialText=\u5370\u5237\u4e2d...
+PrintingDialog.contentInitialText=\u5370\u5237\u4E2D...
 
 # The following string will be formatted by a MessageFormat
 # and {0} will be replaced by page number being printed
-PrintingDialog.contentProgressText=\u30da\u30fc\u30b8 {0} \u3092\u5370\u5237\u3057\u307e\u3057\u305f...
+PrintingDialog.contentProgressText=\u30DA\u30FC\u30B8{0}\u3092\u5370\u5237\u3057\u307E\u3057\u305F...
 
-PrintingDialog.contentAbortingText=\u5370\u5237\u3092\u4e2d\u6b62\u3057\u3066\u3044\u307e\u3059...
+PrintingDialog.contentAbortingText=\u5370\u5237\u3092\u4E2D\u6B62\u3057\u3066\u3044\u307E\u3059...
 
-PrintingDialog.abortButtonText=\u4e2d\u6b62(A)
+PrintingDialog.abortButtonText=\u4E2D\u6B62
 PrintingDialog.abortButtonMnemonic=65
 PrintingDialog.abortButtonDisplayedMnemonicIndex=0
-PrintingDialog.abortButtonToolTipText=\u5370\u5237\u306e\u4e2d\u6b62
+PrintingDialog.abortButtonToolTipText=\u5370\u5237\u306E\u4E2D\u6B62
 
 ############ Internal Frame Strings ############
-InternalFrame.iconButtonToolTip=\u30a2\u30a4\u30b3\u30f3\u5316
-InternalFrame.maxButtonToolTip=\u6700\u5927\u8868\u793a
-InternalFrame.restoreButtonToolTip=\u5fa9\u5143
-InternalFrame.closeButtonToolTip=\u9589\u3058\u308b
+InternalFrame.iconButtonToolTip=\u6700\u5C0F\u5316
+InternalFrame.maxButtonToolTip=\u6700\u5927\u5316
+InternalFrame.restoreButtonToolTip=\u5FA9\u5143
+InternalFrame.closeButtonToolTip=\u9589\u3058\u308B
 
 ############ Internal Frame Title Pane Strings ############
-InternalFrameTitlePane.restoreButtonText=\u5fa9\u5143
-InternalFrameTitlePane.moveButtonText=\u79fb\u52d5
-InternalFrameTitlePane.sizeButtonText=\u30b5\u30a4\u30ba
-InternalFrameTitlePane.minimizeButtonText=\u6700\u5c0f\u5316
+InternalFrameTitlePane.restoreButtonText=\u5FA9\u5143
+InternalFrameTitlePane.moveButtonText=\u79FB\u52D5
+InternalFrameTitlePane.sizeButtonText=\u30B5\u30A4\u30BA
+InternalFrameTitlePane.minimizeButtonText=\u6700\u5C0F\u5316
 InternalFrameTitlePane.maximizeButtonText=\u6700\u5927\u5316
-InternalFrameTitlePane.closeButtonText=\u9589\u3058\u308b
+InternalFrameTitlePane.closeButtonText=\u9589\u3058\u308B
 
 ############ Text strings #############
 # Used for html forms
-FormView.submitButtonText=\u554f\u3044\u5408\u308f\u305b\u306e\u5b9f\u884c
-FormView.resetButtonText=\u30ea\u30bb\u30c3\u30c8
-FormView.browseFileButtonText=\u53c2\u7167...
+FormView.submitButtonText=\u554F\u5408\u305B\u306E\u5B9F\u884C
+FormView.resetButtonText=\u30EA\u30BB\u30C3\u30C8
+FormView.browseFileButtonText=\u53C2\u7167...
 
 ############ Abstract Document Strings ############
-AbstractDocument.styleChangeText=\u30b9\u30bf\u30a4\u30eb\u5909\u66f4
-AbstractDocument.additionText=\u8ffd\u52a0
-AbstractDocument.deletionText=\u524a\u9664
-AbstractDocument.undoText=\u5143\u306b\u623b\u3059
-AbstractDocument.redoText=\u518d\u5b9f\u884c
+AbstractDocument.styleChangeText=\u30B9\u30BF\u30A4\u30EB\u5909\u66F4
+AbstractDocument.additionText=\u8FFD\u52A0
+AbstractDocument.deletionText=\u524A\u9664
+AbstractDocument.undoText=\u5143\u306B\u623B\u3059
+AbstractDocument.redoText=\u3084\u308A\u76F4\u3057
 
 ############ Abstract Button Strings ############
-AbstractButton.clickText=\u30af\u30ea\u30c3\u30af
+AbstractButton.clickText=\u30AF\u30EA\u30C3\u30AF
 
 ############ Abstract Undoable Edit Strings ############
-AbstractUndoableEdit.undoText=\u5143\u306b\u623b\u3059
-AbstractUndoableEdit.redoText=\u518d\u5b9f\u884c
+AbstractUndoableEdit.undoText=\u5143\u306B\u623B\u3059
+AbstractUndoableEdit.redoText=\u3084\u308A\u76F4\u3057
 
 ############ Combo Box Strings ############
-ComboBox.togglePopupText=\u30c8\u30b0\u30eb\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7
+ComboBox.togglePopupText=\u30C8\u30B0\u30EB\u30FB\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7
 
 ############ Progress Monitor Strings ############
-ProgressMonitor.progressText=\u9032\u884c\u4e2d...
+ProgressMonitor.progressText=\u9032\u884C\u4E2D...
 
 ############ Split Pane Strings ############
-SplitPane.leftButtonText=\u5de6\u30dc\u30bf\u30f3
-SplitPane.rightButtonText=\u53f3\u30dc\u30bf\u30f3
+SplitPane.leftButtonText=\u5DE6\u30DC\u30BF\u30F3
+SplitPane.rightButtonText=\u53F3\u30DC\u30BF\u30F3
 # Used for Isindex
-IsindexView.prompt=\u691c\u7d22\u7528\u306e\u7d22\u5f15\u3067\u3059\u3002\u691c\u7d22\u3059\u308b\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044:
+IsindexView.prompt=\u691C\u7D22\u7528\u306E\u7D22\u5F15\u3067\u3059\u3002\u691C\u7D22\u3059\u308B\u30AD\u30FC\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044:
 
 ############ InternalFrameTitlePane Strings ############
-InternalFrameTitlePane.iconifyButtonAccessibleName=\u6700\u5c0f\u5316
+InternalFrameTitlePane.iconifyButtonAccessibleName=\u30A2\u30A4\u30B3\u30F3\u5316
 InternalFrameTitlePane.maximizeButtonAccessibleName=\u6700\u5927\u5316
-InternalFrameTitlePane.closeButtonAccessibleName=\u9589\u3058\u308b
+InternalFrameTitlePane.closeButtonAccessibleName=\u9589\u3058\u308B
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -45,181 +45,181 @@
 # @author Steve Wilson
 
 ############ FILE CHOOSER STRINGS #############
-FileChooser.fileDescriptionText=\uc77c\ubc18 \ud30c\uc77c
-FileChooser.directoryDescriptionText=\ub514\ub809\ud1a0\ub9ac
-FileChooser.newFolderErrorText=\uc0c8 \ud3f4\ub354 \uc791\uc131 \uc624\ub958
+FileChooser.fileDescriptionText=\uC77C\uBC18 \uD30C\uC77C
+FileChooser.directoryDescriptionText=\uB514\uB809\uD1A0\uB9AC
+FileChooser.newFolderErrorText=\uC0C8 \uD3F4\uB354\uB97C \uC0DD\uC131\uD558\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
 FileChooser.newFolderErrorSeparator= : 
-FileChooser.newFolderParentDoesntExistTitleText=\ud3f4\ub354\ub97c \ub9cc\ub4e4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-FileChooser.newFolderParentDoesntExistText=\ud3f4\ub354\ub97c \ub9cc\ub4e4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.\n\n\uc2dc\uc2a4\ud15c\uc5d0\uc11c \uc9c0\uc815\ud55c \uacbd\ub85c\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-FileChooser.renameErrorTitleText=\ud30c\uc77c \ub610\ub294 \ud3f4\ub354 \uc774\ub984 \ubc14\uafb8\uae30 \uc624\ub958
-FileChooser.renameErrorText={0}\uc758 \uc774\ub984\uc744 \ubc14\uafc0 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-FileChooser.renameErrorFileExistsText={0}\uc758 \uc774\ub984\uc744 \ubc14\uafc0 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc9c0\uc815\ud55c \uc774\ub984\uc758 \ud30c\uc77c\uc774 \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4.  \ub2e4\ub978 \ud30c\uc77c \uc774\ub984\uc744 \uc9c0\uc815\ud558\uc2ed\uc2dc\uc624. 
-FileChooser.acceptAllFileFilterText=\ubaa8\ub4e0 \ud30c\uc77c
-FileChooser.cancelButtonText=\ucde8\uc18c
+FileChooser.newFolderParentDoesntExistTitleText=\uD3F4\uB354\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC74C
+FileChooser.newFolderParentDoesntExistText=\uD3F4\uB354\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.\n\n\uC2DC\uC2A4\uD15C\uC5D0\uC11C \uC9C0\uC815\uB41C \uACBD\uB85C\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+FileChooser.renameErrorTitleText=\uD30C\uC77C \uB610\uB294 \uD3F4\uB354 \uC774\uB984 \uBC14\uAFB8\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD
+FileChooser.renameErrorText={0}\uC758 \uC774\uB984\uC744 \uBC14\uAFC0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+FileChooser.renameErrorFileExistsText={0}\uC758 \uC774\uB984\uC744 \uBC14\uAFC0 \uC218 \uC5C6\uC74C: \uC9C0\uC815\uD55C \uC774\uB984\uC744 \uC0AC\uC6A9\uD558\uB294 \uD30C\uC77C\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4. \uB2E4\uB978 \uD30C\uC77C \uC774\uB984\uC744 \uC9C0\uC815\uD558\uC2ED\uC2DC\uC624. 
+FileChooser.acceptAllFileFilterText=\uBAA8\uB4E0 \uD30C\uC77C
+FileChooser.cancelButtonText=\uCDE8\uC18C
 FileChooser.cancelButtonMnemonic=67
-FileChooser.saveButtonText=\uc800\uc7a5
+FileChooser.saveButtonText=\uC800\uC7A5
 FileChooser.saveButtonMnemonic=83
-FileChooser.openButtonText=\uc5f4\uae30
+FileChooser.openButtonText=\uC5F4\uAE30
 FileChooser.openButtonMnemonic=79
-FileChooser.saveDialogTitleText=\uc800\uc7a5
-FileChooser.openDialogTitleText=\uc5f4\uae30
-FileChooser.updateButtonText=\uc5c5\ub370\uc774\ud2b8(U)
+FileChooser.saveDialogTitleText=\uC800\uC7A5
+FileChooser.openDialogTitleText=\uC5F4\uAE30
+FileChooser.updateButtonText=\uAC31\uC2E0
 FileChooser.updateButtonMnemonic=85
-FileChooser.helpButtonText=\ub3c4\uc6c0\ub9d0(H)
+FileChooser.helpButtonText=\uB3C4\uC6C0\uB9D0
 FileChooser.helpButtonMnemonic=72
-FileChooser.directoryOpenButtonText=\uc5f4\uae30
+FileChooser.directoryOpenButtonText=\uC5F4\uAE30
 FileChooser.directoryOpenButtonMnemonic=79
 
 # File Size Units
-FileChooser.fileSizeKiloBytes={0}KB
-FileChooser.fileSizeMegaBytes={0}MB
-FileChooser.fileSizeGigaBytes={0}GB
+FileChooser.fileSizeKiloBytes={0} KB
+FileChooser.fileSizeMegaBytes={0} MB
+FileChooser.fileSizeGigaBytes={0} GB
 
 # These strings are platform dependent not look and feel dependent.
-FileChooser.win32.newFolder=\uc0c8 \ud3f4\ub354
-FileChooser.win32.newFolder.subsequent=\uc0c8 \ud3f4\ub354 ({0})
-FileChooser.other.newFolder=\uc0c8 \ud3f4\ub354
-FileChooser.other.newFolder.subsequent=\uc0c8 \ud3f4\ub354.{0}
+FileChooser.win32.newFolder=\uC0C8 \uD3F4\uB354
+FileChooser.win32.newFolder.subsequent=\uC0C8 \uD3F4\uB354({0})
+FileChooser.other.newFolder=NewFolder
+FileChooser.other.newFolder.subsequent=NewFolder.{0}
 
 
 ## file chooser tooltips ###
-FileChooser.cancelButtonToolTipText=\ud30c\uc77c \uc120\ud0dd \ub300\ud654 \uc0c1\uc790 \uc911\uc9c0
-FileChooser.saveButtonToolTipText=\uc120\ud0dd\ub41c \ud30c\uc77c \uc800\uc7a5
-FileChooser.openButtonToolTipText=\uc120\ud0dd\ub41c \ud30c\uc77c \uc5f4\uae30
-FileChooser.updateButtonToolTipText=\ub514\ub809\ud1a0\ub9ac \ubaa9\ub85d \uc5c5\ub370\uc774\ud2b8
-FileChooser.helpButtonToolTipText=FileChooser \ub3c4\uc6c0\ub9d0
-FileChooser.directoryOpenButtonToolTipText=\uc120\ud0dd\ub41c \ub514\ub809\ud1a0\ub9ac \uc5f4\uae30
+FileChooser.cancelButtonToolTipText=\uD30C\uC77C \uC120\uD0DD\uAE30 \uB300\uD654\uC0C1\uC790 \uC911\uB2E8
+FileChooser.saveButtonToolTipText=\uC120\uD0DD\uB41C \uD30C\uC77C \uC800\uC7A5
+FileChooser.openButtonToolTipText=\uC120\uD0DD\uB41C \uD30C\uC77C \uC5F4\uAE30
+FileChooser.updateButtonToolTipText=\uB514\uB809\uD1A0\uB9AC \uBAA9\uB85D \uAC31\uC2E0
+FileChooser.helpButtonToolTipText=FileChooser \uB3C4\uC6C0\uB9D0
+FileChooser.directoryOpenButtonToolTipText=\uC120\uD0DD\uB41C \uB514\uB809\uD1A0\uB9AC \uC5F4\uAE30
 
 ############ COLOR CHOOSER STRINGS #############
-ColorChooser.previewText=\ubbf8\ub9ac\ubcf4\uae30
-ColorChooser.okText=\ud655\uc778
-ColorChooser.cancelText=\ucde8\uc18c
-ColorChooser.resetText=\uc7ac\uc124\uc815(R)
+ColorChooser.previewText=\uBBF8\uB9AC\uBCF4\uAE30
+ColorChooser.okText=\uD655\uC778
+ColorChooser.cancelText=\uCDE8\uC18C
+ColorChooser.resetText=\uC7AC\uC124\uC815
 # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic
 ColorChooser.resetMnemonic=82
-ColorChooser.sampleText=\uc0d8\ud50c \ud14d\uc2a4\ud2b8  \uc0d8\ud50c \ud14d\uc2a4\ud2b8
-ColorChooser.swatchesNameText=\uacac\ubcf8(S)
+ColorChooser.sampleText=\uC0D8\uD50C \uD14D\uC2A4\uD2B8  \uC0D8\uD50C \uD14D\uC2A4\uD2B8
+ColorChooser.swatchesNameText=\uACAC\uBCF8
 ColorChooser.swatchesMnemonic=83
-ColorChooser.swatchesRecentText=\ucd5c\uadfc \ubaa9\ub85d:
+ColorChooser.swatchesRecentText=\uCD5C\uADFC \uBAA9\uB85D:
 # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX
 # constant, and an index into the text to render the mnemonic as. The
 # mnemonic is xxxMnemonic and the index of the character to underline is
 # xxxDisplayedMnemonicIndex.
 ColorChooser.hsvNameText=HSV
 ColorChooser.hsvMnemonic=72
-ColorChooser.hsvHueText=\uc0c9\uc0c1
-ColorChooser.hsvSaturationText=\ucc44\ub3c4
-ColorChooser.hsvValueText=\uac12
-ColorChooser.hsvTransparencyText=\ud22c\uba85\ub3c4
+ColorChooser.hsvHueText=\uC0C9\uC870
+ColorChooser.hsvSaturationText=\uCC44\uB3C4
+ColorChooser.hsvValueText=\uAC12
+ColorChooser.hsvTransparencyText=\uD22C\uBA85
 ColorChooser.hslNameText=HSL
 ColorChooser.hslMnemonic=76
-ColorChooser.hslHueText=\uc0c9\uc0c1
-ColorChooser.hslSaturationText=\ucc44\ub3c4
-ColorChooser.hslLightnessText=\ubc1d\uae30
-ColorChooser.hslTransparencyText=\ud22c\uba85\ub3c4
+ColorChooser.hslHueText=\uC0C9\uC870
+ColorChooser.hslSaturationText=\uCC44\uB3C4
+ColorChooser.hslLightnessText=\uBC1D\uAE30
+ColorChooser.hslTransparencyText=\uD22C\uBA85
 ColorChooser.rgbNameText=RGB
 ColorChooser.rgbMnemonic=71
-ColorChooser.rgbRedText=\ube68\uac04\uc0c9(D)
+ColorChooser.rgbRedText=\uBE68\uAC04\uC0C9
 ColorChooser.rgbRedMnemonic=68
-ColorChooser.rgbGreenText=\ub179\uc0c9(N)
+ColorChooser.rgbGreenText=\uB179\uC0C9
 ColorChooser.rgbGreenMnemonic=78
-ColorChooser.rgbBlueText=\ud30c\ub780\uc0c9(B)
+ColorChooser.rgbBlueText=\uD30C\uB780\uC0C9
 ColorChooser.rgbBlueMnemonic=66
-ColorChooser.rgbAlphaText=\uc54c\ud30c
-ColorChooser.rgbHexCodeText=\uceec\ub7ec \ucf54\ub4dc
+ColorChooser.rgbAlphaText=\uC54C\uD30C
+ColorChooser.rgbHexCodeText=\uC0C9\uC0C1 \uCF54\uB4DC
 ColorChooser.rgbHexCodeMnemonic=67
 ColorChooser.cmykNameText=CMYK
 ColorChooser.cmykMnemonic=77
-ColorChooser.cmykCyanText=\uccad\ub85d\uc0c9
-ColorChooser.cmykMagentaText=\uc790\ud64d\uc0c9
-ColorChooser.cmykYellowText=\ub178\ub780\uc0c9
-ColorChooser.cmykBlackText=\ud751\uc0c9
-ColorChooser.cmykAlphaText=\uc54c\ud30c
+ColorChooser.cmykCyanText=\uCCAD\uB85D\uC0C9
+ColorChooser.cmykMagentaText=\uC9C4\uD64D\uC0C9
+ColorChooser.cmykYellowText=\uB178\uB780\uC0C9
+ColorChooser.cmykBlackText=\uAC80\uC815\uC0C9
+ColorChooser.cmykAlphaText=\uC54C\uD30C
 
 ############ OPTION PANE STRINGS #############
 # Mnemonic keys correspond to KeyEvent.VK_XXX constant
 # We only define mnemonics for YES/NO, but for completeness you can
 # define mnemonics for any of the buttons.
-OptionPane.yesButtonText=\uc608(Y)
+OptionPane.yesButtonText=\uC608
 OptionPane.yesButtonMnemonic=89
-OptionPane.noButtonText=\uc544\ub2c8\uc624(N)
+OptionPane.noButtonText=\uC544\uB2C8\uC624
 OptionPane.noButtonMnemonic=78
-OptionPane.okButtonText=\ud655\uc778
+OptionPane.okButtonText=\uD655\uC778
 OptionPane.okButtonMnemonic=0
-OptionPane.cancelButtonText=\ucde8\uc18c
+OptionPane.cancelButtonText=\uCDE8\uC18C
 OptionPane.cancelButtonMnemonic=0
-OptionPane.titleText=\uc635\uc158 \uc120\ud0dd
+OptionPane.titleText=\uC635\uC158 \uC120\uD0DD
 # Title for the dialog for the showInputDialog methods. Only used if
 # the developer uses one of the variants that doesn't take a title.
-OptionPane.inputDialogTitle=\uc785\ub825
+OptionPane.inputDialogTitle=\uC785\uB825
 # Title for the dialog for the showMessageDialog methods. Only used if
 # the developer uses one of the variants that doesn't take a title.
-OptionPane.messageDialogTitle=\uba54\uc2dc\uc9c0
+OptionPane.messageDialogTitle=\uBA54\uC2DC\uC9C0
 
 ############ Printing Dialog Strings ############
-PrintingDialog.titleProgressText=\uc778\uc1c4
-PrintingDialog.titleAbortingText=\uc778\uc1c4 (\uc911\uc9c0)
+PrintingDialog.titleProgressText=\uC778\uC1C4
+PrintingDialog.titleAbortingText=\uC778\uC1C4(\uC911\uB2E8 \uC911)
 
-PrintingDialog.contentInitialText=\uc778\uc1c4 \uc9c4\ud589 \uc911...
+PrintingDialog.contentInitialText=\uC778\uC1C4 \uC9C4\uD589 \uC911...
 
 # The following string will be formatted by a MessageFormat
 # and {0} will be replaced by page number being printed
-PrintingDialog.contentProgressText=\uc778\uc1c4\ub41c \ud398\uc774\uc9c0 {0}...
+PrintingDialog.contentProgressText=\uC778\uC1C4\uB41C \uD398\uC774\uC9C0 {0}...
 
-PrintingDialog.contentAbortingText=\uc778\uc1c4 \uc911\uc9c0...
+PrintingDialog.contentAbortingText=\uC778\uC1C4 \uC911\uB2E8 \uC911...
 
-PrintingDialog.abortButtonText=\uc911\uc9c0(A)
+PrintingDialog.abortButtonText=\uC911\uB2E8
 PrintingDialog.abortButtonMnemonic=65
 PrintingDialog.abortButtonDisplayedMnemonicIndex=0
-PrintingDialog.abortButtonToolTipText=\uc778\uc1c4 \uc911\uc9c0
+PrintingDialog.abortButtonToolTipText=\uC778\uC1C4 \uC911\uB2E8
 
 ############ Internal Frame Strings ############
-InternalFrame.iconButtonToolTip=\ucd5c\uc18c\ud654
-InternalFrame.maxButtonToolTip=\ucd5c\ub300\ud654
-InternalFrame.restoreButtonToolTip=\ubcf5\uc6d0
-InternalFrame.closeButtonToolTip=\ub2eb\uae30
+InternalFrame.iconButtonToolTip=\uCD5C\uC18C\uD654
+InternalFrame.maxButtonToolTip=\uCD5C\uB300\uD654
+InternalFrame.restoreButtonToolTip=\uBCF5\uC6D0
+InternalFrame.closeButtonToolTip=\uB2EB\uAE30
 
 ############ Internal Frame Title Pane Strings ############
-InternalFrameTitlePane.restoreButtonText=\ubcf5\uc6d0
-InternalFrameTitlePane.moveButtonText=\uc774\ub3d9
-InternalFrameTitlePane.sizeButtonText=\ud06c\uae30
-InternalFrameTitlePane.minimizeButtonText=\ucd5c\uc18c\ud654
-InternalFrameTitlePane.maximizeButtonText=\ucd5c\ub300\ud654
-InternalFrameTitlePane.closeButtonText=\ub2eb\uae30
+InternalFrameTitlePane.restoreButtonText=\uBCF5\uC6D0
+InternalFrameTitlePane.moveButtonText=\uC774\uB3D9
+InternalFrameTitlePane.sizeButtonText=\uD06C\uAE30
+InternalFrameTitlePane.minimizeButtonText=\uCD5C\uC18C\uD654
+InternalFrameTitlePane.maximizeButtonText=\uCD5C\uB300\uD654
+InternalFrameTitlePane.closeButtonText=\uB2EB\uAE30
 
 ############ Text strings #############
 # Used for html forms
-FormView.submitButtonText=\uc9c8\uc758 \uc81c\ucd9c
-FormView.resetButtonText=\uc7ac\uc124\uc815
-FormView.browseFileButtonText=\ucc3e\uc544\ubcf4\uae30...
+FormView.submitButtonText=\uC9C8\uC758 \uC81C\uCD9C
+FormView.resetButtonText=\uC7AC\uC124\uC815
+FormView.browseFileButtonText=\uCC3E\uC544\uBCF4\uAE30...
 
 ############ Abstract Document Strings ############
-AbstractDocument.styleChangeText=\uc2a4\ud0c0\uc77c \ubcc0\uacbd
-AbstractDocument.additionText=\ucd94\uac00
-AbstractDocument.deletionText=\uc0ad\uc81c
-AbstractDocument.undoText=\uc2e4\ud589 \ucde8\uc18c
-AbstractDocument.redoText=\uc7ac\uc2e4\ud589
+AbstractDocument.styleChangeText=\uC2A4\uD0C0\uC77C \uBCC0\uACBD
+AbstractDocument.additionText=\uCD94\uAC00
+AbstractDocument.deletionText=\uC0AD\uC81C
+AbstractDocument.undoText=\uC2E4\uD589 \uCDE8\uC18C
+AbstractDocument.redoText=\uC7AC\uC2E4\uD589
 
 ############ Abstract Button Strings ############
-AbstractButton.clickText=\ub204\ub974\uae30
+AbstractButton.clickText=\uB204\uB974\uAE30
 
 ############ Abstract Undoable Edit Strings ############
-AbstractUndoableEdit.undoText=\uc2e4\ud589 \ucde8\uc18c
-AbstractUndoableEdit.redoText=\uc7ac\uc2e4\ud589
+AbstractUndoableEdit.undoText=\uC2E4\uD589 \uCDE8\uC18C
+AbstractUndoableEdit.redoText=\uC7AC\uC2E4\uD589
 
 ############ Combo Box Strings ############
-ComboBox.togglePopupText=\ud1a0\uae00\ud31d\uc5c5
+ComboBox.togglePopupText=togglePopup
 
 ############ Progress Monitor Strings ############
-ProgressMonitor.progressText=\uc9c4\ud589...
+ProgressMonitor.progressText=\uC9C4\uD589...
 
 ############ Split Pane Strings ############
-SplitPane.leftButtonText=\uc67c\ucabd \ubc84\ud2bc
-SplitPane.rightButtonText=\uc624\ub978\ucabd \ubc84\ud2bc
+SplitPane.leftButtonText=\uC67C\uCABD \uB2E8\uCD94
+SplitPane.rightButtonText=\uC624\uB978\uCABD \uB2E8\uCD94
 # Used for Isindex
-IsindexView.prompt=\ub2e4\uc74c\uc740 \uac80\uc0c9 \uac00\ub2a5\ud55c \uc778\ub371\uc2a4\uc785\ub2c8\ub2e4. \uac80\uc0c9 \ud0a4\uc6cc\ub4dc\ub97c \uc785\ub825\ud558\uc2ed\uc2dc\uc624:
+IsindexView.prompt=\uB2E4\uC74C\uC740 \uAC80\uC0C9 \uAC00\uB2A5\uD55C \uC778\uB371\uC2A4\uC785\uB2C8\uB2E4. \uAC80\uC0C9 \uD0A4\uC6CC\uB4DC \uC785\uB825:
 
 ############ InternalFrameTitlePane Strings ############
-InternalFrameTitlePane.iconifyButtonAccessibleName=\uc544\uc774\ucf58\ud654
-InternalFrameTitlePane.maximizeButtonAccessibleName=\ucd5c\ub300\ud654
-InternalFrameTitlePane.closeButtonAccessibleName=\ub2eb\uae30
+InternalFrameTitlePane.iconifyButtonAccessibleName=\uC544\uC774\uCF58\uD654
+InternalFrameTitlePane.maximizeButtonAccessibleName=\uCD5C\uB300\uD654
+InternalFrameTitlePane.closeButtonAccessibleName=\uB2EB\uAE30
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_pt_BR.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_pt_BR.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -45,11 +45,16 @@
 # @author Steve Wilson
 
 ############ FILE CHOOSER STRINGS #############
-FileChooser.fileDescriptionText=Arquivo gen\u00e9rico
-FileChooser.directoryDescriptionText=Diret\u00f3rio
+FileChooser.fileDescriptionText=Arquivo Gen\u00E9rico
+FileChooser.directoryDescriptionText=Diret\u00F3rio
 FileChooser.newFolderErrorText=Erro ao criar nova pasta
 FileChooser.newFolderErrorSeparator= : 
-FileChooser.acceptAllFileFilterText=Todos os arquivos
+FileChooser.newFolderParentDoesntExistTitleText=N\u00E3o \u00E9 poss\u00EDvel criar a pasta
+FileChooser.newFolderParentDoesntExistText=N\u00E3o \u00E9 poss\u00EDvel criar a pasta.\n\nO sistema n\u00E3o pode localizar o caminho especificado.
+FileChooser.renameErrorTitleText=Erro ao Renomear o Arquivo ou a Pasta
+FileChooser.renameErrorText=N\u00E3o \u00E9 poss\u00EDvel renomear {0}
+FileChooser.renameErrorFileExistsText=N\u00E3o \u00E9 poss\u00EDvel renomear {0}: Um arquivo com o nome especificado j\u00E1 existe. Especifique outro nome de arquivo. 
+FileChooser.acceptAllFileFilterText=Todos os Arquivos
 FileChooser.cancelButtonText=Cancelar
 FileChooser.cancelButtonMnemonic=67
 FileChooser.saveButtonText=Salvar
@@ -71,19 +76,19 @@
 FileChooser.fileSizeGigaBytes={0} GB
 
 # These strings are platform dependent not look and feel dependent.
-FileChooser.win32.newFolder=Nova pasta
-FileChooser.win32.newFolder.subsequent=Nova pasta ({0})
+FileChooser.win32.newFolder=Nova Pasta
+FileChooser.win32.newFolder.subsequent=Nova Pasta ({0})
 FileChooser.other.newFolder=NewFolder
 FileChooser.other.newFolder.subsequent=NewFolder.{0}
 
 
 ## file chooser tooltips ###
-FileChooser.cancelButtonToolTipText=Anular caixa de di\u00e1logo do seletor de arquivos
+FileChooser.cancelButtonToolTipText=Abortar caixa de di\u00E1logo do seletor de arquivos
 FileChooser.saveButtonToolTipText=Salvar arquivo selecionado
 FileChooser.openButtonToolTipText=Abrir arquivo selecionado
-FileChooser.updateButtonToolTipText=Atualizar lista de diret\u00f3rios
+FileChooser.updateButtonToolTipText=Atualizar lista de diret\u00F3rios
 FileChooser.helpButtonToolTipText=Ajuda do FileChooser
-FileChooser.directoryOpenButtonToolTipText=Abrir diret\u00f3rio selecionado
+FileChooser.directoryOpenButtonToolTipText=Abrir diret\u00F3rio selecionado
 
 ############ COLOR CHOOSER STRINGS #############
 ColorChooser.previewText=Visualizar
@@ -92,33 +97,44 @@
 ColorChooser.resetText=Redefinir
 # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic
 ColorChooser.resetMnemonic=82
-ColorChooser.sampleText=Texto de amostra  Texto de amostra
+ColorChooser.sampleText=Texto de Amostra Texto de Amostra
 ColorChooser.swatchesNameText=Amostras
 ColorChooser.swatchesMnemonic=83
-ColorChooser.swatchesDisplayedMnemonicIndex=0
 ColorChooser.swatchesRecentText=Recente:
-ColorChooser.hsbNameText=HSB
 # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX
 # constant, and an index into the text to render the mnemonic as. The
 # mnemonic is xxxMnemonic and the index of the character to underline is
 # xxxDisplayedMnemonicIndex.
-ColorChooser.hsbMnemonic=72
-ColorChooser.hsbDisplayedMnemonicIndex=0
-ColorChooser.hsbHueText=H
-ColorChooser.hsbSaturationText=S
-ColorChooser.hsbBrightnessText=B
-ColorChooser.hsbRedText=R
-ColorChooser.hsbGreenText=G
-ColorChooser.hsbBlueText=B
+ColorChooser.hsvNameText=HSV
+ColorChooser.hsvMnemonic=72
+ColorChooser.hsvHueText=Matiz
+ColorChooser.hsvSaturationText=Satura\u00E7\u00E3o
+ColorChooser.hsvValueText=Valor
+ColorChooser.hsvTransparencyText=Transpar\u00EAncia
+ColorChooser.hslNameText=HSL
+ColorChooser.hslMnemonic=76
+ColorChooser.hslHueText=Matiz
+ColorChooser.hslSaturationText=Satura\u00E7\u00E3o
+ColorChooser.hslLightnessText=Clareza
+ColorChooser.hslTransparencyText=Transpar\u00EAncia
 ColorChooser.rgbNameText=RGB
 ColorChooser.rgbMnemonic=71
-ColorChooser.rgbDisplayedMnemonicIndex=1
 ColorChooser.rgbRedText=Vermelho
 ColorChooser.rgbRedMnemonic=68
 ColorChooser.rgbGreenText=Verde
 ColorChooser.rgbGreenMnemonic=78
 ColorChooser.rgbBlueText=Azul
 ColorChooser.rgbBlueMnemonic=66
+ColorChooser.rgbAlphaText=Alfa
+ColorChooser.rgbHexCodeText=C\u00F3digo da Cor
+ColorChooser.rgbHexCodeMnemonic=67
+ColorChooser.cmykNameText=CMYK
+ColorChooser.cmykMnemonic=77
+ColorChooser.cmykCyanText=Ciano
+ColorChooser.cmykMagentaText=Magenta
+ColorChooser.cmykYellowText=Amarelo
+ColorChooser.cmykBlackText=Preto
+ColorChooser.cmykAlphaText=Alfa
 
 ############ OPTION PANE STRINGS #############
 # Mnemonic keys correspond to KeyEvent.VK_XXX constant
@@ -126,13 +142,13 @@
 # define mnemonics for any of the buttons.
 OptionPane.yesButtonText=Sim
 OptionPane.yesButtonMnemonic=89
-OptionPane.noButtonText=N\u00e3o
+OptionPane.noButtonText=N\u00E3o
 OptionPane.noButtonMnemonic=78
 OptionPane.okButtonText=OK
 OptionPane.okButtonMnemonic=0
 OptionPane.cancelButtonText=Cancelar
 OptionPane.cancelButtonMnemonic=0
-OptionPane.titleText=Selecionar uma op\u00e7\u00e3o
+OptionPane.titleText=Selecionar uma Op\u00E7\u00E3o
 # Title for the dialog for the showInputDialog methods. Only used if
 # the developer uses one of the variants that doesn't take a title.
 OptionPane.inputDialogTitle=Entrada
@@ -141,21 +157,21 @@
 OptionPane.messageDialogTitle=Mensagem
 
 ############ Printing Dialog Strings ############
-PrintingDialog.titleProgressText=Impress\u00e3o
-PrintingDialog.titleAbortingText=Impress\u00e3o (Anulando)
+PrintingDialog.titleProgressText=Impress\u00E3o
+PrintingDialog.titleAbortingText=Impress\u00E3o (Abortando)
 
-PrintingDialog.contentInitialText=Impress\u00e3o em andamento...
+PrintingDialog.contentInitialText=Impress\u00E3o em andamento...
 
 # The following string will be formatted by a MessageFormat
 # and {0} will be replaced by page number being printed
-PrintingDialog.contentProgressText=P\u00e1gina imprimida {0}...
+PrintingDialog.contentProgressText=P\u00E1gina impressa {0}...
 
-PrintingDialog.contentAbortingText=Anulando impress\u00e3o...
+PrintingDialog.contentAbortingText=Abortando impress\u00E3o...
 
-PrintingDialog.abortButtonText=Anular
+PrintingDialog.abortButtonText=Abortar
 PrintingDialog.abortButtonMnemonic=65
 PrintingDialog.abortButtonDisplayedMnemonicIndex=0
-PrintingDialog.abortButtonToolTipText=Anular impress\u00e3o
+PrintingDialog.abortButtonToolTipText=Abortar Impress\u00E3o
 
 ############ Internal Frame Strings ############
 InternalFrame.iconButtonToolTip=Minimizar
@@ -173,14 +189,14 @@
 
 ############ Text strings #############
 # Used for html forms
-FormView.submitButtonText=Enviar consulta
+FormView.submitButtonText=Submeter Consulta
 FormView.resetButtonText=Redefinir
-FormView.browseFileButtonText=Explorar...
+FormView.browseFileButtonText=Procurar...
 
 ############ Abstract Document Strings ############
-AbstractDocument.styleChangeText=altera\u00e7\u00e3o de estilo
-AbstractDocument.additionText=adi\u00e7\u00e3o
-AbstractDocument.deletionText=exclus\u00e3o
+AbstractDocument.styleChangeText=altera\u00E7\u00E3o de estilo
+AbstractDocument.additionText=adi\u00E7\u00E3o
+AbstractDocument.deletionText=dele\u00E7\u00E3o
 AbstractDocument.undoText=Desfazer
 AbstractDocument.redoText=Refazer
 
@@ -198,12 +214,12 @@
 ProgressMonitor.progressText=Progresso...
 
 ############ Split Pane Strings ############
-SplitPane.leftButtonText=bot\u00e3o esquerdo
-SplitPane.rightButtonText=bot\u00e3o direito
+SplitPane.leftButtonText=bot\u00E3o esquerdo
+SplitPane.rightButtonText=bot\u00E3o direito
 # Used for Isindex
-IsindexView.prompt=Trata-se de um \u00edndice pesquis\u00e1vel.  Insira as palavras-chave de pesquisa:
+IsindexView.prompt=Trata-se de um \u00EDndice pesquis\u00E1vel. Informe as palavras-chave de pesquisa:
 
 ############ InternalFrameTitlePane Strings ############
-InternalFrameTitlePane.iconifyButtonAccessibleName=Iconificar
+InternalFrameTitlePane.iconifyButtonAccessibleName=Iconify
 InternalFrameTitlePane.maximizeButtonAccessibleName=Maximizar
 InternalFrameTitlePane.closeButtonAccessibleName=Fechar
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -47,28 +47,28 @@
 ############ FILE CHOOSER STRINGS #############
 FileChooser.fileDescriptionText=Generisk fil
 FileChooser.directoryDescriptionText=Katalog
-FileChooser.newFolderErrorText=Fel d\u00e5 ny mapp skapades
+FileChooser.newFolderErrorText=Fel uppstod n\u00E4r ny mapp skapades
 FileChooser.newFolderErrorSeparator= : 
-FileChooser.newFolderParentDoesntExistTitleText=Det gick inte att skapa mappen
-FileChooser.newFolderParentDoesntExistText=Det gick inte att skapa mappen.\n\nSystemet hittade inte den angivna s\u00f6kv\u00e4gen.
-FileChooser.renameErrorTitleText=Det gick inte att byta namn p\u00e5 filen eller mappen
-FileChooser.renameErrorText=Det gick inte byta namn p\u00e5 {0}
-FileChooser.renameErrorFileExistsText=Det gick inte byta namn p\u00e5 {0}: Det finns redan en fil med det namnet. Ge den ett annat namn. 
+FileChooser.newFolderParentDoesntExistTitleText=Kan inte skapa mappen
+FileChooser.newFolderParentDoesntExistText=Kan inte skapa mappen.\n\nSystemet kan inte hitta angiven s\u00F6kv\u00E4g.
+FileChooser.renameErrorTitleText=Ett fel intr\u00E4ffade vid f\u00F6rs\u00F6k att \u00E4ndra namn p\u00E5 fil eller mapp
+FileChooser.renameErrorText=Kan inte namn\u00E4ndra {0}
+FileChooser.renameErrorFileExistsText=Kan inte namn\u00E4ndra {0}: En fil med angivet namn finns redan. Ange ett annat filnamn. 
 FileChooser.acceptAllFileFilterText=Alla filer
 FileChooser.cancelButtonText=Avbryt
-FileChooser.cancelButtonMnemonic=65
+FileChooser.cancelButtonMnemonic=67
 FileChooser.saveButtonText=Spara
 FileChooser.saveButtonMnemonic=83
-FileChooser.openButtonText=\u00d6ppna
-FileChooser.openButtonMnemonic=78
+FileChooser.openButtonText=\u00D6ppna
+FileChooser.openButtonMnemonic=79
 FileChooser.saveDialogTitleText=Spara
-FileChooser.openDialogTitleText=\u00d6ppna
+FileChooser.openDialogTitleText=\u00D6ppna
 FileChooser.updateButtonText=Uppdatera
 FileChooser.updateButtonMnemonic=85
-FileChooser.helpButtonText=Hj\u00e4lp
+FileChooser.helpButtonText=Hj\u00E4lp
 FileChooser.helpButtonMnemonic=72
-FileChooser.directoryOpenButtonText=\u00d6ppna
-FileChooser.directoryOpenButtonMnemonic=80
+FileChooser.directoryOpenButtonText=\u00D6ppna
+FileChooser.directoryOpenButtonMnemonic=79
 
 # File Size Units
 FileChooser.fileSizeKiloBytes={0} KB
@@ -84,53 +84,53 @@
 
 ## file chooser tooltips ###
 FileChooser.cancelButtonToolTipText=Avbryt filvalsdialogruta
-FileChooser.saveButtonToolTipText=Spara markerad fil
-FileChooser.openButtonToolTipText=\u00d6ppna markerad fil
+FileChooser.saveButtonToolTipText=Spara vald fil
+FileChooser.openButtonToolTipText=\u00D6ppna vald fil
 FileChooser.updateButtonToolTipText=Uppdatera kataloglistan
-FileChooser.helpButtonToolTipText=Hj\u00e4lp - Filv\u00e4ljare
-FileChooser.directoryOpenButtonToolTipText=\u00d6ppnar den markerade katalogen
+FileChooser.helpButtonToolTipText=Hj\u00E4lp - Filv\u00E4ljare
+FileChooser.directoryOpenButtonToolTipText=\u00D6ppna vald katalog
 
 ############ COLOR CHOOSER STRINGS #############
 ColorChooser.previewText=Granska
 ColorChooser.okText=OK
 ColorChooser.cancelText=Avbryt
-ColorChooser.resetText=\u00c5terst\u00e4ll
+ColorChooser.resetText=\u00C5terst\u00E4ll
 # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic
-ColorChooser.resetMnemonic=84
+ColorChooser.resetMnemonic=82
 ColorChooser.sampleText=Exempeltext  Exempeltext
 ColorChooser.swatchesNameText=Prov
-ColorChooser.swatchesMnemonic=80
-ColorChooser.swatchesRecentText=Tidigare:
+ColorChooser.swatchesMnemonic=83
+ColorChooser.swatchesRecentText=Senaste:
 # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX
 # constant, and an index into the text to render the mnemonic as. The
 # mnemonic is xxxMnemonic and the index of the character to underline is
 # xxxDisplayedMnemonicIndex.
-ColorChooser.hsvNameText=NMI
+ColorChooser.hsvNameText=HSV
 ColorChooser.hsvMnemonic=72
 ColorChooser.hsvHueText=Nyans
-ColorChooser.hsvSaturationText=M\u00e4ttnad
-ColorChooser.hsvValueText=V\u00e4rde
-ColorChooser.hsvTransparencyText=Genomskinlighet
+ColorChooser.hsvSaturationText=M\u00E4ttnad
+ColorChooser.hsvValueText=V\u00E4rde
+ColorChooser.hsvTransparencyText=Transparens
 ColorChooser.hslNameText=HSL
 ColorChooser.hslMnemonic=76
 ColorChooser.hslHueText=Nyans
-ColorChooser.hslSaturationText=M\u00e4ttnad
+ColorChooser.hslSaturationText=M\u00E4ttnad
 ColorChooser.hslLightnessText=Ljusstyrka
-ColorChooser.hslTransparencyText=Genomskinlighet
+ColorChooser.hslTransparencyText=Transparens
 ColorChooser.rgbNameText=RGB
 ColorChooser.rgbMnemonic=71
-ColorChooser.rgbRedText=R\u00f6d
-ColorChooser.rgbRedMnemonic=82
-ColorChooser.rgbGreenText=Gr\u00f6n
-ColorChooser.rgbGreenMnemonic=71
-ColorChooser.rgbBlueText=Bl\u00e5
+ColorChooser.rgbRedText=R\u00F6d
+ColorChooser.rgbRedMnemonic=68
+ColorChooser.rgbGreenText=Gr\u00F6n
+ColorChooser.rgbGreenMnemonic=78
+ColorChooser.rgbBlueText=Bl\u00E5
 ColorChooser.rgbBlueMnemonic=66
 ColorChooser.rgbAlphaText=Alfa
-ColorChooser.rgbHexCodeText=F\u00e4rgkod
+ColorChooser.rgbHexCodeText=F\u00E4rgkod
 ColorChooser.rgbHexCodeMnemonic=67
 ColorChooser.cmykNameText=CMYK
 ColorChooser.cmykMnemonic=77
-ColorChooser.cmykCyanText=Cyanbl\u00e5
+ColorChooser.cmykCyanText=Cyan
 ColorChooser.cmykMagentaText=Magenta
 ColorChooser.cmykYellowText=Gul
 ColorChooser.cmykBlackText=Svart
@@ -141,14 +141,14 @@
 # We only define mnemonics for YES/NO, but for completeness you can
 # define mnemonics for any of the buttons.
 OptionPane.yesButtonText=Ja
-OptionPane.yesButtonMnemonic=74
+OptionPane.yesButtonMnemonic=89
 OptionPane.noButtonText=Nej
 OptionPane.noButtonMnemonic=78
 OptionPane.okButtonText=OK
 OptionPane.okButtonMnemonic=0
 OptionPane.cancelButtonText=Avbryt
 OptionPane.cancelButtonMnemonic=0
-OptionPane.titleText=V\u00e4lj ett alternativ
+OptionPane.titleText=V\u00E4lj ett alternativ
 # Title for the dialog for the showInputDialog methods. Only used if
 # the developer uses one of the variants that doesn't take a title.
 OptionPane.inputDialogTitle=Indata
@@ -160,7 +160,7 @@
 PrintingDialog.titleProgressText=Skriver ut
 PrintingDialog.titleAbortingText=Skriver ut (avbryter)
 
-PrintingDialog.contentInitialText=Utskrift p\u00e5g\u00e5r...
+PrintingDialog.contentInitialText=Utskrift p\u00E5g\u00E5r...
 
 # The following string will be formatted by a MessageFormat
 # and {0} will be replaced by page number being printed
@@ -176,50 +176,50 @@
 ############ Internal Frame Strings ############
 InternalFrame.iconButtonToolTip=Minimera
 InternalFrame.maxButtonToolTip=Maximera
-InternalFrame.restoreButtonToolTip=\u00c5terst\u00e4ll
-InternalFrame.closeButtonToolTip=St\u00e4ng
+InternalFrame.restoreButtonToolTip=\u00C5terst\u00E4ll
+InternalFrame.closeButtonToolTip=St\u00E4ng
 
 ############ Internal Frame Title Pane Strings ############
-InternalFrameTitlePane.restoreButtonText=\u00c5terst\u00e4ll
+InternalFrameTitlePane.restoreButtonText=\u00C5terst\u00E4ll
 InternalFrameTitlePane.moveButtonText=Flytta
 InternalFrameTitlePane.sizeButtonText=Storlek
 InternalFrameTitlePane.minimizeButtonText=Minimera
 InternalFrameTitlePane.maximizeButtonText=Maximera
-InternalFrameTitlePane.closeButtonText=St\u00e4ng
+InternalFrameTitlePane.closeButtonText=St\u00E4ng
 
 ############ Text strings #############
 # Used for html forms
-FormView.submitButtonText=Skicka fr\u00e5ga
-FormView.resetButtonText=\u00c5terst\u00e4ll
-FormView.browseFileButtonText=Bl\u00e4ddra...
+FormView.submitButtonText=Skicka fr\u00E5ga
+FormView.resetButtonText=\u00C5terst\u00E4ll
+FormView.browseFileButtonText=Bl\u00E4ddra...
 
 ############ Abstract Document Strings ############
-AbstractDocument.styleChangeText=snittbyte
-AbstractDocument.additionText=till\u00e4gg
-AbstractDocument.deletionText=radering
-AbstractDocument.undoText=\u00c5ngra
-AbstractDocument.redoText=G\u00f6r om
+AbstractDocument.styleChangeText=format\u00E4ndring
+AbstractDocument.additionText=till\u00E4gg
+AbstractDocument.deletionText=borttagning
+AbstractDocument.undoText=\u00C5ngra
+AbstractDocument.redoText=G\u00F6r om
 
 ############ Abstract Button Strings ############
 AbstractButton.clickText=klicka
 
 ############ Abstract Undoable Edit Strings ############
-AbstractUndoableEdit.undoText=\u00c5ngra
-AbstractUndoableEdit.redoText=G\u00f6r om
+AbstractUndoableEdit.undoText=\u00C5ngra
+AbstractUndoableEdit.redoText=G\u00F6r om
 
 ############ Combo Box Strings ############
-ComboBox.togglePopupText=v\u00e4xlaPopup
+ComboBox.togglePopupText=v\u00E4xlaPopup
 
 ############ Progress Monitor Strings ############
-ProgressMonitor.progressText=Status...
+ProgressMonitor.progressText=P\u00E5g\u00E5r...
 
 ############ Split Pane Strings ############
-SplitPane.leftButtonText=v\u00e4nster knapp
-SplitPane.rightButtonText=h\u00f6ger knapp
+SplitPane.leftButtonText=v\u00E4nster knapp
+SplitPane.rightButtonText=h\u00F6ger knapp
 # Used for Isindex
-IsindexView.prompt=Detta \u00e4r ett s\u00f6kbart index.  Ange nyckelord f\u00f6r s\u00f6kningen:
+IsindexView.prompt=Detta \u00E4r ett s\u00F6kbart index. Ange s\u00F6kord:
 
 ############ InternalFrameTitlePane Strings ############
 InternalFrameTitlePane.iconifyButtonAccessibleName=Minimera
 InternalFrameTitlePane.maximizeButtonAccessibleName=Maximera
-InternalFrameTitlePane.closeButtonAccessibleName=St\u00e4ng
+InternalFrameTitlePane.closeButtonAccessibleName=St\u00E4ng
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_CN.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_CN.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -45,29 +45,29 @@
 # @author Steve Wilson
 
 ############ FILE CHOOSER STRINGS #############
-FileChooser.fileDescriptionText=\u666e\u901a\u7684\u6587\u4ef6
-FileChooser.directoryDescriptionText=\u76ee\u5f55
-FileChooser.newFolderErrorText=\u521b\u5efa\u65b0\u7684\u6587\u4ef6\u5939\u65f6\u53d1\u751f\u9519\u8bef
+FileChooser.fileDescriptionText=\u666E\u901A\u7684\u6587\u4EF6
+FileChooser.directoryDescriptionText=\u76EE\u5F55
+FileChooser.newFolderErrorText=\u521B\u5EFA\u65B0\u7684\u6587\u4EF6\u5939\u65F6\u51FA\u9519
 FileChooser.newFolderErrorSeparator= : 
-FileChooser.newFolderParentDoesntExistTitleText=\u65e0\u6cd5\u521b\u5efa\u6587\u4ef6\u5939
-FileChooser.newFolderParentDoesntExistText=\u65e0\u6cd5\u521b\u5efa\u6587\u4ef6\u5939\u3002\n\n\u7cfb\u7edf\u65e0\u6cd5\u627e\u5230\u6307\u5b9a\u7684\u8def\u5f84\u3002
-FileChooser.renameErrorTitleText=\u91cd\u547d\u540d\u6587\u4ef6\u6216\u6587\u4ef6\u5939\u65f6\u51fa\u9519
-FileChooser.renameErrorText=\u65e0\u6cd5\u91cd\u547d\u540d {0}
-FileChooser.renameErrorFileExistsText=\u65e0\u6cd5\u91cd\u547d\u540d {0}\uff1a\u5df2\u5b58\u5728\u5177\u6709\u6307\u5b9a\u540d\u79f0\u7684\u6587\u4ef6\u3002\u8bf7\u6307\u5b9a\u53e6\u4e00\u6587\u4ef6\u540d\u3002 
-FileChooser.acceptAllFileFilterText=\u6240\u6709\u6587\u4ef6
-FileChooser.cancelButtonText=\u53d6\u6d88
+FileChooser.newFolderParentDoesntExistTitleText=\u65E0\u6CD5\u521B\u5EFA\u6587\u4EF6\u5939
+FileChooser.newFolderParentDoesntExistText=\u65E0\u6CD5\u521B\u5EFA\u6587\u4EF6\u5939\u3002\n\n\u7CFB\u7EDF\u627E\u4E0D\u5230\u6307\u5B9A\u7684\u8DEF\u5F84\u3002
+FileChooser.renameErrorTitleText=\u91CD\u547D\u540D\u6587\u4EF6\u6216\u6587\u4EF6\u5939\u65F6\u51FA\u9519
+FileChooser.renameErrorText=\u65E0\u6CD5\u91CD\u547D\u540D{0}
+FileChooser.renameErrorFileExistsText=\u65E0\u6CD5\u91CD\u547D\u540D{0}: \u5DF2\u5B58\u5728\u5177\u6709\u6240\u6307\u5B9A\u540D\u79F0\u7684\u6587\u4EF6\u3002\u8BF7\u6307\u5B9A\u5176\u4ED6\u6587\u4EF6\u540D\u3002
+FileChooser.acceptAllFileFilterText=\u6240\u6709\u6587\u4EF6
+FileChooser.cancelButtonText=\u53D6\u6D88
 FileChooser.cancelButtonMnemonic=67
-FileChooser.saveButtonText=\u4fdd\u5b58
+FileChooser.saveButtonText=\u4FDD\u5B58
 FileChooser.saveButtonMnemonic=83
-FileChooser.openButtonText=\u6253\u5f00
+FileChooser.openButtonText=\u6253\u5F00
 FileChooser.openButtonMnemonic=79
-FileChooser.saveDialogTitleText=\u4fdd\u5b58
-FileChooser.openDialogTitleText=\u6253\u5f00
-FileChooser.updateButtonText=\u66f4\u65b0(U)
+FileChooser.saveDialogTitleText=\u4FDD\u5B58
+FileChooser.openDialogTitleText=\u6253\u5F00
+FileChooser.updateButtonText=\u66F4\u65B0
 FileChooser.updateButtonMnemonic=85
-FileChooser.helpButtonText=\u5e2e\u52a9(H)
+FileChooser.helpButtonText=\u5E2E\u52A9
 FileChooser.helpButtonMnemonic=72
-FileChooser.directoryOpenButtonText=\u6253\u5f00
+FileChooser.directoryOpenButtonText=\u6253\u5F00
 FileChooser.directoryOpenButtonMnemonic=79
 
 # File Size Units
@@ -76,150 +76,150 @@
 FileChooser.fileSizeGigaBytes={0} GB
 
 # These strings are platform dependent not look and feel dependent.
-FileChooser.win32.newFolder=\u65b0\u5efa\u6587\u4ef6\u5939
-FileChooser.win32.newFolder.subsequent=\u65b0\u5efa\u6587\u4ef6\u5939 ({0})
-FileChooser.other.newFolder=\u65b0\u5efa\u6587\u4ef6\u5939
-FileChooser.other.newFolder.subsequent=\u65b0\u5efa\u6587\u4ef6\u5939.{0}
+FileChooser.win32.newFolder=\u65B0\u5EFA\u6587\u4EF6\u5939
+FileChooser.win32.newFolder.subsequent=\u65B0\u5EFA\u6587\u4EF6\u5939 ({0})
+FileChooser.other.newFolder=NewFolder
+FileChooser.other.newFolder.subsequent=NewFolder.{0}
 
 
 ## file chooser tooltips ###
-FileChooser.cancelButtonToolTipText=\u4e2d\u6b62\u6587\u4ef6\u9009\u62e9\u5668\u5bf9\u8bdd\u6846
-FileChooser.saveButtonToolTipText=\u4fdd\u5b58\u9009\u62e9\u7684\u6587\u4ef6
-FileChooser.openButtonToolTipText=\u6253\u5f00\u9009\u62e9\u7684\u6587\u4ef6
-FileChooser.updateButtonToolTipText=\u66f4\u65b0\u76ee\u5f55\u5217\u8868
-FileChooser.helpButtonToolTipText=\u6587\u4ef6\u9009\u62e9\u5668\u5e2e\u52a9
-FileChooser.directoryOpenButtonToolTipText=\u6253\u5f00\u9009\u62e9\u7684\u76ee\u5f55
+FileChooser.cancelButtonToolTipText=\u4E2D\u6B62\u6587\u4EF6\u9009\u62E9\u5668\u5BF9\u8BDD\u6846
+FileChooser.saveButtonToolTipText=\u4FDD\u5B58\u6240\u9009\u6587\u4EF6
+FileChooser.openButtonToolTipText=\u6253\u5F00\u6240\u9009\u6587\u4EF6
+FileChooser.updateButtonToolTipText=\u66F4\u65B0\u76EE\u5F55\u5217\u8868
+FileChooser.helpButtonToolTipText=FileChooser \u5E2E\u52A9
+FileChooser.directoryOpenButtonToolTipText=\u6253\u5F00\u9009\u62E9\u7684\u76EE\u5F55
 
 ############ COLOR CHOOSER STRINGS #############
-ColorChooser.previewText=\u9884\u89c8
-ColorChooser.okText=\u786e\u5b9a
-ColorChooser.cancelText=\u53d6\u6d88
-ColorChooser.resetText=\u91cd\u8bbe(R)
+ColorChooser.previewText=\u9884\u89C8
+ColorChooser.okText=\u786E\u5B9A
+ColorChooser.cancelText=\u53D6\u6D88
+ColorChooser.resetText=\u91CD\u8BBE
 # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic
 ColorChooser.resetMnemonic=82
-ColorChooser.sampleText=\u6837\u54c1\u6587\u672c  \u6837\u54c1\u6587\u672c
-ColorChooser.swatchesNameText=\u6837\u54c1(S)
+ColorChooser.sampleText=\u793A\u4F8B\u6587\u672C  \u793A\u4F8B\u6587\u672C
+ColorChooser.swatchesNameText=\u793A\u4F8B
 ColorChooser.swatchesMnemonic=83
-ColorChooser.swatchesRecentText=\u6700\u8fd1:
+ColorChooser.swatchesRecentText=\u6700\u8FD1:
 # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX
 # constant, and an index into the text to render the mnemonic as. The
 # mnemonic is xxxMnemonic and the index of the character to underline is
 # xxxDisplayedMnemonicIndex.
 ColorChooser.hsvNameText=HSV
 ColorChooser.hsvMnemonic=72
-ColorChooser.hsvHueText=\u8272\u8c03
-ColorChooser.hsvSaturationText=\u9971\u548c
-ColorChooser.hsvValueText=\u503c
-ColorChooser.hsvTransparencyText=\u900f\u660e
+ColorChooser.hsvHueText=\u8272\u8C03
+ColorChooser.hsvSaturationText=\u9971\u548C\u5EA6
+ColorChooser.hsvValueText=\u503C
+ColorChooser.hsvTransparencyText=\u900F\u660E\u5EA6
 ColorChooser.hslNameText=HSL
 ColorChooser.hslMnemonic=76
-ColorChooser.hslHueText=\u8272\u8c03
-ColorChooser.hslSaturationText=\u9971\u548c
-ColorChooser.hslLightnessText=\u4eae\u5ea6
-ColorChooser.hslTransparencyText=\u900f\u660e
+ColorChooser.hslHueText=\u8272\u8C03
+ColorChooser.hslSaturationText=\u9971\u548C\u5EA6
+ColorChooser.hslLightnessText=\u4EAE\u5EA6
+ColorChooser.hslTransparencyText=\u900F\u660E\u5EA6
 ColorChooser.rgbNameText=RGB
 ColorChooser.rgbMnemonic=71
-ColorChooser.rgbRedText=\u7ea2
+ColorChooser.rgbRedText=\u7EA2
 ColorChooser.rgbRedMnemonic=68
-ColorChooser.rgbGreenText=\u7eff
+ColorChooser.rgbGreenText=\u7EFF
 ColorChooser.rgbGreenMnemonic=78
-ColorChooser.rgbBlueText=\u84dd
+ColorChooser.rgbBlueText=\u84DD
 ColorChooser.rgbBlueMnemonic=66
 ColorChooser.rgbAlphaText=Alpha
-ColorChooser.rgbHexCodeText=\u989c\u8272\u4ee3\u7801
+ColorChooser.rgbHexCodeText=\u989C\u8272\u4EE3\u7801
 ColorChooser.rgbHexCodeMnemonic=67
 ColorChooser.cmykNameText=CMYK
 ColorChooser.cmykMnemonic=77
 ColorChooser.cmykCyanText=\u9752\u8272
-ColorChooser.cmykMagentaText=\u54c1\u7ea2\u8272
-ColorChooser.cmykYellowText=\u9ec4\u8272
-ColorChooser.cmykBlackText=\u9ed1\u8272
+ColorChooser.cmykMagentaText=\u7D2B\u7EA2\u8272
+ColorChooser.cmykYellowText=\u9EC4\u8272
+ColorChooser.cmykBlackText=\u9ED1\u8272
 ColorChooser.cmykAlphaText=Alpha
 
 ############ OPTION PANE STRINGS #############
 # Mnemonic keys correspond to KeyEvent.VK_XXX constant
 # We only define mnemonics for YES/NO, but for completeness you can
 # define mnemonics for any of the buttons.
-OptionPane.yesButtonText=\u662f(Y)
+OptionPane.yesButtonText=\u662F
 OptionPane.yesButtonMnemonic=89
-OptionPane.noButtonText=\u5426(N)
+OptionPane.noButtonText=\u5426
 OptionPane.noButtonMnemonic=78
-OptionPane.okButtonText=\u786e\u5b9a
+OptionPane.okButtonText=\u786E\u5B9A
 OptionPane.okButtonMnemonic=0
-OptionPane.cancelButtonText=\u53d6\u6d88
+OptionPane.cancelButtonText=\u53D6\u6D88
 OptionPane.cancelButtonMnemonic=0
-OptionPane.titleText=\u9009\u62e9\u4e00\u4e2a\u9009\u9879
+OptionPane.titleText=\u9009\u62E9\u4E00\u4E2A\u9009\u9879
 # Title for the dialog for the showInputDialog methods. Only used if
 # the developer uses one of the variants that doesn't take a title.
-OptionPane.inputDialogTitle=\u8f93\u5165
+OptionPane.inputDialogTitle=\u8F93\u5165
 # Title for the dialog for the showMessageDialog methods. Only used if
 # the developer uses one of the variants that doesn't take a title.
-OptionPane.messageDialogTitle=\u6d88\u606f
+OptionPane.messageDialogTitle=\u6D88\u606F
 
 ############ Printing Dialog Strings ############
 PrintingDialog.titleProgressText=\u6253\u5370
-PrintingDialog.titleAbortingText=\u6253\u5370 (\u6b63\u5728\u7ec8\u6b62)
+PrintingDialog.titleAbortingText=\u6253\u5370 (\u6B63\u5728\u4E2D\u6B62)
 
-PrintingDialog.contentInitialText=\u6b63\u5728\u8fdb\u884c\u6253\u5370...
+PrintingDialog.contentInitialText=\u6B63\u5728\u8FDB\u884C\u6253\u5370...
 
 # The following string will be formatted by a MessageFormat
 # and {0} will be replaced by page number being printed
-PrintingDialog.contentProgressText=\u5df2\u6253\u5370\u9875 {0}...
+PrintingDialog.contentProgressText=\u5DF2\u6253\u5370\u9875 {0}...
 
-PrintingDialog.contentAbortingText=\u6b63\u5728\u7ec8\u6b62\u6253\u5370...
+PrintingDialog.contentAbortingText=\u6B63\u5728\u4E2D\u6B62\u6253\u5370...
 
-PrintingDialog.abortButtonText=\u7ec8\u6b62(A)
+PrintingDialog.abortButtonText=\u4E2D\u6B62
 PrintingDialog.abortButtonMnemonic=65
-PrintingDialog.abortButtonDisplayedMnemonicIndex=3
-PrintingDialog.abortButtonToolTipText=\u7ec8\u6b62\u6253\u5370
+PrintingDialog.abortButtonDisplayedMnemonicIndex=0
+PrintingDialog.abortButtonToolTipText=\u4E2D\u6B62\u6253\u5370
 
 ############ Internal Frame Strings ############
-InternalFrame.iconButtonToolTip=\u6700\u5c0f\u5316
+InternalFrame.iconButtonToolTip=\u6700\u5C0F\u5316
 InternalFrame.maxButtonToolTip=\u6700\u5927\u5316
-InternalFrame.restoreButtonToolTip=\u6062\u590d
-InternalFrame.closeButtonToolTip=\u5173\u95ed
+InternalFrame.restoreButtonToolTip=\u8FD8\u539F
+InternalFrame.closeButtonToolTip=\u5173\u95ED
 
 ############ Internal Frame Title Pane Strings ############
-InternalFrameTitlePane.restoreButtonText=\u6062\u590d
-InternalFrameTitlePane.moveButtonText=\u79fb\u52a8
-InternalFrameTitlePane.sizeButtonText=\u5927\u5c0f
-InternalFrameTitlePane.minimizeButtonText=\u6700\u5c0f\u5316
+InternalFrameTitlePane.restoreButtonText=\u8FD8\u539F
+InternalFrameTitlePane.moveButtonText=\u79FB\u52A8
+InternalFrameTitlePane.sizeButtonText=\u5927\u5C0F
+InternalFrameTitlePane.minimizeButtonText=\u6700\u5C0F\u5316
 InternalFrameTitlePane.maximizeButtonText=\u6700\u5927\u5316
-InternalFrameTitlePane.closeButtonText=\u5173\u95ed
+InternalFrameTitlePane.closeButtonText=\u5173\u95ED
 
 ############ Text strings #############
 # Used for html forms
-FormView.submitButtonText=\u63d0\u4ea4\u67e5\u8be2
-FormView.resetButtonText=\u91cd\u8bbe
-FormView.browseFileButtonText=\u6d4f\u89c8...
+FormView.submitButtonText=\u63D0\u4EA4\u67E5\u8BE2
+FormView.resetButtonText=\u91CD\u8BBE
+FormView.browseFileButtonText=\u6D4F\u89C8...
 
 ############ Abstract Document Strings ############
-AbstractDocument.styleChangeText=\u98ce\u683c\u53d8\u5316
-AbstractDocument.additionText=\u589e\u52a0
+AbstractDocument.styleChangeText=\u6837\u5F0F\u66F4\u6539
+AbstractDocument.additionText=\u6DFB\u52A0
 AbstractDocument.deletionText=\u5220\u9664
-AbstractDocument.undoText=\u64a4\u6d88
-AbstractDocument.redoText=\u91cd\u505a
+AbstractDocument.undoText=\u64A4\u6D88
+AbstractDocument.redoText=\u91CD\u505A
 
 ############ Abstract Button Strings ############
-AbstractButton.clickText=\u5355\u51fb
+AbstractButton.clickText=\u5355\u51FB
 
 ############ Abstract Undoable Edit Strings ############
-AbstractUndoableEdit.undoText=\u64a4\u6d88
-AbstractUndoableEdit.redoText=\u91cd\u505a
+AbstractUndoableEdit.undoText=\u64A4\u6D88
+AbstractUndoableEdit.redoText=\u91CD\u505A
 
 ############ Combo Box Strings ############
-ComboBox.togglePopupText=\u5207\u6362\u952e\u5f39\u51fa
+ComboBox.togglePopupText=togglePopup
 
 ############ Progress Monitor Strings ############
-ProgressMonitor.progressText=\u8fdb\u5ea6...
+ProgressMonitor.progressText=\u8FDB\u5EA6...
 
 ############ Split Pane Strings ############
-SplitPane.leftButtonText=\u5de6\u952e
-SplitPane.rightButtonText=\u53f3\u952e
+SplitPane.leftButtonText=\u5DE6\u952E
+SplitPane.rightButtonText=\u53F3\u952E
 # Used for Isindex
-IsindexView.prompt=\u8fd9\u662f\u53ef\u641c\u7d22\u7d22\u5f15\u3002\u8bf7\u952e\u5165\u5173\u952e\u8bcd\uff1a
+IsindexView.prompt=\u8FD9\u662F\u53EF\u641C\u7D22\u7D22\u5F15\u3002\u8BF7\u8F93\u5165\u641C\u7D22\u5173\u952E\u5B57: 
 
 ############ InternalFrameTitlePane Strings ############
-InternalFrameTitlePane.iconifyButtonAccessibleName=\u56fe\u6807\u5316
+InternalFrameTitlePane.iconifyButtonAccessibleName=\u56FE\u6807\u5316
 InternalFrameTitlePane.maximizeButtonAccessibleName=\u6700\u5927\u5316
-InternalFrameTitlePane.closeButtonAccessibleName=\u5173\u95ed
+InternalFrameTitlePane.closeButtonAccessibleName=\u5173\u95ED
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -45,29 +45,29 @@
 # @author Steve Wilson
 
 ############ FILE CHOOSER STRINGS #############
-FileChooser.fileDescriptionText=\u4e00\u822c\u6a94\u6848
-FileChooser.directoryDescriptionText=\u76ee\u9304
-FileChooser.newFolderErrorText=\u5efa\u7acb\u65b0\u6a94\u6848\u593e\u6642\u767c\u751f\u932f\u8aa4
+FileChooser.fileDescriptionText=\u4E00\u822C\u6A94\u6848
+FileChooser.directoryDescriptionText=\u76EE\u9304
+FileChooser.newFolderErrorText=\u5EFA\u7ACB\u65B0\u8CC7\u6599\u593E\u6642\u767C\u751F\u932F\u8AA4
 FileChooser.newFolderErrorSeparator= : 
-FileChooser.newFolderParentDoesntExistTitleText=\u7121\u6cd5\u5efa\u7acb\u8cc7\u6599\u593e
-FileChooser.newFolderParentDoesntExistText=\u7121\u6cd5\u5efa\u7acb\u8cc7\u6599\u593e\u3002\n\n\u7cfb\u7d71\u627e\u4e0d\u5230\u6240\u6307\u5b9a\u7684\u8def\u5f91\u3002
-FileChooser.renameErrorTitleText=\u91cd\u65b0\u547d\u540d\u6a94\u6848\u6216\u8cc7\u6599\u593e\u6642\u767c\u751f\u932f\u8aa4
-FileChooser.renameErrorText=\u7121\u6cd5\u91cd\u65b0\u547d\u540d {0}
-FileChooser.renameErrorFileExistsText=\u7121\u6cd5\u91cd\u65b0\u547d\u540d {0}\uff1a\u60a8\u6307\u5b9a\u4e4b\u540d\u7a31\u7684\u6a94\u6848\u5df2\u5b58\u5728\u3002\u6307\u5b9a\u4e0d\u540c\u7684\u6a94\u6848\u540d\u7a31\u3002 
-FileChooser.acceptAllFileFilterText=\u6240\u6709\u6a94\u6848
-FileChooser.cancelButtonText=\u53d6\u6d88
+FileChooser.newFolderParentDoesntExistTitleText=\u7121\u6CD5\u5EFA\u7ACB\u8CC7\u6599\u593E
+FileChooser.newFolderParentDoesntExistText=\u7121\u6CD5\u5EFA\u7ACB\u8CC7\u6599\u593E\u3002\n\n\u7CFB\u7D71\u627E\u4E0D\u5230\u6307\u5B9A\u7684\u8DEF\u5F91\u3002
+FileChooser.renameErrorTitleText=\u91CD\u65B0\u547D\u540D\u6A94\u6848\u6216\u8CC7\u6599\u593E\u6642\u767C\u751F\u932F\u8AA4\u3002
+FileChooser.renameErrorText=\u7121\u6CD5\u91CD\u65B0\u547D\u540D {0}
+FileChooser.renameErrorFileExistsText=\u7121\u6CD5\u91CD\u65B0\u547D\u540D {0}: \u5DF2\u7D93\u5B58\u5728\u60A8\u6240\u6307\u5B9A\u540D\u7A31\u7684\u6A94\u6848\u3002\u8ACB\u6307\u5B9A\u4E0D\u540C\u7684\u540D\u7A31\u3002
+FileChooser.acceptAllFileFilterText=\u6240\u6709\u6A94\u6848
+FileChooser.cancelButtonText=\u53D6\u6D88
 FileChooser.cancelButtonMnemonic=67
-FileChooser.saveButtonText=\u5132\u5b58
+FileChooser.saveButtonText=\u5132\u5B58
 FileChooser.saveButtonMnemonic=83
-FileChooser.openButtonText=\u958b\u555f
+FileChooser.openButtonText=\u958B\u555F
 FileChooser.openButtonMnemonic=79
-FileChooser.saveDialogTitleText=\u5132\u5b58
-FileChooser.openDialogTitleText=\u958b\u555f
-FileChooser.updateButtonText=\u66f4\u65b0(U)
+FileChooser.saveDialogTitleText=\u5132\u5B58
+FileChooser.openDialogTitleText=\u958B\u555F
+FileChooser.updateButtonText=\u66F4\u65B0
 FileChooser.updateButtonMnemonic=85
-FileChooser.helpButtonText=\u8aaa\u660e(H)
+FileChooser.helpButtonText=\u8AAA\u660E
 FileChooser.helpButtonMnemonic=72
-FileChooser.directoryOpenButtonText=\u958b\u555f
+FileChooser.directoryOpenButtonText=\u958B\u555F
 FileChooser.directoryOpenButtonMnemonic=79
 
 # File Size Units
@@ -76,150 +76,150 @@
 FileChooser.fileSizeGigaBytes={0} GB
 
 # These strings are platform dependent not look and feel dependent.
-FileChooser.win32.newFolder=\u65b0\u8cc7\u6599\u593e
-FileChooser.win32.newFolder.subsequent=\u65b0\u8cc7\u6599\u593e ({0})
-FileChooser.other.newFolder=\u65b0\u8cc7\u6599\u593e
-FileChooser.other.newFolder.subsequent=\u65b0\u8cc7\u6599\u593e.{0}
+FileChooser.win32.newFolder=\u65B0\u8CC7\u6599\u593E
+FileChooser.win32.newFolder.subsequent=\u65B0\u8CC7\u6599\u593E ({0})
+FileChooser.other.newFolder=\u65B0\u8CC7\u6599\u593E
+FileChooser.other.newFolder.subsequent=\u65B0\u8CC7\u6599\u593E.{0}
 
 
 ## file chooser tooltips ###
-FileChooser.cancelButtonToolTipText=\u4e2d\u65b7\u300c\u6a94\u6848\u9078\u64c7\u5668\u300d\u5c0d\u8a71\u65b9\u584a
-FileChooser.saveButtonToolTipText=\u5132\u5b58\u9078\u53d6\u7684\u6a94\u6848
-FileChooser.openButtonToolTipText=\u958b\u555f\u9078\u53d6\u7684\u6a94\u6848
-FileChooser.updateButtonToolTipText=\u66f4\u65b0\u76ee\u9304\u6e05\u55ae
-FileChooser.helpButtonToolTipText=\u300c\u6a94\u6848\u9078\u64c7\u5668\u300d\u8aaa\u660e
-FileChooser.directoryOpenButtonToolTipText=\u958b\u555f\u9078\u53d6\u7684\u76ee\u9304
+FileChooser.cancelButtonToolTipText=\u4E2D\u6B62\u6A94\u6848\u9078\u64C7\u5668\u5C0D\u8A71\u65B9\u584A
+FileChooser.saveButtonToolTipText=\u5132\u5B58\u9078\u53D6\u7684\u6A94\u6848
+FileChooser.openButtonToolTipText=\u958B\u555F\u9078\u53D6\u7684\u6A94\u6848
+FileChooser.updateButtonToolTipText=\u66F4\u65B0\u76EE\u9304\u6E05\u55AE
+FileChooser.helpButtonToolTipText=\u300C\u6A94\u6848\u9078\u64C7\u5668\u300D\u8AAA\u660E
+FileChooser.directoryOpenButtonToolTipText=\u958B\u555F\u9078\u53D6\u7684\u76EE\u9304
 
 ############ COLOR CHOOSER STRINGS #############
-ColorChooser.previewText=\u9810\u89bd
-ColorChooser.okText=\u78ba\u5b9a
-ColorChooser.cancelText=\u53d6\u6d88
-ColorChooser.resetText=\u91cd\u8a2d(R)
+ColorChooser.previewText=\u9810\u89BD
+ColorChooser.okText=\u78BA\u5B9A
+ColorChooser.cancelText=\u53D6\u6D88
+ColorChooser.resetText=\u91CD\u8A2D
 # VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic
 ColorChooser.resetMnemonic=82
-ColorChooser.sampleText=\u7bc4\u4f8b\u6587\u5b57  \u7bc4\u4f8b\u6587\u5b57
-ColorChooser.swatchesNameText=\u8abf\u8272\u677f(S)
+ColorChooser.sampleText=\u7BC4\u4F8B\u6587\u5B57  \u7BC4\u4F8B\u6587\u5B57
+ColorChooser.swatchesNameText=\u8ABF\u8272\u677F
 ColorChooser.swatchesMnemonic=83
-ColorChooser.swatchesRecentText=\u6700\u65b0\u9078\u64c7:
+ColorChooser.swatchesRecentText=\u6700\u65B0\u9078\u64C7:
 # Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX
 # constant, and an index into the text to render the mnemonic as. The
 # mnemonic is xxxMnemonic and the index of the character to underline is
 # xxxDisplayedMnemonicIndex.
 ColorChooser.hsvNameText=HSV
 ColorChooser.hsvMnemonic=72
-ColorChooser.hsvHueText=\u8272\u8abf
-ColorChooser.hsvSaturationText=\u98fd\u548c\u5ea6
-ColorChooser.hsvValueText=\u503c
-ColorChooser.hsvTransparencyText=\u900f\u660e\u5ea6
+ColorChooser.hsvHueText=\u8272\u8ABF
+ColorChooser.hsvSaturationText=\u5F69\u5EA6
+ColorChooser.hsvValueText=\u6578\u503C
+ColorChooser.hsvTransparencyText=\u900F\u660E\u5EA6
 ColorChooser.hslNameText=HSL
 ColorChooser.hslMnemonic=76
-ColorChooser.hslHueText=\u8272\u8abf
-ColorChooser.hslSaturationText=\u98fd\u548c\u5ea6
-ColorChooser.hslLightnessText=\u4eae\u5ea6
-ColorChooser.hslTransparencyText=\u900f\u660e\u5ea6
+ColorChooser.hslHueText=\u8272\u8ABF
+ColorChooser.hslSaturationText=\u5F69\u5EA6
+ColorChooser.hslLightnessText=\u4EAE\u5EA6
+ColorChooser.hslTransparencyText=\u900F\u660E\u5EA6
 ColorChooser.rgbNameText=RGB
 ColorChooser.rgbMnemonic=71
-ColorChooser.rgbRedText=\u7d05\u8272(D)
+ColorChooser.rgbRedText=\u7D05\u8272
 ColorChooser.rgbRedMnemonic=68
-ColorChooser.rgbGreenText=\u7da0\u8272(N)
+ColorChooser.rgbGreenText=\u7DA0\u8272
 ColorChooser.rgbGreenMnemonic=78
-ColorChooser.rgbBlueText=\u85cd\u8272(B)
+ColorChooser.rgbBlueText=\u85CD\u8272
 ColorChooser.rgbBlueMnemonic=66
 ColorChooser.rgbAlphaText=Alpha
-ColorChooser.rgbHexCodeText=\u8272\u78bc
+ColorChooser.rgbHexCodeText=\u984F\u8272\u4EE3\u78BC
 ColorChooser.rgbHexCodeMnemonic=67
 ColorChooser.cmykNameText=CMYK
 ColorChooser.cmykMnemonic=77
-ColorChooser.cmykCyanText=\u85cd\u7da0\u8272
-ColorChooser.cmykMagentaText=\u7d2b\u7d05\u8272
-ColorChooser.cmykYellowText=\u9ec3\u8272
-ColorChooser.cmykBlackText=\u9ed1\u8272
+ColorChooser.cmykCyanText=\u85CD\u7DA0\u8272
+ColorChooser.cmykMagentaText=\u7D2B\u7D05\u8272
+ColorChooser.cmykYellowText=\u9EC3\u8272
+ColorChooser.cmykBlackText=\u9ED1\u8272
 ColorChooser.cmykAlphaText=Alpha
 
 ############ OPTION PANE STRINGS #############
 # Mnemonic keys correspond to KeyEvent.VK_XXX constant
 # We only define mnemonics for YES/NO, but for completeness you can
 # define mnemonics for any of the buttons.
-OptionPane.yesButtonText=\u662f(Y)
+OptionPane.yesButtonText=\u662F
 OptionPane.yesButtonMnemonic=89
-OptionPane.noButtonText=\u5426(N)
+OptionPane.noButtonText=\u5426
 OptionPane.noButtonMnemonic=78
-OptionPane.okButtonText=\u78ba\u5b9a
+OptionPane.okButtonText=\u78BA\u5B9A
 OptionPane.okButtonMnemonic=0
-OptionPane.cancelButtonText=\u53d6\u6d88
+OptionPane.cancelButtonText=\u53D6\u6D88
 OptionPane.cancelButtonMnemonic=0
-OptionPane.titleText=\u9078\u53d6\u4e00\u500b\u9078\u9805
+OptionPane.titleText=\u9078\u53D6\u4E00\u500B\u9078\u9805
 # Title for the dialog for the showInputDialog methods. Only used if
 # the developer uses one of the variants that doesn't take a title.
-OptionPane.inputDialogTitle=\u8f38\u5165
+OptionPane.inputDialogTitle=\u8F38\u5165
 # Title for the dialog for the showMessageDialog methods. Only used if
 # the developer uses one of the variants that doesn't take a title.
-OptionPane.messageDialogTitle=\u8a0a\u606f
+OptionPane.messageDialogTitle=\u8A0A\u606F
 
 ############ Printing Dialog Strings ############
 PrintingDialog.titleProgressText=\u5217\u5370
-PrintingDialog.titleAbortingText=\u5217\u5370 (\u4e2d\u65b7)
+PrintingDialog.titleAbortingText=\u5217\u5370 (\u4E2D\u6B62)
 
-PrintingDialog.contentInitialText=\u6b63\u5728\u5217\u5370...
+PrintingDialog.contentInitialText=\u6B63\u5728\u5217\u5370...
 
 # The following string will be formatted by a MessageFormat
 # and {0} will be replaced by page number being printed
-PrintingDialog.contentProgressText=\u5df2\u5217\u5370\u7684\u9801\u9762 {0}...
+PrintingDialog.contentProgressText=\u5DF2\u5217\u5370\u7684\u9801\u9762 {0}...
 
-PrintingDialog.contentAbortingText=\u6b63\u5728\u4e2d\u65b7\u5217\u5370...
+PrintingDialog.contentAbortingText=\u6B63\u5728\u4E2D\u6B62\u5217\u5370...
 
-PrintingDialog.abortButtonText=\u4e2d\u65b7(A)
+PrintingDialog.abortButtonText=\u4E2D\u6B62
 PrintingDialog.abortButtonMnemonic=65
 PrintingDialog.abortButtonDisplayedMnemonicIndex=0
-PrintingDialog.abortButtonToolTipText=\u4e2d\u65b7\u5217\u5370
+PrintingDialog.abortButtonToolTipText=\u4E2D\u6B62\u5217\u5370
 
 ############ Internal Frame Strings ############
-InternalFrame.iconButtonToolTip=\u6700\u5c0f\u5316
+InternalFrame.iconButtonToolTip=\u6700\u5C0F\u5316
 InternalFrame.maxButtonToolTip=\u6700\u5927\u5316
-InternalFrame.restoreButtonToolTip=\u5fa9\u539f
-InternalFrame.closeButtonToolTip=\u95dc\u9589
+InternalFrame.restoreButtonToolTip=\u5FA9\u539F
+InternalFrame.closeButtonToolTip=\u95DC\u9589
 
 ############ Internal Frame Title Pane Strings ############
-InternalFrameTitlePane.restoreButtonText=\u5fa9\u539f
-InternalFrameTitlePane.moveButtonText=\u79fb\u52d5
-InternalFrameTitlePane.sizeButtonText=\u5927\u5c0f
-InternalFrameTitlePane.minimizeButtonText=\u6700\u5c0f\u5316
+InternalFrameTitlePane.restoreButtonText=\u5FA9\u539F
+InternalFrameTitlePane.moveButtonText=\u79FB\u52D5
+InternalFrameTitlePane.sizeButtonText=\u5927\u5C0F
+InternalFrameTitlePane.minimizeButtonText=\u6700\u5C0F\u5316
 InternalFrameTitlePane.maximizeButtonText=\u6700\u5927\u5316
-InternalFrameTitlePane.closeButtonText=\u95dc\u9589
+InternalFrameTitlePane.closeButtonText=\u95DC\u9589
 
 ############ Text strings #############
 # Used for html forms
-FormView.submitButtonText=\u63d0\u51fa\u67e5\u8a62
-FormView.resetButtonText=\u91cd\u8a2d
-FormView.browseFileButtonText=\u700f\u89bd...
+FormView.submitButtonText=\u9001\u51FA\u67E5\u8A62
+FormView.resetButtonText=\u91CD\u8A2D
+FormView.browseFileButtonText=\u700F\u89BD...
 
 ############ Abstract Document Strings ############
-AbstractDocument.styleChangeText=\u6a23\u5f0f\u8b8a\u66f4
-AbstractDocument.additionText=\u9644\u52a0
-AbstractDocument.deletionText=\u522a\u9664
-AbstractDocument.undoText=\u9084\u539f
-AbstractDocument.redoText=\u91cd\u505a
+AbstractDocument.styleChangeText=\u6A23\u5F0F\u8B8A\u66F4
+AbstractDocument.additionText=\u9644\u52A0
+AbstractDocument.deletionText=\u522A\u9664
+AbstractDocument.undoText=\u9084\u539F
+AbstractDocument.redoText=\u91CD\u505A
 
 ############ Abstract Button Strings ############
-AbstractButton.clickText=\u6309\u4e00\u4e0b
+AbstractButton.clickText=\u6309\u4E00\u4E0B
 
 ############ Abstract Undoable Edit Strings ############
-AbstractUndoableEdit.undoText=\u9084\u539f
-AbstractUndoableEdit.redoText=\u91cd\u505a
+AbstractUndoableEdit.undoText=\u9084\u539F
+AbstractUndoableEdit.redoText=\u91CD\u505A
 
 ############ Combo Box Strings ############
-ComboBox.togglePopupText=\u5207\u63db\u5373\u73fe
+ComboBox.togglePopupText=\u5207\u63DB\u5373\u73FE\u5F0F\u8996\u7A97
 
 ############ Progress Monitor Strings ############
-ProgressMonitor.progressText=\u9032\u5ea6...
+ProgressMonitor.progressText=\u9032\u5EA6...
 
 ############ Split Pane Strings ############
-SplitPane.leftButtonText=\u5de6\u6309\u9215
-SplitPane.rightButtonText=\u53f3\u6309\u9215
+SplitPane.leftButtonText=\u5DE6\u6309\u9215
+SplitPane.rightButtonText=\u53F3\u6309\u9215
 # Used for Isindex
-IsindexView.prompt=\u9019\u662f\u4e00\u500b\u53ef\u641c\u5c0b\u7684\u7d22\u5f15\u3002\u8f38\u5165\u641c\u5c0b\u95dc\u9375\u5b57\uff1a
+IsindexView.prompt=\u9019\u662F\u4E00\u500B\u53EF\u641C\u5C0B\u7684\u7D22\u5F15\u3002\u8F38\u5165\u641C\u5C0B\u95DC\u9375\u5B57: 
 
 ############ InternalFrameTitlePane Strings ############
-InternalFrameTitlePane.iconifyButtonAccessibleName=\u5716\u793a\u5316
+InternalFrameTitlePane.iconifyButtonAccessibleName=\u5716\u793A\u5316
 InternalFrameTitlePane.maximizeButtonAccessibleName=\u6700\u5927\u5316
-InternalFrameTitlePane.closeButtonAccessibleName=\u95dc\u9589
+InternalFrameTitlePane.closeButtonAccessibleName=\u95DC\u9589
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_de.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_de.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -21,10 +21,10 @@
 FileChooser.lookInLabelText=Suchen in:
 FileChooser.saveInLabelText=Speichern in:
 FileChooser.fileNameLabelText=Dateiname:
-FileChooser.folderNameLabelText=Folder name:
+FileChooser.folderNameLabelText=Ordnername:
 FileChooser.filesOfTypeLabelText=Dateityp:
-FileChooser.upFolderToolTipText=Eine Ebene h\u00f6her
-FileChooser.upFolderAccessibleName=H\u00f6her
+FileChooser.upFolderToolTipText=Eine Ebene h\u00F6her
+FileChooser.upFolderAccessibleName=Nach oben
 FileChooser.homeFolderToolTipText=Home
 FileChooser.homeFolderAccessibleName=Home
 FileChooser.newFolderToolTipText=Neuen Ordner erstellen
@@ -38,19 +38,19 @@
 FileChooser.detailsViewActionLabelText=Details
 FileChooser.refreshActionLabelText=Aktualisieren
 FileChooser.viewMenuLabelText=Ansicht
-FileChooser.fileNameHeaderText=Dateiname
-FileChooser.fileSizeHeaderText=Gr\u00f6\u00dfe
+FileChooser.fileNameHeaderText=Name
+FileChooser.fileSizeHeaderText=Gr\u00F6\u00DFe
 FileChooser.fileTypeHeaderText=Typ
-FileChooser.fileDateHeaderText=Ge\u00e4ndert
-FileChooser.fileAttrHeaderText=Attribut
+FileChooser.fileDateHeaderText=Ge\u00E4ndert
+FileChooser.fileAttrHeaderText=Attribute
 
 ############ Used by MetalTitlePane if rendering window decorations############
 # All mnemonics are KeyEvent.VK_XXX as integers
 MetalTitlePane.restoreTitle=Wiederherstellen
-MetalTitlePane.restoreMnemonic=87
+MetalTitlePane.restoreMnemonic=82
 MetalTitlePane.iconifyTitle=Minimieren
-MetalTitlePane.iconifyMnemonic=77
+MetalTitlePane.iconifyMnemonic=69
 MetalTitlePane.maximizeTitle=Maximieren
 MetalTitlePane.maximizeMnemonic=88
-MetalTitlePane.closeTitle=Schlie\u00dfen
-MetalTitlePane.closeMnemonic=83
+MetalTitlePane.closeTitle=Schlie\u00DFen
+MetalTitlePane.closeMnemonic=67
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_es.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_es.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -20,26 +20,26 @@
 
 FileChooser.lookInLabelText=Buscar en:
 FileChooser.saveInLabelText=Guardar en:
-FileChooser.fileNameLabelText=Nombre de archivo:
-FileChooser.folderNameLabelText=Folder name:
-FileChooser.filesOfTypeLabelText=Archivos de tipo:
-FileChooser.upFolderToolTipText=Subir un nivel
+FileChooser.fileNameLabelText=Nombre de Archivo:
+FileChooser.folderNameLabelText=Nombre de la Carpeta:
+FileChooser.filesOfTypeLabelText=Archivos de Tipo:
+FileChooser.upFolderToolTipText=Subir un Nivel
 FileChooser.upFolderAccessibleName=Arriba
-FileChooser.homeFolderToolTipText=Principal
-FileChooser.homeFolderAccessibleName=Principal
-FileChooser.newFolderToolTipText=Crear carpeta nueva
-FileChooser.newFolderAccessibleName=Carpeta nueva
-FileChooser.newFolderActionLabelText=Carpeta nueva
+FileChooser.homeFolderToolTipText=Inicio
+FileChooser.homeFolderAccessibleName=Inicio
+FileChooser.newFolderToolTipText=Crear Nueva Carpeta
+FileChooser.newFolderAccessibleName=Nueva Carpeta
+FileChooser.newFolderActionLabelText=Nueva Carpeta
 FileChooser.listViewButtonToolTipText=Lista
 FileChooser.listViewButtonAccessibleName=Lista
 FileChooser.listViewActionLabelText=Lista
 FileChooser.detailsViewButtonToolTipText=Detalles
 FileChooser.detailsViewButtonAccessibleName=Detalles
 FileChooser.detailsViewActionLabelText=Detalles
-FileChooser.refreshActionLabelText=Renovar
+FileChooser.refreshActionLabelText=Refrescar
 FileChooser.viewMenuLabelText=Ver
 FileChooser.fileNameHeaderText=Nombre
-FileChooser.fileSizeHeaderText=Tama\u00f1o
+FileChooser.fileSizeHeaderText=Tama\u00F1o
 FileChooser.fileTypeHeaderText=Tipo
 FileChooser.fileDateHeaderText=Modificado
 FileChooser.fileAttrHeaderText=Atributos
@@ -49,7 +49,7 @@
 MetalTitlePane.restoreTitle=Restaurar
 MetalTitlePane.restoreMnemonic=82
 MetalTitlePane.iconifyTitle=Minimizar
-MetalTitlePane.iconifyMnemonic=77
+MetalTitlePane.iconifyMnemonic=69
 MetalTitlePane.maximizeTitle=Maximizar
 MetalTitlePane.maximizeMnemonic=88
 MetalTitlePane.closeTitle=Cerrar
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_fr.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_fr.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -20,37 +20,37 @@
 
 FileChooser.lookInLabelText=Rechercher dans :
 FileChooser.saveInLabelText=Enregistrer dans :
-FileChooser.fileNameLabelText=Nom de fichier :
-FileChooser.folderNameLabelText=Folder name:
-FileChooser.filesOfTypeLabelText=Fichiers du type :
+FileChooser.fileNameLabelText=Nom du fichier :
+FileChooser.folderNameLabelText=Nom du dossier :
+FileChooser.filesOfTypeLabelText=Fichiers de type :
 FileChooser.upFolderToolTipText=Remonte d'un niveau.
-FileChooser.upFolderAccessibleName=Vers le haut
-FileChooser.homeFolderToolTipText=R\u00e9pertoire d'accueil
-FileChooser.homeFolderAccessibleName=Accueil
-FileChooser.newFolderToolTipText=Cr\u00e9e un nouveau dossier.
+FileChooser.upFolderAccessibleName=Monter
+FileChooser.homeFolderToolTipText=R\u00E9pertoire d'origine
+FileChooser.homeFolderAccessibleName=R\u00E9pertoire d'origine
+FileChooser.newFolderToolTipText=Cr\u00E9e un dossier.
 FileChooser.newFolderAccessibleName=Nouveau dossier
 FileChooser.newFolderActionLabelText=Nouveau dossier
 FileChooser.listViewButtonToolTipText=Liste
 FileChooser.listViewButtonAccessibleName=Liste
 FileChooser.listViewActionLabelText=Liste
-FileChooser.detailsViewButtonToolTipText=D\u00e9tails
-FileChooser.detailsViewButtonAccessibleName=D\u00e9tails
-FileChooser.detailsViewActionLabelText=D\u00e9tails
+FileChooser.detailsViewButtonToolTipText=D\u00E9tails
+FileChooser.detailsViewButtonAccessibleName=D\u00E9tails
+FileChooser.detailsViewActionLabelText=D\u00E9tails
 FileChooser.refreshActionLabelText=Actualiser
 FileChooser.viewMenuLabelText=Affichage
 FileChooser.fileNameHeaderText=Nom
 FileChooser.fileSizeHeaderText=Taille
 FileChooser.fileTypeHeaderText=Type
-FileChooser.fileDateHeaderText=Modifi\u00e9
+FileChooser.fileDateHeaderText=Modifi\u00E9
 FileChooser.fileAttrHeaderText=Attributs
 
 ############ Used by MetalTitlePane if rendering window decorations############
 # All mnemonics are KeyEvent.VK_XXX as integers
 MetalTitlePane.restoreTitle=Restaurer
 MetalTitlePane.restoreMnemonic=82
-MetalTitlePane.iconifyTitle=R\u00e9duire
-MetalTitlePane.iconifyMnemonic=68
+MetalTitlePane.iconifyTitle=R\u00E9duire
+MetalTitlePane.iconifyMnemonic=69
 MetalTitlePane.maximizeTitle=Agrandir
-MetalTitlePane.maximizeMnemonic=65
+MetalTitlePane.maximizeMnemonic=88
 MetalTitlePane.closeTitle=Fermer
-MetalTitlePane.closeMnemonic=70
+MetalTitlePane.closeMnemonic=67
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_it.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_it.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -21,18 +21,18 @@
 FileChooser.lookInLabelText=Cerca in:
 FileChooser.saveInLabelText=Salva in:
 FileChooser.fileNameLabelText=Nome file:
-FileChooser.folderNameLabelText=Folder name:
+FileChooser.folderNameLabelText=Nome della cartella:
 FileChooser.filesOfTypeLabelText=Tipo file:
 FileChooser.upFolderToolTipText=Cartella superiore
 FileChooser.upFolderAccessibleName=Superiore
-FileChooser.homeFolderToolTipText=Principale
-FileChooser.homeFolderAccessibleName=Principale
+FileChooser.homeFolderToolTipText=Home
+FileChooser.homeFolderAccessibleName=Home
 FileChooser.newFolderToolTipText=Crea nuova cartella
 FileChooser.newFolderAccessibleName=Nuova cartella
 FileChooser.newFolderActionLabelText=Nuova cartella
-FileChooser.listViewButtonToolTipText=Elenco
-FileChooser.listViewButtonAccessibleName=Elenco
-FileChooser.listViewActionLabelText=Elenco
+FileChooser.listViewButtonToolTipText=Lista
+FileChooser.listViewButtonAccessibleName=Lista
+FileChooser.listViewActionLabelText=Lista
 FileChooser.detailsViewButtonToolTipText=Dettagli
 FileChooser.detailsViewButtonAccessibleName=Dettagli
 FileChooser.detailsViewActionLabelText=Dettagli
@@ -49,8 +49,8 @@
 MetalTitlePane.restoreTitle=Ripristina
 MetalTitlePane.restoreMnemonic=82
 MetalTitlePane.iconifyTitle=Riduci a icona
-MetalTitlePane.iconifyMnemonic=68
+MetalTitlePane.iconifyMnemonic=69
 MetalTitlePane.maximizeTitle=Ingrandisci
-MetalTitlePane.maximizeMnemonic=73
+MetalTitlePane.maximizeMnemonic=88
 MetalTitlePane.closeTitle=Chiudi
 MetalTitlePane.closeMnemonic=67
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ja.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ja.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -18,39 +18,39 @@
 
 ############ FILE CHOOSER STRINGS #############
 
-FileChooser.lookInLabelText=\u53c2\u7167:
-FileChooser.saveInLabelText=\u4fdd\u5b58:
-FileChooser.fileNameLabelText=\u30d5\u30a1\u30a4\u30eb\u540d:
-FileChooser.folderNameLabelText=Folder name:
-FileChooser.filesOfTypeLabelText=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7:
-FileChooser.upFolderToolTipText=1 \u30ec\u30d9\u30eb\u4e0a\u3078
-FileChooser.upFolderAccessibleName=\u4e0a\u3078
-FileChooser.homeFolderToolTipText=\u30db\u30fc\u30e0
-FileChooser.homeFolderAccessibleName=\u30db\u30fc\u30e0
-FileChooser.newFolderToolTipText=\u30d5\u30a9\u30eb\u30c0\u306e\u65b0\u898f\u4f5c\u6210
-FileChooser.newFolderAccessibleName=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0
-FileChooser.newFolderActionLabelText=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0
-FileChooser.listViewButtonToolTipText=\u30ea\u30b9\u30c8
-FileChooser.listViewButtonAccessibleName=\u30ea\u30b9\u30c8
-FileChooser.listViewActionLabelText=\u30ea\u30b9\u30c8
-FileChooser.detailsViewButtonToolTipText=\u8a73\u7d30
-FileChooser.detailsViewButtonAccessibleName=\u8a73\u7d30
-FileChooser.detailsViewActionLabelText=\u8a73\u7d30
-FileChooser.refreshActionLabelText=\u66f4\u65b0
-FileChooser.viewMenuLabelText=\u8868\u793a
-FileChooser.fileNameHeaderText=\u540d\u524d
-FileChooser.fileSizeHeaderText=\u30b5\u30a4\u30ba
-FileChooser.fileTypeHeaderText=\u578b
-FileChooser.fileDateHeaderText=\u4fee\u6b63\u65e5
-FileChooser.fileAttrHeaderText=\u5c5e\u6027
+FileChooser.lookInLabelText=\u53C2\u7167:
+FileChooser.saveInLabelText=\u4FDD\u5B58:
+FileChooser.fileNameLabelText=\u30D5\u30A1\u30A4\u30EB\u540D:
+FileChooser.folderNameLabelText=\u30D5\u30A9\u30EB\u30C0\u540D:
+FileChooser.filesOfTypeLabelText=\u30D5\u30A1\u30A4\u30EB\u306E\u30BF\u30A4\u30D7:
+FileChooser.upFolderToolTipText=1\u30EC\u30D9\u30EB\u4E0A\u3078
+FileChooser.upFolderAccessibleName=\u4E0A\u3078
+FileChooser.homeFolderToolTipText=\u30DB\u30FC\u30E0
+FileChooser.homeFolderAccessibleName=\u30DB\u30FC\u30E0
+FileChooser.newFolderToolTipText=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0\u306E\u4F5C\u6210
+FileChooser.newFolderAccessibleName=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0
+FileChooser.newFolderActionLabelText=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0
+FileChooser.listViewButtonToolTipText=\u30EA\u30B9\u30C8
+FileChooser.listViewButtonAccessibleName=\u30EA\u30B9\u30C8
+FileChooser.listViewActionLabelText=\u30EA\u30B9\u30C8
+FileChooser.detailsViewButtonToolTipText=\u8A73\u7D30
+FileChooser.detailsViewButtonAccessibleName=\u8A73\u7D30
+FileChooser.detailsViewActionLabelText=\u8A73\u7D30
+FileChooser.refreshActionLabelText=\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5
+FileChooser.viewMenuLabelText=\u8868\u793A
+FileChooser.fileNameHeaderText=\u540D\u524D
+FileChooser.fileSizeHeaderText=\u30B5\u30A4\u30BA
+FileChooser.fileTypeHeaderText=\u30BF\u30A4\u30D7
+FileChooser.fileDateHeaderText=\u4FEE\u6B63\u65E5
+FileChooser.fileAttrHeaderText=\u5C5E\u6027
 
 ############ Used by MetalTitlePane if rendering window decorations############
 # All mnemonics are KeyEvent.VK_XXX as integers
-MetalTitlePane.restoreTitle=\u5fa9\u5143(R)
+MetalTitlePane.restoreTitle=\u5FA9\u5143
 MetalTitlePane.restoreMnemonic=82
-MetalTitlePane.iconifyTitle=\u6700\u5c0f\u5316(E)
+MetalTitlePane.iconifyTitle=\u6700\u5C0F\u5316
 MetalTitlePane.iconifyMnemonic=69
-MetalTitlePane.maximizeTitle=\u6700\u5927\u5316(X)
+MetalTitlePane.maximizeTitle=\u6700\u5927\u5316
 MetalTitlePane.maximizeMnemonic=88
-MetalTitlePane.closeTitle=\u9589\u3058\u308b(C)
+MetalTitlePane.closeTitle=\u9589\u3058\u308B
 MetalTitlePane.closeMnemonic=67
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ko.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ko.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -18,39 +18,39 @@
 
 ############ FILE CHOOSER STRINGS #############
 
-FileChooser.lookInLabelText=\uac80\uc0c9 \uc704\uce58:
-FileChooser.saveInLabelText=\uc800\uc7a5 \uc704\uce58
-FileChooser.fileNameLabelText=\ud30c\uc77c \uc774\ub984:
-FileChooser.folderNameLabelText=Folder name:
-FileChooser.filesOfTypeLabelText=\ud30c\uc77c \uc885\ub958:
-FileChooser.upFolderToolTipText=\ud55c \ub2e8\uacc4 \uc704\ub85c
-FileChooser.upFolderAccessibleName=\uc704
-FileChooser.homeFolderToolTipText=\ud648
-FileChooser.homeFolderAccessibleName=\ud648
-FileChooser.newFolderToolTipText=\uc0c8 \ud3f4\ub354 \uc791\uc131
-FileChooser.newFolderAccessibleName=\uc0c8 \ud3f4\ub354
-FileChooser.newFolderActionLabelText=\uc0c8 \ud3f4\ub354
-FileChooser.listViewButtonToolTipText=\ubaa9\ub85d
-FileChooser.listViewButtonAccessibleName=\ubaa9\ub85d
-FileChooser.listViewActionLabelText=\ubaa9\ub85d
-FileChooser.detailsViewButtonToolTipText=\uc790\uc138\ud788
-FileChooser.detailsViewButtonAccessibleName=\uc790\uc138\ud788
-FileChooser.detailsViewActionLabelText=\uc790\uc138\ud788
-FileChooser.refreshActionLabelText=\uac31\uc2e0
-FileChooser.viewMenuLabelText=\ubcf4\uae30
-FileChooser.fileNameHeaderText=\uc774\ub984
-FileChooser.fileSizeHeaderText=\ud06c\uae30
-FileChooser.fileTypeHeaderText=\uc885\ub958
-FileChooser.fileDateHeaderText=\uc218\uc815
-FileChooser.fileAttrHeaderText=\uc18d\uc131
+FileChooser.lookInLabelText=\uAC80\uC0C9 \uC704\uCE58:
+FileChooser.saveInLabelText=\uC800\uC7A5 \uC704\uCE58:
+FileChooser.fileNameLabelText=\uD30C\uC77C \uC774\uB984:
+FileChooser.folderNameLabelText=\uD3F4\uB354 \uC774\uB984:
+FileChooser.filesOfTypeLabelText=\uD30C\uC77C \uC720\uD615:
+FileChooser.upFolderToolTipText=\uD55C \uB808\uBCA8 \uC704\uB85C
+FileChooser.upFolderAccessibleName=\uC704\uB85C
+FileChooser.homeFolderToolTipText=\uD648
+FileChooser.homeFolderAccessibleName=\uD648
+FileChooser.newFolderToolTipText=\uC0C8 \uD3F4\uB354 \uC0DD\uC131
+FileChooser.newFolderAccessibleName=\uC0C8 \uD3F4\uB354
+FileChooser.newFolderActionLabelText=\uC0C8 \uD3F4\uB354
+FileChooser.listViewButtonToolTipText=\uBAA9\uB85D
+FileChooser.listViewButtonAccessibleName=\uBAA9\uB85D
+FileChooser.listViewActionLabelText=\uBAA9\uB85D
+FileChooser.detailsViewButtonToolTipText=\uC138\uBD80 \uC815\uBCF4
+FileChooser.detailsViewButtonAccessibleName=\uC138\uBD80 \uC815\uBCF4
+FileChooser.detailsViewActionLabelText=\uC138\uBD80 \uC815\uBCF4
+FileChooser.refreshActionLabelText=\uC0C8\uB85C \uACE0\uCE68
+FileChooser.viewMenuLabelText=\uBCF4\uAE30
+FileChooser.fileNameHeaderText=\uC774\uB984
+FileChooser.fileSizeHeaderText=\uD06C\uAE30
+FileChooser.fileTypeHeaderText=\uC720\uD615
+FileChooser.fileDateHeaderText=\uC218\uC815 \uB0A0\uC9DC
+FileChooser.fileAttrHeaderText=\uC18D\uC131
 
 ############ Used by MetalTitlePane if rendering window decorations############
 # All mnemonics are KeyEvent.VK_XXX as integers
-MetalTitlePane.restoreTitle=\ubcf5\uc6d0(R)
+MetalTitlePane.restoreTitle=\uBCF5\uC6D0
 MetalTitlePane.restoreMnemonic=82
-MetalTitlePane.iconifyTitle=\ucd5c\uc18c\ud654(E)
+MetalTitlePane.iconifyTitle=\uCD5C\uC18C\uD654
 MetalTitlePane.iconifyMnemonic=69
-MetalTitlePane.maximizeTitle=\ucd5c\ub300\ud654(X)
+MetalTitlePane.maximizeTitle=\uCD5C\uB300\uD654
 MetalTitlePane.maximizeMnemonic=88
-MetalTitlePane.closeTitle=\ub2eb\uae30(C)
+MetalTitlePane.closeTitle=\uB2EB\uAE30
 MetalTitlePane.closeMnemonic=67
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_pt_BR.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_pt_BR.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -18,17 +18,18 @@
 
 ############ FILE CHOOSER STRINGS #############
 
-FileChooser.lookInLabelText=Consultar em:
-FileChooser.saveInLabelText=Salvar em:
-FileChooser.fileNameLabelText=Nome de arquivo:
-FileChooser.filesOfTypeLabelText=Arquivos de tipo:
-FileChooser.upFolderToolTipText=Um n\u00edvel acima
+FileChooser.lookInLabelText=Consultar Em:
+FileChooser.saveInLabelText=Salvar Em:
+FileChooser.fileNameLabelText=Nome do Arquivo:
+FileChooser.folderNameLabelText=Nome da pasta:
+FileChooser.filesOfTypeLabelText=Arquivos do Tipo:
+FileChooser.upFolderToolTipText=Um N\u00EDvel Acima
 FileChooser.upFolderAccessibleName=Acima
-FileChooser.homeFolderToolTipText=In\u00edcio
-FileChooser.homeFolderAccessibleName=In\u00edcio
-FileChooser.newFolderToolTipText=Criar nova pasta
-FileChooser.newFolderAccessibleName=Nova pasta
-FileChooser.newFolderActionLabelText=Nova pasta
+FileChooser.homeFolderToolTipText=In\u00EDcio
+FileChooser.homeFolderAccessibleName=In\u00EDcio
+FileChooser.newFolderToolTipText=Criar Nova Pasta
+FileChooser.newFolderAccessibleName=Nova Pasta
+FileChooser.newFolderActionLabelText=Nova Pasta
 FileChooser.listViewButtonToolTipText=Lista
 FileChooser.listViewButtonAccessibleName=Lista
 FileChooser.listViewActionLabelText=Lista
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_sv.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_sv.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -18,12 +18,12 @@
 
 ############ FILE CHOOSER STRINGS #############
 
-FileChooser.lookInLabelText=S\u00f6k i:
+FileChooser.lookInLabelText=Leta i:
 FileChooser.saveInLabelText=Spara i:
 FileChooser.fileNameLabelText=Filnamn:
-FileChooser.folderNameLabelText=Folder name:
+FileChooser.folderNameLabelText=Mapp:
 FileChooser.filesOfTypeLabelText=Filformat:
-FileChooser.upFolderToolTipText=Upp en niv\u00e5
+FileChooser.upFolderToolTipText=Upp en niv\u00E5
 FileChooser.upFolderAccessibleName=Upp
 FileChooser.homeFolderToolTipText=Hem
 FileChooser.homeFolderAccessibleName=Hem
@@ -33,24 +33,24 @@
 FileChooser.listViewButtonToolTipText=Lista
 FileChooser.listViewButtonAccessibleName=Lista
 FileChooser.listViewActionLabelText=Lista
-FileChooser.detailsViewButtonToolTipText=Detaljerad lista
-FileChooser.detailsViewButtonAccessibleName=Detaljerad lista
-FileChooser.detailsViewActionLabelText=Detaljerad lista
-FileChooser.refreshActionLabelText=Uppdatera
+FileChooser.detailsViewButtonToolTipText=Detaljer
+FileChooser.detailsViewButtonAccessibleName=Detaljer
+FileChooser.detailsViewActionLabelText=Detaljer
+FileChooser.refreshActionLabelText=F\u00F6rnya
 FileChooser.viewMenuLabelText=Vy
 FileChooser.fileNameHeaderText=Namn
 FileChooser.fileSizeHeaderText=Storlek
 FileChooser.fileTypeHeaderText=Typ
-FileChooser.fileDateHeaderText=\u00c4ndrad
+FileChooser.fileDateHeaderText=\u00C4ndrad
 FileChooser.fileAttrHeaderText=Attribut
 
 ############ Used by MetalTitlePane if rendering window decorations############
 # All mnemonics are KeyEvent.VK_XXX as integers
-MetalTitlePane.restoreTitle=\u00c5terst\u00e4ll
-MetalTitlePane.restoreMnemonic=84
+MetalTitlePane.restoreTitle=\u00C5terst\u00E4ll
+MetalTitlePane.restoreMnemonic=82
 MetalTitlePane.iconifyTitle=Minimera
-MetalTitlePane.iconifyMnemonic=77
+MetalTitlePane.iconifyMnemonic=69
 MetalTitlePane.maximizeTitle=Maximera
 MetalTitlePane.maximizeMnemonic=88
-MetalTitlePane.closeTitle=St\u00e4ng
-MetalTitlePane.closeMnemonic=83
+MetalTitlePane.closeTitle=St\u00E4ng
+MetalTitlePane.closeMnemonic=67
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_zh_CN.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_zh_CN.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -18,39 +18,39 @@
 
 ############ FILE CHOOSER STRINGS #############
 
-FileChooser.lookInLabelText=\u67e5\u770b\uff1a
-FileChooser.saveInLabelText=\u4fdd\u5b58\uff1a
-FileChooser.fileNameLabelText=\u6587\u4ef6\u540d\uff1a
-FileChooser.folderNameLabelText=Folder name:
-FileChooser.filesOfTypeLabelText=\u6587\u4ef6\u7c7b\u578b\uff1a
-FileChooser.upFolderToolTipText=\u5411\u4e0a\u4e00\u5c42
-FileChooser.upFolderAccessibleName=\u5411\u4e0a
-FileChooser.homeFolderToolTipText=\u8d77\u59cb\u76ee\u5f55
-FileChooser.homeFolderAccessibleName=\u8d77\u59cb\u76ee\u5f55
-FileChooser.newFolderToolTipText=\u521b\u5efa\u65b0\u7684\u6587\u4ef6\u5939
-FileChooser.newFolderAccessibleName=\u65b0\u5efa\u6587\u4ef6\u5939
-FileChooser.newFolderActionLabelText=\u65b0\u5efa\u6587\u4ef6\u5939
+FileChooser.lookInLabelText=\u67E5\u770B: 
+FileChooser.saveInLabelText=\u4FDD\u5B58: 
+FileChooser.fileNameLabelText=\u6587\u4EF6\u540D: 
+FileChooser.folderNameLabelText=\u6587\u4EF6\u5939\u540D: 
+FileChooser.filesOfTypeLabelText=\u6587\u4EF6\u7C7B\u578B: 
+FileChooser.upFolderToolTipText=\u5411\u4E0A\u4E00\u7EA7
+FileChooser.upFolderAccessibleName=\u5411\u4E0A
+FileChooser.homeFolderToolTipText=\u4E3B\u76EE\u5F55
+FileChooser.homeFolderAccessibleName=\u4E3B\u76EE\u5F55
+FileChooser.newFolderToolTipText=\u521B\u5EFA\u65B0\u6587\u4EF6\u5939
+FileChooser.newFolderAccessibleName=\u65B0\u5EFA\u6587\u4EF6\u5939
+FileChooser.newFolderActionLabelText=\u65B0\u5EFA\u6587\u4EF6\u5939
 FileChooser.listViewButtonToolTipText=\u5217\u8868
 FileChooser.listViewButtonAccessibleName=\u5217\u8868
 FileChooser.listViewActionLabelText=\u5217\u8868
-FileChooser.detailsViewButtonToolTipText=\u8be6\u7ec6\u4fe1\u606f
-FileChooser.detailsViewButtonAccessibleName=\u8be6\u7ec6\u4fe1\u606f
-FileChooser.detailsViewActionLabelText=\u8be6\u7ec6\u4fe1\u606f
-FileChooser.refreshActionLabelText=\u5237\u65b0
-FileChooser.viewMenuLabelText=\u89c6\u56fe
-FileChooser.fileNameHeaderText=\u540d\u79f0
-FileChooser.fileSizeHeaderText=\u5927\u5c0f
-FileChooser.fileTypeHeaderText=\u7c7b\u578b
-FileChooser.fileDateHeaderText=\u4fee\u6b63\u7248
-FileChooser.fileAttrHeaderText=\u5c5e\u6027
+FileChooser.detailsViewButtonToolTipText=\u8BE6\u7EC6\u8D44\u6599
+FileChooser.detailsViewButtonAccessibleName=\u8BE6\u7EC6\u8D44\u6599
+FileChooser.detailsViewActionLabelText=\u8BE6\u7EC6\u8D44\u6599
+FileChooser.refreshActionLabelText=\u5237\u65B0
+FileChooser.viewMenuLabelText=\u89C6\u56FE
+FileChooser.fileNameHeaderText=\u540D\u79F0
+FileChooser.fileSizeHeaderText=\u5927\u5C0F
+FileChooser.fileTypeHeaderText=\u7C7B\u578B
+FileChooser.fileDateHeaderText=\u4FEE\u6539\u65E5\u671F
+FileChooser.fileAttrHeaderText=\u5C5E\u6027
 
 ############ Used by MetalTitlePane if rendering window decorations############
 # All mnemonics are KeyEvent.VK_XXX as integers
-MetalTitlePane.restoreTitle=\u6062\u590d (R)
+MetalTitlePane.restoreTitle=\u8FD8\u539F
 MetalTitlePane.restoreMnemonic=82
-MetalTitlePane.iconifyTitle=\u6700\u5c0f\u5316 (E)
+MetalTitlePane.iconifyTitle=\u6700\u5C0F\u5316
 MetalTitlePane.iconifyMnemonic=69
-MetalTitlePane.maximizeTitle=\u6700\u5927\u5316 (X)
+MetalTitlePane.maximizeTitle=\u6700\u5927\u5316
 MetalTitlePane.maximizeMnemonic=88
-MetalTitlePane.closeTitle=\u5173\u95ed (C)
+MetalTitlePane.closeTitle=\u5173\u95ED
 MetalTitlePane.closeMnemonic=67
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_zh_TW.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_zh_TW.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -18,39 +18,39 @@
 
 ############ FILE CHOOSER STRINGS #############
 
-FileChooser.lookInLabelText=\u67e5\u770b\ufe55
-FileChooser.saveInLabelText=\u5132\u5b58\u65bc\uff1a
-FileChooser.fileNameLabelText=\u6a94\u6848\u540d\u7a31\ufe55
-FileChooser.folderNameLabelText=Folder name:
-FileChooser.filesOfTypeLabelText=\u6a94\u6848\u985e\u578b\ufe55
-FileChooser.upFolderToolTipText=\u5f80\u4e0a\u4e00\u5c64
-FileChooser.upFolderAccessibleName=\u5f80\u4e0a
-FileChooser.homeFolderToolTipText=\u4e3b\u76ee\u9304
-FileChooser.homeFolderAccessibleName=\u4e3b\u76ee\u9304
-FileChooser.newFolderToolTipText=\u5efa\u7acb\u65b0\u8cc7\u6599\u593e
-FileChooser.newFolderAccessibleName=\u65b0\u8cc7\u6599\u593e
-FileChooser.newFolderActionLabelText=\u65b0\u8cc7\u6599\u593e
-FileChooser.listViewButtonToolTipText=\u6e05\u55ae
-FileChooser.listViewButtonAccessibleName=\u6e05\u55ae
-FileChooser.listViewActionLabelText=\u6e05\u55ae
-FileChooser.detailsViewButtonToolTipText=\u8a73\u7d30\u8cc7\u8a0a
-FileChooser.detailsViewButtonAccessibleName=\u8a73\u7d30\u8cc7\u8a0a
-FileChooser.detailsViewActionLabelText=\u8a73\u7d30\u8cc7\u8a0a
-FileChooser.refreshActionLabelText=\u66f4\u65b0
-FileChooser.viewMenuLabelText=\u6aa2\u8996
-FileChooser.fileNameHeaderText=\u540d\u7a31
-FileChooser.fileSizeHeaderText=\u5927\u5c0f
-FileChooser.fileTypeHeaderText=\u985e\u578b
-FileChooser.fileDateHeaderText=\u5df2\u4fee\u6539
-FileChooser.fileAttrHeaderText=\u5c6c\u6027
+FileChooser.lookInLabelText=\u67E5\u8A62:
+FileChooser.saveInLabelText=\u5132\u5B58\u65BC: 
+FileChooser.fileNameLabelText=\u6A94\u6848\u540D\u7A31:
+FileChooser.folderNameLabelText=\u8CC7\u6599\u593E\u540D\u7A31:
+FileChooser.filesOfTypeLabelText=\u6A94\u6848\u985E\u578B:
+FileChooser.upFolderToolTipText=\u5F80\u4E0A\u4E00\u5C64
+FileChooser.upFolderAccessibleName=\u5F80\u4E0A
+FileChooser.homeFolderToolTipText=\u4E3B\u76EE\u9304
+FileChooser.homeFolderAccessibleName=\u4E3B\u76EE\u9304
+FileChooser.newFolderToolTipText=\u5EFA\u7ACB\u65B0\u8CC7\u6599\u593E
+FileChooser.newFolderAccessibleName=\u65B0\u8CC7\u6599\u593E
+FileChooser.newFolderActionLabelText=\u65B0\u8CC7\u6599\u593E
+FileChooser.listViewButtonToolTipText=\u6E05\u55AE
+FileChooser.listViewButtonAccessibleName=\u6E05\u55AE
+FileChooser.listViewActionLabelText=\u6E05\u55AE
+FileChooser.detailsViewButtonToolTipText=\u8A73\u7D30\u8CC7\u8A0A
+FileChooser.detailsViewButtonAccessibleName=\u8A73\u7D30\u8CC7\u8A0A
+FileChooser.detailsViewActionLabelText=\u8A73\u7D30\u8CC7\u8A0A
+FileChooser.refreshActionLabelText=\u91CD\u65B0\u6574\u7406
+FileChooser.viewMenuLabelText=\u6AA2\u8996
+FileChooser.fileNameHeaderText=\u540D\u7A31
+FileChooser.fileSizeHeaderText=\u5927\u5C0F
+FileChooser.fileTypeHeaderText=\u985E\u578B
+FileChooser.fileDateHeaderText=\u4FEE\u6539\u65E5\u671F
+FileChooser.fileAttrHeaderText=\u5C6C\u6027
 
 ############ Used by MetalTitlePane if rendering window decorations############
 # All mnemonics are KeyEvent.VK_XXX as integers
-MetalTitlePane.restoreTitle=\u5fa9\u539f(R)
+MetalTitlePane.restoreTitle=\u5FA9\u539F
 MetalTitlePane.restoreMnemonic=82
-MetalTitlePane.iconifyTitle=\u6700\u5c0f\u5316(E)
+MetalTitlePane.iconifyTitle=\u6700\u5C0F\u5316
 MetalTitlePane.iconifyMnemonic=69
-MetalTitlePane.maximizeTitle=\u6700\u5927\u5316(X)
+MetalTitlePane.maximizeTitle=\u6700\u5927\u5316
 MetalTitlePane.maximizeMnemonic=88
-MetalTitlePane.closeTitle=\u95dc\u9589(C)
+MetalTitlePane.closeTitle=\u95DC\u9589
 MetalTitlePane.closeMnemonic=67
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_de.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_de.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -10,6 +10,9 @@
 # This may change in future versions of Swing as we improve localization 
 # support.
 #
+# Refer to the note in basic.properties for a description as to what
+# the mnemonics correspond to and how to calculate them.
+#
 # @author Steve Wilson
 
 
@@ -18,20 +21,25 @@
 FileChooser.lookInLabelText=Suchen in:
 FileChooser.saveInLabelText=Speichern in:
 FileChooser.fileNameLabelText=Dateiname:
-FileChooser.folderNameLabelText=Folder name:
+FileChooser.folderNameLabelText=Ordnername:
 FileChooser.filesOfTypeLabelText=Dateityp:
-FileChooser.upFolderToolTipText=Eine Ebene h\u00f6her
-FileChooser.upFolderAccessibleName=H\u00f6her
+FileChooser.upFolderToolTipText=Eine Ebene h\u00F6her
+FileChooser.upFolderAccessibleName=Nach oben
 FileChooser.homeFolderToolTipText=Home
 FileChooser.homeFolderAccessibleName=Home
 FileChooser.newFolderToolTipText=Neuen Ordner erstellen
 FileChooser.newFolderAccessibleName=Neuer Ordner
+FileChooser.newFolderActionLabelText=Neuer Ordner
 FileChooser.listViewButtonToolTipText=Liste
 FileChooser.listViewButtonAccessibleName=Liste
+FileChooser.listViewActionLabelText=Liste
 FileChooser.detailsViewButtonToolTipText=Details
 FileChooser.detailsViewButtonAccessibleName=Details
-FileChooser.fileNameHeaderText=Dateiname
-FileChooser.fileSizeHeaderText=Gr\u00f6\u00dfe
+FileChooser.detailsViewActionLabelText=Details
+FileChooser.refreshActionLabelText=Aktualisieren
+FileChooser.viewMenuLabelText=Ansicht
+FileChooser.fileNameHeaderText=Name
+FileChooser.fileSizeHeaderText=Gr\u00F6\u00DFe
 FileChooser.fileTypeHeaderText=Typ
-FileChooser.fileDateHeaderText=Ge\u00e4ndert
-FileChooser.fileAttrHeaderText=Attribut
+FileChooser.fileDateHeaderText=Ge\u00E4ndert
+FileChooser.fileAttrHeaderText=Attribute
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_es.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_es.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -10,6 +10,9 @@
 # This may change in future versions of Swing as we improve localization 
 # support.
 #
+# Refer to the note in basic.properties for a description as to what
+# the mnemonics correspond to and how to calculate them.
+#
 # @author Steve Wilson
 
 
@@ -17,21 +20,26 @@
 
 FileChooser.lookInLabelText=Buscar en:
 FileChooser.saveInLabelText=Guardar en:
-FileChooser.fileNameLabelText=Nombre de archivo:
-FileChooser.folderNameLabelText=Folder name:
-FileChooser.filesOfTypeLabelText=Archivos de tipo:
-FileChooser.upFolderToolTipText=Subir un nivel
+FileChooser.fileNameLabelText=Nombre de Archivo:
+FileChooser.folderNameLabelText=Nombre de la Carpeta:
+FileChooser.filesOfTypeLabelText=Archivos de Tipo:
+FileChooser.upFolderToolTipText=Subir un Nivel
 FileChooser.upFolderAccessibleName=Arriba
-FileChooser.homeFolderToolTipText=Principal
-FileChooser.homeFolderAccessibleName=Principal
-FileChooser.newFolderToolTipText=Crear carpeta nueva
-FileChooser.newFolderAccessibleName=Carpeta nueva
+FileChooser.homeFolderToolTipText=Inicio
+FileChooser.homeFolderAccessibleName=Inicio
+FileChooser.newFolderToolTipText=Crear Nueva Carpeta
+FileChooser.newFolderAccessibleName=Nueva Carpeta
+FileChooser.newFolderActionLabelText=Nueva Carpeta
 FileChooser.listViewButtonToolTipText=Lista
 FileChooser.listViewButtonAccessibleName=Lista
+FileChooser.listViewActionLabelText=Lista
 FileChooser.detailsViewButtonToolTipText=Detalles
 FileChooser.detailsViewButtonAccessibleName=Detalles
+FileChooser.detailsViewActionLabelText=Detalles
+FileChooser.refreshActionLabelText=Refrescar
+FileChooser.viewMenuLabelText=Ver
 FileChooser.fileNameHeaderText=Nombre
-FileChooser.fileSizeHeaderText=Tama\u00f1o
+FileChooser.fileSizeHeaderText=Tama\u00F1o
 FileChooser.fileTypeHeaderText=Tipo
 FileChooser.fileDateHeaderText=Modificado
 FileChooser.fileAttrHeaderText=Atributos
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_fr.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_fr.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -10,6 +10,9 @@
 # This may change in future versions of Swing as we improve localization 
 # support.
 #
+# Refer to the note in basic.properties for a description as to what
+# the mnemonics correspond to and how to calculate them.
+#
 # @author Steve Wilson
 
 
@@ -17,21 +20,26 @@
 
 FileChooser.lookInLabelText=Rechercher dans :
 FileChooser.saveInLabelText=Enregistrer dans :
-FileChooser.fileNameLabelText=Nom de fichier :
-FileChooser.folderNameLabelText=Folder name:
-FileChooser.filesOfTypeLabelText=Fichiers du type :
+FileChooser.fileNameLabelText=Nom du fichier :
+FileChooser.folderNameLabelText=Nom du dossier :
+FileChooser.filesOfTypeLabelText=Fichiers de type :
 FileChooser.upFolderToolTipText=Remonte d'un niveau.
-FileChooser.upFolderAccessibleName=Vers le haut
-FileChooser.homeFolderToolTipText= R\u00e9pertoire d'accueil
-FileChooser.homeFolderAccessibleName=Accueil
-FileChooser.newFolderToolTipText=Cr\u00e9e un nouveau dossier.
+FileChooser.upFolderAccessibleName=Monter
+FileChooser.homeFolderToolTipText=R\u00E9pertoire d'origine
+FileChooser.homeFolderAccessibleName=R\u00E9pertoire d'origine
+FileChooser.newFolderToolTipText=Cr\u00E9e un dossier.
 FileChooser.newFolderAccessibleName=Nouveau dossier
+FileChooser.newFolderActionLabelText=Nouveau dossier
 FileChooser.listViewButtonToolTipText=Liste
 FileChooser.listViewButtonAccessibleName=Liste
-FileChooser.detailsViewButtonToolTipText=D\u00e9tails
-FileChooser.detailsViewButtonAccessibleName=D\u00e9tails
+FileChooser.listViewActionLabelText=Liste
+FileChooser.detailsViewButtonToolTipText=D\u00E9tails
+FileChooser.detailsViewButtonAccessibleName=D\u00E9tails
+FileChooser.detailsViewActionLabelText=D\u00E9tails
+FileChooser.refreshActionLabelText=Actualiser
+FileChooser.viewMenuLabelText=Affichage
 FileChooser.fileNameHeaderText=Nom
 FileChooser.fileSizeHeaderText=Taille
 FileChooser.fileTypeHeaderText=Type
-FileChooser.fileDateHeaderText=Modifi\u00e9
+FileChooser.fileDateHeaderText=Modifi\u00E9
 FileChooser.fileAttrHeaderText=Attributs
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_it.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_it.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -10,6 +10,9 @@
 # This may change in future versions of Swing as we improve localization 
 # support.
 #
+# Refer to the note in basic.properties for a description as to what
+# the mnemonics correspond to and how to calculate them.
+#
 # @author Steve Wilson
 
 
@@ -18,21 +21,25 @@
 FileChooser.lookInLabelText=Cerca in:
 FileChooser.saveInLabelText=Salva in:
 FileChooser.fileNameLabelText=Nome file:
-FileChooser.folderNameLabelText=Folder name:
+FileChooser.folderNameLabelText=Nome della cartella:
 FileChooser.filesOfTypeLabelText=Tipo file:
 FileChooser.upFolderToolTipText=Cartella superiore
 FileChooser.upFolderAccessibleName=Superiore
-FileChooser.homeFolderToolTipText=Principale
-FileChooser.homeFolderAccessibleName=Principale
+FileChooser.homeFolderToolTipText=Home
+FileChooser.homeFolderAccessibleName=Home
 FileChooser.newFolderToolTipText=Crea nuova cartella
 FileChooser.newFolderAccessibleName=Nuova cartella
-FileChooser.listViewButtonToolTipText=Elenco
-FileChooser.listViewButtonAccessibleName=Elenco
+FileChooser.newFolderActionLabelText=Nuova cartella
+FileChooser.listViewButtonToolTipText=Lista
+FileChooser.listViewButtonAccessibleName=Lista
+FileChooser.listViewActionLabelText=Lista
 FileChooser.detailsViewButtonToolTipText=Dettagli
 FileChooser.detailsViewButtonAccessibleName=Dettagli
+FileChooser.detailsViewActionLabelText=Dettagli
+FileChooser.refreshActionLabelText=Aggiorna
+FileChooser.viewMenuLabelText=Visualizza
 FileChooser.fileNameHeaderText=Nome
 FileChooser.fileSizeHeaderText=Dimensioni
 FileChooser.fileTypeHeaderText=Tipo
 FileChooser.fileDateHeaderText=Modificato
 FileChooser.fileAttrHeaderText=Attributi
-
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_ja.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_ja.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -18,28 +18,28 @@
 
 ############ FILE CHOOSER STRINGS #############
 
-FileChooser.lookInLabelText=\u53c2\u7167:
-FileChooser.saveInLabelText=\u4fdd\u5b58:
-FileChooser.fileNameLabelText=\u30d5\u30a1\u30a4\u30eb\u540d:
-FileChooser.folderNameLabelText=Folder name:
-FileChooser.filesOfTypeLabelText=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7:
-FileChooser.upFolderToolTipText=1 \u30ec\u30d9\u30eb\u4e0a\u3078
-FileChooser.upFolderAccessibleName=\u4e0a\u3078
-FileChooser.homeFolderToolTipText=\u30db\u30fc\u30e0
-FileChooser.homeFolderAccessibleName=\u30db\u30fc\u30e0
-FileChooser.newFolderToolTipText=\u30d5\u30a9\u30eb\u30c0\u306e\u65b0\u898f\u4f5c\u6210
-FileChooser.newFolderAccessibleName=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0
-FileChooser.newFolderActionLabelText=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0
-FileChooser.listViewButtonToolTipText=\u30ea\u30b9\u30c8
-FileChooser.listViewButtonAccessibleName=\u30ea\u30b9\u30c8
-FileChooser.listViewActionLabelText=\u30ea\u30b9\u30c8
-FileChooser.detailsViewButtonToolTipText=\u8a73\u7d30
-FileChooser.detailsViewButtonAccessibleName=\u8a73\u7d30
-FileChooser.detailsViewActionLabelText=\u8a73\u7d30
-FileChooser.refreshActionLabelText=\u66f4\u65b0
-FileChooser.viewMenuLabelText=\u8868\u793a
-FileChooser.fileNameHeaderText=\u540d\u524d
-FileChooser.fileSizeHeaderText=\u30b5\u30a4\u30ba
-FileChooser.fileTypeHeaderText=\u578b 
-FileChooser.fileDateHeaderText=\u4fee\u6b63\u65e5
-FileChooser.fileAttrHeaderText=\u5c5e\u6027
+FileChooser.lookInLabelText=\u53C2\u7167:
+FileChooser.saveInLabelText=\u4FDD\u5B58:
+FileChooser.fileNameLabelText=\u30D5\u30A1\u30A4\u30EB\u540D:
+FileChooser.folderNameLabelText=\u30D5\u30A9\u30EB\u30C0\u540D:
+FileChooser.filesOfTypeLabelText=\u30D5\u30A1\u30A4\u30EB\u306E\u30BF\u30A4\u30D7:
+FileChooser.upFolderToolTipText=1\u30EC\u30D9\u30EB\u4E0A\u3078
+FileChooser.upFolderAccessibleName=\u4E0A\u3078
+FileChooser.homeFolderToolTipText=\u30DB\u30FC\u30E0
+FileChooser.homeFolderAccessibleName=\u30DB\u30FC\u30E0
+FileChooser.newFolderToolTipText=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0\u306E\u4F5C\u6210
+FileChooser.newFolderAccessibleName=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0
+FileChooser.newFolderActionLabelText=\u65B0\u898F\u30D5\u30A9\u30EB\u30C0
+FileChooser.listViewButtonToolTipText=\u30EA\u30B9\u30C8
+FileChooser.listViewButtonAccessibleName=\u30EA\u30B9\u30C8
+FileChooser.listViewActionLabelText=\u30EA\u30B9\u30C8
+FileChooser.detailsViewButtonToolTipText=\u8A73\u7D30
+FileChooser.detailsViewButtonAccessibleName=\u8A73\u7D30
+FileChooser.detailsViewActionLabelText=\u8A73\u7D30
+FileChooser.refreshActionLabelText=\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5
+FileChooser.viewMenuLabelText=\u8868\u793A
+FileChooser.fileNameHeaderText=\u540D\u524D
+FileChooser.fileSizeHeaderText=\u30B5\u30A4\u30BA
+FileChooser.fileTypeHeaderText=\u30BF\u30A4\u30D7
+FileChooser.fileDateHeaderText=\u4FEE\u6B63\u65E5
+FileChooser.fileAttrHeaderText=\u5C5E\u6027
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_ko.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_ko.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -10,34 +10,36 @@
 # This may change in future versions of Swing as we improve localization 
 # support.
 #
+# Refer to the note in basic.properties for a description as to what
+# the mnemonics correspond to and how to calculate them.
+#
 # @author Steve Wilson
 
 
 ############ FILE CHOOSER STRINGS #############
 
-FileChooser.lookInLabelText=\uac80\uc0c9 \uc704\uce58:
-FileChooser.saveInLabelText=\uc800\uc7a5 \uc704\uce58
-FileChooser.fileNameLabelText=\ud30c\uc77c \uc774\ub984:
-FileChooser.folderNameLabelText=Folder name:
-FileChooser.filesOfTypeLabelText=\ud30c\uc77c \uc885\ub958:
-FileChooser.upFolderToolTipText=\ud55c \ub2e8\uacc4 \uc704\ub85c
-FileChooser.upFolderAccessibleName=\uc704
-FileChooser.homeFolderToolTipText=\ud648
-FileChooser.homeFolderAccessibleName=\ud648
-FileChooser.newFolderToolTipText=\uc0c8 \ud3f4\ub354 \uc791\uc131
-FileChooser.newFolderAccessibleName=\uc0c8 \ud3f4\ub354
-FileChooser.newFolderActionLabelText=\uc0c8 \ud3f4\ub354
-FileChooser.listViewButtonToolTipText=\ubaa9\ub85d
-FileChooser.listViewButtonAccessibleName=\ubaa9\ub85d
-FileChooser.listViewActionLabelText=\ubaa9\ub85d
-FileChooser.detailsViewButtonToolTipText=\uc790\uc138\ud788
-FileChooser.detailsViewButtonAccessibleName=\uc790\uc138\ud788
-FileChooser.detailsViewActionLabelText=\uc790\uc138\ud788
-FileChooser.refreshActionLabelText=\uac31\uc2e0
-FileChooser.viewMenuLabelText=\ubcf4\uae30
-FileChooser.fileNameHeaderText=\uc774\ub984
-FileChooser.fileSizeHeaderText=\ud06c\uae30
-FileChooser.fileTypeHeaderText=\uc885\ub958
-FileChooser.fileDateHeaderText=\uc218\uc815
-FileChooser.fileAttrHeaderText=\uc18d\uc131
-
+FileChooser.lookInLabelText=\uAC80\uC0C9 \uC704\uCE58:
+FileChooser.saveInLabelText=\uC800\uC7A5 \uC704\uCE58:
+FileChooser.fileNameLabelText=\uD30C\uC77C \uC774\uB984:
+FileChooser.folderNameLabelText=\uD3F4\uB354 \uC774\uB984:
+FileChooser.filesOfTypeLabelText=\uD30C\uC77C \uC720\uD615:
+FileChooser.upFolderToolTipText=\uD55C \uB808\uBCA8 \uC704\uB85C
+FileChooser.upFolderAccessibleName=\uC704\uB85C
+FileChooser.homeFolderToolTipText=\uD648
+FileChooser.homeFolderAccessibleName=\uD648
+FileChooser.newFolderToolTipText=\uC0C8 \uD3F4\uB354 \uC0DD\uC131
+FileChooser.newFolderAccessibleName=\uC0C8 \uD3F4\uB354
+FileChooser.newFolderActionLabelText=\uC0C8 \uD3F4\uB354
+FileChooser.listViewButtonToolTipText=\uBAA9\uB85D
+FileChooser.listViewButtonAccessibleName=\uBAA9\uB85D
+FileChooser.listViewActionLabelText=\uBAA9\uB85D
+FileChooser.detailsViewButtonToolTipText=\uC138\uBD80 \uC815\uBCF4
+FileChooser.detailsViewButtonAccessibleName=\uC138\uBD80 \uC815\uBCF4
+FileChooser.detailsViewActionLabelText=\uC138\uBD80 \uC815\uBCF4
+FileChooser.refreshActionLabelText=\uC0C8\uB85C \uACE0\uCE68
+FileChooser.viewMenuLabelText=\uBCF4\uAE30
+FileChooser.fileNameHeaderText=\uC774\uB984
+FileChooser.fileSizeHeaderText=\uD06C\uAE30
+FileChooser.fileTypeHeaderText=\uC720\uD615
+FileChooser.fileDateHeaderText=\uC218\uC815 \uB0A0\uC9DC
+FileChooser.fileAttrHeaderText=\uC18D\uC131
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_pt_BR.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_pt_BR.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -10,22 +10,26 @@
 # This may change in future versions of Swing as we improve localization 
 # support.
 #
+# Refer to the note in basic.properties for a description as to what
+# the mnemonics correspond to and how to calculate them.
+#
 # @author Steve Wilson
 
 
 ############ FILE CHOOSER STRINGS #############
 
-FileChooser.lookInLabelText=Consultar em:
-FileChooser.saveInLabelText=Salvar em:
-FileChooser.fileNameLabelText=Nome de arquivo:
-FileChooser.filesOfTypeLabelText=Arquivos de tipo:
-FileChooser.upFolderToolTipText=Um n\u00edvel acima
+FileChooser.lookInLabelText=Consultar Em:
+FileChooser.saveInLabelText=Salvar Em:
+FileChooser.fileNameLabelText=Nome do Arquivo:
+FileChooser.folderNameLabelText=Nome da pasta:
+FileChooser.filesOfTypeLabelText=Arquivos do Tipo:
+FileChooser.upFolderToolTipText=Um N\u00EDvel Acima
 FileChooser.upFolderAccessibleName=Acima
-FileChooser.homeFolderToolTipText=In\u00edcio
-FileChooser.homeFolderAccessibleName=In\u00edcio
-FileChooser.newFolderToolTipText=Criar nova pasta
-FileChooser.newFolderAccessibleName=Nova pasta
-FileChooser.newFolderActionLabelText=Nova pasta
+FileChooser.homeFolderToolTipText=In\u00EDcio
+FileChooser.homeFolderAccessibleName=In\u00EDcio
+FileChooser.newFolderToolTipText=Criar Nova Pasta
+FileChooser.newFolderAccessibleName=Nova Pasta
+FileChooser.newFolderActionLabelText=Nova Pasta
 FileChooser.listViewButtonToolTipText=Lista
 FileChooser.listViewButtonAccessibleName=Lista
 FileChooser.listViewActionLabelText=Lista
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_sv.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_sv.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -10,28 +10,36 @@
 # This may change in future versions of Swing as we improve localization 
 # support.
 #
+# Refer to the note in basic.properties for a description as to what
+# the mnemonics correspond to and how to calculate them.
+#
 # @author Steve Wilson
 
 
 ############ FILE CHOOSER STRINGS #############
 
-FileChooser.lookInLabelText=S\u00f6k i:
+FileChooser.lookInLabelText=Leta i:
 FileChooser.saveInLabelText=Spara i:
 FileChooser.fileNameLabelText=Filnamn:
-FileChooser.folderNameLabelText=Folder name:
+FileChooser.folderNameLabelText=Mapp:
 FileChooser.filesOfTypeLabelText=Filformat:
-FileChooser.upFolderToolTipText=Upp en niv\u00e5
+FileChooser.upFolderToolTipText=Upp en niv\u00E5
 FileChooser.upFolderAccessibleName=Upp
 FileChooser.homeFolderToolTipText=Hem
 FileChooser.homeFolderAccessibleName=Hem
 FileChooser.newFolderToolTipText=Skapa ny mapp
 FileChooser.newFolderAccessibleName=Ny mapp
+FileChooser.newFolderActionLabelText=Ny mapp
 FileChooser.listViewButtonToolTipText=Lista
 FileChooser.listViewButtonAccessibleName=Lista
-FileChooser.detailsViewButtonToolTipText=Detaljerad lista
-FileChooser.detailsViewButtonAccessibleName=Detaljerad lista
+FileChooser.listViewActionLabelText=Lista
+FileChooser.detailsViewButtonToolTipText=Detaljer
+FileChooser.detailsViewButtonAccessibleName=Detaljer
+FileChooser.detailsViewActionLabelText=Detaljer
+FileChooser.refreshActionLabelText=F\u00F6rnya
+FileChooser.viewMenuLabelText=Vy
 FileChooser.fileNameHeaderText=Namn
 FileChooser.fileSizeHeaderText=Storlek
 FileChooser.fileTypeHeaderText=Typ
-FileChooser.fileDateHeaderText=\u00c4ndrad
+FileChooser.fileDateHeaderText=\u00C4ndrad
 FileChooser.fileAttrHeaderText=Attribut
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_zh_CN.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_zh_CN.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -10,28 +10,36 @@
 # This may change in future versions of Swing as we improve localization 
 # support.
 #
+# Refer to the note in basic.properties for a description as to what
+# the mnemonics correspond to and how to calculate them.
+#
 # @author Steve Wilson
 
 
 ############ FILE CHOOSER STRINGS #############
 
-FileChooser.lookInLabelText=\u67e5\u770b\uff1a
-FileChooser.saveInLabelText=\u4fdd\u5b58\uff1a
-FileChooser.fileNameLabelText=\u6587\u4ef6\u540d\uff1a
-FileChooser.folderNameLabelText=Folder name:
-FileChooser.filesOfTypeLabelText=\u6587\u4ef6\u7c7b\u578b\uff1a
-FileChooser.upFolderToolTipText=\u5411\u4e0a\u4e00\u5c42
-FileChooser.upFolderAccessibleName=\u5411\u4e0a
-FileChooser.homeFolderToolTipText=\u8d77\u59cb\u76ee\u5f55
-FileChooser.homeFolderAccessibleName=\u8d77\u59cb\u76ee\u5f55
-FileChooser.newFolderToolTipText=\u521b\u5efa\u65b0\u7684\u6587\u4ef6\u5939
-FileChooser.newFolderAccessibleName=\u65b0\u5efa\u6587\u4ef6\u5939
+FileChooser.lookInLabelText=\u67E5\u770B: 
+FileChooser.saveInLabelText=\u4FDD\u5B58: 
+FileChooser.fileNameLabelText=\u6587\u4EF6\u540D: 
+FileChooser.folderNameLabelText=\u6587\u4EF6\u5939\u540D: 
+FileChooser.filesOfTypeLabelText=\u6587\u4EF6\u7C7B\u578B: 
+FileChooser.upFolderToolTipText=\u5411\u4E0A\u4E00\u7EA7
+FileChooser.upFolderAccessibleName=\u5411\u4E0A
+FileChooser.homeFolderToolTipText=\u4E3B\u76EE\u5F55
+FileChooser.homeFolderAccessibleName=\u4E3B\u76EE\u5F55
+FileChooser.newFolderToolTipText=\u521B\u5EFA\u65B0\u6587\u4EF6\u5939
+FileChooser.newFolderAccessibleName=\u65B0\u5EFA\u6587\u4EF6\u5939
+FileChooser.newFolderActionLabelText=\u65B0\u5EFA\u6587\u4EF6\u5939
 FileChooser.listViewButtonToolTipText=\u5217\u8868
 FileChooser.listViewButtonAccessibleName=\u5217\u8868
-FileChooser.detailsViewButtonToolTipText=\u8be6\u7ec6\u4fe1\u606f
-FileChooser.detailsViewButtonAccessibleName=\u8be6\u7ec6\u4fe1\u606f
-FileChooser.fileNameHeaderText=\u540d\u79f0
-FileChooser.fileSizeHeaderText=\u5927\u5c0f
-FileChooser.fileTypeHeaderText=\u7c7b\u578b
-FileChooser.fileDateHeaderText=\u4fee\u6b63\u7248
-FileChooser.fileAttrHeaderText=\u5c5e\u6027
+FileChooser.listViewActionLabelText=\u5217\u8868
+FileChooser.detailsViewButtonToolTipText=\u8BE6\u7EC6\u8D44\u6599
+FileChooser.detailsViewButtonAccessibleName=\u8BE6\u7EC6\u8D44\u6599
+FileChooser.detailsViewActionLabelText=\u8BE6\u7EC6\u8D44\u6599
+FileChooser.refreshActionLabelText=\u5237\u65B0
+FileChooser.viewMenuLabelText=\u89C6\u56FE
+FileChooser.fileNameHeaderText=\u540D\u79F0
+FileChooser.fileSizeHeaderText=\u5927\u5C0F
+FileChooser.fileTypeHeaderText=\u7C7B\u578B
+FileChooser.fileDateHeaderText=\u4FEE\u6539\u65E5\u671F
+FileChooser.fileAttrHeaderText=\u5C5E\u6027
--- a/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_zh_TW.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_zh_TW.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -10,28 +10,36 @@
 # This may change in future versions of Swing as we improve localization 
 # support.
 #
+# Refer to the note in basic.properties for a description as to what
+# the mnemonics correspond to and how to calculate them.
+#
 # @author Steve Wilson
 
 
 ############ FILE CHOOSER STRINGS #############
 
-FileChooser.lookInLabelText=\u67e5\u770b\ufe55
-FileChooser.saveInLabelText=\u5132\u5b58\u65bc\uff1a
-FileChooser.fileNameLabelText=\u6a94\u6848\u540d\u7a31\ufe55
-FileChooser.folderNameLabelText=Folder name:
-FileChooser.filesOfTypeLabelText=\u6a94\u6848\u985e\u578b\ufe55
-FileChooser.upFolderToolTipText=\u5f80\u4e0a\u4e00\u5c64
-FileChooser.upFolderAccessibleName=\u5f80\u4e0a
-FileChooser.homeFolderToolTipText=\u4e3b\u76ee\u9304
-FileChooser.homeFolderAccessibleName=\u4e3b\u76ee\u9304
-FileChooser.newFolderToolTipText=\u5efa\u7acb\u65b0\u8cc7\u6599\u593e
-FileChooser.newFolderAccessibleName=\u65b0\u8cc7\u6599\u593e
-FileChooser.listViewButtonToolTipText=\u6e05\u55ae
-FileChooser.listViewButtonAccessibleName=\u6e05\u55ae
-FileChooser.detailsViewButtonToolTipText=\u8a73\u7d30\u8cc7\u8a0a
-FileChooser.detailsViewButtonAccessibleName=\u8a73\u7d30\u8cc7\u8a0a
-FileChooser.fileNameHeaderText=\u540d\u7a31
-FileChooser.fileSizeHeaderText=\u5927\u5c0f
-FileChooser.fileTypeHeaderText=\u985e\u578b
-FileChooser.fileDateHeaderText=\u5df2\u4fee\u6539
-FileChooser.fileAttrHeaderText=\u5c6c\u6027
+FileChooser.lookInLabelText=\u67E5\u8A62:
+FileChooser.saveInLabelText=\u5132\u5B58\u65BC: 
+FileChooser.fileNameLabelText=\u6A94\u6848\u540D\u7A31:
+FileChooser.folderNameLabelText=\u8CC7\u6599\u593E\u540D\u7A31:
+FileChooser.filesOfTypeLabelText=\u6A94\u6848\u985E\u578B:
+FileChooser.upFolderToolTipText=\u5F80\u4E0A\u4E00\u5C64
+FileChooser.upFolderAccessibleName=\u5F80\u4E0A
+FileChooser.homeFolderToolTipText=\u4E3B\u76EE\u9304
+FileChooser.homeFolderAccessibleName=\u4E3B\u76EE\u9304
+FileChooser.newFolderToolTipText=\u5EFA\u7ACB\u65B0\u8CC7\u6599\u593E
+FileChooser.newFolderAccessibleName=\u65B0\u8CC7\u6599\u593E
+FileChooser.newFolderActionLabelText=\u65B0\u8CC7\u6599\u593E
+FileChooser.listViewButtonToolTipText=\u6E05\u55AE
+FileChooser.listViewButtonAccessibleName=\u6E05\u55AE
+FileChooser.listViewActionLabelText=\u6E05\u55AE
+FileChooser.detailsViewButtonToolTipText=\u8A73\u7D30\u8CC7\u8A0A
+FileChooser.detailsViewButtonAccessibleName=\u8A73\u7D30\u8CC7\u8A0A
+FileChooser.detailsViewActionLabelText=\u8A73\u7D30\u8CC7\u8A0A
+FileChooser.refreshActionLabelText=\u91CD\u65B0\u6574\u7406
+FileChooser.viewMenuLabelText=\u6AA2\u8996
+FileChooser.fileNameHeaderText=\u540D\u7A31
+FileChooser.fileSizeHeaderText=\u5927\u5C0F
+FileChooser.fileTypeHeaderText=\u985E\u578B
+FileChooser.fileDateHeaderText=\u4FEE\u6539\u65E5\u671F
+FileChooser.fileAttrHeaderText=\u5C6C\u6027
--- a/jdk/src/share/classes/com/sun/tools/example/debug/tty/TTYResources_ja.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/tty/TTYResources_ja.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2010, 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
@@ -45,403 +45,282 @@
      * @return the contents of this <code>ResourceBundle</code>.
      */
     public Object[][] getContents() {
-        return new Object[][] {
+        Object[][] temp = new Object[][] {
         // NOTE: The value strings in this file containing "{0}" are
         //       processed by the java.text.MessageFormat class.  Any
         //       single quotes appearing in these strings need to be
         //       doubled up.
         //
         // LOCALIZE THIS
-        {"** classes list **", "** \u30af\u30e9\u30b9\u30ea\u30b9\u30c8 **\n{0}"},
-        {"** fields list **", "** \u30d5\u30a3\u30fc\u30eb\u30c9\u30ea\u30b9\u30c8 **\n{0}"},
-        {"** methods list **", "** \u30e1\u30bd\u30c3\u30c9\u30ea\u30b9\u30c8 **\n{0}"},
-        {"*** Reading commands from", "*** {0} \u304b\u3089\u30b3\u30de\u30f3\u30c9\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059"},
-        {"All threads resumed.", "\u3059\u3079\u3066\u306e\u30b9\u30ec\u30c3\u30c9\u304c\u518d\u958b\u3055\u308c\u307e\u3057\u305f\u3002"},
-        {"All threads suspended.", "\u3059\u3079\u3066\u306e\u30b9\u30ec\u30c3\u30c9\u304c\u4e2d\u65ad\u3055\u308c\u307e\u3057\u305f\u3002"},
-        {"Argument is not defined for connector:", "\u30b3\u30cd\u30af\u30bf {1} \u3067\u5f15\u6570 {0} \u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
-        {"Arguments match no method", "\u5f15\u6570\u3068\u4e00\u81f4\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u304c\u3042\u308a\u307e\u305b\u3093"},
-        {"Array:", "\u914d\u5217: {0}"},
-        {"Array element is not a method", "\u914d\u5217\u8981\u7d20\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u3067\u306f\u3042\u308a\u307e\u305b\u3093"},
-        {"Array index must be a integer type", "\u914d\u5217\u306e\u6dfb\u3048\u5b57\u306f\u6574\u6570\u578b\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059"},
-        {"base directory:", "\u30d9\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea: {0}"},
-        {"bootclasspath:", "\u30d6\u30fc\u30c8\u30af\u30e9\u30b9\u30d1\u30b9: {0}"},
-        {"Breakpoint hit:", "\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u306e\u30d2\u30c3\u30c8: "},
-        {"breakpoint", "\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8 {0}"},
-        {"Breakpoints set:", "\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u306e\u30bb\u30c3\u30c8:"},
-        {"Breakpoints can be located only in classes.", "\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u306f\u3001\u30af\u30e9\u30b9\u306b\u306e\u307f\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002{0} \u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u307e\u305f\u306f\u914d\u5217\u3067\u3059\u3002"},
-        {"Can only trace", "'methods'\u3001'method exit' \u307e\u305f\u306f 'method exits' \u306e\u307f\u3092\u30c8\u30ec\u30fc\u30b9\u3067\u304d\u307e\u3059"},
-        {"cannot redefine existing connection", "{0} \u306f\u3001\u65e2\u5b58\u306e\u63a5\u7d9a\u3092\u518d\u5b9a\u7fa9\u3067\u304d\u307e\u305b\u3093"},
-        {"Cannot assign to a method invocation", "\u30e1\u30bd\u30c3\u30c9\u547c\u3073\u51fa\u3057\u306b\u306f\u5272\u308a\u5f53\u3066\u3089\u308c\u307e\u305b\u3093"},
-        {"Cannot specify command line with connector:", "\u30b3\u30cd\u30af\u30bf\uff5b0} \u3067\u306f\u30b3\u30de\u30f3\u30c9\u884c\u3092\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093"},
-        {"Cannot specify target vm arguments with connector:", "\u30b3\u30cd\u30af\u30bf {0}\u3067\u306f\u3001\u30bf\u30fc\u30b2\u30c3\u30c8 VM \u5f15\u6570\u3092\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093"},
-        {"Class containing field must be specified.", "\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u542b\u3080\u30af\u30e9\u30b9\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"},
-        {"Class:", "\u30af\u30e9\u30b9: {0}"},
-        {"Classic VM no longer supported.", "Classic VM \u306f\u3082\u3046\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"classpath:", "\u30af\u30e9\u30b9\u30d1\u30b9: {0}"},
+        {"** classes list **", "** \u30AF\u30E9\u30B9\u30FB\u30EA\u30B9\u30C8 **\n{0}"},
+        {"** fields list **", "** \u30D5\u30A3\u30FC\u30EB\u30C9\u30FB\u30EA\u30B9\u30C8 **\n{0}"},
+        {"** methods list **", "** \u30E1\u30BD\u30C3\u30C9\u30FB\u30EA\u30B9\u30C8 **\n{0}"},
+        {"*** Reading commands from", "*** {0}\u304B\u3089\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u8AAD\u53D6\u308A"},
+        {"All threads resumed.", "\u3059\u3079\u3066\u306E\u30B9\u30EC\u30C3\u30C9\u304C\u518D\u958B\u3055\u308C\u307E\u3057\u305F\u3002"},
+        {"All threads suspended.", "\u3059\u3079\u3066\u306E\u30B9\u30EC\u30C3\u30C9\u304C\u4E2D\u65AD\u3055\u308C\u307E\u3057\u305F\u3002"},
+        {"Argument is not defined for connector:", "\u5F15\u6570{0}\u306F\u30B3\u30CD\u30AF\u30BF\u306B\u5BFE\u3057\u3066\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093: {1}"},
+        {"Arguments match no method", "\u5F15\u6570\u304C\u9069\u5408\u3059\u308B\u30E1\u30BD\u30C3\u30C9\u304C\u3042\u308A\u307E\u305B\u3093"},
+        {"Array:", "\u914D\u5217: {0}"},
+        {"Array element is not a method", "\u914D\u5217\u8981\u7D20\u306F\u30E1\u30BD\u30C3\u30C9\u3067\u306F\u3042\u308A\u307E\u305B\u3093"},
+        {"Array index must be a integer type", "\u914D\u5217\u306E\u6DFB\u3048\u5B57\u306F\u6574\u6570\u578B\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
+        {"base directory:", "\u30D9\u30FC\u30B9\u30FB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA: {0}"},
+        {"bootclasspath:", "\u30D6\u30FC\u30C8\u30FB\u30AF\u30E9\u30B9\u30D1\u30B9: {0}"},
+        {"Breakpoint hit:", "\u30D2\u30C3\u30C8\u3057\u305F\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8: "},
+        {"breakpoint", "\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8{0}"},
+        {"Breakpoints set:", "\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8:"},
+        {"Breakpoints can be located only in classes.", "\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u306F\u30AF\u30E9\u30B9\u5185\u306B\u306E\u307F\u914D\u7F6E\u3067\u304D\u307E\u3059\u3002{0}\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u307E\u305F\u306F\u914D\u5217\u3067\u3059\u3002"},
+        {"Can only trace", "'methods'\u3001'method exit'\u307E\u305F\u306F'method exits'\u306E\u307F\u30C8\u30EC\u30FC\u30B9\u3067\u304D\u307E\u3059"},
+        {"cannot redefine existing connection", "{0}\u306F\u65E2\u5B58\u306E\u63A5\u7D9A\u3092\u518D\u5B9A\u7FA9\u3067\u304D\u307E\u305B\u3093"},
+        {"Cannot assign to a method invocation", "\u30E1\u30BD\u30C3\u30C9\u547C\u51FA\u3057\u306B\u5272\u5F53\u3066\u3067\u304D\u307E\u305B\u3093"},
+        {"Cannot specify command line with connector:", "\u30B3\u30CD\u30AF\u30BF\u3067\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u3092\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093: {0}"},
+        {"Cannot specify target vm arguments with connector:", "\u30B3\u30CD\u30AF\u30BF\u3067\u30BF\u30FC\u30B2\u30C3\u30C8VM\u5F15\u6570\u3092\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093: {0}"},
+        {"Class containing field must be specified.", "\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u542B\u3080\u30AF\u30E9\u30B9\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002"},
+        {"Class:", "\u30AF\u30E9\u30B9: {0}"},
+        {"Classic VM no longer supported.", "Classic VM\u306F\u73FE\u5728\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"classpath:", "\u30AF\u30E9\u30B9\u30D1\u30B9: {0}"},
         {"colon mark", ":"},
         {"colon space", ": "},
-        {"Command is not supported on the target VM", "\u30bf\u30fc\u30b2\u30c3\u30c8 VM \u3067\u306f\u3001\u30b3\u30de\u30f3\u30c9 ''{0}'' \u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
-        {"Command is not supported on a read-only VM connection", "\u8aad\u307f\u53d6\u308a\u5c02\u7528 VM \u63a5\u7d9a\u3067\u306f\u3001\u30b3\u30de\u30f3\u30c9 ''{0}'' \u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
-        {"Command not valid until the VM is started with the run command", "\u30b3\u30de\u30f3\u30c9 ''{0}'' \u306f\u3001''run'' \u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u3063\u3066 VM \u3092\u8d77\u52d5\u3059\u308b\u307e\u3067\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093"},
-        {"Condition must be boolean", "\u6761\u4ef6\u306f boolean \u578b\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059"},
-        {"Connector and Transport name", "  \u30b3\u30cd\u30af\u30bf: {0}  \u30c8\u30e9\u30f3\u30b9\u30dd\u30fc\u30c8: {1}"},
-        {"Connector argument nodefault", "    \u5f15\u6570: {0} (\u30c7\u30d5\u30a9\u30eb\u30c8\u306a\u3057)"},
-        {"Connector argument default", "    \u5f15\u6570: {0} \u30c7\u30d5\u30a9\u30eb\u30c8\u5024: {1}"},
-        {"Connector description", "    \u8aac\u660e: {0}"},
-        {"Connector required argument nodefault", "    \u5fc5\u9808\u5f15\u6570: {0} (\u30c7\u30d5\u30a9\u30eb\u30c8\u306a\u3057)"},
-        {"Connector required argument default", "    \u5fc5\u9808\u5f15\u6570: {0} \u30c7\u30d5\u30a9\u30eb\u30c8\u5024: {1}"},
-        {"Connectors available", "\u5229\u7528\u53ef\u80fd\u306a\u30b3\u30cd\u30af\u30bf:"},
-        {"Constant is not a method", "\u5b9a\u6570\u306f\u30e1\u30bd\u30c3\u30c9\u3067\u306f\u3042\u308a\u307e\u305b\u3093"},
-        {"Could not open:", "{0} \u3092\u958b\u3051\u307e\u305b\u3093"},
-        {"Current method is native", "\u73fe\u884c\u306e\u30e1\u30bd\u30c3\u30c9\u306f\u30cd\u30a4\u30c6\u30a3\u30d6\u3067\u3059"},
-        {"Current thread died. Execution continuing...", "\u73fe\u5728\u306e\u30b9\u30ec\u30c3\u30c9 {0} \u304c\u4e2d\u65ad\u3055\u308c\u307e\u3057\u305f\u3002\u51e6\u7406\u3092\u7d9a\u884c\u3057\u3066\u3044\u307e\u3059..."},
-        {"Current thread isnt suspended.", "\u73fe\u5728\u306e\u30b9\u30ec\u30c3\u30c9\u306f\u505c\u6b62\u3057\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"Current thread not set.", "\u73fe\u5728\u306e\u30b9\u30ec\u30c3\u30c9\u306f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"dbgtrace flag value must be an integer:", "dbgtrace \u30d5\u30e9\u30b0\u5024\u306f\u3001\u6574\u6570\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059: {0}"},
-        {"Deferring.", "{0} \u3092\u4fdd\u7559\u3057\u3066\u3044\u307e\u3059\u3002\n\u30af\u30e9\u30b9\u304c\u30ed\u30fc\u30c9\u3055\u308c\u305f\u5f8c\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002"},
-        {"End of stack.", "\u30b9\u30bf\u30c3\u30af\u306e\u7d42\u308f\u308a\u3002"},
-        {"Error popping frame", "\u30d5\u30ec\u30fc\u30e0\u306e\u30dd\u30c3\u30d7\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f - {0}"},
-        {"Error reading file", "''{0}'' \u306e \u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f - {1}"},
-        {"Error redefining class to file", "{0} \u306e {1} \u3078\u306e\u518d\u5b9a\u7fa9\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f - {2}"},
-        {"exceptionSpec all", "all {0}"},
-        {"exceptionSpec caught", "caught {0}"},
-        {"exceptionSpec uncaught", "uncaught {0}"},
-        {"Exception in expression:", "\u5f0f\u3067\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0}"},
-        {"Exception occurred caught", "\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} ({1}\u3067\u30ad\u30e3\u30c3\u30c1\u3055\u308c\u307e\u3057\u305f)"},
-        {"Exception occurred uncaught", "\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} (\u30ad\u30e3\u30c3\u30c1\u3055\u308c\u3066\u3044\u307e\u305b\u3093)"},
-        {"Exceptions caught:", "\u4ee5\u4e0b\u306e\u4f8b\u5916\u304c\u767a\u751f\u3057\u305f\u6642\u306b\u505c\u6b62\u3057\u307e\u3059:"},
+        {"Command is not supported on the target VM", "\u30B3\u30DE\u30F3\u30C9''{0}''\u306F\u30BF\u30FC\u30B2\u30C3\u30C8VM\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093"},
+        {"Command is not supported on a read-only VM connection", "\u30B3\u30DE\u30F3\u30C9''{0}''\u306F\u8AAD\u53D6\u308A\u5C02\u7528VM\u63A5\u7D9A\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093"},
+        {"Command not valid until the VM is started with the run command", "\u30B3\u30DE\u30F3\u30C9''{0}''\u306F\u3001VM\u304C''run''\u30B3\u30DE\u30F3\u30C9\u3067\u958B\u59CB\u3055\u308C\u308B\u307E\u3067\u7121\u52B9\u3067\u3059"},
+        {"Condition must be boolean", "\u6761\u4EF6\u306Fboolean\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
+        {"Connector and Transport name", "  \u30B3\u30CD\u30AF\u30BF: {0}  \u30C8\u30E9\u30F3\u30B9\u30DD\u30FC\u30C8: {1}"},
+        {"Connector argument nodefault", "    \u5F15\u6570: {0} (\u30C7\u30D5\u30A9\u30EB\u30C8\u306A\u3057)"},
+        {"Connector argument default", "    \u5F15\u6570: {0} \u30C7\u30D5\u30A9\u30EB\u30C8\u5024: {1}"},
+        {"Connector description", "    \u8AAC\u660E: {0}"},
+        {"Connector required argument nodefault", "    \u5FC5\u9808\u5F15\u6570: {0} (\u30C7\u30D5\u30A9\u30EB\u30C8\u306A\u3057)"},
+        {"Connector required argument default", "    \u5FC5\u9808\u5F15\u6570: {0} \u30C7\u30D5\u30A9\u30EB\u30C8\u5024: {1}"},
+        {"Connectors available", "\u5229\u7528\u53EF\u80FD\u306A\u30B3\u30CD\u30AF\u30BF:"},
+        {"Constant is not a method", "\u5B9A\u6570\u306F\u30E1\u30BD\u30C3\u30C9\u3067\u306F\u3042\u308A\u307E\u305B\u3093"},
+        {"Could not open:", "\u958B\u3051\u307E\u305B\u3093\u3067\u3057\u305F: {0}"},
+        {"Current method is native", "\u73FE\u5728\u306E\u30E1\u30BD\u30C3\u30C9\u306Fnative\u3067\u3059"},
+        {"Current thread died. Execution continuing...", "\u73FE\u5728\u306E\u30B9\u30EC\u30C3\u30C9{0}\u304C\u7D42\u4E86\u3057\u307E\u3057\u305F\u3002\u5B9F\u884C\u304C\u7D9A\u884C\u4E2D..."},
+        {"Current thread isnt suspended.", "\u73FE\u5728\u306E\u30B9\u30EC\u30C3\u30C9\u306F\u4E2D\u65AD\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"Current thread not set.", "\u73FE\u5728\u306E\u30B9\u30EC\u30C3\u30C9\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"dbgtrace flag value must be an integer:", "dbgtrace\u30D5\u30E9\u30B0\u5024\u306F\u6574\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059: {0}"},
+        {"Deferring.", "\u9045\u5EF6\u3057\u305F{0}\u3002\n\u30AF\u30E9\u30B9\u304C\u30ED\u30FC\u30C9\u3055\u308C\u305F\u5F8C\u306B\u8A2D\u5B9A\u3055\u308C\u307E\u3059\u3002"},
+        {"End of stack.", "\u30B9\u30BF\u30C3\u30AF\u306E\u7D42\u308F\u308A\u3002"},
+        {"Error popping frame", "\u30D5\u30EC\u30FC\u30E0\u306E\u30DD\u30C3\u30D7\u4E2D\u306E\u30A8\u30E9\u30FC - {0}"},
+        {"Error reading file", "''{0}''\u306E\u8AAD\u53D6\u308A\u30A8\u30E9\u30FC - {1}"},
+        {"Error redefining class to file", "{0}\u3092{1}\u306B\u518D\u5B9A\u7FA9\u4E2D\u306E\u30A8\u30E9\u30FC - {2}"},
+        {"exceptionSpec all", "\u3059\u3079\u3066\u306E{0}"},
+        {"exceptionSpec caught", "\u6355\u6349\u3057\u305F{0}"},
+        {"exceptionSpec uncaught", "\u6355\u6349\u3055\u308C\u306A\u3044{0}"},
+        {"Exception in expression:", "\u5F0F\u306E\u4F8B\u5916: {0}"},
+        {"Exception occurred caught", "\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F: {0} (\u6355\u6349\u3055\u308C\u308B\u5834\u6240: {1})"},
+        {"Exception occurred uncaught", "\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F: {0} (\u6355\u6349\u3055\u308C\u306A\u3044)"},
+        {"Exceptions caught:", "\u6B21\u306E\u4F8B\u5916\u304C\u767A\u751F\u3057\u305F\u3068\u304D\u306B\u30D6\u30EC\u30FC\u30AF:"},
         {"expr is null", "{0} = null"},
         {"expr is value", "{0} = {1}"},
-        {"expr is value <collected>", "  {0} = {1} <\u53ce\u96c6\u3055\u308c\u307e\u3057\u305f>"},
-        {"Expression cannot be void", "\u5f0f\u3092 void \u578b\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093"},
-        {"Expression must evaluate to an object", "\u5f0f\u3067\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u8a55\u4fa1\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059"},
-        {"extends:", "\u62e1\u5f35: {0}"},
-        {"Failed reading output", "\u5b50 java \u30a4\u30f3\u30bf\u30d7\u30ea\u30bf\u306e\u51fa\u529b\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002"},
-        {"Fatal error", "\u81f4\u547d\u7684\u30a8\u30e9\u30fc:"},
-        {"Field access encountered before after", "{1} \u306e\u30d5\u30a3\u30fc\u30eb\u30c9 ({0}) \u306f {2} \u306b\u306a\u308a\u307e\u3059: "},
-        {"Field access encountered", "\u30d5\u30a3\u30fc\u30eb\u30c9 ({0}) \u3078\u306e\u30a2\u30af\u30bb\u30b9\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f: "},
-        {"Field to unwatch not specified", "\u76e3\u8996\u3057\u306a\u3044\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"Field to watch not specified", "\u76e3\u8996\u3059\u308b\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"GC Disabled for", "{0} \u3067\u306f GC \u304c\u7121\u52b9\u3067\u3059:"},
-        {"GC Enabled for", "{0} \u3067\u306f GC \u304c\u6709\u52b9\u3067\u3059:"},
+        {"expr is value <collected>", "  {0} = {1} <collected>"},
+        {"Expression cannot be void", "\u5F0F\u306Fvoid\u578B\u306B\u3067\u304D\u307E\u305B\u3093"},
+        {"Expression must evaluate to an object", "\u5F0F\u306F\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3068\u3057\u3066\u8A55\u4FA1\u3055\u308C\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
+        {"extends:", "\u62E1\u5F35\u3057\u307E\u3059: {0}"},
+        {"Failed reading output", "\u5B50\u306Ejava\u30A4\u30F3\u30BF\u30FC\u30D7\u30EA\u30BF\u306E\u51FA\u529B\u306E\u8AAD\u53D6\u308A\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002"},
+        {"Fatal error", "\u81F4\u547D\u7684\u30A8\u30E9\u30FC:"},
+        {"Field access encountered before after", "\u30D5\u30A3\u30FC\u30EB\u30C9({0})\u306F{1}\u3067\u3001{2}\u306B\u306A\u308A\u307E\u3059: "},
+        {"Field access encountered", "\u30D5\u30A3\u30FC\u30EB\u30C9({0})\u306E\u30A2\u30AF\u30BB\u30B9\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F: "},
+        {"Field to unwatch not specified", "\u76E3\u8996\u3057\u306A\u3044\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"Field to watch not specified", "\u76E3\u8996\u3059\u308B\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"GC Disabled for", "{0}\u306EGC\u304C\u7121\u52B9\u3067\u3059:"},
+        {"GC Enabled for", "{0}\u306EGC\u304C\u6709\u52B9\u3067\u3059:"},
         {"grouping begin character", "{"},
         {"grouping end character", "}"},
-        {"Illegal Argument Exception", "\u4e0d\u6b63\u306a\u5f15\u6570\u4f8b\u5916\u3067\u3059"},
-        {"Illegal connector argument", "\u4e0d\u6b63\u306a\u30b3\u30cd\u30af\u30bf\u5f15\u6570: {0}"},
-        {"implementor:", "\u5b9f\u88c5\u8005: {0}"},
-        {"implements:", "\u5b9f\u88c5\u3057\u307e\u3059: {0}"},
-        {"Initializing progname", "{0} \u306e\u521d\u671f\u5316\u4e2d\u3067\u3059..."},
-        {"Input stream closed.", "\u5165\u529b\u30b9\u30c8\u30ea\u30fc\u30e0\u3092\u7d42\u4e86\u3057\u307e\u3057\u305f\u3002"},
-        {"Interface:", "\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9: {0}"},
-        {"Internal debugger error.", "\u5185\u90e8\u30c7\u30d0\u30c3\u30ac\u30a8\u30e9\u30fc"},
-        {"Internal error: null ThreadInfo created", "\u5185\u90e8\u30a8\u30e9\u30fc: null ThreadInfo \u304c\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f"},
-        {"Internal error; unable to set", "\u5185\u90e8\u30a8\u30e9\u30fc; {0} \u3092\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093"},
-        {"Internal exception during operation:", "\u51e6\u7406\u4e2d\u306b\u5185\u90e8\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f:\n    {0}"},
-        {"Internal exception:", "\u5185\u90e8\u4f8b\u5916:"},
-        {"Invalid argument type name", "\u5f15\u6570\u306e\u578b\u540d\u304c\u7121\u52b9\u3067\u3059"},
-        {"Invalid assignment syntax", "\u4ee3\u5165\u69cb\u6587\u304c\u7121\u52b9\u3067\u3059"},
-        {"Invalid command syntax", "\u30b3\u30de\u30f3\u30c9\u69cb\u6587\u304c\u7121\u52b9\u3067\u3059"},
-        {"Invalid connect type", "\u63a5\u7d9a\u306e\u7a2e\u985e\u304c\u7121\u52b9\u3067\u3059"},
-        {"Invalid consecutive invocations", "\u9023\u7d9a\u547c\u3073\u51fa\u3057\u304c\u7121\u52b9\u3067\u3059"},
-        {"Invalid exception object", "\u4f8b\u5916\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u7121\u52b9\u3067\u3059"},
-        {"Invalid method specification:", "\u7121\u52b9\u306a\u30e1\u30bd\u30c3\u30c9\u3092\u6307\u5b9a\u3057\u307e\u3057\u305f: {0}"},
-        {"Invalid option on class command", "\u30af\u30e9\u30b9\u30b3\u30de\u30f3\u30c9\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u7121\u52b9\u3067\u3059"},
-        {"invalid option", "\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u7121\u52b9\u3067\u3059: {0}"},
-        {"Invalid thread status.", "\u30b9\u30ec\u30c3\u30c9\u30b9\u30c6\u30fc\u30bf\u30b9\u304c\u7121\u52b9\u3067\u3059\u3002"},
-        {"Invalid transport name:", "\u30c8\u30e9\u30f3\u30b9\u30dd\u30fc\u30c8\u540d\u304c\u7121\u52b9\u3067\u3059: {0}"},
-        {"I/O exception occurred:", "\u5165\u51fa\u529b\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0}"},
-        {"is an ambiguous method name in", "\"{0}\" \u306f\u3001\"{1}\" \u3067\u306f\u3042\u3044\u307e\u3044\u306a\u30e1\u30bd\u30c3\u30c9\u540d\u3067\u3059"},
-        {"is an invalid line number for",  "{0,number,integer} \u306f\u3001{1} \u306e\u7121\u52b9\u306a\u884c\u756a\u53f7\u3067\u3059"},
-        {"is not a valid class name", "\"{0}\" \u306f\u3001\u6709\u52b9\u306a\u30af\u30e9\u30b9\u540d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"is not a valid field name", "\"{0}\" \u306f\u3001\u6709\u52b9\u306a\u30d5\u30a3\u30fc\u30eb\u30c9\u540d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"is not a valid id or class name", "\"{0}\" \u306f\u3001\u6709\u52b9\u306a ID \u307e\u305f\u306f\u30af\u30e9\u30b9\u540d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"is not a valid line number or method name for", "\"{0}\" \u306f\u3001\u30af\u30e9\u30b9 \"{1}\" \u306e\u6709\u52b9\u306a\u884c\u756a\u53f7\u307e\u305f\u306f\u30e1\u30bd\u30c3\u30c9\u540d\u3067\u306f\u3042\u308a\u307e\u305b\u3093"},
-        {"is not a valid method name", "\"{0}\" \u306f\u3001\u6709\u52b9\u306a\u30e1\u30bd\u30c3\u30c9\u540d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"is not a valid thread id", "\"{0}\" \u306f\u3001\u6709\u52b9\u306a\u30b9\u30ec\u30c3\u30c9 ID \u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"is not a valid threadgroup name", "\"{0}\" \u306f\u3001\u6709\u52b9\u306a\u30b9\u30ec\u30c3\u30c9\u30b0\u30eb\u30fc\u30d7\u540d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"},
+        {"Illegal Argument Exception", "\u4E0D\u6B63\u306A\u5F15\u6570\u306E\u4F8B\u5916\u3067\u3059"},
+        {"Illegal connector argument", "\u4E0D\u6B63\u306A\u30B3\u30CD\u30AF\u30BF\u5F15\u6570\u3067\u3059: {0}"},
+        {"implementor:", "\u30A4\u30F3\u30D7\u30EA\u30E1\u30F3\u30BF: {0}"},
+        {"implements:", "\u5B9F\u88C5\u3057\u307E\u3059: {0}"},
+        {"Initializing progname", "{0}\u306E\u521D\u671F\u5316\u4E2D..."},
+        {"Input stream closed.", "\u5165\u529B\u30B9\u30C8\u30EA\u30FC\u30E0\u304C\u9589\u3058\u3089\u308C\u307E\u3057\u305F\u3002"},
+        {"Interface:", "\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9: {0}"},
+        {"Internal debugger error.", "\u30C7\u30D0\u30C3\u30AC\u306E\u5185\u90E8\u30A8\u30E9\u30FC\u3067\u3059\u3002"},
+        {"Internal error: null ThreadInfo created", "\u5185\u90E8\u30A8\u30E9\u30FC: null\u306EThreadInfo\u304C\u4F5C\u6210\u3055\u308C\u307E\u3057\u305F"},
+        {"Internal error; unable to set", "\u5185\u90E8\u30A8\u30E9\u30FC\u3002{0}\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u305B\u3093"},
+        {"Internal exception during operation:", "\u64CD\u4F5C\u4E2D\u306E\u5185\u90E8\u4F8B\u5916:\n    {0}"},
+        {"Internal exception:", "\u5185\u90E8\u4F8B\u5916:"},
+        {"Invalid argument type name", "\u5F15\u6570\u578B\u306E\u540D\u524D\u304C\u7121\u52B9\u3067\u3059"},
+        {"Invalid assignment syntax", "\u5272\u5F53\u3066\u69CB\u6587\u304C\u7121\u52B9\u3067\u3059"},
+        {"Invalid command syntax", "\u30B3\u30DE\u30F3\u30C9\u69CB\u6587\u304C\u7121\u52B9\u3067\u3059"},
+        {"Invalid connect type", "\u63A5\u7D9A\u578B\u304C\u7121\u52B9\u3067\u3059"},
+        {"Invalid consecutive invocations", "\u9023\u7D9A\u547C\u51FA\u3057\u304C\u7121\u52B9\u3067\u3059"},
+        {"Invalid exception object", "\u4F8B\u5916\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u7121\u52B9\u3067\u3059"},
+        {"Invalid method specification:", "\u7121\u52B9\u306A\u30E1\u30BD\u30C3\u30C9\u6307\u5B9A: {0}"},
+        {"Invalid option on class command", "class\u30B3\u30DE\u30F3\u30C9\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u7121\u52B9\u3067\u3059"},
+        {"invalid option", "\u7121\u52B9\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: {0}"},
+        {"Invalid thread status.", "\u30B9\u30EC\u30C3\u30C9\u72B6\u614B\u304C\u7121\u52B9\u3067\u3059\u3002"},
+        {"Invalid transport name:", "\u30C8\u30E9\u30F3\u30B9\u30DD\u30FC\u30C8\u540D\u304C\u7121\u52B9\u3067\u3059: {0}"},
+        {"I/O exception occurred:", "\u5165\u51FA\u529B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F: {0}"},
+        {"is an ambiguous method name in", "\"{0}\"\u306F\"{1}\"\u306E\u3042\u3044\u307E\u3044\u306A\u30E1\u30BD\u30C3\u30C9\u540D\u3067\u3059"},
+        {"is an invalid line number for",  "{0,number,integer}\u306F{1}\u306E\u7121\u52B9\u306A\u884C\u756A\u53F7\u3067\u3059"},
+        {"is not a valid class name", "\"{0}\"\u306F\u4E0D\u6B63\u306A\u30AF\u30E9\u30B9\u540D\u3067\u3059\u3002"},
+        {"is not a valid field name", "\"{0}\"\u306F\u4E0D\u6B63\u306A\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u3067\u3059\u3002"},
+        {"is not a valid id or class name", "\"{0}\"\u306F\u4E0D\u6B63\u306AID\u307E\u305F\u306F\u30AF\u30E9\u30B9\u540D\u3067\u3059\u3002"},
+        {"is not a valid line number or method name for", "\"{0}\"\u306F\u30AF\u30E9\u30B9\"{1}\"\u306E\u4E0D\u6B63\u306A\u884C\u756A\u53F7\u307E\u305F\u306F\u30E1\u30BD\u30C3\u30C9\u540D\u3067\u3059"},
+        {"is not a valid method name", "\"{0}\"\u306F\u4E0D\u6B63\u306A\u30E1\u30BD\u30C3\u30C9\u540D\u3067\u3059\u3002"},
+        {"is not a valid thread id", "\"{0}\"\u306F\u4E0D\u6B63\u306A\u30B9\u30EC\u30C3\u30C9ID\u3067\u3059\u3002"},
+        {"is not a valid threadgroup name", "\"{0}\"\u306F\u4E0D\u6B63\u306A\u30B9\u30EC\u30C3\u30C9\u30FB\u30B0\u30EB\u30FC\u30D7\u540D\u3067\u3059\u3002"},
         {"jdb prompt with no current thread", "> "},
         {"jdb prompt thread name and current stack frame", "{0}[{1,number,integer}] "},
-        {"killed", "{0} \u304c\u7d42\u4e86\u3057\u307e\u3057\u305f"},
-        {"killing thread:", "\u6b21\u306e\u30b9\u30ec\u30c3\u30c9\u3092\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059: {0}"},
-        {"Line number information not available for", "\u30bd\u30fc\u30b9\u306e\u884c\u756a\u53f7\u306f\u3001\u3053\u3053\u3067\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002"},
+        {"killed", "{0}\u304C\u5F37\u5236\u7D42\u4E86\u3055\u308C\u307E\u3057\u305F"},
+        {"killing thread:", "\u5F37\u5236\u7D42\u4E86\u3059\u308B\u30B9\u30EC\u30C3\u30C9: {0}"},
+        {"Line number information not available for", "\u30BD\u30FC\u30B9\u884C\u756A\u53F7\u306F\u3053\u306E\u5834\u6240\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002"},
         {"line number", ":{0,number,integer}"},
         {"list field typename and name", "{0} {1}\n"},
-        {"list field typename and name inherited", "{0} {1} ({2} \u304b\u3089\u7d99\u627f)\n"},
-        {"list field typename and name hidden", "{0} {1} (\u975e\u8868\u793a)\n"},
-        {"Listening at address:", "\u30a2\u30c9\u30ec\u30b9\u3067\u5f85\u6a5f: {0}"},
-        {"Local variable information not available.", "\u30ed\u30fc\u30ab\u30eb\u5909\u6570\u60c5\u5831\u304c\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002-g \u3092\u4f7f\u3063\u3066\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3001\u5909\u6570\u60c5\u5831\u3092\u751f\u6210\u3057\u3066\u304f\u3060\u3055\u3044"},
-        {"Local variables:", "\u30ed\u30fc\u30ab\u30eb\u5909\u6570:"},
-        {"<location unavailable>", "<\u4f4d\u7f6e\u9078\u629e\u4e0d\u53ef>"},
-        {"location", "\"\u30b9\u30ec\u30c3\u30c9={0}\", {1}"},
-        {"locationString", "{0}.{1}(), line={2,number,integer} bci={3,number,integer}"},
-        {"Main class and arguments must be specified", "\u30e1\u30a4\u30f3\u30af\u30e9\u30b9\u3068\u5f15\u6570\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059"},
-        {"Method arguments:", "\u30e1\u30bd\u30c3\u30c9\u5f15\u6570:"},
-        {"Method entered:", "\u30e1\u30bd\u30c3\u30c9\u958b\u59cb: "},
-        {"Method exited:",  "\u30e1\u30bd\u30c3\u30c9\u7d42\u4e86"},
-        {"Method exitedValue:", "\u30e1\u30bd\u30c3\u30c9\u7d42\u4e86: \u623b\u308a\u5024 = {0}, "},
-        {"Method is overloaded; specify arguments", "\u30e1\u30bd\u30c3\u30c9 {0} \u304c\u30aa\u30fc\u30d0\u30fc\u30ed\u30fc\u30c9\u3057\u3066\u3044\u307e\u3059\u3002\u5f15\u6570\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044"},
-        {"minus version", "\u3053\u308c\u306f {0} \u30d0\u30fc\u30b8\u30e7\u30f3 {1,number,integer}.{2,number,integer} (J2SE \u30d0\u30fc\u30b8\u30e7\u30f3 {3}) \u3067\u3059"},
-        {"Monitor information for thread", "\u30b9\u30ec\u30c3\u30c9 {0} \u306e\u30e2\u30cb\u30bf\u60c5\u5831:"},
-        {"Monitor information for expr", "{0} ({1}) \u306e\u30e2\u30cb\u30bf\u60c5\u5831:"},
-        {"More than one class named", "\u8907\u6570\u306e\u30af\u30e9\u30b9\u306b\u6b21\u306e\u540d\u524d\u304c\u4ed8\u3044\u3066\u3044\u307e\u3059: ''{0}''"},
-        {"native method", "\u30cd\u30a4\u30c6\u30a3\u30d6 \u30e1\u30bd\u30c3\u30c9"},
-        {"nested:", "\u5165\u308c\u5b50: {0}"},
-        {"No attach address specified.", "\u63a5\u7d9a\u5148\u306e\u30a2\u30c9\u30ec\u30b9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"No breakpoints set.", "\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"No class named", "''{0}'' \u3068\u3044\u3046\u540d\u524d\u306e\u30af\u30e9\u30b9\u304c\u3042\u308a\u307e\u305b\u3093"},
-        {"No class specified.", "\u30af\u30e9\u30b9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"No classpath specified.", "\u30af\u30e9\u30b9\u30d1\u30b9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"No code at line", "{1} \u306e\u884c {0,number,integer} \u306b\u30b3\u30fc\u30c9\u304c\u3042\u308a\u307e\u305b\u3093"},
-        {"No connect specification.", "\u63a5\u7d9a\u4ed5\u69d8\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"No connector named:", "\u6b21\u306e\u540d\u524d\u306e\u30b3\u30cd\u30af\u30bf\u304c\u3042\u308a\u307e\u305b\u3093: {0}"},
-        {"No current thread", "\u73fe\u884c\u30b9\u30ec\u30c3\u30c9\u304c\u3042\u308a\u307e\u305b\u3093"},
-        {"No default thread specified:", "\u30c7\u30d5\u30a9\u30eb\u30c8\u30b9\u30ec\u30c3\u30c9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u6700\u521d\u306b \"thread\" \u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"No exception object specified.", "\u4f8b\u5916\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"No exceptions caught.", "\u4f8b\u5916\u306f\u30ad\u30e3\u30c3\u30c1\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"No expression specified.", "\u5f0f\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"No field in", "{1} \u306b\u30d5\u30a3\u30fc\u30eb\u30c9 {0} \u304c\u3042\u308a\u307e\u305b\u3093"},
-        {"No frames on the current call stack", "\u73fe\u884c\u306e\u547c\u3073\u51fa\u3057\u30b9\u30bf\u30c3\u30af\u306b\u306f\u30d5\u30ec\u30fc\u30e0\u304c\u3042\u308a\u307e\u305b\u3093"},
-        {"No linenumber information for", "{0} \u306e\u884c\u756a\u53f7\u60c5\u5831\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u30c7\u30d0\u30c3\u30b0\u6a5f\u80fd\u3092\u30aa\u30f3\u306b\u3057\u3066\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"No local variables", "\u30ed\u30fc\u30ab\u30eb\u5909\u6570\u304c\u3042\u308a\u307e\u305b\u3093"},
-        {"No method in", "{1} \u306b\u30e1\u30bd\u30c3\u30c9 {0} \u304c\u3042\u308a\u307e\u305b\u3093"},
-        {"No method specified.", "\u30e1\u30bd\u30c3\u30c9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"No monitor numbered:", "\u6b21\u306e\u756a\u53f7\u306e\u30e2\u30cb\u30bf\u304c\u3042\u308a\u307e\u305b\u3093: {0}"},
-        {"No monitors owned", "  \u6240\u6709\u3059\u308b\u30e2\u30cb\u30bf\u304c\u3042\u308a\u307e\u305b\u3093"},
-        {"No object specified.", "\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"No objects specified.", "\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"No save index specified.", "\u4fdd\u5b58\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"No saved values", "\u4fdd\u5b58\u3055\u308c\u305f\u5024\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"No source information available for:", "{0} \u306e\u30bd\u30fc\u30b9\u60c5\u5831\u304c\u5229\u7528\u3067\u304d\u307e\u305b\u3093"},
-        {"No sourcedebugextension specified", "SourceDebugExtension \u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"No sourcepath specified.", "sourcepath \u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"No thread specified.", "\u30b9\u30ec\u30c3\u30c9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"No VM connected", "VM \u304c\u63a5\u7d9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
-        {"No waiters", " \u5f85\u6a5f\u8005\u306f\u3044\u307e\u305b\u3093"},
-        {"not a class", "{0} \u306f\u30af\u30e9\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093"},
-        {"Not a monitor number:", "\u30e2\u30cb\u30bf\u756a\u53f7\u3067\u306f\u3042\u308a\u307e\u305b\u3093: ''{0}''"},
-        {"not found (try the full name)", "{0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 (\u30d5\u30eb\u30cd\u30fc\u30e0\u3092\u5165\u308c\u3066\u304f\u3060\u3055\u3044)"},
-        {"Not found:", "\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0}"},
-        {"not found", "{0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093"},
-        {"Not owned", "  \u6240\u6709\u3057\u3066\u3044\u307e\u305b\u3093"},
-        {"Not waiting for a monitor", "  \u30e2\u30cb\u30bf\u3092\u5f85\u6a5f\u3057\u3066\u3044\u307e\u305b\u3093"},
-        {"Nothing suspended.", "\u4f55\u3082\u4e2d\u65ad\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
+        {"list field typename and name inherited", "{0} {1} ({2}\u304B\u3089\u7D99\u627F)\n"},
+        {"list field typename and name hidden", "{0} {1} (\u975E\u8868\u793A)\n"},
+        {"Listening at address:", "\u6B21\u306E\u30A2\u30C9\u30EC\u30B9\u3067\u30EA\u30B9\u30CB\u30F3\u30B0: {0}"},
+        {"Local variable information not available.", "\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u60C5\u5831\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u5909\u6570\u60C5\u5831\u3092\u751F\u6210\u3059\u308B\u306B\u306F-g\u3092\u6307\u5B9A\u3057\u3066\u30B3\u30F3\u30D1\u30A4\u30EB\u3057\u3066\u304F\u3060\u3055\u3044"},
+        {"Local variables:", "\u30ED\u30FC\u30AB\u30EB\u5909\u6570:"},
+        {"<location unavailable>", "<location unavailable>"},
+        {"location", "\"\u30B9\u30EC\u30C3\u30C9={0}\", {1}"},
+        {"locationString", "{0}.{1}()\u3001\u884C={2,number,integer} bci={3,number,integer}"},
+        {"Main class and arguments must be specified", "\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9\u3068\u5F15\u6570\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
+        {"Method arguments:", "\u30E1\u30BD\u30C3\u30C9\u5F15\u6570:"},
+        {"Method entered:", "\u5165\u529B\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9: "},
+        {"Method exited:",  "\u7D42\u4E86\u3057\u305F\u30E1\u30BD\u30C3\u30C9"},
+        {"Method exitedValue:", "\u30E1\u30BD\u30C3\u30C9\u304C\u7D42\u4E86\u3057\u307E\u3057\u305F: \u623B\u308A\u5024= {0}, "},
+        {"Method is overloaded; specify arguments", "\u30E1\u30BD\u30C3\u30C9{0}\u304C\u30AA\u30FC\u30D0\u30FC\u30ED\u30FC\u30C9\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u5F15\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044"},
+        {"minus version", "\u3053\u308C\u306F{0}\u30D0\u30FC\u30B8\u30E7\u30F3{1,number,integer}.{2,number,integer} (Java SE\u30D0\u30FC\u30B8\u30E7\u30F3{3})\u3067\u3059"},
+        {"Monitor information for thread", "\u30B9\u30EC\u30C3\u30C9{0}\u306E\u60C5\u5831\u306E\u30E2\u30CB\u30BF\u30FC:"},
+        {"Monitor information for expr", "{0} ({1})\u306E\u60C5\u5831\u306E\u30E2\u30CB\u30BF\u30FC:"},
+        {"More than one class named", "\u540D\u524D''{0}''\u306E\u30AF\u30E9\u30B9\u304C\u8907\u6570\u3042\u308A\u307E\u3059"},
+        {"native method", "native\u30E1\u30BD\u30C3\u30C9"},
+        {"nested:", "\u5165\u308C\u5B50\u306B\u306A\u3063\u3066\u3044\u307E\u3059: {0}"},
+        {"No attach address specified.", "\u63A5\u7D9A\u30A2\u30C9\u30EC\u30B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"No breakpoints set.", "\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"No class named", "\u540D\u524D''{0}''\u306E\u30AF\u30E9\u30B9\u304C\u3042\u308A\u307E\u305B\u3093"},
+        {"No class specified.", "\u30AF\u30E9\u30B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"No classpath specified.", "\u30AF\u30E9\u30B9\u30D1\u30B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"No code at line", "{1}\u306E\u884C{0,number,integer}\u306B\u30B3\u30FC\u30C9\u304C\u3042\u308A\u307E\u305B\u3093"},
+        {"No connect specification.", "\u63A5\u7D9A\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"No connector named:", "\u540D\u524D{0}\u306E\u30B3\u30CD\u30AF\u30BF\u304C\u3042\u308A\u307E\u305B\u3093"},
+        {"No current thread", "\u73FE\u5728\u306E\u30B9\u30EC\u30C3\u30C9\u304C\u3042\u308A\u307E\u305B\u3093"},
+        {"No default thread specified:", "\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30B9\u30EC\u30C3\u30C9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u6700\u521D\u306B\"thread\"\u30B3\u30DE\u30F3\u30C9\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
+        {"No exception object specified.", "\u4F8B\u5916\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"No exceptions caught.", "\u4F8B\u5916\u304C\u6355\u6349\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002"},
+        {"No expression specified.", "\u5F0F\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"No field in", "{1}\u306B\u30D5\u30A3\u30FC\u30EB\u30C9{0}\u304C\u3042\u308A\u307E\u305B\u3093"},
+        {"No frames on the current call stack", "\u73FE\u5728\u306E\u30B3\u30FC\u30EB\u30FB\u30B9\u30BF\u30C3\u30AF\u306B\u30D5\u30EC\u30FC\u30E0\u304C\u3042\u308A\u307E\u305B\u3093"},
+        {"No linenumber information for", "{0}\u306E\u884C\u756A\u53F7\u60C5\u5831\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u30C7\u30D0\u30C3\u30B0\u3092\u30AA\u30F3\u306B\u3057\u3066\u30B3\u30F3\u30D1\u30A4\u30EB\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
+        {"No local variables", "\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u304C\u3042\u308A\u307E\u305B\u3093"},
+        {"No method in", "{1}\u306B\u30E1\u30BD\u30C3\u30C9{0}\u304C\u3042\u308A\u307E\u305B\u3093"},
+        {"No method specified.", "\u30E1\u30BD\u30C3\u30C9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"No monitor numbered:", "\u756A\u53F7\u4ED8\u3051\u3055\u308C\u3066\u3044\u308B\u30E2\u30CB\u30BF\u30FC\u304C\u3042\u308A\u307E\u305B\u3093: {0}"},
+        {"No monitors owned", "  \u6240\u6709\u3055\u308C\u3066\u3044\u308B\u30E2\u30CB\u30BF\u30FC\u304C\u3042\u308A\u307E\u305B\u3093"},
+        {"No object specified.", "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"No objects specified.", "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"No save index specified.", "\u4FDD\u5B58\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"No saved values", "\u4FDD\u5B58\u3055\u308C\u305F\u5024\u304C\u3042\u308A\u307E\u305B\u3093"},
+        {"No source information available for:", "{0}\u306E\u30BD\u30FC\u30B9\u60C5\u5831\u304C\u5229\u7528\u3067\u304D\u307E\u305B\u3093"},
+        {"No sourcedebugextension specified", "SourceDebugExtension\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093"},
+        {"No sourcepath specified.", "\u30BD\u30FC\u30B9\u30FB\u30D1\u30B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"No thread specified.", "\u30B9\u30EC\u30C3\u30C9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"No VM connected", "VM\u304C\u63A5\u7D9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093"},
+        {"No waiters", "  \u5F85\u6A5F\u306F\u3042\u308A\u307E\u305B\u3093"},
+        {"not a class", "{0}\u306F\u30AF\u30E9\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093"},
+        {"Not a monitor number:", "\u30E2\u30CB\u30BF\u30FC\u756A\u53F7\u3067\u306F\u3042\u308A\u307E\u305B\u3093: ''{0}''"},
+        {"not found (try the full name)", "{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093(\u30D5\u30EB\u30CD\u30FC\u30E0\u3092\u8A66\u3057\u3066\u304F\u3060\u3055\u3044)"},
+        {"Not found:", "\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0}"},
+        {"not found", "{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093"},
+        {"Not owned", "  \u6240\u6709\u3055\u308C\u3066\u3044\u307E\u305B\u3093"},
+        {"Not waiting for a monitor", "  \u30E2\u30CB\u30BF\u30FC\u3092\u5F85\u6A5F\u3057\u3066\u3044\u307E\u305B\u3093"},
+        {"Nothing suspended.", "\u4F55\u3082\u4E2D\u65AD\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
         {"object description and hex id", "({0}){1}"},
-        {"Operation is not supported on the target VM", "\u3053\u306e\u64cd\u4f5c\u306f\u3001\u30bf\u30fc\u30b2\u30c3\u30c8 VM \u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
-        {"operation not yet supported", "\u3053\u306e\u64cd\u4f5c\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
-        {"Owned by:", "  \u6240\u6709\u8005: {0}\u3001\u30a8\u30f3\u30c8\u30ea\u30ab\u30a6\u30f3\u30c8: {1,number,integer}"},
-        {"Owned monitor:", "  \u6240\u6709\u30e2\u30cb\u30bf: {0}"},
-        {"Parse exception:", "\u69cb\u6587\u89e3\u6790\u4f8b\u5916: {0}"},
-        {"printbreakpointcommandusage", "\u4f7f\u7528\u6cd5: {0} <class>:<line_number> \u307e\u305f\u306f\n       {1} <class>.<method_name>[(argument_type,...)]"},
-        {"Removed:", "\u524a\u9664\u6e08\u307f: {0}"},
-        {"Requested stack frame is no longer active:", "\u8981\u6c42\u3055\u308c\u305f\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u306f\u30a2\u30af\u30c6\u30a3\u30d6\u3067\u306f\u3042\u308a\u307e\u305b\u3093: {0,number,integer}"},
-        {"run <args> command is valid only with launched VMs", "'run <args>' \u30b3\u30de\u30f3\u30c9\u306f\u3001VM \u306e\u8d77\u52d5\u6642\u306b\u306e\u307f\u6709\u52b9\u3067\u3059\u3002"},
-        {"run", "{0} \u3092\u5b9f\u884c\u3057\u307e\u3059"},
-        {"saved", "{0} \u3092\u4fdd\u5b58\u3057\u307e\u3057\u305f"},
-        {"Set deferred", "\u4fdd\u7559\u3057\u305f {0} \u3092\u8a2d\u5b9a\u3057\u307e\u3057\u305f"},
-        {"Set", "{0} \u3092\u8a2d\u5b9a\u3057\u307e\u3057\u305f"},
-        {"Source file not found:", "\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0}"},
+        {"Operation is not supported on the target VM", "\u64CD\u4F5C\u306F\u30BF\u30FC\u30B2\u30C3\u30C8VM\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093"},
+        {"operation not yet supported", "\u307E\u3060\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u64CD\u4F5C"},
+        {"Owned by:", "  \u6240\u6709\u8005: {0}\u3001\u30A8\u30F3\u30C8\u30EA\u6570: {1,number,integer}"},
+        {"Owned monitor:", "  \u6240\u6709\u3055\u308C\u3066\u3044\u308B\u30E2\u30CB\u30BF\u30FC: {0}"},
+        {"Parse exception:", "\u4F8B\u5916\u306E\u89E3\u6790: {0}"},
+        {"printbreakpointcommandusage", "\u4F7F\u7528\u65B9\u6CD5: {0} <class>:<line_number>\u307E\u305F\u306F\n       {1} <class>.<method_name>[(argument_type,...)]"},
+        {"Removed:", "{0}\u306F\u524A\u9664\u3055\u308C\u307E\u3057\u305F"},
+        {"Requested stack frame is no longer active:", "\u30EA\u30AF\u30A8\u30B9\u30C8\u3055\u308C\u305F\u30B9\u30BF\u30C3\u30AF\u30FB\u30D5\u30EC\u30FC\u30E0\u306F\u73FE\u5728\u30A2\u30AF\u30C6\u30A3\u30D6\u3067\u306F\u3042\u308A\u307E\u305B\u3093: {0,number,integer}"},
+        {"run <args> command is valid only with launched VMs", "'run <args>'\u30B3\u30DE\u30F3\u30C9\u306F\u8D77\u52D5\u6E08\u306EVM\u3067\u306E\u307F\u6709\u52B9\u3067\u3059"},
+        {"run", "{0}\u306E\u5B9F\u884C"},
+        {"saved", "{0}\u304C\u4FDD\u5B58\u3055\u308C\u307E\u3057\u305F"},
+        {"Set deferred", "\u9045\u5EF6\u3057\u305F{0}\u306E\u8A2D\u5B9A"},
+        {"Set", "{0}\u306E\u8A2D\u5B9A"},
+        {"Source file not found:", "\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0}"},
         {"source line number and line", "{0,number,integer}    {1}"},
         {"source line number current line and line", "{0,number,integer} => {1}"},
         {"sourcedebugextension", "SourceDebugExtension -- {0}"},
-        {"Specify class and method", "\u30af\u30e9\u30b9\u304a\u3088\u3073\u30e1\u30bd\u30c3\u30c9\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044"},
-        {"Specify classes to redefine", "\u518d\u5b9a\u7fa9\u3059\u308b\u30af\u30e9\u30b9\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044"},
-        {"Specify file name for class", "\u30af\u30e9\u30b9 {0} \u306e\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044"},
+        {"Specify class and method", "\u30AF\u30E9\u30B9\u3068\u30E1\u30BD\u30C3\u30C9\u306E\u6307\u5B9A"},
+        {"Specify classes to redefine", "\u518D\u5B9A\u7FA9\u3059\u308B\u30AF\u30E9\u30B9\u306E\u6307\u5B9A"},
+        {"Specify file name for class", "\u30AF\u30E9\u30B9{0}\u306E\u30D5\u30A1\u30A4\u30EB\u540D\u306E\u6307\u5B9A"},
         {"stack frame dump with pc", "  [{0,number,integer}] {1}.{2} ({3})\u3001pc = {4}"},
         {"stack frame dump", "  [{0,number,integer}] {1}.{2} ({3})"},
-        {"Step completed:", "\u30b9\u30c6\u30c3\u30d7\u5b8c\u4e86: "},
-        {"Stopping due to deferred breakpoint errors.", "\u4fdd\u7559\u3057\u305f\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u306e\u30a8\u30e9\u30fc\u304c\u539f\u56e0\u3067\u505c\u6b62\u3057\u307e\u3057\u305f\u3002\n"},
-        {"subclass:", "\u30b5\u30d6\u30af\u30e9\u30b9: {0}"},
-        {"subinterface:", "\u30b5\u30d6\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9: {0}"},
+        {"Step completed:", "\u30B9\u30C6\u30C3\u30D7\u304C\u5B8C\u4E86\u3057\u307E\u3057\u305F: "},
+        {"Stopping due to deferred breakpoint errors.", "\u9045\u5EF6\u3057\u305F\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u30FB\u30A8\u30E9\u30FC\u304C\u539F\u56E0\u3067\u505C\u6B62\u3057\u3066\u3044\u307E\u3059\u3002\n"},
+        {"subclass:", "\u30B5\u30D6\u30AF\u30E9\u30B9: {0}"},
+        {"subinterface:", "\u30B5\u30D6\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9: {0}"},
         {"tab", "\t{0}"},
-        {"Target VM failed to initialize.", "\u30bf\u30fc\u30b2\u30c3\u30c8 VM \u306e\u521d\u671f\u5316\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002"},
-        {"The application exited", "\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u7d42\u4e86\u3057\u307e\u3057\u305f"},
-        {"The application has been disconnected", "\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u5207\u65ad\u3055\u308c\u3066\u3044\u307e\u3059"},
-        {"The gc command is no longer necessary.", "'gc' \u30b3\u30de\u30f3\u30c9\u306f\u73fe\u5728\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u3002\n" +
-         "\u901a\u5e38\u3069\u304a\u308a\u3001\u3059\u3079\u3066\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002'enablegc' \u304a\u3088\u3073 'disablegc'\n" +
-         "\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3054\u3068\u306b\u5236\u5fa1\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"The load command is no longer supported.", "'load' \u30b3\u30de\u30f3\u30c9\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"The memory command is no longer supported.", "'memory' \u30b3\u30de\u30f3\u30c9\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"The VM does not use paths", "VM \u3067\u306f\u30d1\u30b9\u3092\u4f7f\u7528\u3057\u307e\u305b\u3093"},
-        {"Thread is not running (no stack).", "\u30b9\u30ec\u30c3\u30c9\u306f\u5b9f\u884c\u3055\u308c\u3066\u3044\u307e\u305b\u3093 (\u30b9\u30bf\u30c3\u30af\u306a\u3057)\u3002"},
-        {"Thread number not specified.", "\u30b9\u30ec\u30c3\u30c9\u756a\u53f7\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
+        {"Target VM failed to initialize.", "\u30BF\u30FC\u30B2\u30C3\u30C8VM\u304C\u521D\u671F\u5316\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002"},
+        {"The application exited", "\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u304C\u7D42\u4E86\u3057\u307E\u3057\u305F"},
+        {"The application has been disconnected", "\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u304C\u5207\u65AD\u3055\u308C\u307E\u3057\u305F"},
+        {"The gc command is no longer necessary.", "'gc'\u30B3\u30DE\u30F3\u30C9\u306F\u4E0D\u8981\u306B\u306A\u308A\u307E\u3057\u305F\u3002\n\u3059\u3079\u3066\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306F\u901A\u5E38\u3069\u304A\u308A\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3055\u308C\u307E\u3059\u3002\u500B\u3005\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\n\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3092\u5236\u5FA1\u3059\u308B\u306B\u306F'enablegc'\u304A\u3088\u3073'disablegc'\u30B3\u30DE\u30F3\u30C9\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
+        {"The load command is no longer supported.", "'load'\u30B3\u30DE\u30F3\u30C9\u306F\u73FE\u5728\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"The memory command is no longer supported.", "'memory'\u30B3\u30DE\u30F3\u30C9\u306F\u73FE\u5728\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"The VM does not use paths", "VM\u306F\u30D1\u30B9\u3092\u4F7F\u7528\u3057\u307E\u305B\u3093"},
+        {"Thread is not running (no stack).", "\u30B9\u30EC\u30C3\u30C9\u306F\u5B9F\u884C\u4E2D\u3067\u306F\u3042\u308A\u307E\u305B\u3093(\u30B9\u30BF\u30C3\u30AF\u306A\u3057)\u3002"},
+        {"Thread number not specified.", "\u30B9\u30EC\u30C3\u30C9\u756A\u53F7\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
         {"Thread:", "{0}:"},
-        {"Thread Group:", "\u30b0\u30eb\u30fc\u30d7 {0}:"},
-        {"Thread description name unknownStatus BP",  "  {0} {1} \u4e0d\u660e (\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8)"},
-        {"Thread description name unknownStatus",     "  {0} {1} \u4e0d\u660e"},
-        {"Thread description name zombieStatus BP",   "  {0} {1} \u30be\u30f3\u30d3 (\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8)"},
-        {"Thread description name zombieStatus",      "  {0} {1} \u30be\u30f3\u30d3"},
-        {"Thread description name runningStatus BP",  "  {0} {1} \u5b9f\u884c\u4e2d (\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8)"},
-        {"Thread description name runningStatus",     "  {0} {1} \u5b9f\u884c\u4e2d"},
-        {"Thread description name sleepingStatus BP", "  {0} {1} \u4f11\u6b62\u4e2d (\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8)"},
-        {"Thread description name sleepingStatus",    "  {0} {1} \u4f11\u6b62\u4e2d"},
-        {"Thread description name waitingStatus BP",  "  {0} {1} \u30e2\u30cb\u30bf\u3067\u5f85\u6a5f\u4e2d (\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8)"},
-        {"Thread description name waitingStatus",     "  {0} {1} \u30e2\u30cb\u30bf\u3067\u5f85\u6a5f\u4e2d"},
-        {"Thread description name condWaitstatus BP", "  {0} {1} \u72b6\u6cc1\u5f85\u6a5f\u4e2d (\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8)"},
-        {"Thread description name condWaitstatus",    "  {0} {1} \u72b6\u6cc1\u5f85\u6a5f\u4e2d"},
-        {"Thread has been resumed", "\u30b9\u30ec\u30c3\u30c9\u304c\u518d\u958b\u3055\u308c\u307e\u3057\u305f"},
-        {"Thread not suspended", "\u30b9\u30ec\u30c3\u30c9\u306f\u4e2d\u65ad\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
-        {"thread group number description name", "{0,number,integer}\u3002 {1} {2}"},
-        {"Threadgroup name not specified.", "Threadgroup \u540d\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"Threads must be suspended", "\u30b9\u30ec\u30c3\u30c9\u3092\u4e2d\u65ad\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059"},
-        {"trace method exit in effect for", "{0} \u306b\u5bfe\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u7d42\u4e86\u306e\u30c8\u30ec\u30fc\u30b9\u6709\u52b9"},
-        {"trace method exits in effect", "\u30e1\u30bd\u30c3\u30c9\u7d42\u4e86\u306e\u30c8\u30ec\u30fc\u30b9\u6709\u52b9"},
-        {"trace methods in effect", "\u30e1\u30bd\u30c3\u30c9\u306e\u30c8\u30ec\u30fc\u30b9\u6709\u52b9"},
-        {"trace go method exit in effect for", "{0} \u306b\u5bfe\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u7d42\u4e86\u306e\u30c8\u30ec\u30fc\u30b9 (go \u30aa\u30d7\u30b7\u30e7\u30f3\u4ed8\u304d) \u6709\u52b9"},
-        {"trace go method exits in effect", "\u30e1\u30bd\u30c3\u30c9\u7d42\u4e86\u306e\u30c8\u30ec\u30fc\u30b9 (go \u30aa\u30d7\u30b7\u30e7\u30f3\u4ed8\u304d) \u6709\u52b9"},
-        {"trace go methods in effect", "\u30e1\u30bd\u30c3\u30c9\u306e\u30c8\u30ec\u30fc\u30b9 (go \u30aa\u30d7\u30b7\u30e7\u30f3\u4ed8\u304d) \u6709\u52b9"},
-        {"trace not in effect", "\u30c8\u30ec\u30fc\u30b9\u304c\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093"},
-        {"Unable to attach to target VM.", "\u30bf\u30fc\u30b2\u30c3\u30c8 VM \u306b\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093"},
-        {"Unable to display process output:", "\u30d7\u30ed\u30bb\u30b9\u51fa\u529b\u3092\u8868\u793a\u3067\u304d\u307e\u305b\u3093: {0}"},
-        {"Unable to launch target VM.", "\u30bf\u30fc\u30b2\u30c3\u30c8 VM \u3092\u8d77\u52d5\u3067\u304d\u307e\u305b\u3093"},
-        {"Unable to set deferred", "\u4fdd\u7559\u3057\u305f {0} \u3092\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093: {1}"},
-        {"Unable to set main class and arguments", "\u30e1\u30a4\u30f3\u30af\u30e9\u30b9\u304a\u3088\u3073\u5f15\u6570\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093"},
-        {"Unable to set", "{0} \u3092\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093: {1}"},
-        {"Unexpected event type", "\u4e88\u671f\u3057\u306a\u3044\u7a2e\u985e\u306e\u30a4\u30d9\u30f3\u30c8: {0}"},
-        {"unknown", "\u4e0d\u660e"},
-        {"Unmonitoring", "{0} \u306f\u76e3\u8996\u3057\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"Unrecognized command.  Try help...", "\u8a8d\u8b58\u3067\u304d\u306a\u3044\u30b3\u30de\u30f3\u30c9: ''{0}''\u3002\u30d8\u30eb\u30d7\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044..."},
-        {"Usage: catch exception", "\u4f7f\u7528\u6cd5: catch [uncaught|caught|all] <class id>|<class pattern>"},
-        {"Usage: ignore exception", "\u4f7f\u7528\u6cd5: ignore [uncaught|caught|all] <class id>|<class pattern>"},
-        {"Usage: down [n frames]", "\u4f7f\u7528\u6cd5: down [\u30d5\u30ec\u30fc\u30e0\u6570 n]"},
-        {"Usage: kill <thread id> <throwable>", "\u4f7f\u7528\u6cd5: kill <thread id> <throwable>"},
-        {"Usage: read <command-filename>", "\u4f7f\u7528\u6cd5: read <command-filename>"},
-        {"Usage: unmonitor <monitor#>", "\u4f7f\u7528\u6cd5: unmonitor <monitor#>"},
-        {"Usage: up [n frames]", "\u4f7f\u7528\u6cd5: up [\u30d5\u30ec\u30fc\u30e0\u6570 n]"},
-        {"Use java minus X to see", "'java -X' \u3092\u4f7f\u7528\u3057\u3066\u3001\u4f7f\u7528\u53ef\u80fd\u306a\u6a19\u6e96\u4ee5\u5916\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8868\u793a\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"Use stop at to set a breakpoint at a line number", "'stop at' \u3092\u4f7f\u7528\u3057\u3066\u3001\u884c\u756a\u53f7\u306b\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u3092\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"VM already running. use cont to continue after events.", "VM \u306f\u65e2\u306b\u5b9f\u884c\u4e2d\u3067\u3059\u3002'cont' \u3092\u4f7f\u7528\u3057\u3066\u30a4\u30d9\u30f3\u30c8\u306e\u5f8c\u3082\u7d9a\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"VM Started:", "VM \u304c\u8d77\u52d5\u3057\u307e\u3057\u305f: "},
-        {"vmstartexception", "VM \u8d77\u52d5\u4f8b\u5916: {0}"},
-        {"Waiting for monitor:", "   \u30e2\u30cb\u30bf\u5f85\u6a5f\u4e2d: {0}"},
-        {"Waiting thread:", " \u30b9\u30ec\u30c3\u30c9\u5f85\u6a5f\u4e2d: {0}"},
-        {"watch accesses of", "{0}.{1} \u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u76e3\u8996\u3057\u307e\u3059\u3002"},
-        {"watch modification of", "{0}.{1} \u3078\u306e\u5909\u66f4\u3092\u76e3\u8996\u3057\u307e\u3059\u3002"},
+        {"Thread Group:", "\u30B0\u30EB\u30FC\u30D7{0}:"},
+        {"Thread description name unknownStatus BP",  "  {0} {1}\u306F\u4E0D\u660E\u3067\u3059(\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8)"},
+        {"Thread description name unknownStatus",     "  {0} {1}\u306F\u4E0D\u660E\u3067\u3059"},
+        {"Thread description name zombieStatus BP",   "  {0} {1}\u306F\u30BE\u30F3\u30D3\u3067\u3059(\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u5730\u70B9)"},
+        {"Thread description name zombieStatus",      "  {0} {1}\u306F\u30BE\u30F3\u30D3\u3067\u3059"},
+        {"Thread description name runningStatus BP",  "  {0} {1}\u306F\u5B9F\u884C\u4E2D\u3067\u3059(\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8)"},
+        {"Thread description name runningStatus",     "  {0} {1}\u306F\u5B9F\u884C\u4E2D\u3067\u3059"},
+        {"Thread description name sleepingStatus BP", "  {0} {1}\u306F\u30B9\u30EA\u30FC\u30D7\u4E2D\u3067\u3059(\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8)"},
+        {"Thread description name sleepingStatus",    "  {0} {1}\u306F\u30B9\u30EA\u30FC\u30D7\u4E2D\u3067\u3059"},
+        {"Thread description name waitingStatus BP",  "  {0} {1}\u306F\u30E2\u30CB\u30BF\u30FC\u5185\u3067\u5F85\u6A5F\u4E2D\u3067\u3059(\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8)"},
+        {"Thread description name waitingStatus",     "  {0} {1}\u306F\u30E2\u30CB\u30BF\u30FC\u5185\u3067\u5F85\u6A5F\u4E2D\u3067\u3059"},
+        {"Thread description name condWaitstatus BP", "  {0} {1}\u306F\u6761\u4EF6\u3092\u5F85\u6A5F\u4E2D\u3067\u3059(\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8)"},
+        {"Thread description name condWaitstatus",    "  {0} {1}\u306F\u6761\u4EF6\u3092\u5F85\u6A5F\u4E2D\u3067\u3059"},
+        {"Thread has been resumed", "\u30B9\u30EC\u30C3\u30C9\u304C\u518D\u958B\u3057\u307E\u3057\u305F"},
+        {"Thread not suspended", "\u30B9\u30EC\u30C3\u30C9\u306F\u4E2D\u65AD\u3057\u3066\u3044\u307E\u305B\u3093"},
+        {"thread group number description name", "{0,number,integer}. {1} {2}"},
+        {"Threadgroup name not specified.", "\u30B9\u30EC\u30C3\u30C9\u30B0\u30EB\u30FC\u30D7\u540D\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"Threads must be suspended", "\u30B9\u30EC\u30C3\u30C9\u3092\u4E2D\u65AD\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
+        {"trace method exit in effect for", "{0}\u306B\u5BFE\u3057\u3066\u6709\u52B9\u306A\u30E1\u30BD\u30C3\u30C9\u7D42\u4E86\u306E\u30C8\u30EC\u30FC\u30B9"},
+        {"trace method exits in effect", "\u6709\u52B9\u306A\u30E1\u30BD\u30C3\u30C9\u7D42\u4E86\u306E\u30C8\u30EC\u30FC\u30B9"},
+        {"trace methods in effect", "\u30E1\u30BD\u30C3\u30C9\u306E\u30C8\u30EC\u30FC\u30B9\u306E\u6709\u52B9\u5316"},
+        {"trace go method exit in effect for", "{0}\u306B\u6709\u52B9\u306Ago\u30E1\u30BD\u30C3\u30C9\u7D42\u4E86\u306E\u30C8\u30EC\u30FC\u30B9"},
+        {"trace go method exits in effect", "\u6709\u52B9\u306Ago\u30E1\u30BD\u30C3\u30C9\u7D42\u4E86\u306E\u30C8\u30EC\u30FC\u30B9"},
+        {"trace go methods in effect", "go\u30E1\u30BD\u30C3\u30C9\u306E\u30C8\u30EC\u30FC\u30B9\u306E\u6709\u52B9\u5316"},
+        {"trace not in effect", "\u30C8\u30EC\u30FC\u30B9\u306E\u7121\u52B9\u5316"},
+        {"Unable to attach to target VM.", "\u30BF\u30FC\u30B2\u30C3\u30C8VM\u306B\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093\u3002"},
+        {"Unable to display process output:", "\u30D7\u30ED\u30BB\u30B9\u51FA\u529B\u3092\u8868\u793A\u3067\u304D\u307E\u305B\u3093: {0}"},
+        {"Unable to launch target VM.", "\u30BF\u30FC\u30B2\u30C3\u30C8VM\u3092\u8D77\u52D5\u3067\u304D\u307E\u305B\u3093\u3002"},
+        {"Unable to set deferred", "\u9045\u5EF6\u3057\u305F{0}\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u305B\u3093: {1}"},
+        {"Unable to set main class and arguments", "\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9\u3068\u5F15\u6570\u3092\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093"},
+        {"Unable to set", "{0}\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u305B\u3093: {1}"},
+        {"Unexpected event type", "\u4E88\u671F\u3057\u306A\u3044\u30A4\u30D9\u30F3\u30C8\u30FB\u30BF\u30A4\u30D7: {0}"},
+        {"unknown", "\u4E0D\u660E"},
+        {"Unmonitoring", "{0}\u306E\u30E2\u30CB\u30BF\u30EA\u30F3\u30B0\u89E3\u9664 "},
+        {"Unrecognized command.  Try help...", "''{0}''\u306F\u8A8D\u8B58\u3055\u308C\u306A\u3044\u30B3\u30DE\u30F3\u30C9\u3067\u3059\u3002help\u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044..."},
+        {"Usage: catch exception", "\u4F7F\u7528\u65B9\u6CD5: catch [uncaught|caught|all] <class id>|<class pattern>"},
+        {"Usage: ignore exception", "\u4F7F\u7528\u65B9\u6CD5: ignore [uncaught|caught|all] <class id>|<class pattern>"},
+        {"Usage: down [n frames]", "\u4F7F\u7528\u65B9\u6CD5: down [n frames]"},
+        {"Usage: kill <thread id> <throwable>", "\u4F7F\u7528\u65B9\u6CD5: kill <thread id> <throwable>"},
+        {"Usage: read <command-filename>", "\u4F7F\u7528\u65B9\u6CD5: read <command-filename>"},
+        {"Usage: unmonitor <monitor#>", "\u4F7F\u7528\u65B9\u6CD5: unmonitor <monitor#>"},
+        {"Usage: up [n frames]", "\u4F7F\u7528\u65B9\u6CD5: up [n frames]"},
+        {"Use java minus X to see", "\u4F7F\u7528\u53EF\u80FD\u306A\u975E\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u8868\u793A\u3059\u308B\u306B\u306F'java -X'\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044"},
+        {"Use stop at to set a breakpoint at a line number", "\u884C\u756A\u53F7\u306B\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u3092\u8A2D\u5B9A\u3059\u308B\u306B\u306F'stop at'\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044"},
+        {"VM already running. use cont to continue after events.", "VM\u306F\u3059\u3067\u306B\u5B9F\u884C\u4E2D\u3067\u3059\u3002\u30A4\u30D9\u30F3\u30C8\u5F8C\u306B\u7D9A\u884C\u3059\u308B\u306B\u306F'cont'\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
+        {"VM Started:", "VM\u304C\u958B\u59CB\u3055\u308C\u307E\u3057\u305F: "},
+        {"vmstartexception", "VM\u304C\u4F8B\u5916\u3092\u958B\u59CB\u3057\u307E\u3057\u305F: {0}"},
+        {"Waiting for monitor:", "   \u30E2\u30CB\u30BF\u30FC\u306E\u5F85\u6A5F\u4E2D: {0}"},
+        {"Waiting thread:", " \u30B9\u30EC\u30C3\u30C9\u3092\u5F85\u6A5F\u4E2D: {0}"},
+        {"watch accesses of", "{0}.{1}\u306E\u30A2\u30AF\u30BB\u30B9\u3092\u76E3\u8996"},
+        {"watch modification of", "{0}.{1}\u306E\u5909\u66F4\u306E\u76E3\u8996"},
         {"zz help text",
-             "** command list **\n" +
-             "connectors                -- \u3053\u306e VM \u5185\u3067\u4f7f\u7528\u53ef\u80fd\u306a\u30b3\u30cd\u30af\u30bf\u3068\u30c8\u30e9\u30f3\u30b9\u30dd\u30fc\u30c8\u3092\u30ea\u30b9\u30c8\u8868\u793a\u3057\u307e\u3059\n" +
-             "\n" +
-             "run [class [args]]        -- \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30e1\u30a4\u30f3\u30af\u30e9\u30b9\u306e\u5b9f\u884c\u3092\u958b\u59cb\u3057\u307e\u3059\u3002\n" +
-             "\n" +
-             "threads [threadgroup]     -- \u30b9\u30ec\u30c3\u30c9\u3092\u4e00\u89a7\u8868\u793a\u3057\u307e\u3059\n" +
-             "thread <thread id>        -- \u30c7\u30d5\u30a9\u30eb\u30c8\u30b9\u30ec\u30c3\u30c9\u3092\u8a2d\u5b9a\u3057\u307e\u3059\n" +
-             "suspend [thread id(s)]    -- \u30b9\u30ec\u30c3\u30c9\u3092\u4e2d\u65ad\u3057\u307e\u3059 (\u30c7\u30d5\u30a9\u30eb\u30c8: \u3059\u3079\u3066)\n" +
-             "resume [thread id(s)]     -- \u30b9\u30ec\u30c3\u30c9\u3092\u518d\u958b\u3057\u307e\u3059 (\u30c7\u30d5\u30a9\u30eb\u30c8: \u3059\u3079\u3066)\n" +
-             "where [<thread id> | all]   -- \u30b9\u30ec\u30c3\u30c9\u306e\u30b9\u30bf\u30c3\u30af\u3092\u30c0\u30f3\u30d7\u3057\u307e\u3059\n" +
-             "wherei [<thread id> | all]  -- \u30b9\u30ec\u30c3\u30c9\u306e\u30b9\u30bf\u30c3\u30af\u3092 PC \u60c5\u5831\u3068\u3044\u3063\u3057\u3087\u306b\u30c0\u30f3\u30d7\u3057\u307e\u3059\n" +
-             "up [n frames]             -- \u30b9\u30ec\u30c3\u30c9\u306e\u30b9\u30bf\u30c3\u30af\u3092\u4e0a\u3078\u79fb\u52d5\u3057\u307e\u3059\n" +
-             "down [n frames]           -- \u30b9\u30ec\u30c3\u30c9\u306e\u30b9\u30bf\u30c3\u30af\u3092\u4e0b\u3078\u79fb\u52d5\u3057\u307e\u3059\n" +
-             "kill <thread id> <expr>      -- \u6307\u5b9a\u3055\u308c\u305f\u4f8b\u5916\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3067\u30b9\u30ec\u30c3\u30c9\u3092\u7d42\u4e86\u3057\u307e\u3059\n" +
-             "interrupt <thread id>        -- \u30b9\u30ec\u30c3\u30c9\u306b\u5272\u308a\u8fbc\u307f\u307e\u3059\n" +
-             "\n" +
-             "print <expr>              -- \u5f0f\u306e\u5024\u3092\u51fa\u529b\u3057\u307e\u3059\n" +
-             "dump <expr>               -- \u3059\u3079\u3066\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u60c5\u5831\u3092\u51fa\u529b\u3057\u307e\u3059\n" +
-             "eval <expr>               -- \u5f0f\u3092\u8a55\u4fa1\u3057\u307e\u3059 (print \u3068\u540c\u3058)\n" +
-             "set <lvalue> = <expr>     -- \u30d5\u30a3\u30fc\u30eb\u30c9/\u5909\u6570/\u914d\u5217\u8981\u7d20\u306b\u65b0\u3057\u3044\u5024\u3092\u5272\u308a\u5f53\u3066\u307e\u3059\n" +
-             "locals                    -- \u73fe\u884c\u306e\u30b9\u30bf\u30c3\u30af\u30d5\u30ec\u30fc\u30e0\u306e\u3059\u3079\u3066\u306e\u30ed\u30fc\u30ab\u30eb\u5909\u6570\u3092\u51fa\u529b\u3057\u307e\u3059\n" +
-             "\n" +
-             "classes                   -- \u73fe\u6642\u70b9\u3067\u65e2\u77e5\u306e\u30af\u30e9\u30b9\u3092\u4e00\u89a7\u8868\u793a\u3057\u307e\u3059\n" +
-             "class <class id>          -- \u540d\u524d\u4ed8\u304d\u30af\u30e9\u30b9\u306e\u8a73\u7d30\u3092\u8868\u793a\u3057\u307e\u3059\n" +
-             "methods <class id>        -- \u30af\u30e9\u30b9\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u4e00\u89a7\u8868\u793a\u3057\u307e\u3059\n" +
-             "fields <class id>         -- \u30af\u30e9\u30b9\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u4e00\u89a7\u8868\u793a\u3057\u307e\u3059\n" +
-             "\n" +
-             "threadgroups              -- \u30b9\u30ec\u30c3\u30c9\u30b0\u30eb\u30fc\u30d7\u3092\u4e00\u89a7\u8868\u793a\u3057\u307e\u3059\n" +
-             "threadgroup <name>        -- \u73fe\u5728\u306e\u30b9\u30ec\u30c3\u30c9\u30b0\u30eb\u30fc\u30d7\u3092\u8a2d\u5b9a\u3057\u307e\u3059\n" +
-             "\n" +
-             "stop in <class id>.<method>[(argument_type,...)]\n" +
-             "                          -- \u30e1\u30bd\u30c3\u30c9\u306b\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u3092\u8a2d\u5b9a\u3057\u307e\u3059\n" +
-             "stop at <class id>:<line> -- \u884c\u306b\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u3092\u8a2d\u5b9a\u3057\u307e\u3059\n" +
-             "clear <class id>.<method>[(argument_type,...)]\n" +
-             "                          -- \u30e1\u30bd\u30c3\u30c9\u306e\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u3092\u89e3\u9664\u3057\u307e\u3059\n" +
-             "clear <class id>:<line>   -- \u884c\u306e\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u3092\u89e3\u9664\u3057\u307e\u3059\n" +
-             "clear                     -- \u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u3092\u4e00\u89a7\u8868\u793a\u3057\u307e\u3059\n" +
-             "catch [uncaught|caught|all] <class id>|<class pattern>\n" +
-             "                          -- \u6307\u5b9a\u3055\u308c\u305f\u4f8b\u5916\u304c\u767a\u751f\u3057\u305f\u3089\u505c\u6b62\u3057\u307e\u3059\n" +
-             "ignore [uncaught|caught|all] <class id>|<class pattern>\n" +
-             "                          -- \u6307\u5b9a\u3055\u308c\u305f\u4f8b\u5916\u306e 'catch' \u3092\u53d6\u308a\u6d88\u3057\u307e\u3059\n" +
-             "watch [access|all] <class id>.<field name>\n" +
-             "                          -- \u30d5\u30a3\u30fc\u30eb\u30c9\u3078\u306e\u30a2\u30af\u30bb\u30b9/\u4fee\u6b63\u3092\u76e3\u8996\u3057\u307e\u3059\n" +
-             "unwatch [access|all] <class id>.<field name>\n" +
-             "                          -- \u30d5\u30a3\u30fc\u30eb\u30c9\u3078\u306e\u30a2\u30af\u30bb\u30b9/\u4fee\u6b63\u306e\u76e3\u8996\u3092\u4e2d\u6b62\u3057\u307e\u3059\n" +
-             "trace methods [thread]    -- \u30e1\u30bd\u30c3\u30c9\u306e\u958b\u59cb/\u7d42\u4e86\u3092\u8ffd\u8de1\u3057\u307e\u3059\n" +
-             "untrace methods [thread]  -- \u30e1\u30bd\u30c3\u30c9\u306e\u958b\u59cb/\u7d42\u4e86\u306e\u8ffd\u8de1\u3092\u4e2d\u6b62\u3057\u307e\u3059\n" +
-             "step                      -- \u73fe\u5728\u306e\u884c\u3092\u5b9f\u884c\u3057\u307e\u3059\n" +
-             "step up                   -- \u73fe\u5728\u306e\u30e1\u30bd\u30c3\u30c9\u304c\u547c\u3073\u51fa\u3057\u5074\u306b\u623b\u308b\u307e\u3067\u5b9f\u884c\u3057\u307e\u3059\n" +
-             "stepi                     -- \u73fe\u5728\u306e\u547d\u4ee4\u3092\u5b9f\u884c\u3057\u307e\u3059\n" +
-             "next                      -- 1 \u884c\u30b9\u30c6\u30c3\u30d7\u5b9f\u884c\u3057\u307e\u3059 (\u547c\u3073\u51fa\u3057\u3092\u30b9\u30c6\u30c3\u30d7\u30aa\u30fc\u30d0\u30fc\u3057\u307e\u3059)\n" +
-             "cont                      -- \u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8\u304b\u3089\u7d99\u7d9a\u3057\u3066\u5b9f\u884c\u3057\u307e\u3059\n" +
-             "\n" +
-             "list [line number|method] -- \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u51fa\u529b\u3057\u307e\u3059\n" +
-             "use (or sourcepath) [source file path]\n" +
-             "                          -- \u30bd\u30fc\u30b9\u30d1\u30b9\u3092\u8868\u793a\u307e\u305f\u306f\u5909\u66f4\u3057\u307e\u3059\n" +
-             "exclude [<class pattern>, ... | \"none\"]\n" +
-             "                          -- \u6307\u5b9a\u3057\u305f\u30af\u30e9\u30b9\u306e\u30b9\u30c6\u30c3\u30d7\u307e\u305f\u306f\u30e1\u30bd\u30c3\u30c9\u30a4\u30d9\u30f3\u30c8\u3092\u5831\u544a\u3057\u307e\u305b\u3093\n" +
-             "classpath                 -- \u30bf\u30fc\u30b2\u30c3\u30c8 VM \u306e\u30af\u30e9\u30b9\u30d1\u30b9\u60c5\u5831\u3092\u51fa\u529b\u3057\u307e\u3059\n" +
-             "\n" +
-             "monitor <command>         -- \u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u505c\u6b62\u6642\u306b\u6bce\u56de\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\n" +
-             "monitor                   -- \u30e2\u30cb\u30bf\u3092\u4e00\u89a7\u8868\u793a\u3057\u307e\u3059\n" +
-             "unmonitor <monitor#>      -- \u30e2\u30cb\u30bf\u3092\u524a\u9664\u3057\u307e\u3059\n" +
-             "read <filename>           -- \u30b3\u30de\u30f3\u30c9\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u307f\u3001\u5b9f\u884c\u3057\u307e\u3059\n" +
-             "\n" +
-             "lock <expr>               -- \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30ed\u30c3\u30af\u60c5\u5831\u3092\u51fa\u529b\u3057\u307e\u3059\n" +
-             "threadlocks [thread id]   -- \u30b9\u30ec\u30c3\u30c9\u306e\u30ed\u30c3\u30af\u60c5\u5831\u3092\u51fa\u529b\u3057\u307e\u3059\n" +
-             "\n" +
-             "pop                       -- \u73fe\u5728\u306e\u30d5\u30ec\u30fc\u30e0\u3092\u542b\u3080\u3059\u3079\u3066\u306e\u30b9\u30bf\u30c3\u30af\u3092\u30dd\u30c3\u30d7\u3057\u307e\u3059\n" +
-             "reenter                   -- \u30dd\u30c3\u30d7\u3068\u540c\u3058\u3067\u3059\u304c\u3001\u73fe\u5728\u306e\u30d5\u30ec\u30fc\u30e0\u304c\u518d\u5165\u529b\u3055\u308c\u307e\u3059\n" +
-             "redefine <class id> <class file name>\n" +
-             "                          -- \u30af\u30e9\u30b9\u306e\u30b3\u30fc\u30c9\u3092\u518d\u5b9a\u7fa9\u3057\u307e\u3059\n" +
-             "\n" +
-             "disablegc <expr>          -- \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u6291\u6b62\u3057\u307e\u3059\n" +
-             "enablegc <expr>           -- \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u8a31\u53ef\u3057\u307e\u3059\n" +
-             "\n" +
-             "!!                        -- \u6700\u5f8c\u306e\u30b3\u30de\u30f3\u30c9\u3092\u7e70\u308a\u8fd4\u3057\u307e\u3059\n" +
-             "<n> <command>             -- \u30b3\u30de\u30f3\u30c9\u3092 n \u56de\u7e70\u308a\u8fd4\u3057\u307e\u3059\n" +
-             "help (or ?)               -- \u30b3\u30de\u30f3\u30c9\u3092\u4e00\u89a7\u8868\u793a\u3057\u307e\u3059\n" +
-             "version                   -- \u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831\u3092\u51fa\u529b\u3057\u307e\u3059\n" +
-             "exit (or quit)            -- \u30c7\u30d0\u30c3\u30ac\u3092\u7d42\u4e86\u3057\u307e\u3059\n" +
-             "\n" +
-             "<class id>: \u30d1\u30c3\u30b1\u30fc\u30b8\u4fee\u98fe\u5b50\u3092\u542b\u3080\u5b8c\u5168\u306a\u30af\u30e9\u30b9\u540d\n" +
-             "<class pattern>: \u5148\u982d\u304b\u672b\u5c3e\u306b\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9 ('*') \u306e\u4ed8\u3044\u305f\u30af\u30e9\u30b9\u540d\n" +
-             "<thread id>: 'threads' \u30b3\u30de\u30f3\u30c9\u3067\u5831\u544a\u3055\u308c\u308b\u30b9\u30ec\u30c3\u30c9\u756a\u53f7\n" +
-             "<expr>: Java(tm) \u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u5f0f\n" +
-             "\u3082\u3063\u3068\u3082\u4e00\u822c\u7684\u306a\u69cb\u6587\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u3059\u3002\n" +
-             "\n" +
-             "user.home \u307e\u305f\u306f user.dir \u4e0b\u306e \"jdb.ini\" \u304b \".jdbrc\" \u306e\n" +
-             "\u3044\u305a\u308c\u304b\u306b\u8d77\u52d5\u30b3\u30de\u30f3\u30c9\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002"},
+             "** \u30B3\u30DE\u30F3\u30C9\u30FB\u30EA\u30B9\u30C8 **\nconnectors                -- \u3053\u306EVM\u5185\u306E\u4F7F\u7528\u53EF\u80FD\u306A\u30B3\u30CD\u30AF\u30BF\u3068\u30C8\u30E9\u30F3\u30B9\u30DD\u30FC\u30C8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\nrun [class [args]]        -- \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9\u306E\u5B9F\u884C\u3092\u958B\u59CB\u3057\u307E\u3059\n\nthreads [threadgroup]     -- \u30B9\u30EC\u30C3\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\nthread <thread id>        -- \u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30B9\u30EC\u30C3\u30C9\u3092\u8A2D\u5B9A\u3057\u307E\u3059\nsuspend [thread id(s)]    -- \u30B9\u30EC\u30C3\u30C9\u3092\u4E2D\u65AD\u3057\u307E\u3059(\u30C7\u30D5\u30A9\u30EB\u30C8: \u3059\u3079\u3066)\nresume [thread id(s)]     -- \u30B9\u30EC\u30C3\u30C9\u3092\u518D\u958B\u3057\u307E\u3059(\u30C7\u30D5\u30A9\u30EB\u30C8: \u3059\u3079\u3066)\nwhere [<thread id> | all] -- \u30B9\u30EC\u30C3\u30C9\u306E\u30B9\u30BF\u30C3\u30AF\u3092\u30C0\u30F3\u30D7\u3057\u307E\u3059\nwherei [<thread id> | all]-- \u30B9\u30EC\u30C3\u30C9\u306E\u30B9\u30BF\u30C3\u30AF\u3092pc\u60C5\u5831\u3068\u3068\u3082\u306B\u30C0\u30F3\u30D7\u3057\u307E\u3059\nup [n frames]             -- \u30B9\u30EC\u30C3\u30C9\u306E\u30B9\u30BF\u30C3\u30AF\u3092\u4E0A\u306B\u79FB\u52D5\u3057\u307E\u3059\ndown [n frames]           -- \u30B9\u30EC\u30C3\u30C9\u306E\u30B9\u30BF\u30C3\u30AF\u3092\u4E0B\u306B\u79FB\u52D5\u3057\u307E\u3059\nkill <thread id> <expr>   -- \u6307\u5B9A\u3055\u308C\u305F\u4F8B\u5916\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u30B9\u30EC\u30C3\u30C9\u3092\u5F37\u5236\u7D42\u4E86\u3057\u307E\u3059\ninterrupt <thread id>     -- \u30B9\u30EC\u30C3\u30C9\u3092\u4E2D\u65AD\u3057\u307E\u3059\n\nprint <expr>              -- \u5F0F\u306E\u5024\u3092\u51FA\u529B\u3057\u307E\u3059\ndump <expr>               -- \u3059\u3079\u3066\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u60C5\u5831\u3092\u51FA\u529B\u3057\u307E\u3059\neval <expr>               -- \u5F0F\u3092\u8A55\u4FA1\u3057\u307E\u3059(print\u3068\u540C\u3058)\nset <lvalue> = <expr>     -- \u65B0\u3057\u3044\u5024\u3092\u30D5\u30A3\u30FC\u30EB\u30C9/\u5909\u6570/\u914D\u5217\u8981\u7D20\u306B\u4EE3\u5165\u3057\u307E\u3059\nlocals                    -- \u73FE\u5728\u306E\u30B9\u30BF\u30C3\u30AF\u30FB\u30D5\u30EC\u30FC\u30E0\u5185\u306E\u3059\u3079\u3066\u306E\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u3092\u51FA\u529B\u3057\u307E\u3059\n\nclasses                   -- \u73FE\u5728\u65E2\u77E5\u306E\u30AF\u30E9\u30B9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\nclass <class id>          -- \u6307\u5B9A\u3057\u305F\u30AF\u30E9\u30B9\u306E\u8A73\u7D30\u3092\u8868\u793A\u3057\u307E\u3059\nmethods <class id>        -- \u30AF\u30E9\u30B9\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\nfields <class id>         -- \u30AF\u30E9\u30B9\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\nthreadgroups              -- \u30B9\u30EC\u30C3\u30C9\u30B0\u30EB\u30FC\u30D7\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\nthreadgroup <name>        -- \u73FE\u5728\u306E\u30B9\u30EC\u30C3\u30C9\u30B0\u30EB\u30FC\u30D7\u3092\u8A2D\u5B9A\u3057\u307E\u3059\n\nstop in <class id>.<method>[(argument_type,...)]\n                          -- \u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u3092\u30E1\u30BD\u30C3\u30C9\u5185\u306B\u8A2D\u5B9A\u3057\u307E\u3059\nstop at <class id>:<line> -- \u884C\u306B\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u3092\u8A2D\u5B9A\u3057\u307E\u3059\nclear <class id>.<method>[(argument_type,...)]\n                          -- \u30E1\u30BD\u30C3\u30C9\u5185\u306E\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u3092\u30AF\u30EA\u30A2\u3057\u307E\u3059\nclear <class id>:<line>   -- \u884C\u306E\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u3092\u30AF\u30EA\u30A2\u3057\u307E\u3059\nclear                     -- \u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\ncatch [uncaught|caught|all] <class id>|<class pattern>\n                          -- \u6307\u5B9A\u3055\u308C\u305F\u4F8B\u5916\u304C\u767A\u751F\u3057\u305F\u3068\u304D\u306B\u30D6\u30EC\u30FC\u30AF\u3057\u307E\u3059\nignore [uncaught|caught|all] <class id>|<class pattern>\n                          -- \u6307\u5B9A\u3055\u308C\u305F\u4F8B\u5916\u306E'catch'\u3092\u53D6\u308A\u6D88\u3057\u307E\u3059\nwatch [access|all] <class id>.<field name>\n                          -- \u30D5\u30A3\u30FC\u30EB\u30C9\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u307E\u305F\u306F\u5909\u66F4\u3092\u76E3\u8996\u3057\u307E\u3059\nunwatch [access|all] <class id>.<field name>\n                          -- \u30D5\u30A3\u30FC\u30EB\u30C9\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u307E\u305F\u306F\u5909\u66F4\u306E\u76E3\u8996\u3092\u4E2D\u6B62\u3057\u307E\u3059\ntrace [go] methods [thread]\n                          -- \u30E1\u30BD\u30C3\u30C9\u306E\u5165\u308A\u53E3\u3068\u51FA\u53E3\u3092\u30C8\u30EC\u30FC\u30B9\u3057\u307E\u3059\u3002\n                          -- 'go'\u304C\u6307\u5B9A\u3055\u308C\u308B\u307E\u3067\u3059\u3079\u3066\u306E\u30B9\u30EC\u30C3\u30C9\u306F\u4E2D\u65AD\u3057\u307E\u3059\ntrace [go] method exit | exits [thread]\n                          -- \u73FE\u5728\u306E\u30E1\u30BD\u30C3\u30C9\u306E\u51FA\u53E3\u307E\u305F\u306F\u3059\u3079\u3066\u306E\u30E1\u30BD\u30C3\u30C9\u306E\u51FA\u53E3\u3092\u30C8\u30EC\u30FC\u30B9\u3057\u307E\u3059\n                          -- 'go'\u304C\u6307\u5B9A\u3055\u308C\u308B\u307E\u3067\u3059\u3079\u3066\u306E\u30B9\u30EC\u30C3\u30C9\u306F\u4E2D\u65AD\u3057\u307E\u3059\nuntrace [methods]         -- \u30E1\u30BD\u30C3\u30C9\u306E\u958B\u59CB\u307E\u305F\u306F\u7D42\u4E86\u306E\u30C8\u30EC\u30FC\u30B9\u3092\u505C\u6B62\u3057\u307E\u3059\nstep                      -- \u73FE\u5728\u306E\u884C\u3092\u5B9F\u884C\u3057\u307E\u3059\nstep up                   -- \u73FE\u5728\u306E\u30E1\u30BD\u30C3\u30C9\u304C\u30E1\u30BD\u30C3\u30C9\u306E\u547C\u51FA\u3057\u5143\u306B\u623B\u308B\u307E\u3067\u5B9F\u884C\u3057\u307E\u3059\nstepi                     -- \u73FE\u5728\u306E\u547D\u4EE4\u3092\u5B9F\u884C\u3057\u307E\u3059\nnext                      -- 1\u884C\u3092\u30B9\u30C6\u30C3\u30D7\u5B9F\u884C\u3057\u307E\u3059(\u547C\u51FA\u3057\u3092\u30B9\u30C6\u30C3\u30D7\u30AA\u30FC\u30D0\u30FC)\ncont                      -- \u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u304B\u3089\u5B9F\u884C\u3092\u7D9A\u884C\u3057\u307E\u3059\n\nlist [line number|method] -- \u30BD\u30FC\u30B9\u30FB\u30B3\u30FC\u30C9\u3092\u51FA\u529B\u3057\u307E\u3059\nuse (or sourcepath) [source file path]\n                          -- \u30BD\u30FC\u30B9\u30FB\u30D1\u30B9\u3092\u8868\u793A\u307E\u305F\u306F\u5909\u66F4\u3057\u307E\u3059\nexclude [<class pattern>, ... | \"none\"]\n                          -- \u6307\u5B9A\u3057\u305F\u30AF\u30E9\u30B9\u306E\u30B9\u30C6\u30C3\u30D7\u3084\u30E1\u30BD\u30C3\u30C9\u30FB\u30A4\u30D9\u30F3\u30C8\u3092\u5831\u544A\u3057\u307E\u305B\u3093\nclasspath                 -- \u30BF\u30FC\u30B2\u30C3\u30C8VM\u304B\u3089\u30AF\u30E9\u30B9\u30D1\u30B9\u60C5\u5831\u3092\u51FA\u529B\u3057\u307E\u3059\n\nmonitor <command>         -- \u30D7\u30ED\u30B0\u30E9\u30E0\u304C\u505C\u6B62\u3059\u308B\u305F\u3073\u306B\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3057\u307E\u3059\nmonitor                   -- \u30E2\u30CB\u30BF\u30FC\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\nunmonitor <monitor#>      -- \u30E2\u30CB\u30BF\u30FC\u3092\u524A\u9664\u3057\u307E\u3059\nread <filename>           -- \u30B3\u30DE\u30F3\u30C9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u53D6\u3063\u3066\u5B9F\u884C\u3057\u307E\u3059\n\nlock <expr>               -- \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30ED\u30C3\u30AF\u60C5\u5831\u3092\u51FA\u529B\u3057\u307E\u3059\nthreadlocks [thread id]   -- \u30B9\u30EC\u30C3\u30C9\u306E\u30ED\u30C3\u30AF\u60C5\u5831\u3092\u51FA\u529B\u3057\u307E\u3059\n\npop                       -- \u73FE\u5728\u306E\u30D5\u30EC\u30FC\u30E0\u307E\u3067\u306E\u3059\u3079\u3066\u306E\u30B9\u30BF\u30C3\u30AF\u3092\u30DD\u30C3\u30D7\u3057\u307E\u3059\nreenter                   -- pop\u3068\u540C\u3058\u3067\u3059\u304C\u3001\u73FE\u5728\u306E\u30D5\u30EC\u30FC\u30E0\u304C\u518D\u5165\u529B\u3055\u308C\u307E\u3059\nredefine <class id> <class file name>\n                          -- \u30AF\u30E9\u30B9\u306E\u30B3\u30FC\u30C9\u3092\u518D\u5B9A\u7FA9\u3057\u307E\u3059\n\ndisablegc <expr>          -- \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3092\u6291\u5236\u3057\u307E\u3059\nenablegc <expr>           -- \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3092\u8A31\u53EF\u3057\u307E\u3059\n\n!!                        -- \u6700\u5F8C\u306E\u30B3\u30DE\u30F3\u30C9\u3092\u7E70\u308A\u8FD4\u3057\u307E\u3059\n<n> <command>             -- \u30B3\u30DE\u30F3\u30C9\u3092n\u56DE\u7E70\u308A\u8FD4\u3057\u307E\u3059\n# <command>               -- \u7834\u68C4\u3057\u307E\u3059(\u64CD\u4F5C\u306A\u3057)\nhelp (\u307E\u305F\u306F?)               -- \u30B3\u30DE\u30F3\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\nversion                   -- \u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831\u3092\u51FA\u529B\u3057\u307E\u3059\nexit (\u307E\u305F\u306Fquit)            -- \u30C7\u30D0\u30C3\u30AC\u3092\u7D42\u4E86\u3057\u307E\u3059\n\n<class id>: \u30D1\u30C3\u30B1\u30FC\u30B8\u4FEE\u98FE\u5B50\u3092\u542B\u3080\u5B8C\u5168\u30AF\u30E9\u30B9\u540D\n<class pattern>: \u5148\u982D\u307E\u305F\u306F\u672B\u5C3E\u306E\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9('*')\u3092\u542B\u3080\u30AF\u30E9\u30B9\u540D\n<thread id>: 'threads'\u30B3\u30DE\u30F3\u30C9\u3067\u5831\u544A\u3055\u308C\u308B\u30B9\u30EC\u30C3\u30C9\u756A\u53F7\n<expr>: Java(TM)\u30D7\u30ED\u30B0\u30E9\u30DF\u30F3\u30B0\u8A00\u8A9E\u306E\u5F0F\u3002\n\u307B\u3068\u3093\u3069\u306E\u4E00\u822C\u7684\u306A\u69CB\u6587\u304C\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u3059\u3002\n\n\u8D77\u52D5\u30B3\u30DE\u30F3\u30C9\u306F\u3001\"jdb.ini\"\u307E\u305F\u306F\".jdbrc\"\u306B\u914D\u7F6E\u3067\u304D\u307E\u3059\n(user.home\u307E\u305F\u306Fuser.dir\u5185)"},
         {"zz usage text",
-             "\u4f7f\u7528\u6cd5: {0} <options> <class> <arguments>\n" +
-"\n" +
-             "\u3053\u3053\u3067 options \u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002\n" +
-             "    -help             \u3053\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\u3057\u3066\u7d42\u4e86\u3057\u307e\u3059\n" +
-             "    -sourcepath <\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f \"{1}\" \u3067\u533a\u5207\u308a\u307e\u3059>\n" +
-             "                      \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22\u3059\u308b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067\u3059\n" +
-             "    -attach <address>\n" +
-             "                      \u6a19\u6e96\u7684\u306a\u30b3\u30cd\u30af\u30bf\u3092\u4f7f\u3063\u3066\u3001\u6307\u5b9a\u3057\u305f\u30a2\u30c9\u30ec\u30b9\u3067\u5b9f\u884c\u4e2d\u306e VM \u306b\u63a5\u7d9a\u3057\u307e\u3059\n" +
-             "    -listen <address>\n" +
-             "                      \u6a19\u6e96\u7684\u306a\u30b3\u30cd\u30af\u30bf\u3092\u4f7f\u3063\u3066\u3001\u6307\u5b9a\u3057\u305f\u30a2\u30c9\u30ec\u30b9\u3067\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u5b9f\u884c\u4e2d\u306e VM \u3092\u5f85\u6a5f\u3057\u307e\u3059\n" +
-             "    -listenany\n" +
-             "                      \u6a19\u6e96\u7684\u306a\u30b3\u30cd\u30af\u30bf\u3092\u4f7f\u3063\u3066\u3001\u4f7f\u7528\u53ef\u80fd\u306a\u4efb\u610f\u306e\u30a2\u30c9\u30ec\u30b9\u3067\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u5b9f\u884c\u4e2d\u306e VM \u3092\u5f85\u6a5f\u3057\u307e\u3059\n" +
-             "    -launch\n" +
-             "                      ''run'' \u30b3\u30de\u30f3\u30c9\u3092\u5f85\u305f\u305a\u306b VM \u3092\u305f\u3060\u3061\u306b\u8d77\u52d5\u3057\u307e\u3059\n" +
-             "    -listconnectors   \u3053\u306e VM \u5185\u3067\u4f7f\u7528\u53ef\u80fd\u306a\u30b3\u30cd\u30af\u30bf\u3092\u30ea\u30b9\u30c8\u8868\u793a\u3057\u307e\u3059\n" +
-             "    -connect <connector-name>:<name1>=<value1>,...\n" +
-             "                      \u540d\u524d\u4ed8\u304d\u30b3\u30cd\u30af\u30bf\u3068\u4e00\u89a7\u8868\u793a\u3055\u308c\u305f\u5f15\u6570\u5024\u3092\u4f7f\u7528\u3057\u3066\u30bf\u30fc\u30b2\u30c3\u30c8 VM \u306b\u63a5\u7d9a\u3057\u307e\u3059\n" +
-             "    -dbgtrace [flags] {0} \u3092\u30c7\u30d0\u30c3\u30b0\u3059\u308b\u305f\u3081\u306e\u51fa\u529b\u60c5\u5831\n" +
-             "    -tclient          Hotspot(tm) Performance Engine (\u30af\u30e9\u30a4\u30a2\u30f3\u30c8) \u3067\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3057\u307e\u3059\n" +
-             "    -tserver          Hotspot(tm) Performance Engine (\u30b5\u30fc\u30d0) \u3067\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3057\u307e\u3059\n" +
-             "\n" +
-             "\u30c7\u30d0\u30c3\u30b0\u30d7\u30ed\u30bb\u30b9\u306b\u8ee2\u9001\u3055\u308c\u305f\u30aa\u30d7\u30b7\u30e7\u30f3:\n" +
-             "    -v -verbose[:class|gc|jni]\n" +
-             "                      \u5197\u9577\u30e2\u30fc\u30c9\u3092\u30aa\u30f3\u306b\u3057\u307e\u3059\u3002\n" +
-             "    -D<name>=<value>  \u30b7\u30b9\u30c6\u30e0\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u8a2d\u5b9a\u3057\u307e\u3059\n" +
-             "    -classpath <\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f \"{1}\" \u3067\u533a\u5207\u308a\u307e\u3059>\n" +
-             "                      \u30af\u30e9\u30b9\u306e\u691c\u7d22\u5148\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4e00\u89a7\u8868\u793a\u3057\u307e\u3059\u3002\n" +
-             "    -X<option>        \u6a19\u6e96\u4ee5\u5916\u306e\u30bf\u30fc\u30b2\u30c3\u30c8 VM \u30aa\u30d7\u30b7\u30e7\u30f3\n" +
-             "\n" +
-             "<class> \u306f\u3001\u30c7\u30d0\u30c3\u30b0\u3092\u958b\u59cb\u3059\u308b\u30af\u30e9\u30b9\u540d\u3067\u3059\u3002\n" +
-             "<arguments> \u306f\u3001<class> \u306e main() \u30e1\u30bd\u30c3\u30c9\u306b\u6e21\u3059\u5f15\u6570\u3067\u3059\u3002\n" +
-             "\n" +
-             "\u30b3\u30de\u30f3\u30c9\u30d8\u30eb\u30d7\u3092\u8868\u793a\u3059\u308b\u306b\u306f\u3001{0} \u30d7\u30ed\u30f3\u30d7\u30c8\u306b ''help'' \u3068\u5165\u529b\u3057\u307e\u3059\u3002"},
+             "\u4F7F\u7528\u65B9\u6CD5: {0} <options> <class> <arguments>\n\n\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059:\n    -help             \u3053\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3057\u3066\u7D42\u4E86\u3059\u308B\n    -sourcepath <directories separated by \"{1}\">\n                      \u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\n    -attach <address>\n                      \u6A19\u6E96\u30B3\u30CD\u30AF\u30BF\u3092\u4F7F\u7528\u3057\u3066\u3001\u6307\u5B9A\u3055\u308C\u305F\u30A2\u30C9\u30EC\u30B9\u3067\u5B9F\u884C\u4E2D\u306EVM\u306B\u63A5\u7D9A\u3059\u308B\n    -listen <address>\n                      \u6A19\u6E96\u30B3\u30CD\u30AF\u30BF\u3092\u4F7F\u7528\u3057\u3066\u3001\u6307\u5B9A\u3055\u308C\u305F\u30A2\u30C9\u30EC\u30B9\u3067\u5B9F\u884C\u4E2D\u306EVM\u306E\u63A5\u7D9A\u3092\u5F85\u6A5F\u3059\u308B\n    -listenany\n                      \u6A19\u6E96\u30B3\u30CD\u30AF\u30BF\u3092\u4F7F\u7528\u3057\u3066\u3001\u4F7F\u7528\u53EF\u80FD\u306A\u4EFB\u610F\u306E\u30A2\u30C9\u30EC\u30B9\u3067\u5B9F\u884C\u4E2D\u306EVM\u306E\u63A5\u7D9A\u3092\u5F85\u6A5F\u3059\u308B\n    -launch\n                      ''run''\u30B3\u30DE\u30F3\u30C9\u3092\u5F85\u6A5F\u305B\u305A\u306BVM\u3092\u5373\u6642\u306B\u8D77\u52D5\u3059\u308B\n    -listconnectors   \u3053\u306EVM\u3067\u4F7F\u7528\u53EF\u80FD\u306A\u30B3\u30CD\u30AF\u30BF\u3092\u30EA\u30B9\u30C8\u3059\u308B\n    -connect <connector-name>:<name1>=<value1>,...\n                      \u6307\u5B9A\u3055\u308C\u305F\u30B3\u30CD\u30AF\u30BF\u3092\u4F7F\u7528\u3057\u3066\u3001\u30EA\u30B9\u30C8\u3055\u308C\u305F\u5F15\u6570\u5024\u3067\u30BF\u30FC\u30B2\u30C3\u30C8VM\u306B\u63A5\u7D9A\u3059\u308B\n    -dbgtrace [flags] {0}\u306E\u30C7\u30D0\u30C3\u30B0\u306E\u60C5\u5831\u3092\u51FA\u529B\u3059\u308B\n    -tclient          \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3092HotSpot(TM) Client Compiler\u3067\u5B9F\u884C\u3059\u308B\n    -tserver          \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3092HotSpot(TM) Server Compiler\u3067\u5B9F\u884C\u3059\u308B\n\n\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u30C7\u30D0\u30C3\u30B0\u3059\u308B\u30D7\u30ED\u30BB\u30B9\u306B\u8EE2\u9001\u3055\u308C\u307E\u3059:\n    -v -verbose[:class|gc|jni]\n                      \u8A73\u7D30\u30E2\u30FC\u30C9\u3092\u30AA\u30F3\u306B\u3059\u308B\n    -D<name>=<value>  \u30B7\u30B9\u30C6\u30E0\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u8A2D\u5B9A\u3059\u308B\n    -classpath <directories separated by \"{1}\">\n                      \u30AF\u30E9\u30B9\u3092\u691C\u7D22\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u30EA\u30B9\u30C8\u3059\u308B\n    -X<option>        \u975E\u6A19\u6E96\u306E\u30BF\u30FC\u30B2\u30C3\u30C8VM\u30AA\u30D7\u30B7\u30E7\u30F3\n\n<class>\u306F\u30C7\u30D0\u30C3\u30B0\u3092\u958B\u59CB\u3059\u308B\u30AF\u30E9\u30B9\u306E\u540D\u524D\u3067\u3059\n<arguments>\u306F<class>\u306Emain()\u30E1\u30BD\u30C3\u30C9\u306B\u6E21\u3055\u308C\u308B\u5F15\u6570\u3067\u3059\n\n\u30B3\u30DE\u30F3\u30C9\u306E\u30D8\u30EB\u30D7\u306B\u3064\u3044\u3066\u306F{0}\u30D7\u30ED\u30F3\u30D7\u30C8\u3067''help''\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044"},
         // END OF MATERIAL TO LOCALIZE
         };
+
+        return temp;
     }
 }
--- a/jdk/src/share/classes/com/sun/tools/example/debug/tty/TTYResources_zh_CN.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/tty/TTYResources_zh_CN.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2010, 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
@@ -45,409 +45,282 @@
      * @return the contents of this <code>ResourceBundle</code>.
      */
     public Object[][] getContents() {
-        return new Object[][] {
+        Object[][] temp = new Object[][] {
         // NOTE: The value strings in this file containing "{0}" are
         //       processed by the java.text.MessageFormat class.  Any
         //       single quotes appearing in these strings need to be
         //       doubled up.
         //
         // LOCALIZE THIS
-        {"** classes list **", "** \u7c7b\u5217\u8868 **\n{0}"},
-        {"** fields list **", "** \u5b57\u6bb5\u5217\u8868 **\n{0}"},
-        {"** methods list **", "** \u65b9\u6cd5\u5217\u8868 **\n{0}"},
-        {"*** Reading commands from", "*** \u6b63\u5728\u4ece {0} \u4e2d\u8bfb\u53d6\u547d\u4ee4"},
-        {"All threads resumed.", "\u6240\u6709\u7ebf\u7a0b\u5df2\u6062\u590d\u3002"},
-        {"All threads suspended.", "\u6240\u6709\u7ebf\u7a0b\u5df2\u6682\u505c\u3002"},
-        {"Argument is not defined for connector:", "\u6ca1\u6709\u4e3a\u8fde\u63a5\u5668\u5b9a\u4e49\u53c2\u6570 {0}\uff1a {1}"},
-        {"Arguments match no method", "\u53c2\u6570\u4e0e\u65b9\u6cd5\u4e0d\u5339\u914d"},
-        {"Array:", "\u6570\u7ec4\uff1a{0}"},
-        {"Array element is not a method", "\u6570\u7ec4\u5143\u7d20\u4e0d\u662f\u65b9\u6cd5"},
-        {"Array index must be a integer type", "\u6570\u7ec4\u7d22\u5f15\u5fc5\u987b\u4e3a\u6574\u6570\u7c7b\u578b"},
-        {"base directory:", "\u57fa\u672c\u76ee\u5f55\uff1a{0}"},
-        {"bootclasspath:", "\u5f15\u5bfc\u7c7b\u8def\u5f84\uff1a{0}"},
-        {"Breakpoint hit:", "\u65ad\u70b9\u547d\u4e2d\uff1a "},
-        {"breakpoint", "\u65ad\u70b9 {0}"},
-        {"Breakpoints set:", "\u65ad\u70b9\u96c6\uff1a"},
-        {"Breakpoints can be located only in classes.", "\u65ad\u70b9\u53ea\u80fd\u4f4d\u4e8e\u7c7b\u4e2d\u3002{0} \u662f\u63a5\u53e3\u6216\u6570\u7ec4\u3002"},
-        {"Can only trace", "\u53ea\u80fd\u8ddf\u8e2a 'methods'\u3001'method exit' \u6216 'method exits'"},
-        {"cannot redefine existing connection", "{0} \u65e0\u6cd5\u91cd\u65b0\u5b9a\u4e49\u73b0\u6709\u8fde\u63a5"},
-        {"Cannot assign to a method invocation", "\u65e0\u6cd5\u6307\u5b9a\u7ed9\u65b9\u6cd5\u8c03\u7528"},
-        {"Cannot specify command line with connector:", "\u65e0\u6cd5\u4f7f\u7528\u8fde\u63a5\u5668 {0} \u6307\u5b9a\u547d\u4ee4\u884c"},
-        {"Cannot specify target vm arguments with connector:", "\u65e0\u6cd5\u4f7f\u7528\u8fde\u63a5\u5668 {0} \u6307\u5b9a\u76ee\u6807 VM \u53c2\u6570"},
-        {"Class containing field must be specified.", "\u5fc5\u987b\u6307\u5b9a\u5305\u542b\u5b57\u6bb5\u7684\u7c7b\u3002"},
-        {"Class:", "\u7c7b\uff1a{0}"},
-        {"Classic VM no longer supported.", "\u4e0d\u518d\u652f\u6301 Classic VM\u3002"},
-        {"classpath:", "\u7c7b\u8def\u5f84\uff1a{0}"},
+        {"** classes list **", "** \u7C7B\u5217\u8868 **\n{0}"},
+        {"** fields list **", "** \u5B57\u6BB5\u5217\u8868 **\n{0}"},
+        {"** methods list **", "** \u65B9\u6CD5\u5217\u8868 **\n{0}"},
+        {"*** Reading commands from", "*** \u6B63\u5728\u4ECE{0}\u8BFB\u53D6\u547D\u4EE4"},
+        {"All threads resumed.", "\u5DF2\u6062\u590D\u6240\u6709\u7EBF\u7A0B\u3002"},
+        {"All threads suspended.", "\u5DF2\u6302\u8D77\u6240\u6709\u7EBF\u7A0B\u3002"},
+        {"Argument is not defined for connector:", "\u6CA1\u6709\u4E3A\u8FDE\u63A5\u5668{1}\u5B9A\u4E49\u53C2\u6570{0}"},
+        {"Arguments match no method", "\u53C2\u6570\u4E0D\u4E0E\u4EFB\u4F55\u65B9\u6CD5\u5339\u914D"},
+        {"Array:", "\u6570\u7EC4: {0}"},
+        {"Array element is not a method", "\u6570\u7EC4\u5143\u7D20\u4E0D\u662F\u65B9\u6CD5"},
+        {"Array index must be a integer type", "\u6570\u7EC4\u7D22\u5F15\u5FC5\u987B\u4E3A\u6574\u6570\u7C7B\u578B"},
+        {"base directory:", "\u57FA\u76EE\u5F55: {0}"},
+        {"bootclasspath:", "\u5F15\u5BFC\u7C7B\u8DEF\u5F84: {0}"},
+        {"Breakpoint hit:", "\u65AD\u70B9\u547D\u4E2D: "},
+        {"breakpoint", "\u65AD\u70B9{0}"},
+        {"Breakpoints set:", "\u65AD\u70B9\u96C6:"},
+        {"Breakpoints can be located only in classes.", "\u65AD\u70B9\u53EA\u80FD\u4F4D\u4E8E\u7C7B\u4E2D\u3002{0}\u662F\u63A5\u53E3\u6216\u6570\u7EC4\u3002"},
+        {"Can only trace", "\u53EA\u80FD\u8DDF\u8E2A 'methods', 'method exit' \u6216 'method exits'"},
+        {"cannot redefine existing connection", "{0}\u65E0\u6CD5\u91CD\u65B0\u5B9A\u4E49\u73B0\u6709\u8FDE\u63A5"},
+        {"Cannot assign to a method invocation", "\u65E0\u6CD5\u5206\u914D\u5230\u65B9\u6CD5\u8C03\u7528"},
+        {"Cannot specify command line with connector:", "\u65E0\u6CD5\u6307\u5B9A\u5E26\u6709\u8FDE\u63A5\u5668\u7684\u547D\u4EE4\u884C: {0}"},
+        {"Cannot specify target vm arguments with connector:", "\u65E0\u6CD5\u6307\u5B9A\u5E26\u6709\u8FDE\u63A5\u5668\u7684\u76EE\u6807 VM \u53C2\u6570: {0}"},
+        {"Class containing field must be specified.", "\u5FC5\u987B\u6307\u5B9A\u5305\u542B\u5B57\u6BB5\u7684\u7C7B\u3002"},
+        {"Class:", "\u7C7B: {0}"},
+        {"Classic VM no longer supported.", "\u4E0D\u518D\u652F\u6301\u7ECF\u5178 VM\u3002"},
+        {"classpath:", "\u7C7B\u8DEF\u5F84: {0}"},
         {"colon mark", ":"},
         {"colon space", ": "},
-        {"Command is not supported on the target VM", "\u76ee\u6807 VM \u4e0d\u652f\u6301\u547d\u4ee4 \"{0}\""},
-        {"Command is not supported on a read-only VM connection", "\u53ea\u8bfb VM \u8fde\u63a5\u4e0d\u652f\u6301\u547d\u4ee4 \"{0}\""},
-        {"Command not valid until the VM is started with the run command", "\u4f7f\u7528 \"run\" \u547d\u4ee4\u542f\u52a8 VM \u4e4b\u540e\uff0c\u547d\u4ee4 \"{0}\" \u624d\u6709\u6548"},
-        {"Condition must be boolean", "\u6761\u4ef6\u5fc5\u987b\u4e3a\u5e03\u5c14\u503c"},
-        {"Connector and Transport name", "  \u8fde\u63a5\u5668\uff1a{0}  \u4f20\u9001\u5668\uff1a{1}"},
-        {"Connector argument nodefault", "    \u53c2\u6570\uff1a{0}\uff08\u65e0\u9ed8\u8ba4\u503c\uff09"},
-        {"Connector argument default", "    \u53c2\u6570\uff1a{0} \u9ed8\u8ba4\u503c\uff1a{1}"},
-        {"Connector description", "    \u63cf\u8ff0\uff1a{0}"},
-        {"Connector required argument nodefault", "    \u5fc5\u9700\u53c2\u6570\uff1a{0}\uff08\u65e0\u9ed8\u8ba4\u503c\uff09"},
-        {"Connector required argument default", "    \u5fc5\u9700\u53c2\u6570\uff1a{0} \u9ed8\u8ba4\u503c\uff1a{1}"},
-        {"Connectors available", "\u53ef\u7528\u7684\u8fde\u63a5\u5668\u5305\u62ec\uff1a"},
-        {"Constant is not a method", "\u5e38\u91cf\u4e0d\u662f\u65b9\u6cd5"},
-        {"Could not open:", "\u65e0\u6cd5\u6253\u5f00\uff1a{0}"},
-        {"Current method is native", "\u5f53\u524d\u65b9\u6cd5\u662f\u672c\u673a\u65b9\u6cd5"},
-        {"Current thread died. Execution continuing...", "\u5f53\u524d\u7ebf\u7a0b {0} \u5df2\u7ec8\u6b62\u3002\u6b63\u5728\u7ee7\u7eed\u6267\u884c..."},
-        {"Current thread isnt suspended.", "\u5f53\u524d\u7ebf\u7a0b\u672a\u6682\u505c\u3002"},
-        {"Current thread not set.", "\u5f53\u524d\u7ebf\u7a0b\u672a\u8bbe\u7f6e\u3002"},
-        {"dbgtrace flag value must be an integer:", "dbgtrace \u6807\u5fd7\u503c\u5fc5\u987b\u4e3a\u6574\u6570\uff1a {0}"},
-        {"Deferring.", "\u6b63\u5728\u5ef6\u8fdf {0}\u3002\n\u5c06\u5728\u88c5\u5165\u7c7b\u4e4b\u540e\u5bf9\u5176\u8fdb\u884c\u8bbe\u7f6e\u3002"},
-        {"End of stack.", "\u5806\u6808\u7ed3\u5c3e\u3002"},
-        {"Error popping frame", "\u5f39\u51fa\u5e27\u65f6\u51fa\u9519 - {0}"},
-        {"Error reading file", "\u8bfb\u53d6 \"{0}\" \u65f6\u51fa\u9519 - {1}"},
-        {"Error redefining class to file", "\u5c06 {0} \u91cd\u65b0\u5b9a\u4e49\u5230 {1} \u65f6\u51fa\u9519 - {2}"},
-        {"exceptionSpec all", "\u6240\u6709 {0}"},
-        {"exceptionSpec caught", "\u6355\u6349\u5230 {0}"},
-        {"exceptionSpec uncaught", "\u672a\u6355\u6349\u5230 {0}"},
-        {"Exception in expression:", "\u8868\u8fbe\u5f0f\u4e2d\u51fa\u73b0\u5f02\u5e38\uff1a{0}"},
-        {"Exception occurred caught", "\u51fa\u73b0\u5f02\u5e38\uff1a{0}\uff08\u5728 {1} \u88ab\u6355\u6349\uff09"},
-        {"Exception occurred uncaught", "\u51fa\u73b0\u5f02\u5e38\uff1a{0}\uff08\u672a\u6355\u6349\uff09"},
-        {"Exceptions caught:", "\u51fa\u73b0\u8fd9\u4e9b\u5f02\u5e38\u65f6\u4e2d\u65ad\uff1a"},
-        {"expr is null", "{0} = null"},
+        {"Command is not supported on the target VM", "\u76EE\u6807 VM \u4E0D\u652F\u6301\u547D\u4EE4 ''{0}''"},
+        {"Command is not supported on a read-only VM connection", "\u53EA\u8BFB VM \u8FDE\u63A5\u4E0D\u652F\u6301\u547D\u4EE4 ''{0}''"},
+        {"Command not valid until the VM is started with the run command", "\u5728\u4F7F\u7528 ''run'' \u547D\u4EE4\u542F\u52A8 VM \u524D, \u547D\u4EE4 ''{0}'' \u662F\u65E0\u6548\u7684"},
+        {"Condition must be boolean", "\u6761\u4EF6\u5FC5\u987B\u662F\u5E03\u5C14\u578B"},
+        {"Connector and Transport name", "  \u8FDE\u63A5\u5668: {0}, \u4F20\u8F93: {1}"},
+        {"Connector argument nodefault", "    \u53C2\u6570: {0} (\u65E0\u9ED8\u8BA4\u503C)"},
+        {"Connector argument default", "    \u53C2\u6570: {0}, \u9ED8\u8BA4\u503C: {1}"},
+        {"Connector description", "    \u8BF4\u660E: {0}"},
+        {"Connector required argument nodefault", "    \u6240\u9700\u7684\u53C2\u6570: {0} (\u65E0\u9ED8\u8BA4\u503C)"},
+        {"Connector required argument default", "    \u6240\u9700\u7684\u53C2\u6570: {0}, \u9ED8\u8BA4\u503C: {1}"},
+        {"Connectors available", "\u53EF\u7528\u8FDE\u63A5\u5668\u4E3A:"},
+        {"Constant is not a method", "\u5E38\u91CF\u4E0D\u662F\u65B9\u6CD5"},
+        {"Could not open:", "\u65E0\u6CD5\u6253\u5F00: {0}"},
+        {"Current method is native", "\u5F53\u524D\u65B9\u6CD5\u4E3A\u672C\u673A\u65B9\u6CD5"},
+        {"Current thread died. Execution continuing...", "\u5F53\u524D\u7EBF\u7A0B{0}\u5DF2\u6210\u4E3A\u6B7B\u7EBF\u7A0B\u3002\u7EE7\u7EED\u6267\u884C..."},
+        {"Current thread isnt suspended.", "\u5F53\u524D\u7EBF\u7A0B\u672A\u6302\u8D77\u3002"},
+        {"Current thread not set.", "\u5F53\u524D\u7EBF\u7A0B\u672A\u8BBE\u7F6E\u3002"},
+        {"dbgtrace flag value must be an integer:", "dbgtrace \u6807\u8BB0\u503C\u5FC5\u987B\u4E3A\u6574\u6570: {0}"},
+        {"Deferring.", "\u6B63\u5728\u5EF6\u8FDF{0}\u3002\n\u5C06\u5728\u52A0\u8F7D\u7C7B\u540E\u8BBE\u7F6E\u3002"},
+        {"End of stack.", "\u5806\u6808\u7ED3\u675F\u3002"},
+        {"Error popping frame", "\u4F7F\u5E27\u51FA\u6808\u65F6\u51FA\u9519 - {0}"},
+        {"Error reading file", "\u8BFB\u53D6 ''{0}'' \u65F6\u51FA\u9519 - {1}"},
+        {"Error redefining class to file", "\u5C06{0}\u91CD\u65B0\u5B9A\u4E49\u4E3A{1}\u65F6\u51FA\u9519 - {2}"},
+        {"exceptionSpec all", "\u6240\u6709{0}"},
+        {"exceptionSpec caught", "\u6355\u83B7\u7684{0}"},
+        {"exceptionSpec uncaught", "\u672A\u6355\u83B7\u7684{0}"},
+        {"Exception in expression:", "\u8868\u8FBE\u5F0F\u4E2D\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF: {0}"},
+        {"Exception occurred caught", "\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF: {0} (\u5C06\u5728\u4EE5\u4E0B\u4F4D\u7F6E\u6355\u83B7: {1})"},
+        {"Exception occurred uncaught", "\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF: {0} (\u672A\u6355\u83B7)"},
+        {"Exceptions caught:", "\u51FA\u73B0\u8FD9\u4E9B\u5F02\u5E38\u9519\u8BEF\u65F6\u4E2D\u65AD:"},
+        {"expr is null", "{0} = \u7A7A\u503C"},
         {"expr is value", "{0} = {1}"},
-        {"expr is value <collected>", "  {0} = {1} <\u5df2\u6536\u96c6>"},
-        {"Expression cannot be void", "\u8868\u8fbe\u5f0f\u4e0d\u80fd\u6ca1\u6709\u8fd4\u56de\u503c"},
-        {"Expression must evaluate to an object", "\u8868\u8fbe\u5f0f\u7684\u503c\u5fc5\u987b\u4e3a\u5bf9\u8c61"},
-        {"extends:", "\u6269\u5c55\uff1a {0}"},
-        {"Failed reading output", "\u8bfb\u53d6\u5b50 java \u89e3\u91ca\u7a0b\u5e8f\u7684\u8f93\u51fa\u5931\u8d25\u3002"},
-        {"Fatal error", "\u81f4\u547d\u9519\u8bef\uff1a"},
-        {"Field access encountered before after", "\u5b57\u6bb5 ({0}) \u4e3a {1}\uff0c\u5c06 {2}\uff1a "},
-        {"Field access encountered", "\u9047\u5230\u5b57\u6bb5 ({0}) \u8bbf\u95ee\uff1a "},
-        {"Field to unwatch not specified", "\u672a\u6307\u5b9a\u8981\u53d6\u6d88\u76d1\u89c6\u7684\u5b57\u6bb5\u3002"},
-        {"Field to watch not specified", "\u672a\u6307\u5b9a\u8981\u76d1\u89c6\u7684\u5b57\u6bb5\u3002"},
-        {"GC Disabled for", "\u5df2\u7981\u7528 {0} \u7684 GC\uff1a"},
-        {"GC Enabled for", "\u5df2\u542f\u7528 {0} \u7684 GC\uff1a"},
+        {"expr is value <collected>", "  {0} = {1} <\u5DF2\u6536\u96C6>"},
+        {"Expression cannot be void", "\u8868\u8FBE\u5F0F\u4E0D\u80FD\u4E3A\u7A7A"},
+        {"Expression must evaluate to an object", "\u8868\u8FBE\u5F0F\u7684\u8BA1\u7B97\u7ED3\u679C\u5FC5\u987B\u4E3A\u5BF9\u8C61"},
+        {"extends:", "\u6269\u5C55: {0}"},
+        {"Failed reading output", "\u65E0\u6CD5\u8BFB\u53D6\u5B50 Java \u89E3\u91CA\u5668\u7684\u8F93\u51FA\u3002"},
+        {"Fatal error", "\u81F4\u547D\u9519\u8BEF:"},
+        {"Field access encountered before after", "\u5B57\u6BB5 ({0}) \u4E3A{1}, \u5C06\u4E3A{2}: "},
+        {"Field access encountered", "\u9047\u5230\u5B57\u6BB5 ({0}) \u8BBF\u95EE: "},
+        {"Field to unwatch not specified", "\u672A\u6307\u5B9A\u8981\u53D6\u6D88\u76D1\u89C6\u7684\u5B57\u6BB5\u3002"},
+        {"Field to watch not specified", "\u672A\u6307\u5B9A\u8981\u76D1\u89C6\u7684\u5B57\u6BB5\u3002"},
+        {"GC Disabled for", "\u5DF2\u5BF9{0}\u7981\u7528 GC:"},
+        {"GC Enabled for", "\u5DF2\u5BF9{0}\u542F\u7528 GC:"},
         {"grouping begin character", "{"},
         {"grouping end character", "}"},
-        {"Illegal Argument Exception", "\u975e\u6cd5\u53c2\u6570\u5f02\u5e38"},
-        {"Illegal connector argument", "\u975e\u6cd5\u8fde\u63a5\u5668\u53c2\u6570\uff1a {0}"},
-        {"implementor:", "\u5b9e\u73b0\u8005\uff1a {0}"},
-        {"implements:", "\u5b9e\u73b0\uff1a {0}"},
-        {"Initializing progname", "\u6b63\u5728\u521d\u59cb\u5316 {0}..."},
-        {"Input stream closed.", "\u8f93\u5165\u6d41\u5df2\u7ed3\u675f\u3002"},
-        {"Interface:", "\u63a5\u53e3\uff1a {0}"},
-        {"Internal debugger error.", "\u5185\u90e8\u8c03\u8bd5\u5668\u9519\u8bef\u3002"},
-        {"Internal error: null ThreadInfo created", "\u5185\u90e8\u9519\u8bef\uff1a\u521b\u5efa\u4e86\u7a7a\u7684 ThreadInfo"},
-        {"Internal error; unable to set", "\u5185\u90e8\u9519\u8bef\uff1b\u65e0\u6cd5\u8bbe\u7f6e {0}"},
-        {"Internal exception during operation:", "\u5728\u64cd\u4f5c\u8fc7\u7a0b\u4e2d\u51fa\u73b0\u5185\u90e8\u5f02\u5e38\uff1a\n    {0}"},
-        {"Internal exception:", "\u5185\u90e8\u5f02\u5e38\uff1a"},
-        {"Invalid argument type name", "\u53c2\u6570\u7c7b\u578b\u540d\u79f0\u65e0\u6548"},
-        {"Invalid assignment syntax", "\u6307\u5b9a\u8bed\u6cd5\u65e0\u6548"},
-        {"Invalid command syntax", "\u547d\u4ee4\u8bed\u6cd5\u65e0\u6548"},
-        {"Invalid connect type", "\u8fde\u63a5\u7c7b\u578b\u65e0\u6548"},
-        {"Invalid consecutive invocations", "\u8fde\u7eed\u8c03\u7528\u65e0\u6548"},
-        {"Invalid exception object", "\u5f02\u5e38\u5bf9\u8c61\u65e0\u6548"},
-        {"Invalid method specification:", "\u65e0\u6548\u7684\u65b9\u6cd5\u8bf4\u660e\uff1a {0}"},
-        {"Invalid option on class command", "\u7c7b\u547d\u4ee4\u7684\u9009\u9879\u65e0\u6548"},
-        {"invalid option", "\u65e0\u6548\u7684\u9009\u9879\uff1a {0}"},
-        {"Invalid thread status.", "\u7ebf\u7a0b\u72b6\u6001\u65e0\u6548\u3002"},
-        {"Invalid transport name:", "\u65e0\u6548\u7684\u4f20\u9001\u5668\u540d\u79f0\uff1a {0}"},
-        {"I/O exception occurred:", "\u51fa\u73b0 I/O \u5f02\u5e38\uff1a {0}"},
-        {"is an ambiguous method name in", "\"{0}\" \u5728 \"{1}\" \u4e2d\u662f\u4e0d\u660e\u786e\u7684\u65b9\u6cd5\u540d\u79f0"},
-        {"is an invalid line number for",  "\u5bf9\u4e8e {1}\uff0c{0,number,integer} \u662f\u65e0\u6548\u7684\u884c\u53f7"},
-        {"is not a valid class name", "\"{0}\" \u662f\u65e0\u6548\u7684\u7c7b\u540d\u3002"},
-        {"is not a valid field name", "\"{0}\" \u662f\u65e0\u6548\u7684\u5b57\u6bb5\u540d\u3002"},
-        {"is not a valid id or class name", "\"{0}\" \u662f\u65e0\u6548\u7684 ID \u6216\u7c7b\u540d\u3002"},
-        {"is not a valid line number or method name for", "\u5bf9\u4e8e\u7c7b \"{1}\"\uff0c\"{0}\" \u662f\u65e0\u6548\u7684\u884c\u53f7\u6216\u65b9\u6cd5\u540d"},
-        {"is not a valid method name", "\"{0}\" \u662f\u65e0\u6548\u7684\u65b9\u6cd5\u540d\u3002"},
-        {"is not a valid thread id", "\"{0}\" \u662f\u65e0\u6548\u7684\u7ebf\u7a0b ID\u3002"},
-        {"is not a valid threadgroup name", "\"{0}\" \u662f\u65e0\u6548\u7684\u7ebf\u7a0b\u7ec4\u540d\u79f0\u3002"},
+        {"Illegal Argument Exception", "\u975E\u6CD5\u53C2\u6570\u5F02\u5E38\u9519\u8BEF"},
+        {"Illegal connector argument", "\u975E\u6CD5\u8FDE\u63A5\u5668\u53C2\u6570: {0}"},
+        {"implementor:", "\u5B9E\u73B0\u8005: {0}"},
+        {"implements:", "\u5B9E\u73B0: {0}"},
+        {"Initializing progname", "\u6B63\u5728\u521D\u59CB\u5316{0}..."},
+        {"Input stream closed.", "\u8F93\u5165\u6D41\u5DF2\u5173\u95ED\u3002"},
+        {"Interface:", "\u63A5\u53E3: {0}"},
+        {"Internal debugger error.", "\u5185\u90E8\u8C03\u8BD5\u5668\u9519\u8BEF\u3002"},
+        {"Internal error: null ThreadInfo created", "\u5185\u90E8\u9519\u8BEF: \u521B\u5EFA\u4E86\u7A7A\u503C ThreadInfo"},
+        {"Internal error; unable to set", "\u5185\u90E8\u9519\u8BEF; \u65E0\u6CD5\u8BBE\u7F6E{0}"},
+        {"Internal exception during operation:", "\u64CD\u4F5C\u671F\u95F4\u51FA\u73B0\u5185\u90E8\u5F02\u5E38\u9519\u8BEF:\n    {0}"},
+        {"Internal exception:", "\u5185\u90E8\u5F02\u5E38\u9519\u8BEF:"},
+        {"Invalid argument type name", "\u53C2\u6570\u7C7B\u578B\u540D\u79F0\u65E0\u6548"},
+        {"Invalid assignment syntax", "\u8D4B\u503C\u8BED\u6CD5\u65E0\u6548"},
+        {"Invalid command syntax", "\u547D\u4EE4\u8BED\u6CD5\u65E0\u6548"},
+        {"Invalid connect type", "\u8FDE\u63A5\u7C7B\u578B\u65E0\u6548"},
+        {"Invalid consecutive invocations", "\u8FDE\u7EED\u8C03\u7528\u65E0\u6548"},
+        {"Invalid exception object", "\u5F02\u5E38\u9519\u8BEF\u5BF9\u8C61\u65E0\u6548"},
+        {"Invalid method specification:", "\u65B9\u6CD5\u89C4\u8303\u65E0\u6548: {0}"},
+        {"Invalid option on class command", "\u7C7B\u547D\u4EE4\u7684\u9009\u9879\u65E0\u6548"},
+        {"invalid option", "\u9009\u9879\u65E0\u6548: {0}"},
+        {"Invalid thread status.", "\u7EBF\u7A0B\u72B6\u6001\u65E0\u6548\u3002"},
+        {"Invalid transport name:", "\u4F20\u8F93\u540D\u79F0\u65E0\u6548: {0}"},
+        {"I/O exception occurred:", "\u51FA\u73B0 I/O \u5F02\u5E38\u9519\u8BEF: {0}"},
+        {"is an ambiguous method name in", "\"{0}\" \u5728 \"{1}\" \u4E2D\u662F\u4E0D\u660E\u786E\u7684\u65B9\u6CD5\u540D\u79F0"},
+        {"is an invalid line number for",  "{0,number,integer} \u662F{1}\u7684\u65E0\u6548\u884C\u53F7"},
+        {"is not a valid class name", "\"{0}\" \u4E0D\u662F\u6709\u6548\u7684\u7C7B\u540D\u3002"},
+        {"is not a valid field name", "\"{0}\" \u4E0D\u662F\u6709\u6548\u7684\u5B57\u6BB5\u540D\u3002"},
+        {"is not a valid id or class name", "\"{0}\" \u4E0D\u662F\u6709\u6548\u7684 ID \u6216\u7C7B\u540D\u3002"},
+        {"is not a valid line number or method name for", "\"{0}\" \u4E0D\u662F\u7C7B \"{1}\" \u7684\u6709\u6548\u884C\u53F7\u6216\u65B9\u6CD5\u540D"},
+        {"is not a valid method name", "\"{0}\" \u4E0D\u662F\u6709\u6548\u7684\u65B9\u6CD5\u540D\u3002"},
+        {"is not a valid thread id", "\"{0}\" \u4E0D\u662F\u6709\u6548\u7684\u7EBF\u7A0B ID\u3002"},
+        {"is not a valid threadgroup name", "\"{0}\" \u4E0D\u662F\u6709\u6548\u7684\u7EBF\u7A0B\u7EC4\u540D\u79F0\u3002"},
         {"jdb prompt with no current thread", "> "},
         {"jdb prompt thread name and current stack frame", "{0}[{1,number,integer}] "},
-        {"killed", "{0} \u5df2\u4e2d\u6b62"},
-        {"killing thread:", "\u6b63\u5728\u4e2d\u6b62\u7ebf\u7a0b\uff1a {0}"},
-        {"Line number information not available for", "\u6b64\u4f4d\u7f6e\u7684\u6e90\u884c\u53f7\u4e0d\u53ef\u7528\u3002"},
-        {"line number", "\uff1a{0,number,integer}"},
+        {"killed", "{0}\u5DF2\u7EC8\u6B62"},
+        {"killing thread:", "\u6B63\u5728\u7EC8\u6B62\u7EBF\u7A0B: {0}"},
+        {"Line number information not available for", "\u6B64\u4F4D\u7F6E\u7684\u6E90\u884C\u53F7\u4E0D\u53EF\u7528\u3002"},
+        {"line number", ":{0,number,integer}"},
         {"list field typename and name", "{0} {1}\n"},
-        {"list field typename and name inherited", "{0} {1}\uff08\u4ece {2}\u7ee7\u627f\uff09\n"},
-        {"list field typename and name hidden", "{0} {1} \uff08\u9690\u85cf\uff09\n"},
-        {"Listening at address:", "\u6b63\u5728\u4ee5\u4e0b\u5730\u5740\u4fa6\u542c\uff1a {0}"},
-        {"Local variable information not available.", "\u5c40\u90e8\u53d8\u91cf\u4fe1\u606f\u4e0d\u53ef\u7528\u3002\u4f7f\u7528 -g \u7f16\u8bd1\u4ee5\u751f\u6210\u53d8\u91cf\u4fe1\u606f"},
-        {"Local variables:", "\u5c40\u90e8\u53d8\u91cf\uff1a"},
-        {"<location unavailable>", "<\u4f4d\u7f6e\u4e0d\u53ef\u7528>"},
-        {"location", "\"thread={0}\", {1}"},
-        {"locationString", "{0}.{1}(), line={2,number,integer} bci={3,number,integer}"},
-        {"Main class and arguments must be specified", "\u5fc5\u987b\u6307\u5b9a\u4e3b\u7c7b\u548c\u53c2\u6570"},
-        {"Method arguments:", "\u65b9\u6cd5\u53c2\u6570\uff1a"},
-        {"Method entered:", "\u65b9\u6cd5\u5df2\u8f93\u5165: "},
-        {"Method exited:",  "\u65b9\u6cd5\u5df2\u9000\u51fa"},
-        {"Method exitedValue:", "\u65b9\u6cd5\u5df2\u9000\u51fa: \u8fd4\u56de\u503c = {0}\uff0c"},
-        {"Method is overloaded; specify arguments", "\u65b9\u6cd5 {0} \u5df2\u8fc7\u8f7d\uff1b\u6307\u5b9a\u53c2\u6570"},
-        {"minus version", "\u8fd9\u662f {0} \u7248\u672c {1,number,integer}.{2,number,integer}\uff08J2SE \u7248\u672c {3}\uff09"},
-        {"Monitor information for thread", "\u7ebf\u7a0b {0} \u7684\u76d1\u89c6\u5668\u4fe1\u606f\uff1a"},
-        {"Monitor information for expr", "{0} ({1}) \u7684\u76d1\u89c6\u5668\u4fe1\u606f\uff1a"},
-        {"More than one class named", "\u547d\u540d\u4e86\u591a\u4e2a\u7c7b\uff1a ''{0}''"},
-        {"native method", "\u672c\u673a\u65b9\u6cd5"},
-        {"nested:", "\u5d4c\u5957\uff1a {0}"},
-        {"No attach address specified.", "\u672a\u6307\u5b9a\u8fde\u63a5\u5730\u5740\u3002"},
-        {"No breakpoints set.", "\u672a\u8bbe\u7f6e\u65ad\u70b9\u3002"},
-        {"No class named", "\u6ca1\u6709\u540d\u4e3a \"{0}\" \u7684\u7c7b"},
-        {"No class specified.", "\u672a\u6307\u5b9a\u7c7b\u3002"},
-        {"No classpath specified.", "\u672a\u6307\u5b9a\u7c7b\u8def\u5f84\u3002"},
-        {"No code at line", "{1} \u4e2d\u7684\u7b2c {0,number,integer} \u884c\u6ca1\u6709\u4ee3\u7801"},
-        {"No connect specification.", "\u6ca1\u6709\u8fde\u63a5\u8bf4\u660e\u3002"},
-        {"No connector named:", "\u6ca1\u6709\u540d\u4e3a {0} \u7684\u8fde\u63a5\u5668"},
-        {"No current thread", "\u6ca1\u6709\u5f53\u524d\u7ebf\u7a0b"},
-        {"No default thread specified:", "\u672a\u6307\u5b9a\u9ed8\u8ba4\u7ebf\u7a0b\uff1a\u8bf7\u5148\u4f7f\u7528 \"thread\" \u547d\u4ee4\u3002"},
-        {"No exception object specified.", "\u672a\u6307\u5b9a\u5f02\u5e38\u5bf9\u8c61\u3002"},
-        {"No exceptions caught.", "\u672a\u6355\u6349\u5230\u5f02\u5e38\u3002"},
-        {"No expression specified.", "\u672a\u6307\u5b9a\u8868\u8fbe\u5f0f\u3002"},
-        {"No field in", "{1} \u4e2d\u6ca1\u6709\u5b57\u6bb5 {0}"},
-        {"No frames on the current call stack", "\u5f53\u524d\u8c03\u7528\u5806\u6808\u4e2d\u6ca1\u6709\u5e27"},
-        {"No linenumber information for", "\u6ca1\u6709 {0} \u7684\u884c\u53f7\u4fe1\u606f\u3002\u5c1d\u8bd5\u5728\u542f\u7528\u8c03\u8bd5\u65f6\u8fdb\u884c\u7f16\u8bd1\u3002"},
-        {"No local variables", "\u65e0\u5c40\u90e8\u53d8\u91cf"},
-        {"No method in", "{1} \u4e2d\u6ca1\u6709\u65b9\u6cd5 {0}"},
-        {"No method specified.", "\u672a\u6307\u5b9a\u65b9\u6cd5\u3002"},
-        {"No monitor numbered:", "\u6ca1\u6709\u7f16\u53f7\u7684\u76d1\u89c6\u5668\uff1a {0}"},
-        {"No monitors owned", "  \u6ca1\u6709\u62e5\u6709\u7684\u76d1\u89c6\u5668"},
-        {"No object specified.", "\u672a\u6307\u5b9a\u5bf9\u8c61\u3002"},
-        {"No objects specified.", "\u672a\u6307\u5b9a\u5bf9\u8c61\u3002"},
-        {"No save index specified.", "\u672a\u6307\u5b9a\u4fdd\u5b58\u7d22\u5f15\u3002"},
-        {"No saved values", "\u6ca1\u6709\u4fdd\u5b58\u7684\u503c"},
-        {"No source information available for:", "{0}\u6ca1\u6709\u53ef\u7528\u7684\u6e90\u4fe1\u606f"},
-        {"No sourcedebugextension specified", "\u672a\u6307\u5b9a SourceDebugExtension"},
-        {"No sourcepath specified.", "\u672a\u6307\u5b9a\u6e90\u8def\u5f84\u3002"},
-        {"No thread specified.", "\u672a\u6307\u5b9a\u7ebf\u7a0b\u3002"},
-        {"No VM connected", "\u672a\u8fde\u63a5 VM"},
-        {"No waiters", "  \u6ca1\u6709\u7b49\u5f85\u8005"},
-        {"not a class", "{0} \u4e0d\u662f\u7c7b"},
-        {"Not a monitor number:", "\u4e0d\u662f\u76d1\u89c6\u5668\u7f16\u53f7\uff1a ''{0}''"},
-        {"not found (try the full name)", "{0} \u672a\u627e\u5230\uff08\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5168\u540d\uff09"},
-        {"Not found:", "\u672a\u627e\u5230\uff1a {0}"},
-        {"not found", "{0} \u672a\u627e\u5230"},
-        {"Not owned", "  \u4e0d\u62e5\u6709"},
-        {"Not waiting for a monitor", "  \u4e0d\u7b49\u5f85\u76d1\u89c6\u5668"},
-        {"Nothing suspended.", "\u672a\u6682\u505c\u4efb\u4f55\u5bf9\u8c61\u3002"},
+        {"list field typename and name inherited", "{0} {1} (\u7EE7\u627F\u81EA{2})\n"},
+        {"list field typename and name hidden", "{0} {1} (\u9690\u85CF)\n"},
+        {"Listening at address:", "\u76D1\u542C\u5730\u5740: {0}"},
+        {"Local variable information not available.", "\u672C\u5730\u53D8\u91CF\u4FE1\u606F\u4E0D\u53EF\u7528\u3002\u8BF7\u4F7F\u7528 -g \u7F16\u8BD1\u4EE5\u751F\u6210\u53D8\u91CF\u4FE1\u606F"},
+        {"Local variables:", "\u672C\u5730\u53D8\u91CF:"},
+        {"<location unavailable>", "<\u4F4D\u7F6E\u4E0D\u53EF\u7528>"},
+        {"location", "\"\u7EBF\u7A0B={0}\", {1}"},
+        {"locationString", "{0}.{1}(), \u884C={2,number,integer} bci={3,number,integer}"},
+        {"Main class and arguments must be specified", "\u5FC5\u987B\u6307\u5B9A\u4E3B\u7C7B\u548C\u53C2\u6570"},
+        {"Method arguments:", "\u65B9\u6CD5\u53C2\u6570:"},
+        {"Method entered:", "\u5DF2\u8FDB\u5165\u65B9\u6CD5: "},
+        {"Method exited:",  "\u5DF2\u9000\u51FA\u65B9\u6CD5"},
+        {"Method exitedValue:", "\u5DF2\u9000\u51FA\u65B9\u6CD5: \u8FD4\u56DE\u503C = {0}, "},
+        {"Method is overloaded; specify arguments", "\u5DF2\u91CD\u8F7D\u65B9\u6CD5{0}; \u8BF7\u6307\u5B9A\u53C2\u6570"},
+        {"minus version", "\u8FD9\u662F{0}\u7248\u672C {1,number,integer}.{2,number,integer} (Java SE \u7248\u672C {3})"},
+        {"Monitor information for thread", "\u76D1\u89C6\u7EBF\u7A0B{0}\u7684\u4FE1\u606F:"},
+        {"Monitor information for expr", "\u76D1\u89C6{0} ({1}) \u7684\u4FE1\u606F:"},
+        {"More than one class named", "\u591A\u4E2A\u7C7B\u7684\u540D\u79F0\u4E3A: ''{0}''"},
+        {"native method", "\u672C\u673A\u65B9\u6CD5"},
+        {"nested:", "\u5D4C\u5957: {0}"},
+        {"No attach address specified.", "\u672A\u6307\u5B9A\u9644\u52A0\u5730\u5740\u3002"},
+        {"No breakpoints set.", "\u672A\u8BBE\u7F6E\u65AD\u70B9\u3002"},
+        {"No class named", "\u6CA1\u6709\u540D\u4E3A ''{0}'' \u7684\u7C7B"},
+        {"No class specified.", "\u672A\u6307\u5B9A\u7C7B\u3002"},
+        {"No classpath specified.", "\u672A\u6307\u5B9A\u7C7B\u8DEF\u5F84\u3002"},
+        {"No code at line", "{1}\u4E2D\u7684\u884C {0,number,integer} \u5904\u6CA1\u6709\u4EE3\u7801"},
+        {"No connect specification.", "\u6CA1\u6709\u8FDE\u63A5\u89C4\u8303\u3002"},
+        {"No connector named:", "\u6CA1\u6709\u540D\u4E3A{0}\u7684\u8FDE\u63A5\u5668"},
+        {"No current thread", "\u6CA1\u6709\u5F53\u524D\u7EBF\u7A0B"},
+        {"No default thread specified:", "\u672A\u6307\u5B9A\u9ED8\u8BA4\u7EBF\u7A0B: \u8BF7\u5148\u4F7F\u7528 \"thread\" \u547D\u4EE4\u3002"},
+        {"No exception object specified.", "\u672A\u6307\u5B9A\u5F02\u5E38\u9519\u8BEF\u5BF9\u8C61\u3002"},
+        {"No exceptions caught.", "\u672A\u6355\u83B7\u5230\u5F02\u5E38\u9519\u8BEF\u3002"},
+        {"No expression specified.", "\u672A\u6307\u5B9A\u8868\u8FBE\u5F0F\u3002"},
+        {"No field in", "{1}\u4E2D\u6CA1\u6709\u5B57\u6BB5{0}"},
+        {"No frames on the current call stack", "\u5F53\u524D\u8C03\u7528\u5806\u6808\u4E0A\u6CA1\u6709\u5E27"},
+        {"No linenumber information for", "{0}\u6CA1\u6709\u884C\u53F7\u4FE1\u606F\u3002\u8BF7\u5C1D\u8BD5\u5728\u542F\u7528\u8C03\u8BD5\u7684\u60C5\u51B5\u4E0B\u7F16\u8BD1\u3002"},
+        {"No local variables", "\u6CA1\u6709\u672C\u5730\u53D8\u91CF"},
+        {"No method in", "{1}\u4E2D\u6CA1\u6709\u65B9\u6CD5{0}"},
+        {"No method specified.", "\u672A\u6307\u5B9A\u65B9\u6CD5\u3002"},
+        {"No monitor numbered:", "\u6CA1\u6709\u7F16\u53F7\u4E3A {0} \u7684\u76D1\u89C6\u5668"},
+        {"No monitors owned", "  \u4E0D\u62E5\u6709\u76D1\u89C6\u5668"},
+        {"No object specified.", "\u672A\u6307\u5B9A\u5BF9\u8C61\u3002"},
+        {"No objects specified.", "\u672A\u6307\u5B9A\u5BF9\u8C61\u3002"},
+        {"No save index specified.", "\u672A\u6307\u5B9A\u4FDD\u5B58\u7D22\u5F15\u3002"},
+        {"No saved values", "\u6CA1\u6709\u4FDD\u5B58\u7684\u503C"},
+        {"No source information available for:", "\u6CA1\u6709\u53EF\u7528\u4E8E{0}\u7684\u6E90\u4FE1\u606F"},
+        {"No sourcedebugextension specified", "\u672A\u6307\u5B9A SourceDebugExtension"},
+        {"No sourcepath specified.", "\u672A\u6307\u5B9A\u6E90\u8DEF\u5F84\u3002"},
+        {"No thread specified.", "\u672A\u6307\u5B9A\u7EBF\u7A0B\u3002"},
+        {"No VM connected", "\u672A\u8FDE\u63A5 VM"},
+        {"No waiters", "  \u6CA1\u6709\u7B49\u5F85\u8FDB\u7A0B"},
+        {"not a class", "{0}\u4E0D\u662F\u7C7B"},
+        {"Not a monitor number:", "\u4E0D\u662F\u76D1\u89C6\u5668\u7F16\u53F7: ''{0}''"},
+        {"not found (try the full name)", "\u627E\u4E0D\u5230{0} (\u8BF7\u5C1D\u8BD5\u4F7F\u7528\u5168\u540D)"},
+        {"Not found:", "\u627E\u4E0D\u5230: {0}"},
+        {"not found", "\u627E\u4E0D\u5230{0}"},
+        {"Not owned", "  \u4E0D\u62E5\u6709"},
+        {"Not waiting for a monitor", "  \u672A\u7B49\u5F85\u76D1\u89C6\u5668"},
+        {"Nothing suspended.", "\u672A\u6302\u8D77\u4EFB\u4F55\u5BF9\u8C61\u3002"},
         {"object description and hex id", "({0}){1}"},
-        {"Operation is not supported on the target VM", "\u76ee\u6807 VM \u4e0d\u652f\u6301\u64cd\u4f5c"},
-        {"operation not yet supported", "\u5c1a\u4e0d\u652f\u6301\u64cd\u4f5c"},
-        {"Owned by:", "  \u62e5\u6709\u8005\uff1a{0}\uff0c\u6761\u76ee\u8ba1\u6570\uff1a{1,number,integer}"},
-        {"Owned monitor:", "  \u62e5\u6709\u7684\u76d1\u89c6\u5668\uff1a {0}"},
-        {"Parse exception:", "\u89e3\u6790\u5f02\u5e38\uff1a {0}"},
-        {"printbreakpointcommandusage", "\u7528\u6cd5\uff1a{0} <\u7c7b>:<\u884c\u53f7> \u6216\n       {1} <\u7c7b>.<\u65b9\u6cd5\u540d>[(\u53c2\u6570\u7c7b\u578b,...)]"},
-        {"Removed:", "\u5df2\u5220\u9664\uff1a {0}"},
-        {"Requested stack frame is no longer active:", "\u8bf7\u6c42\u7684\u5806\u6808\u5e27\u4e0d\u518d\u5904\u4e8e\u6d3b\u52a8\u72b6\u6001\uff1a{0,number,integer}"},
-        {"run <args> command is valid only with launched VMs", "\u201crun <\u53c2\u6570>\u201d\u547d\u4ee4\u4ec5\u5bf9\u5df2\u542f\u52a8\u7684 VM \u6709\u6548"},
-        {"run", "\u8fd0\u884c {0}"},
-        {"saved", "{0} \u5df2\u4fdd\u5b58"},
-        {"Set deferred", "\u8bbe\u7f6e\u5ef6\u8fdf\u7684 {0}"},
-        {"Set", "\u8bbe\u7f6e {0}"},
-        {"Source file not found:", "\u627e\u4e0d\u5230\u6e90\u6587\u4ef6\uff1a {0}"},
+        {"Operation is not supported on the target VM", "\u76EE\u6807 VM \u4E0D\u652F\u6301\u8BE5\u64CD\u4F5C"},
+        {"operation not yet supported", "\u5C1A\u4E0D\u652F\u6301\u8BE5\u64CD\u4F5C"},
+        {"Owned by:", "  \u62E5\u6709\u8005: {0}, \u6761\u76EE\u8BA1\u6570: {1,number,integer}"},
+        {"Owned monitor:", "  \u62E5\u6709\u7684\u76D1\u89C6\u5668: {0}"},
+        {"Parse exception:", "\u8BED\u6CD5\u5206\u6790\u5F02\u5E38\u9519\u8BEF: {0}"},
+        {"printbreakpointcommandusage", "\u7528\u6CD5: {0} <class>:<line_number> \u6216\n       {1} <class>.<method_name>[(argument_type,...)]"},
+        {"Removed:", "\u5DF2\u5220\u9664: {0}"},
+        {"Requested stack frame is no longer active:", "\u8BF7\u6C42\u7684\u5806\u6808\u5E27\u4E0D\u518D\u6709\u6548: {0,number,integer}"},
+        {"run <args> command is valid only with launched VMs", "'run <args>' \u547D\u4EE4\u4EC5\u5BF9\u542F\u52A8\u7684 VM \u6709\u6548"},
+        {"run", "\u8FD0\u884C{0}"},
+        {"saved", "{0}\u5DF2\u4FDD\u5B58"},
+        {"Set deferred", "\u8BBE\u7F6E\u5EF6\u8FDF\u7684{0}"},
+        {"Set", "\u8BBE\u7F6E{0}"},
+        {"Source file not found:", "\u627E\u4E0D\u5230\u6E90\u6587\u4EF6: {0}"},
         {"source line number and line", "{0,number,integer}    {1}"},
         {"source line number current line and line", "{0,number,integer} => {1}"},
-        {"sourcedebugextension", "SourceDebugExtension- {0}"},
-        {"Specify class and method", "\u6307\u5b9a\u7c7b\u548c\u65b9\u6cd5"},
-        {"Specify classes to redefine", "\u6307\u5b9a\u8981\u91cd\u65b0\u5b9a\u4e49\u7684\u7c7b"},
-        {"Specify file name for class", "\u6307\u5b9a\u7c7b {0} \u7684\u6587\u4ef6\u540d"},
+        {"sourcedebugextension", "SourceDebugExtension -- {0}"},
+        {"Specify class and method", "\u6307\u5B9A\u7C7B\u548C\u65B9\u6CD5"},
+        {"Specify classes to redefine", "\u6307\u5B9A\u8981\u91CD\u65B0\u5B9A\u4E49\u7684\u7C7B"},
+        {"Specify file name for class", "\u6307\u5B9A\u7C7B{0}\u7684\u6587\u4EF6\u540D"},
         {"stack frame dump with pc", "  [{0,number,integer}] {1}.{2} ({3}), pc = {4}"},
         {"stack frame dump", "  [{0,number,integer}] {1}.{2} ({3})"},
-        {"Step completed:", "\u5df2\u5b8c\u6210\u6b65\u9aa4\uff1a "},
-        {"Stopping due to deferred breakpoint errors.", "\u7531\u4e8e\u5ef6\u8fdf\u7684\u65ad\u70b9\u9519\u8bef\u800c\u505c\u6b62\u3002\n"},
-        {"subclass:", "\u5b50\u7c7b\uff1a {0}"},
-        {"subinterface:", "\u5b50\u63a5\u53e3\uff1a {0}"},
+        {"Step completed:", "\u5DF2\u5B8C\u6210\u7684\u6B65\u9AA4: "},
+        {"Stopping due to deferred breakpoint errors.", "\u7531\u4E8E\u5EF6\u8FDF\u65AD\u70B9\u9519\u8BEF\u800C\u505C\u6B62\u3002\n"},
+        {"subclass:", "\u5B50\u7C7B: {0}"},
+        {"subinterface:", "\u5B50\u63A5\u53E3: {0}"},
         {"tab", "\t{0}"},
-        {"Target VM failed to initialize.", "\u76ee\u6807 VM \u65e0\u6cd5\u521d\u59cb\u5316\u3002"},
-        {"The application exited", "\u5e94\u7528\u7a0b\u5e8f\u5df2\u9000\u51fa"},
-        {"The application has been disconnected", "\u5df2\u65ad\u5f00\u5e94\u7528\u7a0b\u5e8f\u7684\u8fde\u63a5"},
-        {"The gc command is no longer necessary.", "\u4e0d\u518d\u9700\u8981 'gc' \u547d\u4ee4\u3002\n" +
-"\u5982\u5e73\u5e38\u4e00\u6837\u5bf9\u6240\u6709\u5bf9\u8c61\u8fdb\u884c\u5783\u573e\u6536\u96c6\u3002\u4f7f\u7528 'enablegc' \u548c 'disablegc' \n" +
-"\u547d\u4ee4\u6765\u63a7\u5236\u5404\u4e2a\u5bf9\u8c61\u7684\u5783\u573e\u6536\u96c6\u3002"},
-        {"The load command is no longer supported.", "\u4e0d\u518d\u652f\u6301 \"load\" \u547d\u4ee4\u3002"},
-        {"The memory command is no longer supported.", "\u4e0d\u518d\u652f\u6301 \"memory\" \u547d\u4ee4\u3002"},
-        {"The VM does not use paths", "VM \u4e0d\u4f7f\u7528\u8def\u5f84"},
-        {"Thread is not running (no stack).", "\u7ebf\u7a0b\u672a\u8fd0\u884c\uff08\u65e0\u5806\u6808\uff09\u3002"},
-        {"Thread number not specified.", "\u672a\u6307\u5b9a\u7ebf\u7a0b\u53f7\u3002"},
+        {"Target VM failed to initialize.", "\u65E0\u6CD5\u521D\u59CB\u5316\u76EE\u6807 VM\u3002"},
+        {"The application exited", "\u5E94\u7528\u7A0B\u5E8F\u5DF2\u9000\u51FA"},
+        {"The application has been disconnected", "\u5E94\u7528\u7A0B\u5E8F\u5DF2\u65AD\u5F00\u8FDE\u63A5"},
+        {"The gc command is no longer necessary.", "\u4E0D\u518D\u9700\u8981 'gc' \u547D\u4EE4\u3002\n\u6240\u6709\u5BF9\u8C61\u5DF2\u7167\u5E38\u8FDB\u884C\u5783\u573E\u6536\u96C6\u3002\u8BF7\u4F7F\u7528 'enablegc' \u548C 'disablegc'\n\u547D\u4EE4\u6765\u63A7\u5236\u5404\u4E2A\u5BF9\u8C61\u7684\u5783\u573E\u6536\u96C6\u3002"},
+        {"The load command is no longer supported.", "\u4E0D\u518D\u652F\u6301 'load' \u547D\u4EE4\u3002"},
+        {"The memory command is no longer supported.", "\u4E0D\u518D\u652F\u6301 'memory' \u547D\u4EE4\u3002"},
+        {"The VM does not use paths", "VM \u4E0D\u4F7F\u7528\u8DEF\u5F84"},
+        {"Thread is not running (no stack).", "\u7EBF\u7A0B\u672A\u8FD0\u884C (\u6CA1\u6709\u5806\u6808)\u3002"},
+        {"Thread number not specified.", "\u672A\u6307\u5B9A\u7EBF\u7A0B\u7F16\u53F7\u3002"},
         {"Thread:", "{0}:"},
-        {"Thread Group:", "\u7ec4 {0}\uff1a"},
-        {"Thread description name unknownStatus BP",  "  {0} {1} \u672a\u77e5\uff08\u5728\u65ad\u70b9\u5904\uff09"},
-        {"Thread description name unknownStatus",     "  {0} {1} \u672a\u77e5"},
-        {"Thread description name zombieStatus BP",   "  {0} {1} \u5904\u4e8e\u50f5\u72b6\u6001\uff08\u5728\u65ad\u70b9\u5904\uff09"},
-        {"Thread description name zombieStatus",      "  {0} {1} \u5904\u4e8e\u50f5\u72b6\u6001"},
-        {"Thread description name runningStatus BP",  "  {0} {1} \u6b63\u5728\u8fd0\u884c\uff08\u5728\u65ad\u70b9\u5904\uff09"},
-        {"Thread description name runningStatus",     "  {0} {1} \u6b63\u5728\u8fd0\u884c"},
-        {"Thread description name sleepingStatus BP", "  {0} {1} \u6b63\u5728\u4f11\u7720\uff08\u5728\u65ad\u70b9\u5904\uff09"},
-        {"Thread description name sleepingStatus",    "  {0} {1} \u6b63\u5728\u4f11\u7720"},
-        {"Thread description name waitingStatus BP",  "  {0} {1} \u6b63\u5728\u76d1\u89c6\u5668\u4e2d\u7b49\u5f85\uff08\u5728\u65ad\u70b9\u5904\uff09"},
-        {"Thread description name waitingStatus",     "  {0} {1} \u6b63\u5728\u76d1\u89c6\u5668\u4e2d\u7b49\u5f85"},
-        {"Thread description name condWaitstatus BP", "  {0} {1} \u6761\u4ef6\u6b63\u5728\u7b49\u5f85\uff08\u5728\u65ad\u70b9\u5904\uff09"},
-        {"Thread description name condWaitstatus",    "  {0} {1} \u6761\u4ef6\u6b63\u5728\u7b49\u5f85"},
-        {"Thread has been resumed", "\u7ebf\u7a0b\u5df2\u6062\u590d"},
-        {"Thread not suspended", "\u7ebf\u7a0b\u672a\u6682\u505c"},
-        {"thread group number description name", "{0,number,integer}\u3002 {1} {2}"},
-        {"Threadgroup name not specified.", "\u672a\u6307\u5b9a\u7ebf\u7a0b\u7ec4\u540d\u79f0\u3002"},
-        {"Threads must be suspended", "\u5fc5\u987b\u6682\u505c\u7ebf\u7a0b"},
-        {"trace method exit in effect for", "\u5bf9 {0} \u6709\u6548\u8ddf\u8e2a\u65b9\u6cd5\u9000\u51fa"},
-        {"trace method exits in effect", "\u6709\u6548\u8ddf\u8e2a\u65b9\u6cd5\u9000\u51fa"},
-        {"trace methods in effect", "\u6709\u6548\u8ddf\u8e2a\u65b9\u6cd5"},
-        {"trace go method exit in effect for", "\u5bf9 {0} \u6709\u6548\u8ddf\u8e2a go \u65b9\u6cd5\u9000\u51fa"},
-        {"trace go method exits in effect", "\u6709\u6548\u8ddf\u8e2a go \u65b9\u6cd5\u9000\u51fa"},
-        {"trace go methods in effect", "\u6709\u6548\u8ddf\u8e2a go \u65b9\u6cd5"},
-        {"trace not in effect", "\u65e0\u6548\u8ddf\u8e2a"},
-        {"Unable to attach to target VM.", "\u65e0\u6cd5\u8fde\u63a5\u5230\u76ee\u6807 VM\u3002"},
-        {"Unable to display process output:", "\u65e0\u6cd5\u663e\u793a\u8fdb\u7a0b\u8f93\u51fa\uff1a {0}"},
-        {"Unable to launch target VM.", "\u65e0\u6cd5\u542f\u52a8\u76ee\u6807 VM\u3002"},
-        {"Unable to set deferred", "\u65e0\u6cd5\u8bbe\u7f6e\u5ef6\u8fdf\u7684 {0}\uff1a {1}"},
-        {"Unable to set main class and arguments", "\u65e0\u6cd5\u8bbe\u7f6e\u4e3b\u7c7b\u548c\u53c2\u6570"},
-        {"Unable to set", "\u65e0\u6cd5\u8bbe\u7f6e {0}\uff1a {1}"},
-        {"Unexpected event type", "\u610f\u5916\u7684\u4e8b\u4ef6\u7c7b\u578b: {0}"},
-        {"unknown", "\u672a\u77e5"},
-        {"Unmonitoring", "\u672a\u76d1\u89c6 {0} "},
-        {"Unrecognized command.  Try help...", "\u65e0\u6cd5\u8bc6\u522b\u7684\u547d\u4ee4\uff1a \"{0}\" \u3002  \u8bf7\u5c1d\u8bd5\u4f7f\u7528 help..."},
-        {"Usage: catch exception", "\u7528\u6cd5\uff1acatch [uncaught|caught|all] <\u7c7b ID>|<\u7c7b\u6a21\u5f0f>"},
-        {"Usage: ignore exception", "\u7528\u6cd5\uff1aignore [uncaught|caught|all] <\u7c7b ID>|<\u7c7b\u6a21\u5f0f>"},
-        {"Usage: down [n frames]", "\u7528\u6cd5\uff1adown [n \u5e27]"},
-        {"Usage: kill <thread id> <throwable>", "\u7528\u6cd5\uff1akill <\u7ebf\u7a0bID> <throwable>"},
-        {"Usage: read <command-filename>", "\u7528\u6cd5\uff1aread <\u547d\u4ee4\u6587\u4ef6\u540d>"},
-        {"Usage: unmonitor <monitor#>", "\u7528\u6cd5\uff1aunmonitor <\u76d1\u89c6\u5668\u53f7>"},
-        {"Usage: up [n frames]", "\u7528\u6cd5\uff1aup [n \u5e27]"},
-        {"Use java minus X to see", "\u4f7f\u7528 \"java -X\" \u53ef\u4ee5\u67e5\u770b\u53ef\u7528\u7684\u975e\u6807\u51c6\u9009\u9879"},
-        {"Use stop at to set a breakpoint at a line number", "\u4f7f\u7528 \"stop at\" \u53ef\u4ee5\u5728\u67d0\u4e2a\u884c\u53f7\u5904\u8bbe\u7f6e\u65ad\u70b9"},
-        {"VM already running. use cont to continue after events.", "VM \u5df2\u8fd0\u884c\u3002\u4f7f\u7528 \"cont\" \u53ef\u4ee5\u5728\u4e8b\u4ef6\u540e\u7ee7\u7eed\u3002"},
-        {"VM Started:", "VM \u5df2\u542f\u52a8\uff1a "},
-        {"vmstartexception", "VM \u542f\u52a8\u5f02\u5e38\uff1a {0}"},
-        {"Waiting for monitor:", "   \u6b63\u5728\u7b49\u5f85\u76d1\u89c6\u5668\uff1a {0}"},
-        {"Waiting thread:", " \u6b63\u5728\u7b49\u5f85\u7ebf\u7a0b\uff1a {0}"},
-        {"watch accesses of", "\u76d1\u89c6 {0}.{1} \u7684\u8bbf\u95ee"},
-        {"watch modification of", "\u76d1\u89c6 {0}.{1} \u7684\u4fee\u6539"},
+        {"Thread Group:", "\u7EC4{0}:"},
+        {"Thread description name unknownStatus BP",  "  {0} {1}\u672A\u77E5 (\u5728\u65AD\u70B9\u5904)"},
+        {"Thread description name unknownStatus",     "  {0} {1}\u672A\u77E5"},
+        {"Thread description name zombieStatus BP",   "  {0} {1}\u5904\u4E8E\u50F5\u6B7B\u72B6\u6001 (\u5728\u65AD\u70B9\u5904)"},
+        {"Thread description name zombieStatus",      "  {0} {1}\u5904\u4E8E\u50F5\u6B7B\u72B6\u6001"},
+        {"Thread description name runningStatus BP",  "  {0} {1}\u6B63\u5728\u8FD0\u884C (\u5728\u65AD\u70B9\u5904)"},
+        {"Thread description name runningStatus",     "  {0} {1}\u6B63\u5728\u8FD0\u884C"},
+        {"Thread description name sleepingStatus BP", "  {0} {1}\u6B63\u5728\u4F11\u7720 (\u5728\u65AD\u70B9\u5904)"},
+        {"Thread description name sleepingStatus",    "  {0} {1}\u6B63\u5728\u4F11\u7720"},
+        {"Thread description name waitingStatus BP",  "  {0} {1}\u6B63\u5728\u7B49\u5F85\u76D1\u89C6\u5668 (\u5728\u65AD\u70B9\u5904)"},
+        {"Thread description name waitingStatus",     "  {0} {1}\u6B63\u5728\u7B49\u5F85\u76D1\u89C6\u5668"},
+        {"Thread description name condWaitstatus BP", "  {0} {1}\u6B63\u5728\u6267\u884C\u6761\u4EF6\u7B49\u5F85 (\u5728\u65AD\u70B9\u5904)"},
+        {"Thread description name condWaitstatus",    "  {0} {1}\u6B63\u5728\u6267\u884C\u6761\u4EF6\u7B49\u5F85"},
+        {"Thread has been resumed", "\u5DF2\u6062\u590D\u7EBF\u7A0B"},
+        {"Thread not suspended", "\u672A\u6302\u8D77\u7EBF\u7A0B"},
+        {"thread group number description name", "{0,number,integer}\u3002{1} {2}"},
+        {"Threadgroup name not specified.", "\u672A\u6307\u5B9A\u7EBF\u7A0B\u7EC4\u540D\u3002"},
+        {"Threads must be suspended", "\u5FC5\u987B\u6302\u8D77\u7EBF\u7A0B"},
+        {"trace method exit in effect for", "\u6B63\u5728\u5BF9{0}\u5B9E\u884C trace method exit"},
+        {"trace method exits in effect", "\u6B63\u5728\u5B9E\u884C trace method exits"},
+        {"trace methods in effect", "\u6B63\u5728\u5B9E\u884C trace methods"},
+        {"trace go method exit in effect for", "\u6B63\u5728\u5BF9{0}\u5B9E\u884C trace go method exit"},
+        {"trace go method exits in effect", "\u6B63\u5728\u5B9E\u884C trace go method exits"},
+        {"trace go methods in effect", "\u6B63\u5728\u5B9E\u884C trace go methods"},
+        {"trace not in effect", "\u672A\u5B9E\u884C trace"},
+        {"Unable to attach to target VM.", "\u65E0\u6CD5\u9644\u52A0\u5230\u76EE\u6807 VM\u3002"},
+        {"Unable to display process output:", "\u65E0\u6CD5\u663E\u793A\u8FDB\u7A0B\u8F93\u51FA: {0}"},
+        {"Unable to launch target VM.", "\u65E0\u6CD5\u542F\u52A8\u76EE\u6807 VM\u3002"},
+        {"Unable to set deferred", "\u65E0\u6CD5\u8BBE\u7F6E\u5EF6\u8FDF\u7684{0}: {1}"},
+        {"Unable to set main class and arguments", "\u65E0\u6CD5\u8BBE\u7F6E\u4E3B\u7C7B\u548C\u53C2\u6570"},
+        {"Unable to set", "\u65E0\u6CD5\u8BBE\u7F6E{0}: {1}"},
+        {"Unexpected event type", "\u610F\u5916\u7684\u4E8B\u4EF6\u7C7B\u578B: {0}"},
+        {"unknown", "\u672A\u77E5"},
+        {"Unmonitoring", "\u53D6\u6D88\u76D1\u89C6{0} "},
+        {"Unrecognized command.  Try help...", "\u65E0\u6CD5\u8BC6\u522B\u7684\u547D\u4EE4: ''{0}''\u3002\u8BF7\u5C1D\u8BD5\u83B7\u5F97\u5E2E\u52A9..."},
+        {"Usage: catch exception", "\u7528\u6CD5: catch [uncaught|caught|all] <class id>|<class pattern>"},
+        {"Usage: ignore exception", "\u7528\u6CD5: ignore [uncaught|caught|all] <class id>|<class pattern>"},
+        {"Usage: down [n frames]", "\u7528\u6CD5: down [n frames]"},
+        {"Usage: kill <thread id> <throwable>", "\u7528\u6CD5: kill <thread id> <throwable>"},
+        {"Usage: read <command-filename>", "\u7528\u6CD5: read <command-filename>"},
+        {"Usage: unmonitor <monitor#>", "\u7528\u6CD5: unmonitor <monitor#>"},
+        {"Usage: up [n frames]", "\u7528\u6CD5: up [n frames]"},
+        {"Use java minus X to see", "\u4F7F\u7528 'java -X' \u53EF\u4EE5\u67E5\u770B\u53EF\u7528\u7684\u975E\u6807\u51C6\u9009\u9879"},
+        {"Use stop at to set a breakpoint at a line number", "\u4F7F\u7528 'stop at' \u53EF\u4EE5\u5728\u884C\u53F7\u5904\u8BBE\u7F6E\u65AD\u70B9"},
+        {"VM already running. use cont to continue after events.", "VM \u5DF2\u5728\u8FD0\u884C\u3002\u8BF7\u4F7F\u7528 'cont' \u4EE5\u5728\u4E8B\u4EF6\u7ED3\u675F\u540E\u7EE7\u7EED\u3002"},
+        {"VM Started:", "VM \u5DF2\u542F\u52A8: "},
+        {"vmstartexception", "VM \u542F\u52A8\u5F02\u5E38\u9519\u8BEF: {0}"},
+        {"Waiting for monitor:", "   \u6B63\u5728\u7B49\u5F85\u76D1\u89C6\u5668: {0}"},
+        {"Waiting thread:", " \u6B63\u5728\u7B49\u5F85\u7EBF\u7A0B: {0}"},
+        {"watch accesses of", "\u76D1\u89C6{0}.{1}\u7684\u8BBF\u95EE"},
+        {"watch modification of", "\u76D1\u89C6{0}.{1}\u7684\u4FEE\u6539"},
         {"zz help text",
-"** \u547d\u4ee4\u5217\u8868 **\n" +
-"connectors                -- \u5217\u51fa\u6b64 VM \u4e2d\u53ef\u7528\u7684\u8fde\u63a5\u5668\u548c\u4f20\u8f93\u5668\n" +
-             "\n" +
-"run [\u7c7b [\u53c2\u6570]]        -- \u5f00\u59cb\u6267\u884c\u5e94\u7528\u7a0b\u5e8f\u7684\u4e3b\u7c7b\n" +
-             "\n" +
-"threads [\u7ebf\u7a0b\u7ec4]     -- \u5217\u51fa\u7ebf\u7a0b\n" +
-"thread <\u7ebf\u7a0b ID>        -- \u8bbe\u7f6e\u9ed8\u8ba4\u7ebf\u7a0b\n" +
-"suspend [\u7ebf\u7a0b ID]    -- \u6682\u505c\u7ebf\u7a0b\uff08\u9ed8\u8ba4\u503c\u4e3a all\uff09\n" +
-"resume [\u7ebf\u7a0b ID]     -- \u6062\u590d\u7ebf\u7a0b\uff08\u9ed8\u8ba4\u503c\u4e3a all\uff09\n" +
-"where [<\u7ebf\u7a0b ID> | all] -- \u8f6c\u50a8\u7ebf\u7a0b\u7684\u5806\u6808\n" +
-"wherei [<\u7ebf\u7a0b ID> | all] -- \u8f6c\u50a8\u7ebf\u7a0b\u7684\u5806\u6808\u4ee5\u53ca pc \u4fe1\u606f\n" +
-"up [n \u5e27]             -- \u5411\u4e0a\u79fb\u52a8\u7ebf\u7a0b\u7684\u5806\u6808\n" +
-"down [n \u5e27]           -- \u5411\u4e0b\u79fb\u52a8\u7ebf\u7a0b\u7684\u5806\u6808\n" +
-"kill <\u7ebf\u7a0b ID> <\u8868\u8fbe\u5f0f>   -- \u4e2d\u6b62\u5177\u6709\u7ed9\u5b9a\u7684\u5f02\u5e38\u5bf9\u8c61\u7684\u7ebf\u7a0b\n" +
-"interrupt <\u7ebf\u7a0b ID>     -- \u4e2d\u65ad\u7ebf\u7a0b\n" +
-             "\n" +
-"print <\u8868\u8fbe\u5f0f>              -- \u8f93\u51fa\u8868\u8fbe\u5f0f\u7684\u503c\n" +
-"dump <\u8868\u8fbe\u5f0f>               -- \u8f93\u51fa\u6240\u6709\u5bf9\u8c61\u4fe1\u606f\n" +
-"eval <\u8868\u8fbe\u5f0f>               -- \u8ba1\u7b97\u8868\u8fbe\u5f0f\u7684\u503c\uff08\u4e0e print \u4f5c\u7528\u76f8\u540c\uff09\n" +
-"set <lvalue> = <\u8868\u8fbe\u5f0f>     -- \u4e3a\u5b57\u6bb5/\u53d8\u91cf/\u6570\u7ec4\u5143\u7d20\u6307\u5b9a\u65b0\u503c\n" +
-"locals                    -- \u8f93\u51fa\u5f53\u524d\u5806\u6808\u5e27\u4e2d\u7684\u6240\u6709\u672c\u5730\u53d8\u91cf\n" +
-             "\n" +
-"classes                   -- \u5217\u51fa\u5f53\u524d\u5df2\u77e5\u7684\u7c7b\n" +
-"class <\u7c7b ID>          -- \u663e\u793a\u5df2\u547d\u540d\u7c7b\u7684\u8be6\u7ec6\u4fe1\u606f\n" +
-"methods <\u7c7b ID>        -- \u5217\u51fa\u7c7b\u7684\u65b9\u6cd5\n" +
-"fields <\u7c7b ID>         -- \u5217\u51fa\u7c7b\u7684\u5b57\u6bb5\n" +
-             "\n" +
-"threadgroups              -- \u5217\u51fa\u7ebf\u7a0b\u7ec4\n" +
-"threadgroup <\u540d\u79f0>        -- \u8bbe\u7f6e\u5f53\u524d\u7ebf\u7a0b\u7ec4\n" +
-             "\n" +
-"stop in <\u7c7b ID>.<\u65b9\u6cd5>[(\u53c2\u6570\u7c7b\u578b,...)]\n" +
-"                          -- \u5728\u65b9\u6cd5\u4e2d\u8bbe\u7f6e\u65ad\u70b9\n" +
-"stop at <\u7c7b ID>:<\u884c> -- \u5728\u884c\u4e2d\u8bbe\u7f6e\u65ad\u70b9\n" +
-"clear <\u7c7b ID>.<\u65b9\u6cd5>[(\u53c2\u6570\u7c7b\u578b,...)]\n" +
-"                          -- \u6e05\u9664\u65b9\u6cd5\u4e2d\u7684\u65ad\u70b9\n" +
-"clear <\u7c7b ID>:<\u884c>   -- \u6e05\u9664\u884c\u4e2d\u7684\u65ad\u70b9\n" +
-"clear                     -- \u5217\u51fa\u65ad\u70b9\n" +
-"catch [uncaught|caught|all] <\u7c7b ID>|<\u7c7b\u6a21\u5f0f>\n" +
-"                          -- \u51fa\u73b0\u6307\u5b9a\u7684\u5f02\u5e38\u65f6\u4e2d\u65ad\n" +
-"ignore [uncaught|caught|all] <\u7c7b ID>|<\u7c7b\u6a21\u5f0f>\n" +
-"                          -- \u5bf9\u4e8e\u6307\u5b9a\u7684\u5f02\u5e38\uff0c\u53d6\u6d88 'catch'\n" +
-"watch [access|all] <\u7c7b ID>.<\u5b57\u6bb5\u540d>\n" +
-"                          -- \u76d1\u89c6\u5bf9\u5b57\u6bb5\u7684\u8bbf\u95ee/\u4fee\u6539\n" +
-"unwatch [access|all] <\u7c7b ID>.<\u5b57\u6bb5\u540d>\n" +
-"                          -- \u505c\u6b62\u76d1\u89c6\u5bf9\u5b57\u6bb5\u7684\u8bbf\u95ee/\u4fee\u6539\n" +
-"trace [go] methods [thread]\n" +
-"                          -- \u8ddf\u8e2a\u65b9\u6cd5\u7684\u8fdb\u5165\u548c\u9000\u51fa\u3002\n" +
-"                          -- \u9664\u975e\u6307\u5b9a 'go'\uff0c\u5426\u5219\u6240\u6709\u7ebf\u7a0b\u90fd\u5c06\u6682\u505c\n" +
-"trace [go] method exit | exits [thread]\n" +
-"                          -- \u8ddf\u8e2a\u5f53\u524d\u65b9\u6cd5\u7684\u9000\u51fa\u6216\u6240\u6709\u65b9\u6cd5\u7684\u9000\u51fa\n" +
-"                          -- \u9664\u975e\u6307\u5b9a 'go'\uff0c\u5426\u5219\u6240\u6709\u7ebf\u7a0b\u90fd\u5c06\u6682\u505c\n" +
-"untrace [\u65b9\u6cd5]         -- \u505c\u6b62\u8ddf\u8e2a\u65b9\u6cd5\u7684\u8fdb\u5165\u548c/\u6216\u9000\u51fa\n" +
-"step                      -- \u6267\u884c\u5f53\u524d\u884c\n" +
-"step up                   -- \u6267\u884c\u5230\u5f53\u524d\u65b9\u6cd5\u8fd4\u56de\u5176\u8c03\u7528\u65b9\n" +
-"stepi                     -- \u6267\u884c\u5f53\u524d\u6307\u4ee4\n" +
-"next                      -- \u8df3\u8fc7\u4e00\u884c\uff08\u8de8\u8fc7\u8c03\u7528\uff09\n" +
-"cont                      -- \u4ece\u65ad\u70b9\u5904\u7ee7\u7eed\u6267\u884c\n" +
-             "\n" +
-"list [line number|method] -- \u8f93\u51fa\u6e90\u4ee3\u7801\n" +
-"use\uff08\u6216 sourcepath\uff09[\u6e90\u6587\u4ef6\u8def\u5f84]\n" +
-"                          -- \u663e\u793a\u6216\u66f4\u6539\u6e90\u8def\u5f84\n" +
-"exclude [<\u7c7b\u6a21\u5f0f>, ...|\u201c\u65e0\u201d]\n" +
-"                          -- \u4e0d\u62a5\u544a\u6307\u5b9a\u7c7b\u7684\u6b65\u9aa4\u6216\u65b9\u6cd5\u4e8b\u4ef6\n" +
-"classpath                 -- \u4ece\u76ee\u6807 VM \u8f93\u51fa\u7c7b\u8def\u5f84\u4fe1\u606f\n" +
-             "\n" +
-"monitor <\u547d\u4ee4>         -- \u6bcf\u6b21\u7a0b\u5e8f\u505c\u6b62\u65f6\u6267\u884c\u547d\u4ee4\n" +
-"monitor                   -- \u5217\u51fa\u76d1\u89c6\u5668\n" +
-"unmonitor <\u76d1\u89c6\u5668\u53f7>      -- \u5220\u9664\u67d0\u4e2a\u76d1\u89c6\u5668\n" +
-"read <\u6587\u4ef6\u540d>           -- \u8bfb\u53d6\u5e76\u6267\u884c\u67d0\u4e2a\u547d\u4ee4\u6587\u4ef6\n" +
-             "\n" +
-"lock <\u8868\u8fbe\u5f0f>               -- \u8f93\u51fa\u5bf9\u8c61\u7684\u9501\u4fe1\u606f\n" +
-"threadlocks [\u7ebf\u7a0b ID]   -- \u8f93\u51fa\u7ebf\u7a0b\u7684\u9501\u4fe1\u606f\n" +
-             "\n" +
-"pop                       -- \u5f39\u51fa\u6574\u4e2a\u5806\u6808\uff0c\u4e14\u5305\u542b\u5f53\u524d\u5e27\n" +
-"reenter                   -- \u4e0e pop \u4f5c\u7528\u76f8\u540c\uff0c\u4f46\u91cd\u65b0\u8fdb\u5165\u5f53\u524d\u5e27\n" +
-"redefine <\u7c7b ID> <\u7c7b\u6587\u4ef6\u540d>\n" +
-"                          -- \u91cd\u65b0\u5b9a\u4e49\u7c7b\u4ee3\u7801\n" +
-             "\n" +
-"disablegc <\u8868\u8fbe\u5f0f>          -- \u7981\u6b62\u5bf9\u8c61\u7684\u5783\u573e\u56de\u6536\n" +
-"enablegc <\u8868\u8fbe\u5f0f>           -- \u5141\u8bb8\u5bf9\u8c61\u7684\u5783\u573e\u56de\u6536\n" +
-             "\n" +
-"!!                        -- \u91cd\u590d\u6267\u884c\u6700\u540e\u4e00\u4e2a\u547d\u4ee4\n" +
-"<n> <\u547d\u4ee4>             -- \u5c06\u547d\u4ee4\u91cd\u590d\u6267\u884c n \u6b21\n" +
-"# <\u547d\u4ee4>               -- \u653e\u5f03\uff08\u4e0d\u6267\u884c\uff09\n" +
-"help\uff08\u6216 ?\uff09               -- \u5217\u51fa\u547d\u4ee4\n" +
-"version                   -- \u8f93\u51fa\u7248\u672c\u4fe1\u606f\n" +
-"exit\uff08\u6216 quit\uff09            -- \u9000\u51fa\u8c03\u8bd5\u5668\n" +
-             "\n" +
-"<\u7c7b ID>: \u5e26\u6709\u8f6f\u4ef6\u5305\u9650\u5b9a\u7b26\u7684\u5b8c\u6574\u7c7b\u540d\n" +
-"<\u7c7b\u6a21\u5f0f>: \u5e26\u6709\u524d\u5bfc\u6216\u540e\u7f00\u901a\u914d\u7b26 (*) \u7684\u7c7b\u540d\n" +
-"<\u7ebf\u7a0b ID>: 'threads' \u547d\u4ee4\u4e2d\u6240\u62a5\u544a\u7684\u7ebf\u7a0b\u53f7\n" +
-"<\u8868\u8fbe\u5f0f>: Java(TM) \u7f16\u7a0b\u8bed\u8a00\u8868\u8fbe\u5f0f\u3002\n" +
-"\u652f\u6301\u5927\u591a\u6570\u5e38\u89c1\u8bed\u6cd5\u3002\n" +
-             "\n" +
-"\u53ef\u4ee5\u5c06\u542f\u52a8\u547d\u4ee4\u7f6e\u4e8e \"jdb.ini\" \u6216 \".jdbrc\" \u4e4b\u4e2d\n" +
-"\uff08\u4e24\u8005\u4f4d\u4e8e user.home \u6216 user.dir \u4e2d\uff09"},
+             "** \u547D\u4EE4\u5217\u8868 **\nconnectors                -- \u5217\u51FA\u6B64 VM \u4E2D\u53EF\u7528\u7684\u8FDE\u63A5\u5668\u548C\u4F20\u8F93\n\nrun [class [args]]        -- \u5F00\u59CB\u6267\u884C\u5E94\u7528\u7A0B\u5E8F\u7684\u4E3B\u7C7B\n\nthreads [threadgroup]     -- \u5217\u51FA\u7EBF\u7A0B\nthread <thread id>        -- \u8BBE\u7F6E\u9ED8\u8BA4\u7EBF\u7A0B\nsuspend [thread id(s)]    -- \u6302\u8D77\u7EBF\u7A0B (\u9ED8\u8BA4\u503C: all)\nresume [thread id(s)]     -- \u6062\u590D\u7EBF\u7A0B (\u9ED8\u8BA4\u503C: all)\nwhere [<thread id> | all] -- \u8F6C\u50A8\u7EBF\u7A0B\u7684\u5806\u6808\nwherei [<thread id> | all]-- \u8F6C\u50A8\u7EBF\u7A0B\u7684\u5806\u6808, \u4EE5\u53CA pc \u4FE1\u606F\nup [n frames]             -- \u4E0A\u79FB\u7EBF\u7A0B\u7684\u5806\u6808\ndown [n frames]           -- \u4E0B\u79FB\u7EBF\u7A0B\u7684\u5806\u6808\nkill <thread id> <expr>   -- \u7EC8\u6B62\u5177\u6709\u7ED9\u5B9A\u7684\u5F02\u5E38\u9519\u8BEF\u5BF9\u8C61\u7684\u7EBF\u7A0B\ninterrupt <thread id>     -- \u4E2D\u65AD\u7EBF\u7A0B\n\nprint <expr>              -- \u8F93\u51FA\u8868\u8FBE\u5F0F\u7684\u503C\ndump <expr>               -- \u8F93\u51FA\u6240\u6709\u5BF9\u8C61\u4FE1\u606F\neval <expr>               -- \u5BF9\u8868\u8FBE\u5F0F\u6C42\u503C (\u4E0E print \u76F8\u540C)\nset <lvalue> = <expr>     -- \u5411\u5B57\u6BB5/\u53D8\u91CF/\u6570\u7EC4\u5143\u7D20\u5206\u914D\u65B0\u503C\nlocals                    -- \u8F93\u51FA\u5F53\u524D\u5806\u6808\u5E27\u4E2D\u7684\u6240\u6709\u672C\u5730\u53D8\u91CF\n\nclasses                   -- \u5217\u51FA\u5F53\u524D\u5DF2\u77E5\u7684\u7C7B\nclass <class id>          -- \u663E\u793A\u5DF2\u547D\u540D\u7C7B\u7684\u8BE6\u7EC6\u8D44\u6599\nmethods <class id>        -- \u5217\u51FA\u7C7B\u7684\u65B9\u6CD5\nfields <class id>         -- \u5217\u51FA\u7C7B\u7684\u5B57\u6BB5\n\nthreadgroups              -- \u5217\u51FA\u7EBF\u7A0B\u7EC4\nthreadgroup <name>        -- \u8BBE\u7F6E\u5F53\u524D\u7EBF\u7A0B\u7EC4\n\nstop in <class id>.<method>[(argument_type,...)]\n                          -- \u5728\u65B9\u6CD5\u4E2D\u8BBE\u7F6E\u65AD\u70B9\nstop at <class id>:<line> -- \u5728\u884C\u4E2D\u8BBE\u7F6E\u65AD\u70B9\nclear <class id>.<method>[(argument_type,...)]\n                          -- \u6E05\u9664\u65B9\u6CD5\u4E2D\u7684\u65AD\u70B9\nclear <class id>:<line>   -- \u6E05\u9664\u884C\u4E2D\u7684\u65AD\u70B9\nclear                     -- \u5217\u51FA\u65AD\u70B9\ncatch [uncaught|caught|all] <class id>|<class pattern>\n                          -- \u51FA\u73B0\u6307\u5B9A\u7684\u5F02\u5E38\u9519\u8BEF\u65F6\u4E2D\u65AD\nignore [uncaught|caught|all] <class id>|<class pattern>\n                          -- \u5BF9\u4E8E\u6307\u5B9A\u7684\u5F02\u5E38\u9519\u8BEF, \u53D6\u6D88 'catch'\nwatch [access|all] <class id>.<field name>\n                          -- \u76D1\u89C6\u5BF9\u5B57\u6BB5\u7684\u8BBF\u95EE/\u4FEE\u6539\nunwatch [access|all] <class id>.<field name>\n                          -- \u505C\u6B62\u76D1\u89C6\u5BF9\u5B57\u6BB5\u7684\u8BBF\u95EE/\u4FEE\u6539\ntrace [go] methods [thread]\n                          -- \u8DDF\u8E2A\u65B9\u6CD5\u8FDB\u5165\u548C\u9000\u51FA\u3002\n                          -- \u9664\u975E\u6307\u5B9A 'go', \u5426\u5219\u6302\u8D77\u6240\u6709\u7EBF\u7A0B\ntrace [go] method exit | exits [thread]\n                          -- \u8DDF\u8E2A\u5F53\u524D\u65B9\u6CD5\u7684\u9000\u51FA, \u6216\u8005\u6240\u6709\u65B9\u6CD5\u7684\u9000\u51FA\n                          -- \u9664\u975E\u6307\u5B9A 'go', \u5426\u5219\u6302\u8D77\u6240\u6709\u7EBF\u7A0B\nuntrace [methods]         -- \u505C\u6B62\u8DDF\u8E2A\u65B9\u6CD5\u8FDB\u5165\u548C/\u6216\u9000\u51FA\nstep                      -- \u6267\u884C\u5F53\u524D\u884C\nstep up                   -- \u4E00\u76F4\u6267\u884C, \u76F4\u5230\u5F53\u524D\u65B9\u6CD5\u8FD4\u56DE\u5230\u5176\u8C03\u7528\u65B9\nstepi                     -- \u6267\u884C\u5F53\u524D\u6307\u4EE4\nnext                      -- \u6B65\u8FDB\u4E00\u884C (\u6B65\u8FC7\u8C03\u7528)\ncont                      -- \u4ECE\u65AD\u70B9\u5904\u7EE7\u7EED\u6267\u884C\n\nlist [line number|method] -- \u8F93\u51FA\u6E90\u4EE3\u7801\nuse (\u6216 sourcepath) [source file path]\n                          -- \u663E\u793A\u6216\u66F4\u6539\u6E90\u8DEF\u5F84\nexclude [<class pattern>, ... | \"none\"]\n                          -- \u5BF9\u4E8E\u6307\u5B9A\u7684\u7C7B, \u4E0D\u62A5\u544A\u6B65\u9AA4\u6216\u65B9\u6CD5\u4E8B\u4EF6\nclasspath                 -- \u4ECE\u76EE\u6807 VM \u8F93\u51FA\u7C7B\u8DEF\u5F84\u4FE1\u606F\n\nmonitor <command>         -- \u6BCF\u6B21\u7A0B\u5E8F\u505C\u6B62\u65F6\u6267\u884C\u547D\u4EE4\nmonitor                   -- \u5217\u51FA\u76D1\u89C6\u5668\nunmonitor <monitor#>      -- \u5220\u9664\u76D1\u89C6\u5668\nread <filename>           -- \u8BFB\u53D6\u5E76\u6267\u884C\u547D\u4EE4\u6587\u4EF6\n\nlock <expr>               -- \u8F93\u51FA\u5BF9\u8C61\u7684\u9501\u4FE1\u606F\nthreadlocks [thread id]   -- \u8F93\u51FA\u7EBF\u7A0B\u7684\u9501\u4FE1\u606F\n\npop                       -- \u901A\u8FC7\u5F53\u524D\u5E27\u51FA\u6808, \u4E14\u5305\u542B\u5F53\u524D\u5E27\nreenter                   -- \u4E0E pop \u76F8\u540C, \u4F46\u91CD\u65B0\u8FDB\u5165\u5F53\u524D\u5E27\nredefine <class id> <class file name>\n                          -- \u91CD\u65B0\u5B9A\u4E49\u7C7B\u7684\u4EE3\u7801\n\ndisablegc <expr>          -- \u7981\u6B62\u5BF9\u8C61\u7684\u5783\u573E\u6536\u96C6\nenablegc <expr>           -- \u5141\u8BB8\u5BF9\u8C61\u7684\u5783\u573E\u6536\u96C6\n\n!!                        -- \u91CD\u590D\u6267\u884C\u6700\u540E\u4E00\u4E2A\u547D\u4EE4\n<n> <command>             -- \u5C06\u547D\u4EE4\u91CD\u590D\u6267\u884C n \u6B21\n# <command>               -- \u653E\u5F03 (\u65E0\u64CD\u4F5C)\nhelp (\u6216 ?)               -- \u5217\u51FA\u547D\u4EE4\nversion                   -- \u8F93\u51FA\u7248\u672C\u4FE1\u606F\nexit (\u6216 quit)            -- \u9000\u51FA\u8C03\u8BD5\u5668\n\n<class id>: \u5E26\u6709\u7A0B\u5E8F\u5305\u9650\u5B9A\u7B26\u7684\u5B8C\u6574\u7C7B\u540D\n<class pattern>: \u5E26\u6709\u524D\u5BFC\u6216\u5C3E\u968F\u901A\u914D\u7B26 ('*') \u7684\u7C7B\u540D\n<thread id>: 'threads' \u547D\u4EE4\u4E2D\u62A5\u544A\u7684\u7EBF\u7A0B\u7F16\u53F7\n<expr>: Java(TM) \u7F16\u7A0B\u8BED\u8A00\u8868\u8FBE\u5F0F\u3002\n\u652F\u6301\u5927\u591A\u6570\u5E38\u89C1\u8BED\u6CD5\u3002\n\n\u53EF\u4EE5\u5C06\u542F\u52A8\u547D\u4EE4\u7F6E\u4E8E \"jdb.ini\" \u6216 \".jdbrc\" \u4E2D\n\u4F4D\u4E8E user.home \u6216 user.dir \u4E2D"},
         {"zz usage text",
-"\u7528\u6cd5:{0} <\u9009\u9879> <\u7c7b> <\u53c2\u6570>\n" +
-             "\n" +
-"\u5176\u4e2d\u9009\u9879\u5305\u62ec:\n" +
-"    -help             \u8f93\u51fa\u6b64\u6d88\u606f\u5e76\u9000\u51fa\n" +
-"    -sourcepath <\u4ee5 \"{1}\" \u5206\u9694\u7684\u76ee\u5f55>\n" +
-"                      \u5728\u5176\u4e2d\u67e5\u627e\u6e90\u6587\u4ef6\u7684\u76ee\u5f55\n" +
-"    -attach <\u5730\u5740>\n" +
-"                      \u4f7f\u7528\u6807\u51c6\u8fde\u63a5\u5668\u8fde\u63a5\u5230\u6b63\u5728\u6307\u5b9a\u5730\u5740\u8fd0\u884c\u7684 VM\n" +
-"    -listen <\u5730\u5740>\n" +
-"                      \u7b49\u5f85\u6b63\u5728\u6307\u5b9a\u5730\u5740\u8fd0\u884c\u7684 VM \u4f7f\u7528\u6807\u51c6\u8fde\u63a5\u5668\u8fdb\u884c\u8fde\u63a5\n" +
-"    -listenany\n" +
-"                      \u7b49\u5f85\u6b63\u5728\u4efb\u610f\u53ef\u7528\u5730\u5740\u8fd0\u884c\u7684 VM \u4f7f\u7528\u6807\u51c6\u8fde\u63a5\u5668\u8fdb\u884c\u8fde\u63a5\n" +
-"    -launch\n" +
-"                      \u7acb\u5373\u542f\u52a8 VM\uff0c\u800c\u4e0d\u7b49\u5f85 ''run'' \u547d\u4ee4\n" +
-"    -listconnectors   \u5217\u51fa\u6b64 VM \u4e2d\u53ef\u7528\u7684\u8fde\u63a5\u5668\n" +
-"    -connect <\u8fde\u63a5\u5668\u540d\u79f0>:<\u540d\u79f0 1>=<\u503c 1>,...\n" +
-"                      \u4f7f\u7528\u547d\u540d\u7684\u8fde\u63a5\u5668\u548c\u5217\u51fa\u7684\u53c2\u6570\u503c\u8fde\u63a5\u5230\u76ee\u6807 VM\n" +
-"    -dbgtrace [\u6807\u5fd7] \u8f93\u51fa\u7528\u4e8e\u8c03\u8bd5 {0} \u7684\u4fe1\u606f\n" +
-"    -tclient          \u5728 Hotspot(TM) Performance Engine\uff08\u5ba2\u6237\u673a\uff09\u4e2d\u8fd0\u884c\u5e94\u7528\u7a0b\u5e8f\n" +
-"    -tserver          \u5728 Hotspot(TM) Performance Engine\uff08\u670d\u52a1\u5668\uff09\u4e2d\u8fd0\u884c\u5e94\u7528\u7a0b\u5e8f\n" +
-             "\n" +
-"\u8f6c\u53d1\u7ed9\u88ab\u8c03\u8bd5\u8fdb\u7a0b\u7684\u9009\u9879:\n" +
-"    -v -verbose[:class|gc|jni]\n" +
-"                      \u542f\u7528\u8be6\u7ec6\u6a21\u5f0f\n" +
-"    -D<\u540d\u79f0>=<\u503c>  \u8bbe\u7f6e\u7cfb\u7edf\u5c5e\u6027\n" +
-"    -classpath <\u4ee5 \"{1}\" \u5206\u9694\u7684\u76ee\u5f55>\n" +
-"                      \u5217\u51fa\u8981\u5728\u5176\u4e2d\u67e5\u627e\u7c7b\u7684\u76ee\u5f55\n" +
-"    -X<\u9009\u9879>        \u975e\u6807\u51c6\u76ee\u6807 VM \u9009\u9879\n" +
-             "\n" +
-"<\u7c7b> \u662f\u8981\u5f00\u59cb\u8c03\u8bd5\u7684\u7c7b\u7684\u540d\u79f0\n" +
-"<\u53c2\u6570> \u662f\u4f20\u9012\u7ed9 <\u7c7b> \u7684 main() \u65b9\u6cd5\u7684\u53c2\u6570\n" +
-             "\n" +
-"\u8981\u83b7\u5f97\u547d\u4ee4\u5e2e\u52a9\uff0c\u8bf7\u5728 {0} \u63d0\u793a\u7b26\u4e0b\u952e\u5165 ''help''"},
+             "\u7528\u6CD5: {0} <options> <class> <arguments>\n\n\u5176\u4E2D, \u9009\u9879\u5305\u62EC:\n    -help             \u8F93\u51FA\u6B64\u6D88\u606F\u5E76\u9000\u51FA\n    -sourcepath <\u7531 \"{1}\" \u5206\u9694\u7684\u76EE\u5F55>\n                      \u8981\u5728\u5176\u4E2D\u67E5\u627E\u6E90\u6587\u4EF6\u7684\u76EE\u5F55\n    -attach <address>\n                      \u4F7F\u7528\u6807\u51C6\u8FDE\u63A5\u5668\u9644\u52A0\u5230\u6307\u5B9A\u5730\u5740\u5904\u6B63\u5728\u8FD0\u884C\u7684 VM\n    -listen <address>\n                      \u7B49\u5F85\u6B63\u5728\u8FD0\u884C\u7684 VM \u4F7F\u7528\u6807\u51C6\u8FDE\u63A5\u5668\u5728\u6307\u5B9A\u5730\u5740\u5904\u8FDE\u63A5\n    -listenany\n                      \u7B49\u5F85\u6B63\u5728\u8FD0\u884C\u7684 VM \u4F7F\u7528\u6807\u51C6\u8FDE\u63A5\u5668\u5728\u4EFB\u4F55\u53EF\u7528\u5730\u5740\u5904\u8FDE\u63A5\n    -launch\n                      \u7ACB\u5373\u542F\u52A8 VM \u800C\u4E0D\u662F\u7B49\u5F85 ''run'' \u547D\u4EE4\n    -listconnectors   \u5217\u51FA\u6B64 VM \u4E2D\u7684\u53EF\u7528\u8FDE\u63A5\u5668\n    -connect <connector-name>:<name1>=<value1>,...\n                      \u4F7F\u7528\u6240\u5217\u53C2\u6570\u503C\u901A\u8FC7\u6307\u5B9A\u7684\u8FDE\u63A5\u5668\u8FDE\u63A5\u5230\u76EE\u6807 VM\n    -dbgtrace [flags] \u8F93\u51FA\u4FE1\u606F\u4F9B\u8C03\u8BD5{0}\n    -tclient          \u5728 HotSpot(TM) \u5BA2\u6237\u673A\u7F16\u8BD1\u5668\u4E2D\u8FD0\u884C\u5E94\u7528\u7A0B\u5E8F\n    -tserver          \u5728 HotSpot(TM) \u670D\u52A1\u5668\u7F16\u8BD1\u5668\u4E2D\u8FD0\u884C\u5E94\u7528\u7A0B\u5E8F\n\n\u8F6C\u53D1\u5230\u88AB\u8C03\u8BD5\u8FDB\u7A0B\u7684\u9009\u9879:\n    -v -verbose[:class|gc|jni]\n                      \u542F\u7528\u8BE6\u7EC6\u6A21\u5F0F\n    -D<name>=<value>  \u8BBE\u7F6E\u7CFB\u7EDF\u5C5E\u6027\n    -classpath <\u7531 \"{1}\" \u5206\u9694\u7684\u76EE\u5F55>\n                      \u5217\u51FA\u8981\u5728\u5176\u4E2D\u67E5\u627E\u7C7B\u7684\u76EE\u5F55\n    -X<option>        \u975E\u6807\u51C6\u76EE\u6807 VM \u9009\u9879\n\n<class> \u662F\u8981\u5F00\u59CB\u8C03\u8BD5\u7684\u7C7B\u7684\u540D\u79F0\n<arguments> \u662F\u4F20\u9012\u5230 <class> \u7684 main() \u65B9\u6CD5\u7684\u53C2\u6570\n\n\u8981\u83B7\u5F97\u547D\u4EE4\u7684\u5E2E\u52A9, \u8BF7\u5728{0}\u63D0\u793A\u4E0B\u952E\u5165 ''help''"},
         // END OF MATERIAL TO LOCALIZE
         };
+
+        return temp;
     }
 }
--- a/jdk/src/share/classes/com/sun/tools/jdi/resources/jdi_ja.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/tools/jdi/resources/jdi_ja.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,52 +1,52 @@
 true = true
 false = false
-version_format = Java Debug Interface (\u30ea\u30d5\u30a1\u30ec\u30f3\u30b9\u5b9f\u88c5) \u30d0\u30fc\u30b8\u30e7\u30f3{0}.{1} \n{2}
-raw.command = \u30c7\u30d0\u30c3\u30b0\u3059\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3 VM \u3092\u8d77\u52d5\u3055\u305b\u308b raw \u30b3\u30de\u30f3\u30c9
-raw.command.label = \u30b3\u30de\u30f3\u30c9
-raw.address = raw \u30b3\u30de\u30f3\u30c9\u5b9f\u884c\u5f8c\u306b\u63a5\u7d9a\u3092\u5f85\u6a5f\u3059\u308b\u30a2\u30c9\u30ec\u30b9
-raw.address.label = \u30a2\u30c9\u30ec\u30b9
-raw.quote = \u5358\u4e00\u306e\u30b3\u30de\u30f3\u30c9\u884c\u5f15\u6570\u5185\u306b\u30b9\u30da\u30fc\u30b9\u3067\u533a\u5207\u3089\u308c\u305f\u30c6\u30ad\u30b9\u30c8\u3092\u7d50\u3073\u4ed8\u3051\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u6587\u5b57
-raw.quote.label = \u5f15\u7528\u7b26
-raw.description = \u30e6\u30fc\u30b6\u304c\u6307\u5b9a\u3057\u305f\u30b3\u30de\u30f3\u30c9\u884c\u3092\u4f7f\u7528\u3057\u3066\u30bf\u30fc\u30b2\u30c3\u30c8\u3092\u8d77\u52d5\u3057\u3001\u63a5\u7d9a\u3057\u307e\u3059\u3002
-sun.home = SDK \u306e\u30db\u30fc\u30e0\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u307e\u305f\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8d77\u52d5\u306b\u4f7f\u7528\u3055\u308c\u308b\u5b9f\u884c\u74b0\u5883
-sun.home.label = \u30db\u30fc\u30e0 
-sun.options = \u8d77\u52d5\u3059\u308b VM \u306e\u30aa\u30d7\u30b7\u30e7\u30f3
-sun.options.label = \u30aa\u30d7\u30b7\u30e7\u30f3
-sun.main = \u30e1\u30a4\u30f3\u30af\u30e9\u30b9\u3068\u5f15\u6570\u3001\u307e\u305f\u306f -jar \u304c\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u5834\u5408\u306b\u306f\u30e1\u30a4\u30f3 jar \u30d5\u30a1\u30a4\u30eb\u3068\u5f15\u6570
-sun.main.label = \u30e1\u30a4\u30f3
-sun.init_suspend = \u30e1\u30a4\u30f3\u306e\u5b9f\u884c\u524d\u306b\u3059\u3079\u3066\u306e\u30b9\u30ec\u30c3\u30c9\u304c\u4e2d\u65ad\u3055\u308c\u307e\u3059\u3002
-sun.init_suspend.label = \u4e2d\u65ad
-sun.quote = \u5358\u4e00\u306e\u30b3\u30de\u30f3\u30c9\u884c\u5f15\u6570\u5185\u306b\u30b9\u30da\u30fc\u30b9\u3067\u533a\u5207\u3089\u308c\u305f\u30c6\u30ad\u30b9\u30c8\u3092\u7d50\u3073\u4ed8\u3051\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u6587\u5b57
-sun.quote.label = \u5f15\u7528\u7b26
-sun.vm_exec = Java VM \u8d77\u52d5\u30c4\u30fc\u30eb\u540d
-sun.vm_exec.label = \u8d77\u52d5\u30c4\u30fc\u30eb
-sun.description = Sun \u306e Java VM \u30b3\u30de\u30f3\u30c9\u884c\u3092\u4f7f\u7528\u3057\u3066\u30bf\u30fc\u30b2\u30c3\u30c8\u3092\u8d77\u52d5\u3057\u3001\u63a5\u7d9a\u3057\u307e\u3059\u3002
-generic_attaching.address = VM \u306b\u63a5\u7d9a\u3059\u308b\u30a2\u30c9\u30ec\u30b9
-generic_attaching.address.label = \u30a2\u30c9\u30ec\u30b9
-generic_attaching.timeout = \u63a5\u7d9a\u3092\u5f85\u3064\u9593\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8 
-generic_attaching.timeout.label = \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8
-generic_listening.address = VM \u3078\u306e\u63a5\u7d9a\u3092\u5f85\u6a5f\u3059\u308b\u30a2\u30c9\u30ec\u30b9
-generic_listening.address.label = \u30a2\u30c9\u30ec\u30b9
-generic_listening.timeout = \u63a5\u7d9a\u3092\u5f85\u3064\u9593\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8
-generic_listening.timeout.label = \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8
-socket_transportservice.description = TCP \u63a5\u7d9a\u3067\u30c7\u30d0\u30c3\u30ac\u3068\u30bf\u30fc\u30b2\u30c3\u30c8\u3092\u63a5\u7d9a\u3057\u307e\u3059\u3002
-memory_transportservice.description = \u5171\u6709\u30e1\u30e2\u30ea\u63a5\u7d9a\u3067\u30c7\u30d0\u30c3\u30ac\u3068\u30bf\u30fc\u30b2\u30c3\u30c8\u3092\u63a5\u7d9a\u3057\u307e\u3059\u3002
-socket_attaching.host = VM \u306b\u63a5\u7d9a\u3059\u308b\u30de\u30b7\u30f3\u540d
-socket_attaching.host.label = \u30db\u30b9\u30c8
-socket_attaching.port = VM \u306b\u63a5\u7d9a\u3059\u308b\u30dd\u30fc\u30c8\u756a\u53f7
-socket_attaching.port.label = \u30dd\u30fc\u30c8
-socket_attaching.description = \u30bd\u30b1\u30c3\u30c8\u3067\u305d\u306e\u4ed6\u306e VM \u306b\u63a5\u7d9a\u3057\u307e\u3059
-socket_listening.localaddr = \u30ea\u30b9\u30ca\u30fc\u306e\u30d0\u30a4\u30f3\u30c9\u5148\u30ed\u30fc\u30ab\u30eb\u30a2\u30c9\u30ec\u30b9
-socket_listening.localaddr.label = \u30ed\u30fc\u30ab\u30eb\u30a2\u30c9\u30ec\u30b9
-socket_listening.port = VM \u3078\u306e\u63a5\u7d9a\u3092\u5f85\u6a5f\u3059\u308b\u30dd\u30fc\u30c8\u756a\u53f7
-socket_listening.port.label = \u30dd\u30fc\u30c8
-socket_listening.description = \u305d\u306e\u4ed6\u306e VM \u306b\u3088\u308a\u958b\u59cb\u3055\u308c\u308b\u30bd\u30b1\u30c3\u30c8\u63a5\u7d9a\u3092\u53d7\u3051\u5165\u308c\u307e\u3059
-memory_attaching.name = VM \u3078\u306e\u63a5\u7d9a\u306b\u4f7f\u7528\u3055\u308c\u308b\u5171\u6709\u30e1\u30e2\u30ea\u9818\u57df\u540d
-memory_attaching.name.label = \u540d\u524d
-memory_attaching.description = \u5171\u6709\u30e1\u30e2\u30ea\u3067\u305d\u306e\u4ed6\u306e VM \u306b\u63a5\u7d9a\u3057\u307e\u3059
-memory_listening.name = VM \u3078\u306e\u63a5\u7d9a\u3092\u5f85\u6a5f\u3059\u308b\u305f\u3081\u306e\u5171\u6709\u30e1\u30e2\u30ea\u9818\u57df\u540d
-memory_listening.name.label = \u540d\u524d
-memory_listening.description = \u305d\u306e\u4ed6\u306e VM \u306b\u3088\u308a\u958b\u59cb\u3055\u308c\u308b\u5171\u6709\u30e1\u30e2\u30ea\u63a5\u7d9a\u3092\u53d7\u3051\u5165\u308c\u307e\u3059
-process_attaching.description = \u30c7\u30d0\u30c3\u30b0\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u306b\u30d7\u30ed\u30bb\u30b9 ID (pid) \u3092\u4f7f\u3063\u3066\u63a5\u7d9a\u3057\u307e\u3059
+version_format = Java Debug Interface(\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9\u5B9F\u88C5)\u30D0\u30FC\u30B8\u30E7\u30F3{0}.{1}\n{2}
+raw.command = \u30C7\u30D0\u30C3\u30B0\u3059\u308B\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3VM\u3092\u8D77\u52D5\u3055\u305B\u308Braw\u30B3\u30DE\u30F3\u30C9
+raw.command.label = \u30B3\u30DE\u30F3\u30C9
+raw.address = raw\u30B3\u30DE\u30F3\u30C9\u5B9F\u884C\u5F8C\u306B\u63A5\u7D9A\u3092\u30EA\u30B9\u30CB\u30F3\u30B0\u3059\u308B\u30A2\u30C9\u30EC\u30B9
+raw.address.label = \u30A2\u30C9\u30EC\u30B9
+raw.quote = \u5358\u4E00\u306E\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u5F15\u6570\u5185\u306B\u30B9\u30DA\u30FC\u30B9\u3067\u533A\u5207\u3089\u308C\u305F\u30C6\u30AD\u30B9\u30C8\u3092\u7D50\u3073\u4ED8\u3051\u308B\u305F\u3081\u306B\u4F7F\u7528\u3055\u308C\u308B\u6587\u5B57
+raw.quote.label = \u5F15\u7528\u7B26
+raw.description = \u30E6\u30FC\u30B6\u30FC\u304C\u6307\u5B9A\u3057\u305F\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u3092\u4F7F\u7528\u3057\u3066\u30BF\u30FC\u30B2\u30C3\u30C8\u3092\u8D77\u52D5\u3057\u3001\u63A5\u7D9A\u3057\u307E\u3059
+sun.home = SDK\u306E\u30DB\u30FC\u30E0\u30FB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u307E\u305F\u306F\u3001\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u8D77\u52D5\u306B\u4F7F\u7528\u3055\u308C\u308B\u5B9F\u884C\u74B0\u5883
+sun.home.label = \u30DB\u30FC\u30E0 
+sun.options = \u8D77\u52D5\u3059\u308BVM\u306E\u30AA\u30D7\u30B7\u30E7\u30F3
+sun.options.label = \u30AA\u30D7\u30B7\u30E7\u30F3
+sun.main = \u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9\u3068\u5F15\u6570\u3001\u307E\u305F\u306F-jar\u304C\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5834\u5408\u306B\u306F\u30E1\u30A4\u30F3jar\u30D5\u30A1\u30A4\u30EB\u3068\u5F15\u6570
+sun.main.label = \u30E1\u30A4\u30F3
+sun.init_suspend = \u30E1\u30A4\u30F3\u306E\u5B9F\u884C\u524D\u306B\u3059\u3079\u3066\u306E\u30B9\u30EC\u30C3\u30C9\u304C\u4E2D\u65AD\u3055\u308C\u307E\u3059\u3002
+sun.init_suspend.label = \u4E2D\u65AD
+sun.quote = \u5358\u4E00\u306E\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u5F15\u6570\u5185\u306B\u30B9\u30DA\u30FC\u30B9\u3067\u533A\u5207\u3089\u308C\u305F\u30C6\u30AD\u30B9\u30C8\u3092\u7D50\u3073\u4ED8\u3051\u308B\u305F\u3081\u306B\u4F7F\u7528\u3055\u308C\u308B\u6587\u5B57
+sun.quote.label = \u5F15\u7528\u7B26
+sun.vm_exec = Java VM\u8D77\u52D5\u30C4\u30FC\u30EB\u540D
+sun.vm_exec.label = \u8D77\u52D5\u30C4\u30FC\u30EB
+sun.description = Sun\u306EJava VM\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u3092\u4F7F\u7528\u3057\u3066\u30BF\u30FC\u30B2\u30C3\u30C8\u3092\u8D77\u52D5\u3057\u3001\u63A5\u7D9A\u3057\u307E\u3059
+generic_attaching.address = VM\u306B\u63A5\u7D9A\u3059\u308B\u30A2\u30C9\u30EC\u30B9
+generic_attaching.address.label = \u30A2\u30C9\u30EC\u30B9
+generic_attaching.timeout = \u63A5\u7D9A\u3092\u5F85\u3064\u9593\u306E\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8 
+generic_attaching.timeout.label = \u30BF\u30A4\u30E0\u30A2\u30A6\u30C8
+generic_listening.address = VM\u3078\u306E\u63A5\u7D9A\u3092\u30EA\u30B9\u30CB\u30F3\u30B0\u3059\u308B\u30A2\u30C9\u30EC\u30B9
+generic_listening.address.label = \u30A2\u30C9\u30EC\u30B9
+generic_listening.timeout = \u63A5\u7D9A\u3092\u5F85\u3064\u9593\u306E\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8
+generic_listening.timeout.label = \u30BF\u30A4\u30E0\u30A2\u30A6\u30C8
+socket_transportservice.description = TCP\u63A5\u7D9A\u3067\u30C7\u30D0\u30C3\u30AC\u3068\u30BF\u30FC\u30B2\u30C3\u30C8\u3092\u63A5\u7D9A\u3057\u307E\u3059
+memory_transportservice.description = \u5171\u6709\u30E1\u30E2\u30EA\u30FC\u63A5\u7D9A\u3067\u30C7\u30D0\u30C3\u30AC\u3068\u30BF\u30FC\u30B2\u30C3\u30C8\u3092\u63A5\u7D9A\u3057\u307E\u3059
+socket_attaching.host = VM\u306B\u63A5\u7D9A\u3059\u308B\u30DE\u30B7\u30F3\u540D
+socket_attaching.host.label = \u30DB\u30B9\u30C8
+socket_attaching.port = VM\u306B\u63A5\u7D9A\u3059\u308B\u30DD\u30FC\u30C8\u756A\u53F7
+socket_attaching.port.label = \u30DD\u30FC\u30C8
+socket_attaching.description = \u30BD\u30B1\u30C3\u30C8\u3067\u305D\u306E\u4ED6\u306EVM\u306B\u63A5\u7D9A\u3057\u307E\u3059
+socket_listening.localaddr = \u30EA\u30B9\u30CA\u30FC\u306E\u30D0\u30A4\u30F3\u30C9\u5148\u30ED\u30FC\u30AB\u30EB\u30FB\u30A2\u30C9\u30EC\u30B9
+socket_listening.localaddr.label = \u30ED\u30FC\u30AB\u30EB\u30FB\u30A2\u30C9\u30EC\u30B9
+socket_listening.port = VM\u3078\u306E\u63A5\u7D9A\u3092\u30EA\u30B9\u30CB\u30F3\u30B0\u3059\u308B\u30DD\u30FC\u30C8\u756A\u53F7
+socket_listening.port.label = \u30DD\u30FC\u30C8
+socket_listening.description = \u305D\u306E\u4ED6\u306EVM\u306B\u3088\u308A\u958B\u59CB\u3055\u308C\u308B\u30BD\u30B1\u30C3\u30C8\u63A5\u7D9A\u3092\u53D7\u5165\u308C\u307E\u3059
+memory_attaching.name = VM\u3078\u306E\u63A5\u7D9A\u306B\u4F7F\u7528\u3055\u308C\u308B\u5171\u6709\u30E1\u30E2\u30EA\u30FC\u9818\u57DF\u540D
+memory_attaching.name.label = \u540D\u524D
+memory_attaching.description = \u5171\u6709\u30E1\u30E2\u30EA\u30FC\u3067\u305D\u306E\u4ED6\u306EVM\u306B\u63A5\u7D9A\u3057\u307E\u3059
+memory_listening.name = VM\u3078\u306E\u63A5\u7D9A\u3092\u30EA\u30B9\u30CB\u30F3\u30B0\u3059\u308B\u305F\u3081\u306E\u5171\u6709\u30E1\u30E2\u30EA\u30FC\u9818\u57DF\u540D
+memory_listening.name.label = \u540D\u524D
+memory_listening.description = \u305D\u306E\u4ED6\u306EVM\u306B\u3088\u308A\u958B\u59CB\u3055\u308C\u308B\u5171\u6709\u30E1\u30E2\u30EA\u30FC\u63A5\u7D9A\u3092\u53D7\u3051\u5165\u308C\u307E\u3059
+process_attaching.description = \u30C7\u30D0\u30C3\u30B0\u3059\u308B\u30D7\u30ED\u30BB\u30B9\u306B\u30D7\u30ED\u30BB\u30B9ID(pid)\u3092\u4F7F\u7528\u3057\u3066\u63A5\u7D9A\u3057\u307E\u3059
 process_attaching.pid = pid
-process_attaching.pid.label = \u30c7\u30d0\u30c3\u30b0\u3059\u308b\u30d7\u30ed\u30bb\u30b9 ID (pid)
+process_attaching.pid.label = \u30C7\u30D0\u30C3\u30B0\u3059\u308B\u30D7\u30ED\u30BB\u30B9ID(pid)
--- a/jdk/src/share/classes/com/sun/tools/jdi/resources/jdi_zh_CN.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/com/sun/tools/jdi/resources/jdi_zh_CN.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,52 +1,52 @@
 true = true
 false = false
-version_format = Java \u8c03\u8bd5\u63a5\u53e3\uff08\u53c2\u8003\u5b9e\u73b0\uff09\u7248\u672c {0}.{1}\n{2}
-raw.command = \u7528\u4e8e\u542f\u52a8\u8c03\u8bd5\u5e94\u7528\u7a0b\u5e8f VM \u7684\u539f\u59cb\u547d\u4ee4
-raw.command.label = \u547d\u4ee4
-raw.address = \u8fd0\u884c\u539f\u59cb\u547d\u4ee4\u4e4b\u540e\uff0c\u4fa6\u542c\u8fde\u63a5\u65f6\u4f7f\u7528\u7684\u5730\u5740
+version_format = Java \u8C03\u8BD5\u63A5\u53E3 (\u53C2\u8003\u5B9E\u73B0) \u7248\u672C {0}.{1}\n{2}
+raw.command = \u7528\u4E8E\u542F\u52A8\u8C03\u8BD5\u5E94\u7528\u7A0B\u5E8F VM \u7684\u539F\u59CB\u547D\u4EE4
+raw.command.label = \u547D\u4EE4
+raw.address = \u8FD0\u884C\u539F\u59CB\u547D\u4EE4\u4E4B\u540E, \u76D1\u542C\u8FDE\u63A5\u65F6\u4F7F\u7528\u7684\u5730\u5740
 raw.address.label = \u5730\u5740
-raw.quote = \u7528\u4e8e\u5c06\u4ee5\u7a7a\u683c\u5206\u9694\u7684\u6587\u672c\u7ec4\u5408\u4e3a\u4e00\u4e2a\u547d\u4ee4\u884c\u53c2\u6570\u7684\u5b57\u7b26
-raw.quote.label = \u5f15\u53f7
-raw.description = \u4f7f\u7528\u7528\u6237\u6307\u5b9a\u7684\u547d\u4ee4\u884c\u542f\u52a8\u76ee\u6807\u5e76\u8fde\u63a5\u5230\u8be5\u76ee\u6807\u3002
-sun.home = \u7528\u4e8e\u542f\u52a8\u5e94\u7528\u7a0b\u5e8f\u7684 SDK \u6216\u8fd0\u884c\u65f6\u73af\u5883\u7684\u4e3b\u76ee\u5f55
-sun.home.label = \u4e3b\u76ee\u5f55 
-sun.options = \u5df2\u542f\u7528\u7684 VM \u9009\u9879
+raw.quote = \u7528\u4E8E\u5C06\u4EE5\u7A7A\u683C\u5206\u9694\u7684\u6587\u672C\u7EC4\u5408\u4E3A\u4E00\u4E2A\u547D\u4EE4\u884C\u53C2\u6570\u7684\u5B57\u7B26
+raw.quote.label = \u5F15\u53F7
+raw.description = \u4F7F\u7528\u7528\u6237\u6307\u5B9A\u7684\u547D\u4EE4\u884C\u542F\u52A8\u76EE\u6807\u5E76\u9644\u52A0\u5230\u8BE5\u76EE\u6807
+sun.home = \u7528\u4E8E\u542F\u52A8\u5E94\u7528\u7A0B\u5E8F\u7684 SDK \u6216\u8FD0\u884C\u65F6\u73AF\u5883\u7684\u4E3B\u76EE\u5F55
+sun.home.label = \u4E3B\u76EE\u5F55 
+sun.options = \u5DF2\u542F\u52A8\u7684 VM \u9009\u9879
 sun.options.label = \u9009\u9879
-sun.main = \u4e3b\u7c7b\u548c\u53c2\u6570\uff0c\u6216\u8005\u5982\u679c -jar \u662f\u4e00\u4e2a\u9009\u9879\uff0c\u5219\u4e3a\u4e3b jar \u6587\u4ef6\u548c\u53c2\u6570
-sun.main.label = \u4e3b
-sun.init_suspend = \u5728\u6267\u884c\u4e3b\u7c7b\uff08jar \u6587\u4ef6\uff09\u548c\u53c2\u6570\u4e4b\u524d\uff0c\u5c06\u6682\u505c\u6240\u6709\u7ebf\u7a0b
-sun.init_suspend.label = \u6682\u505c
-sun.quote = \u7528\u4e8e\u5c06\u4ee5\u7a7a\u683c\u5206\u9694\u7684\u6587\u672c\u7ec4\u5408\u4e3a\u4e00\u4e2a\u547d\u4ee4\u884c\u53c2\u6570\u7684\u5b57\u7b26
-sun.quote.label = \u5f15\u53f7
-sun.vm_exec = Java VM \u542f\u52a8\u7a0b\u5e8f\u7684\u540d\u79f0
-sun.vm_exec.label = \u542f\u52a8\u7a0b\u5e8f
-sun.description = \u4f7f\u7528 Sun Java VM \u547d\u4ee4\u884c\u542f\u52a8\u76ee\u6807\u5e76\u8fde\u63a5\u5230\u8be5\u76ee\u6807
-generic_attaching.address = VM \u8fde\u63a5\u6307\u5411\u7684\u5730\u5740
+sun.main = \u4E3B\u7C7B\u548C\u53C2\u6570, \u6216\u8005\u5982\u679C -jar \u662F\u4E00\u4E2A\u9009\u9879, \u5219\u4E3A\u4E3B jar \u6587\u4EF6\u548C\u53C2\u6570
+sun.main.label = \u4E3B
+sun.init_suspend = \u5728\u6267\u884C\u4E3B\u7C7B\u4E4B\u524D, \u5C06\u6302\u8D77\u6240\u6709\u7EBF\u7A0B
+sun.init_suspend.label = \u6302\u8D77
+sun.quote = \u7528\u4E8E\u5C06\u4EE5\u7A7A\u683C\u5206\u9694\u7684\u6587\u672C\u7EC4\u5408\u4E3A\u4E00\u4E2A\u547D\u4EE4\u884C\u53C2\u6570\u7684\u5B57\u7B26
+sun.quote.label = \u5F15\u53F7
+sun.vm_exec = Java VM \u542F\u52A8\u7A0B\u5E8F\u7684\u540D\u79F0
+sun.vm_exec.label = \u542F\u52A8\u7A0B\u5E8F
+sun.description = \u4F7F\u7528 Sun Java VM \u547D\u4EE4\u884C\u542F\u52A8\u76EE\u6807\u5E76\u9644\u52A0\u5230\u8BE5\u76EE\u6807
+generic_attaching.address = VM \u8FDE\u63A5\u6240\u9644\u52A0\u5230\u7684\u5730\u5740
 generic_attaching.address.label = \u5730\u5740
-generic_attaching.timeout = \u7b49\u5f85\u8fde\u63a5\u65f6\u7684\u8d85\u65f6 
-generic_attaching.timeout.label = \u8d85\u65f6
-generic_listening.address = \u4fa6\u542c VM \u8fde\u63a5\u65f6\u4f7f\u7528\u7684\u5730\u5740
+generic_attaching.timeout = \u7B49\u5F85\u9644\u52A0\u64CD\u4F5C\u65F6\u7684\u8D85\u65F6
+generic_attaching.timeout.label = \u8D85\u65F6
+generic_listening.address = \u76D1\u542C VM \u8FDE\u63A5\u65F6\u4F7F\u7528\u7684\u5730\u5740
 generic_listening.address.label = \u5730\u5740
-generic_listening.timeout = \u7b49\u5f85\u8fde\u63a5\u65f6\u7684\u8d85\u65f6
-generic_listening.timeout.label = \u8d85\u65f6
-socket_transportservice.description = \u4f7f\u7528 TCP \u8fde\u63a5\u8fde\u63a5\u8c03\u8bd5\u5668\u548c\u88ab\u8c03\u8bd5\u5bf9\u8c61
-memory_transportservice.description = \u4f7f\u7528\u5171\u4eab\u5185\u5b58\u8fde\u63a5\u8fde\u63a5\u8c03\u8bd5\u5668\u548c\u88ab\u8c03\u8bd5\u5bf9\u8c61
-socket_attaching.host = VM \u8fde\u63a5\u6307\u5411\u7684\u8ba1\u7b97\u673a\u540d\u79f0
-socket_attaching.host.label = \u4e3b\u673a
-socket_attaching.port = VM \u8fde\u63a5\u6307\u5411\u7684\u7aef\u53e3\u53f7
-socket_attaching.port.label = \u7aef\u53e3
-socket_attaching.description = \u901a\u8fc7\u5957\u63a5\u5b57\u4e0e\u5176\u4ed6 VM \u8fdb\u884c\u8fde\u63a5
-socket_listening.localaddr = \u4fa6\u542c\u5668\u7ed1\u5b9a\u5230\u7684\u672c\u5730\u5730\u5740
-socket_listening.localaddr.label = \u672c\u5730\u5730\u5740
-socket_listening.port = \u4fa6\u542c VM \u8fde\u63a5\u65f6\u4f7f\u7528\u7684\u7aef\u53e3\u53f7
-socket_listening.port.label = \u7aef\u53e3
-socket_listening.description = \u63a5\u53d7\u7531\u5176\u4ed6 VM \u542f\u52a8\u7684\u5957\u63a5\u5b57\u8fde\u63a5
-memory_attaching.name = VM \u8fde\u63a5\u6307\u5411\u7684\u5171\u4eab\u5185\u5b58\u533a\u57df\u7684\u540d\u79f0
-memory_attaching.name.label = \u540d\u79f0
-memory_attaching.description = \u901a\u8fc7\u5171\u4eab\u5185\u5b58\u8fde\u63a5\u5230\u5176\u4ed6 VM
-memory_listening.name = \u4fa6\u542c VM \u8fde\u63a5\u65f6\u6240\u5728\u7684\u5171\u4eab\u5185\u5b58\u533a\u57df\u7684\u540d\u79f0
-memory_listening.name.label = \u540d\u79f0
-memory_listening.description = \u63a5\u53d7\u7531\u5176\u4ed6 VM \u542f\u52a8\u7684\u5171\u4eab\u5185\u5b58\u8fde\u63a5
-process_attaching.description = \u901a\u8fc7\u8fdb\u7a0b ID (PID) \u8fde\u63a5\u5230\u88ab\u8c03\u8bd5\u8fdb\u7a0b
+generic_listening.timeout = \u7B49\u5F85\u8FDE\u63A5\u65F6\u7684\u8D85\u65F6
+generic_listening.timeout.label = \u8D85\u65F6
+socket_transportservice.description = \u4F7F\u7528 TCP \u8FDE\u63A5\u6765\u8FDE\u63A5\u8C03\u8BD5\u5668\u548C\u88AB\u8C03\u8BD5\u8FDB\u7A0B
+memory_transportservice.description = \u4F7F\u7528\u5171\u4EAB\u5185\u5B58\u8FDE\u63A5\u6765\u8FDE\u63A5\u8C03\u8BD5\u5668\u548C\u88AB\u8C03\u8BD5\u8FDB\u7A0B
+socket_attaching.host = VM \u8FDE\u63A5\u6240\u9644\u52A0\u5230\u7684\u8BA1\u7B97\u673A\u540D\u79F0
+socket_attaching.host.label = \u4E3B\u673A
+socket_attaching.port = VM \u8FDE\u63A5\u6240\u9644\u52A0\u5230\u7684\u7AEF\u53E3\u53F7
+socket_attaching.port.label = \u7AEF\u53E3
+socket_attaching.description = \u901A\u8FC7\u5957\u63A5\u5B57\u9644\u52A0\u5230\u5176\u4ED6 VM
+socket_listening.localaddr = \u76D1\u542C\u7A0B\u5E8F\u7ED1\u5B9A\u5230\u7684\u672C\u5730\u5730\u5740
+socket_listening.localaddr.label = \u672C\u5730\u5730\u5740
+socket_listening.port = \u76D1\u542C VM \u8FDE\u63A5\u65F6\u4F7F\u7528\u7684\u7AEF\u53E3\u53F7
+socket_listening.port.label = \u7AEF\u53E3
+socket_listening.description = \u63A5\u53D7\u7531\u5176\u4ED6 VM \u542F\u52A8\u7684\u5957\u63A5\u5B57\u8FDE\u63A5
+memory_attaching.name = VM \u8FDE\u63A5\u6240\u9644\u52A0\u5230\u7684\u5171\u4EAB\u5185\u5B58\u533A\u57DF\u7684\u540D\u79F0
+memory_attaching.name.label = \u540D\u79F0
+memory_attaching.description = \u901A\u8FC7\u5171\u4EAB\u5185\u5B58\u9644\u52A0\u5230\u5176\u4ED6 VM
+memory_listening.name = \u76D1\u542C VM \u8FDE\u63A5\u65F6\u6240\u5728\u7684\u5171\u4EAB\u5185\u5B58\u533A\u57DF\u7684\u540D\u79F0
+memory_listening.name.label = \u540D\u79F0
+memory_listening.description = \u63A5\u53D7\u7531\u5176\u4ED6 VM \u542F\u52A8\u7684\u5171\u4EAB\u5185\u5B58\u8FDE\u63A5
+process_attaching.description = \u901A\u8FC7\u8FDB\u7A0B ID (PID) \u9644\u52A0\u5230\u88AB\u8C03\u8BD5\u8FDB\u7A0B
 process_attaching.pid = PID
-process_attaching.pid.label = \u88ab\u8c03\u8bd5\u8fdb\u7a0b\u7684\u8fdb\u7a0b ID (PID)
+process_attaching.pid.label = \u88AB\u8C03\u8BD5\u8FDB\u7A0B\u7684\u8FDB\u7A0B ID (PID)
--- a/jdk/src/share/classes/java/awt/Window.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/awt/Window.java	Wed Jul 05 17:35:13 2017 +0200
@@ -504,6 +504,8 @@
         }
 
         modalExclusionType = Dialog.ModalExclusionType.NO_EXCLUDE;
+
+        SunToolkit.checkAndSetPolicy(this, false);
     }
 
     /**
--- a/jdk/src/share/classes/java/awt/color/ICC_Profile.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/awt/color/ICC_Profile.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1856,13 +1856,6 @@
             File.separatorChar + "lib" + File.separatorChar + "cmm";
         String fullPath = dir + File.separatorChar + fileName;
         File f = new File(fullPath);
-        if (!f.isFile()) {
-            //make sure file was installed in the kernel mode
-            BootClassLoaderHook hook = BootClassLoaderHook.getHook();
-            if (hook != null) {
-                hook.prefetchFile("lib/cmm/"+fileName);
-            }
-        }
         return (f.isFile() && isChildOf(f, dir)) ? f : null;
     }
 
--- a/jdk/src/share/classes/java/awt/doc-files/FocusSpec.html	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/awt/doc-files/FocusSpec.html	Wed Jul 05 17:35:13 2017 +0200
@@ -894,8 +894,7 @@
 focus across Windows. If the request is denied for this reason, the
 request is remembered and will be granted when the Window is later
 focused by the user. Otherwise, the focus change request changes the
-focused Window as well. Currently, Microsoft Windows supports cross-Window 
-focus transfers while Solaris does not.
+focused Window as well.
 <p>
 There is no way to determine synchronously whether a focus change
 request has been granted. Instead, client code must install a
--- a/jdk/src/share/classes/java/awt/geom/CubicCurve2D.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/awt/geom/CubicCurve2D.java	Wed Jul 05 17:35:13 2017 +0200
@@ -31,6 +31,10 @@
 import java.io.Serializable;
 import sun.awt.geom.Curve;
 
+import static java.lang.Math.abs;
+import static java.lang.Math.max;
+import static java.lang.Math.ulp;
+
 /**
  * The <code>CubicCurve2D</code> class defines a cubic parametric curve
  * segment in {@code (x,y)} coordinate space.
@@ -1083,95 +1087,286 @@
      * @since 1.3
      */
     public static int solveCubic(double eqn[], double res[]) {
-        // From Numerical Recipes, 5.6, Quadratic and Cubic Equations
-        double d = eqn[3];
-        if (d == 0.0) {
-            // The cubic has degenerated to quadratic (or line or ...).
+        // From Graphics Gems:
+        // http://tog.acm.org/resources/GraphicsGems/gems/Roots3And4.c
+        final double d = eqn[3];
+        if (d == 0) {
             return QuadCurve2D.solveQuadratic(eqn, res);
         }
-        double a = eqn[2] / d;
-        double b = eqn[1] / d;
-        double c = eqn[0] / d;
-        int roots = 0;
-        double Q = (a * a - 3.0 * b) / 9.0;
-        double R = (2.0 * a * a * a - 9.0 * a * b + 27.0 * c) / 54.0;
-        double R2 = R * R;
-        double Q3 = Q * Q * Q;
-        a = a / 3.0;
-        if (R2 < Q3) {
-            double theta = Math.acos(R / Math.sqrt(Q3));
-            Q = -2.0 * Math.sqrt(Q);
+
+        /* normal form: x^3 + Ax^2 + Bx + C = 0 */
+        final double A = eqn[2] / d;
+        final double B = eqn[1] / d;
+        final double C = eqn[0] / d;
+
+
+        //  substitute x = y - A/3 to eliminate quadratic term:
+        //     x^3 +Px + Q = 0
+        //
+        // Since we actually need P/3 and Q/2 for all of the
+        // calculations that follow, we will calculate
+        // p = P/3
+        // q = Q/2
+        // instead and use those values for simplicity of the code.
+        double sq_A = A * A;
+        double p = 1.0/3 * (-1.0/3 * sq_A + B);
+        double q = 1.0/2 * (2.0/27 * A * sq_A - 1.0/3 * A * B + C);
+
+        /* use Cardano's formula */
+
+        double cb_p = p * p * p;
+        double D = q * q + cb_p;
+
+        final double sub = 1.0/3 * A;
+
+        int num;
+        if (D < 0) { /* Casus irreducibilis: three real solutions */
+            // see: http://en.wikipedia.org/wiki/Cubic_function#Trigonometric_.28and_hyperbolic.29_method
+            double phi = 1.0/3 * Math.acos(-q / Math.sqrt(-cb_p));
+            double t = 2 * Math.sqrt(-p);
+
             if (res == eqn) {
-                // Copy the eqn so that we don't clobber it with the
-                // roots.  This is needed so that fixRoots can do its
-                // work with the original equation.
-                eqn = new double[4];
-                System.arraycopy(res, 0, eqn, 0, 4);
+                eqn = Arrays.copyOf(eqn, 4);
             }
-            res[roots++] = Q * Math.cos(theta / 3.0) - a;
-            res[roots++] = Q * Math.cos((theta + Math.PI * 2.0)/ 3.0) - a;
-            res[roots++] = Q * Math.cos((theta - Math.PI * 2.0)/ 3.0) - a;
-            fixRoots(res, eqn);
+
+            res[ 0 ] =  ( t * Math.cos(phi));
+            res[ 1 ] =  (-t * Math.cos(phi + Math.PI / 3));
+            res[ 2 ] =  (-t * Math.cos(phi - Math.PI / 3));
+            num = 3;
+
+            for (int i = 0; i < num; ++i) {
+                res[ i ] -= sub;
+            }
+
         } else {
-            boolean neg = (R < 0.0);
-            double S = Math.sqrt(R2 - Q3);
-            if (neg) {
-                R = -R;
+            // Please see the comment in fixRoots marked 'XXX' before changing
+            // any of the code in this case.
+            double sqrt_D = Math.sqrt(D);
+            double u = Math.cbrt(sqrt_D - q);
+            double v = - Math.cbrt(sqrt_D + q);
+            double uv = u+v;
+
+            num = 1;
+
+            double err = 1200000000*ulp(abs(uv) + abs(sub));
+            if (iszero(D, err) || within(u, v, err)) {
+                if (res == eqn) {
+                    eqn = Arrays.copyOf(eqn, 4);
+                }
+                res[1] = -(uv / 2) - sub;
+                num = 2;
             }
-            double A = Math.pow(R + S, 1.0 / 3.0);
-            if (!neg) {
-                A = -A;
-            }
-            double B = (A == 0.0) ? 0.0 : (Q / A);
-            res[roots++] = (A + B) - a;
+            // this must be done after the potential Arrays.copyOf
+            res[ 0 ] =  uv - sub;
+        }
+
+        if (num > 1) { // num == 3 || num == 2
+            num = fixRoots(eqn, res, num);
         }
-        return roots;
+        if (num > 2 && (res[2] == res[1] || res[2] == res[0])) {
+            num--;
+        }
+        if (num > 1 && res[1] == res[0]) {
+            res[1] = res[--num]; // Copies res[2] to res[1] if needed
+        }
+        return num;
     }
 
-    /*
-     * This pruning step is necessary since solveCubic uses the
-     * cosine function to calculate the roots when there are 3
-     * of them.  Since the cosine method can have an error of
-     * +/- 1E-14 we need to make sure that we don't make any
-     * bad decisions due to an error.
-     *
-     * If the root is not near one of the endpoints, then we will
-     * only have a slight inaccuracy in calculating the x intercept
-     * which will only cause a slightly wrong answer for some
-     * points very close to the curve.  While the results in that
-     * case are not as accurate as they could be, they are not
-     * disastrously inaccurate either.
-     *
-     * On the other hand, if the error happens near one end of
-     * the curve, then our processing to reject values outside
-     * of the t=[0,1] range will fail and the results of that
-     * failure will be disastrous since for an entire horizontal
-     * range of test points, we will either overcount or undercount
-     * the crossings and get a wrong answer for all of them, even
-     * when they are clearly and obviously inside or outside the
-     * curve.
-     *
-     * To work around this problem, we try a couple of Newton-Raphson
-     * iterations to see if the true root is closer to the endpoint
-     * or further away.  If it is further away, then we can stop
-     * since we know we are on the right side of the endpoint.  If
-     * we change direction, then either we are now being dragged away
-     * from the endpoint in which case the first condition will cause
-     * us to stop, or we have passed the endpoint and are headed back.
-     * In the second case, we simply evaluate the slope at the
-     * endpoint itself and place ourselves on the appropriate side
-     * of it or on it depending on that result.
-     */
-    private static void fixRoots(double res[], double eqn[]) {
-        final double EPSILON = 1E-5;
+    // preconditions: eqn != res && eqn[3] != 0 && num > 1
+    // This method tries to improve the accuracy of the roots of eqn (which
+    // should be in res). It also might eliminate roots in res if it decideds
+    // that they're not real roots. It will not check for roots that the
+    // computation of res might have missed, so this method should only be
+    // used when the roots in res have been computed using an algorithm
+    // that never underestimates the number of roots (such as solveCubic above)
+    private static int fixRoots(double[] eqn, double[] res, int num) {
+        double[] intervals = {eqn[1], 2*eqn[2], 3*eqn[3]};
+        int critCount = QuadCurve2D.solveQuadratic(intervals, intervals);
+        if (critCount == 2 && intervals[0] == intervals[1]) {
+            critCount--;
+        }
+        if (critCount == 2 && intervals[0] > intervals[1]) {
+            double tmp = intervals[0];
+            intervals[0] = intervals[1];
+            intervals[1] = tmp;
+        }
+
+        // below we use critCount to possibly filter out roots that shouldn't
+        // have been computed. We require that eqn[3] != 0, so eqn is a proper
+        // cubic, which means that its limits at -/+inf are -/+inf or +/-inf.
+        // Therefore, if critCount==2, the curve is shaped like a sideways S,
+        // and it could have 1-3 roots. If critCount==0 it is monotonic, and
+        // if critCount==1 it is monotonic with a single point where it is
+        // flat. In the last 2 cases there can only be 1 root. So in cases
+        // where num > 1 but critCount < 2, we eliminate all roots in res
+        // except one.
+
+        if (num == 3) {
+            double xe = getRootUpperBound(eqn);
+            double x0 = -xe;
+
+            Arrays.sort(res, 0, num);
+            if (critCount == 2) {
+                // this just tries to improve the accuracy of the computed
+                // roots using Newton's method.
+                res[0] = refineRootWithHint(eqn, x0, intervals[0], res[0]);
+                res[1] = refineRootWithHint(eqn, intervals[0], intervals[1], res[1]);
+                res[2] = refineRootWithHint(eqn, intervals[1], xe, res[2]);
+                return 3;
+            } else if (critCount == 1) {
+                // we only need fx0 and fxe for the sign of the polynomial
+                // at -inf and +inf respectively, so we don't need to do
+                // fx0 = solveEqn(eqn, 3, x0); fxe = solveEqn(eqn, 3, xe)
+                double fxe = eqn[3];
+                double fx0 = -fxe;
+
+                double x1 = intervals[0];
+                double fx1 = solveEqn(eqn, 3, x1);
+
+                // if critCount == 1 or critCount == 0, but num == 3 then
+                // something has gone wrong. This branch and the one below
+                // would ideally never execute, but if they do we can't know
+                // which of the computed roots is closest to the real root;
+                // therefore, we can't use refineRootWithHint. But even if
+                // we did know, being here most likely means that the
+                // curve is very flat close to two of the computed roots
+                // (or maybe even all three). This might make Newton's method
+                // fail altogether, which would be a pain to detect and fix.
+                // This is why we use a very stable bisection method.
+                if (oppositeSigns(fx0, fx1)) {
+                    res[0] = bisectRootWithHint(eqn, x0, x1, res[0]);
+                } else if (oppositeSigns(fx1, fxe)) {
+                    res[0] = bisectRootWithHint(eqn, x1, xe, res[2]);
+                } else /* fx1 must be 0 */ {
+                    res[0] = x1;
+                }
+                // return 1
+            } else if (critCount == 0) {
+                res[0] = bisectRootWithHint(eqn, x0, xe, res[1]);
+                // return 1
+            }
+        } else if (num == 2 && critCount == 2) {
+            // XXX: here we assume that res[0] has better accuracy than res[1].
+            // This is true because this method is only used from solveCubic
+            // which puts in res[0] the root that it would compute anyway even
+            // if num==1. If this method is ever used from any other method, or
+            // if the solveCubic implementation changes, this assumption should
+            // be reevaluated, and the choice of goodRoot might have to become
+            // goodRoot = (abs(eqn'(res[0])) > abs(eqn'(res[1]))) ? res[0] : res[1]
+            // where eqn' is the derivative of eqn.
+            double goodRoot = res[0];
+            double badRoot = res[1];
+            double x1 = intervals[0];
+            double x2 = intervals[1];
+            // If a cubic curve really has 2 roots, one of those roots must be
+            // at a critical point. That can't be goodRoot, so we compute x to
+            // be the farthest critical point from goodRoot. If there are two
+            // roots, x must be the second one, so we evaluate eqn at x, and if
+            // it is zero (or close enough) we put x in res[1] (or badRoot, if
+            // |solveEqn(eqn, 3, badRoot)| < |solveEqn(eqn, 3, x)| but this
+            // shouldn't happen often).
+            double x = abs(x1 - goodRoot) > abs(x2 - goodRoot) ? x1 : x2;
+            double fx = solveEqn(eqn, 3, x);
+
+            if (iszero(fx, 10000000*ulp(x))) {
+                double badRootVal = solveEqn(eqn, 3, badRoot);
+                res[1] = abs(badRootVal) < abs(fx) ? badRoot : x;
+                return 2;
+            }
+        } // else there can only be one root - goodRoot, and it is already in res[0]
+
+        return 1;
+    }
+
+    // use newton's method.
+    private static double refineRootWithHint(double[] eqn, double min, double max, double t) {
+        if (!inInterval(t, min, max)) {
+            return t;
+        }
+        double[] deriv = {eqn[1], 2*eqn[2], 3*eqn[3]};
+        double origt = t;
         for (int i = 0; i < 3; i++) {
-            double t = res[i];
-            if (Math.abs(t) < EPSILON) {
-                res[i] = findZero(t, 0, eqn);
-            } else if (Math.abs(t - 1) < EPSILON) {
-                res[i] = findZero(t, 1, eqn);
+            double slope = solveEqn(deriv, 2, t);
+            double y = solveEqn(eqn, 3, t);
+            double delta = - (y / slope);
+            double newt = t + delta;
+
+            if (slope == 0 || y == 0 || t == newt) {
+                break;
+            }
+
+            t = newt;
+        }
+        if (within(t, origt, 1000*ulp(origt)) && inInterval(t, min, max)) {
+            return t;
+        }
+        return origt;
+    }
+
+    private static double bisectRootWithHint(double[] eqn, double x0, double xe, double hint) {
+        double delta1 = Math.min(abs(hint - x0) / 64, 0.0625);
+        double delta2 = Math.min(abs(hint - xe) / 64, 0.0625);
+        double x02 = hint - delta1;
+        double xe2 = hint + delta2;
+        double fx02 = solveEqn(eqn, 3, x02);
+        double fxe2 = solveEqn(eqn, 3, xe2);
+        while (oppositeSigns(fx02, fxe2)) {
+            if (x02 >= xe2) {
+                return x02;
             }
+            x0 = x02;
+            xe = xe2;
+            delta1 /= 64;
+            delta2 /= 64;
+            x02 = hint - delta1;
+            xe2 = hint + delta2;
+            fx02 = solveEqn(eqn, 3, x02);
+            fxe2 = solveEqn(eqn, 3, xe2);
         }
+        if (fx02 == 0) {
+            return x02;
+        }
+        if (fxe2 == 0) {
+            return xe2;
+        }
+
+        return bisectRoot(eqn, x0, xe);
+    }
+
+    private static double bisectRoot(double[] eqn, double x0, double xe) {
+        double fx0 = solveEqn(eqn, 3, x0);
+        double m = x0 + (xe - x0) / 2;
+        while (m != x0 && m != xe) {
+            double fm = solveEqn(eqn, 3, m);
+            if (fm == 0) {
+                return m;
+            }
+            if (oppositeSigns(fx0, fm)) {
+                xe = m;
+            } else {
+                fx0 = fm;
+                x0 = m;
+            }
+            m = x0 + (xe-x0)/2;
+        }
+        return m;
+    }
+
+    private static boolean inInterval(double t, double min, double max) {
+        return min <= t && t <= max;
+    }
+
+    private static boolean within(double x, double y, double err) {
+        double d = y - x;
+        return (d <= err && d >= -err);
+    }
+
+    private static boolean iszero(double x, double err) {
+        return within(x, 0, err);
+    }
+
+    private static boolean oppositeSigns(double x1, double x2) {
+        return (x1 < 0 && x2 > 0) || (x1 > 0 && x2 < 0);
     }
 
     private static double solveEqn(double eqn[], int order, double t) {
@@ -1182,60 +1377,26 @@
         return v;
     }
 
-    private static double findZero(double t, double target, double eqn[]) {
-        double slopeqn[] = {eqn[1], 2*eqn[2], 3*eqn[3]};
-        double slope;
-        double origdelta = 0;
-        double origt = t;
-        while (true) {
-            slope = solveEqn(slopeqn, 2, t);
-            if (slope == 0) {
-                // At a local minima - must return
-                return t;
-            }
-            double y = solveEqn(eqn, 3, t);
-            if (y == 0) {
-                // Found it! - return it
-                return t;
-            }
-            // assert(slope != 0 && y != 0);
-            double delta = - (y / slope);
-            // assert(delta != 0);
-            if (origdelta == 0) {
-                origdelta = delta;
-            }
-            if (t < target) {
-                if (delta < 0) return t;
-            } else if (t > target) {
-                if (delta > 0) return t;
-            } else { /* t == target */
-                return (delta > 0
-                        ? (target + java.lang.Double.MIN_VALUE)
-                        : (target - java.lang.Double.MIN_VALUE));
-            }
-            double newt = t + delta;
-            if (t == newt) {
-                // The deltas are so small that we aren't moving...
-                return t;
-            }
-            if (delta * origdelta < 0) {
-                // We have reversed our path.
-                int tag = (origt < t
-                           ? getTag(target, origt, t)
-                           : getTag(target, t, origt));
-                if (tag != INSIDE) {
-                    // Local minima found away from target - return the middle
-                    return (origt + t) / 2;
-                }
-                // Local minima somewhere near target - move to target
-                // and let the slope determine the resulting t.
-                t = target;
-            } else {
-                t = newt;
-            }
-        }
+    /*
+     * Computes M+1 where M is an upper bound for all the roots in of eqn.
+     * See: http://en.wikipedia.org/wiki/Sturm%27s_theorem#Applications.
+     * The above link doesn't contain a proof, but I [dlila] proved it myself
+     * so the result is reliable. The proof isn't difficult, but it's a bit
+     * long to include here.
+     * Precondition: eqn must represent a cubic polynomial
+     */
+    private static double getRootUpperBound(double[] eqn) {
+        double d = eqn[3];
+        double a = eqn[2];
+        double b = eqn[1];
+        double c = eqn[0];
+
+        double M = 1 + max(max(abs(a), abs(b)), abs(c)) / abs(d);
+        M += ulp(M) + 1;
+        return M;
     }
 
+
     /**
      * {@inheritDoc}
      * @since 1.2
@@ -1273,110 +1434,6 @@
         return contains(p.getX(), p.getY());
     }
 
-    /*
-     * Fill an array with the coefficients of the parametric equation
-     * in t, ready for solving against val with solveCubic.
-     * We currently have:
-     * <pre>
-     *   val = P(t) = C1(1-t)^3 + 3CP1 t(1-t)^2 + 3CP2 t^2(1-t) + C2 t^3
-     *              = C1 - 3C1t + 3C1t^2 - C1t^3 +
-     *                3CP1t - 6CP1t^2 + 3CP1t^3 +
-     *                3CP2t^2 - 3CP2t^3 +
-     *                C2t^3
-     *            0 = (C1 - val) +
-     *                (3CP1 - 3C1) t +
-     *                (3C1 - 6CP1 + 3CP2) t^2 +
-     *                (C2 - 3CP2 + 3CP1 - C1) t^3
-     *            0 = C + Bt + At^2 + Dt^3
-     *     C = C1 - val
-     *     B = 3*CP1 - 3*C1
-     *     A = 3*CP2 - 6*CP1 + 3*C1
-     *     D = C2 - 3*CP2 + 3*CP1 - C1
-     * </pre>
-     */
-    private static void fillEqn(double eqn[], double val,
-                                double c1, double cp1, double cp2, double c2) {
-        eqn[0] = c1 - val;
-        eqn[1] = (cp1 - c1) * 3.0;
-        eqn[2] = (cp2 - cp1 - cp1 + c1) * 3.0;
-        eqn[3] = c2 + (cp1 - cp2) * 3.0 - c1;
-        return;
-    }
-
-    /*
-     * Evaluate the t values in the first num slots of the vals[] array
-     * and place the evaluated values back into the same array.  Only
-     * evaluate t values that are within the range <0, 1>, including
-     * the 0 and 1 ends of the range iff the include0 or include1
-     * booleans are true.  If an "inflection" equation is handed in,
-     * then any points which represent a point of inflection for that
-     * cubic equation are also ignored.
-     */
-    private static int evalCubic(double vals[], int num,
-                                 boolean include0,
-                                 boolean include1,
-                                 double inflect[],
-                                 double c1, double cp1,
-                                 double cp2, double c2) {
-        int j = 0;
-        for (int i = 0; i < num; i++) {
-            double t = vals[i];
-            if ((include0 ? t >= 0 : t > 0) &&
-                (include1 ? t <= 1 : t < 1) &&
-                (inflect == null ||
-                 inflect[1] + (2*inflect[2] + 3*inflect[3]*t)*t != 0))
-            {
-                double u = 1 - t;
-                vals[j++] = c1*u*u*u + 3*cp1*t*u*u + 3*cp2*t*t*u + c2*t*t*t;
-            }
-        }
-        return j;
-    }
-
-    private static final int BELOW = -2;
-    private static final int LOWEDGE = -1;
-    private static final int INSIDE = 0;
-    private static final int HIGHEDGE = 1;
-    private static final int ABOVE = 2;
-
-    /*
-     * Determine where coord lies with respect to the range from
-     * low to high.  It is assumed that low <= high.  The return
-     * value is one of the 5 values BELOW, LOWEDGE, INSIDE, HIGHEDGE,
-     * or ABOVE.
-     */
-    private static int getTag(double coord, double low, double high) {
-        if (coord <= low) {
-            return (coord < low ? BELOW : LOWEDGE);
-        }
-        if (coord >= high) {
-            return (coord > high ? ABOVE : HIGHEDGE);
-        }
-        return INSIDE;
-    }
-
-    /*
-     * Determine if the pttag represents a coordinate that is already
-     * in its test range, or is on the border with either of the two
-     * opttags representing another coordinate that is "towards the
-     * inside" of that test range.  In other words, are either of the
-     * two "opt" points "drawing the pt inward"?
-     */
-    private static boolean inwards(int pttag, int opt1tag, int opt2tag) {
-        switch (pttag) {
-        case BELOW:
-        case ABOVE:
-        default:
-            return false;
-        case LOWEDGE:
-            return (opt1tag >= INSIDE || opt2tag >= INSIDE);
-        case INSIDE:
-            return true;
-        case HIGHEDGE:
-            return (opt1tag <= INSIDE || opt2tag <= INSIDE);
-        }
-    }
-
     /**
      * {@inheritDoc}
      * @since 1.2
--- a/jdk/src/share/classes/java/io/BufferedReader.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/io/BufferedReader.java	Wed Jul 05 17:35:13 2017 +0200
@@ -54,6 +54,7 @@
  *
  * @see FileReader
  * @see InputStreamReader
+ * @see java.nio.file.Files#newBufferedReader
  *
  * @author      Mark Reinhold
  * @since       JDK1.1
@@ -374,6 +375,8 @@
      *             stream has been reached
      *
      * @exception  IOException  If an I/O error occurs
+     *
+     * @see java.nio.file.Files#readAllLines
      */
     public String readLine() throws IOException {
         return readLine(false);
--- a/jdk/src/share/classes/java/io/BufferedWriter.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/io/BufferedWriter.java	Wed Jul 05 17:35:13 2017 +0200
@@ -57,6 +57,7 @@
  * @see PrintWriter
  * @see FileWriter
  * @see OutputStreamWriter
+ * @see java.nio.file.Files#newBufferedWriter
  *
  * @author      Mark Reinhold
  * @since       JDK1.1
--- a/jdk/src/share/classes/java/io/File.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/io/File.java	Wed Jul 05 17:35:13 2017 +0200
@@ -35,8 +35,7 @@
 import java.security.AccessController;
 import java.security.SecureRandom;
 import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.attribute.FileAttribute;
+import java.nio.file.FileSystems;
 import sun.security.action.GetPropertyAction;
 
 /**
@@ -139,9 +138,10 @@
  * many of the limitations of the {@code java.io.File} class.
  * The {@link #toPath toPath} method may be used to obtain a {@link
  * Path} that uses the abstract path represented by a {@code File} object to
- * locate a file. The resulting {@code Path} provides more efficient and
- * extensive access to file attributes, additional file operations, and I/O
- * exceptions to help diagnose errors when an operation on a file fails.
+ * locate a file. The resulting {@code Path} may be used with the {@link
+ * java.nio.file.Files} class to provide more efficient and extensive access to
+ * additional file operations, file attributes, and I/O exceptions to help
+ * diagnose errors when an operation on a file fails.
  *
  * @author  unascribed
  * @since   JDK1.0
@@ -778,6 +778,12 @@
      * Tests whether the file denoted by this abstract pathname is a
      * directory.
      *
+     * <p> Where it is required to distinguish an I/O exception from the case
+     * that the file is not a directory, or where several attributes of the
+     * same file are required at the same time, then the {@link
+     * java.nio.file.Files#readAttributes(Path,Class,LinkOption[])
+     * Files.readAttributes} method may be used.
+     *
      * @return <code>true</code> if and only if the file denoted by this
      *          abstract pathname exists <em>and</em> is a directory;
      *          <code>false</code> otherwise
@@ -786,8 +792,6 @@
      *          If a security manager exists and its <code>{@link
      *          java.lang.SecurityManager#checkRead(java.lang.String)}</code>
      *          method denies read access to the file
-     *
-     * @see java.nio.file.attribute.Attributes#readBasicFileAttributes
      */
     public boolean isDirectory() {
         SecurityManager security = System.getSecurityManager();
@@ -804,6 +808,12 @@
      * addition, satisfies other system-dependent criteria.  Any non-directory
      * file created by a Java application is guaranteed to be a normal file.
      *
+     * <p> Where it is required to distinguish an I/O exception from the case
+     * that the file is not a normal file, or where several attributes of the
+     * same file are required at the same time, then the {@link
+     * java.nio.file.Files#readAttributes(Path,Class,LinkOption[])
+     * Files.readAttributes} method may be used.
+     *
      * @return  <code>true</code> if and only if the file denoted by this
      *          abstract pathname exists <em>and</em> is a normal file;
      *          <code>false</code> otherwise
@@ -812,8 +822,6 @@
      *          If a security manager exists and its <code>{@link
      *          java.lang.SecurityManager#checkRead(java.lang.String)}</code>
      *          method denies read access to the file
-     *
-     * @see java.nio.file.attribute.Attributes#readBasicFileAttributes
      */
     public boolean isFile() {
         SecurityManager security = System.getSecurityManager();
@@ -853,6 +861,13 @@
      * Returns the time that the file denoted by this abstract pathname was
      * last modified.
      *
+     * <p> Where it is required to distinguish an I/O exception from the case
+     * where {@code 0L} is returned, or where several attributes of the
+     * same file are required at the same time, or where the time of last
+     * access or the creation time are required, then the {@link
+     * java.nio.file.Files#readAttributes(Path,Class,LinkOption[])
+     * Files.readAttributes} method may be used.
+     *
      * @return  A <code>long</code> value representing the time the file was
      *          last modified, measured in milliseconds since the epoch
      *          (00:00:00 GMT, January 1, 1970), or <code>0L</code> if the
@@ -862,8 +877,6 @@
      *          If a security manager exists and its <code>{@link
      *          java.lang.SecurityManager#checkRead(java.lang.String)}</code>
      *          method denies read access to the file
-     *
-     * @see java.nio.file.attribute.Attributes#readBasicFileAttributes
      */
     public long lastModified() {
         SecurityManager security = System.getSecurityManager();
@@ -877,6 +890,12 @@
      * Returns the length of the file denoted by this abstract pathname.
      * The return value is unspecified if this pathname denotes a directory.
      *
+     * <p> Where it is required to distinguish an I/O exception from the case
+     * that {@code 0L} is returned, or where several attributes of the same file
+     * are required at the same time, then the {@link
+     * java.nio.file.Files#readAttributes(Path,Class,LinkOption[])
+     * Files.readAttributes} method may be used.
+     *
      * @return  The length, in bytes, of the file denoted by this abstract
      *          pathname, or <code>0L</code> if the file does not exist.  Some
      *          operating systems may return <code>0L</code> for pathnames
@@ -886,8 +905,6 @@
      *          If a security manager exists and its <code>{@link
      *          java.lang.SecurityManager#checkRead(java.lang.String)}</code>
      *          method denies read access to the file
-     *
-     * @see java.nio.file.attribute.Attributes#readBasicFileAttributes
      */
     public long length() {
         SecurityManager security = System.getSecurityManager();
@@ -937,11 +954,10 @@
      * this pathname denotes a directory, then the directory must be empty in
      * order to be deleted.
      *
-     * <p> Note that the {@link Path} class defines the {@link Path#delete
-     * delete} method to throw an {@link IOException} when a file cannot be
-     * deleted. This is useful for error reporting and to diagnose why a file
-     * cannot be deleted. The {@link #toPath toPath} method may be used to
-     * obtain a {@code Path} representing this abstract pathname.
+     * <p> Note that the {@link java.nio.file.Files} class defines the {@link
+     * java.nio.file.Files#delete(Path) delete} method to throw an {@link IOException}
+     * when a file cannot be deleted. This is useful for error reporting and to
+     * diagnose why a file cannot be deleted.
      *
      * @return  <code>true</code> if and only if the file or directory is
      *          successfully deleted; <code>false</code> otherwise
@@ -1009,12 +1025,11 @@
      * will appear in any specific order; they are not, in particular,
      * guaranteed to appear in alphabetical order.
      *
-     * <p> Note that the {@link Path} class defines the {@link
-     * Path#newDirectoryStream newDirectoryStream} method to open a directory
-     * and iterate over the names of the files in the directory. This may use
-     * less resources when working with very large directories. The {@link
-     * #toPath toPath} method may be used to obtain a {@code Path} representing
-     * this abstract pathname.
+     * <p> Note that the {@link java.nio.file.Files} class defines the {@link
+     * java.nio.file.Files#newDirectoryStream(Path) newDirectoryStream} method to
+     * open a directory and iterate over the names of the files in the directory.
+     * This may use less resources when working with very large directories, and
+     * may be more responsive when working with remote directories.
      *
      * @return  An array of strings naming the files and directories in the
      *          directory denoted by this abstract pathname.  The array will be
@@ -1061,6 +1076,8 @@
      *          If a security manager exists and its {@link
      *          SecurityManager#checkRead(String)} method denies read access to
      *          the directory
+     *
+     * @see java.nio.file.Files#newDirectoryStream(Path,String)
      */
     public String[] list(FilenameFilter filter) {
         String names[] = list();
@@ -1095,12 +1112,11 @@
      * will appear in any specific order; they are not, in particular,
      * guaranteed to appear in alphabetical order.
      *
-     * <p> Note that the {@link Path} class defines the {@link
-     * Path#newDirectoryStream newDirectoryStream} method to open a directory
-     * and iterate over the names of the files in the directory. This may use
-     * less resources when working with very large directories. The {@link
-     * #toPath toPath} method may be used to obtain a {@code Path} representing
-     * this abstract pathname.
+     * <p> Note that the {@link java.nio.file.Files} class defines the {@link
+     * java.nio.file.Files#newDirectoryStream(Path) newDirectoryStream} method
+     * to open a directory and iterate over the names of the files in the
+     * directory. This may use less resources when working with very large
+     * directories.
      *
      * @return  An array of abstract pathnames denoting the files and
      *          directories in the directory denoted by this abstract pathname.
@@ -1154,6 +1170,7 @@
      *          the directory
      *
      * @since  1.2
+     * @see java.nio.file.Files#newDirectoryStream(Path,String)
      */
     public File[] listFiles(FilenameFilter filter) {
         String ss[] = list();
@@ -1191,6 +1208,7 @@
      *          the directory
      *
      * @since  1.2
+     * @see java.nio.file.Files#newDirectoryStream(Path,java.nio.file.DirectoryStream.Filter)
      */
     public File[] listFiles(FileFilter filter) {
         String ss[] = list();
@@ -1207,12 +1225,6 @@
     /**
      * Creates the directory named by this abstract pathname.
      *
-     * <p> Note that the {@link Path} class defines the {@link Path#createDirectory
-     * createDirectory} method to throw an {@link IOException} when a directory
-     * cannot be created. This is useful for error reporting and to diagnose why
-     * a directory cannot be created. The {@link #toPath toPath} method may be
-     * used to obtain a {@code Path} representing this abstract pathname.
-     *
      * @return  <code>true</code> if and only if the directory was
      *          created; <code>false</code> otherwise
      *
@@ -1278,10 +1290,9 @@
      * already exists.  The return value should always be checked to make sure
      * that the rename operation was successful.
      *
-     * <p> Note that the {@link Path} class defines the {@link Path#moveTo
-     * moveTo} method to move or rename a file in a platform independent manner.
-     * The {@link #toPath toPath} method may be used to obtain a {@code Path}
-     * representing this abstract pathname.
+     * <p> Note that the {@link java.nio.file.Files} class defines the {@link
+     * java.nio.file.Files#move move} method to move or rename a file in a
+     * platform independent manner.
      *
      * @param  dest  The new abstract pathname for the named file
      *
@@ -1369,10 +1380,9 @@
      * Sets the owner's or everybody's write permission for this abstract
      * pathname.
      *
-     * <p> The {@link java.nio.file.attribute.Attributes Attributes} class
-     * defines methods that operate on file attributes including file
-     * permissions. This may be used when finer manipulation of file permissions
-     * is required.
+     * <p> The {@link java.nio.file.Files} class defines methods that operate on
+     * file attributes including file permissions. This may be used when finer
+     * manipulation of file permissions is required.
      *
      * @param   writable
      *          If <code>true</code>, sets the access permission to allow write
@@ -1437,10 +1447,9 @@
      * Sets the owner's or everybody's read permission for this abstract
      * pathname.
      *
-     * <p> The {@link java.nio.file.attribute.Attributes  Attributes} class
-     * defines methods that operate on file attributes including file
-     * permissions. This may be used when finer manipulation of file permissions
-     * is required.
+     * <p> The {@link java.nio.file.Files} class defines methods that operate on
+     * file attributes including file permissions. This may be used when finer
+     * manipulation of file permissions is required.
      *
      * @param   readable
      *          If <code>true</code>, sets the access permission to allow read
@@ -1511,10 +1520,9 @@
      * Sets the owner's or everybody's execute permission for this abstract
      * pathname.
      *
-     * <p> The {@link java.nio.file.attribute.Attributes  Attributes} class
-     * defines methods that operate on file attributes including file
-     * permissions. This may be used when finer manipulation of file permissions
-     * is required.
+     * <p> The {@link java.nio.file.Files} class defines methods that operate on
+     * file attributes including file permissions. This may be used when finer
+     * manipulation of file permissions is required.
      *
      * @param   executable
      *          If <code>true</code>, sets the access permission to allow execute
@@ -1646,6 +1654,7 @@
      *          filesystem roots.
      *
      * @since  1.2
+     * @see java.nio.file.FileStore
      */
     public static File[] listRoots() {
         return fs.listRoots();
@@ -1753,7 +1762,7 @@
 
     /* -- Temporary files -- */
 
-    static class TempDirectory {
+    private static class TempDirectory {
         private TempDirectory() { }
 
         // temporary directory location
@@ -1880,11 +1889,12 @@
      * java.lang.String, java.io.File)
      * createTempFile(prefix,&nbsp;suffix,&nbsp;null)}</code>.
      *
-     * <p> The {@link #createTemporaryFile(String,String,FileAttribute[])} method
-     * provides an alternative method to create an empty file in the
-     * temporary-file directory. Files created by that method may have more
-     * restrictive access permissions to files created by this method and so
-     * may be more suited to security-sensitive applications.
+     * <p> The {@link
+     * java.nio.file.Files#createTempFile(String,String,java.nio.file.attribute.FileAttribute[])
+     * Files.createTempFile} method provides an alternative method to create an
+     * empty file in the temporary-file directory. Files created by that method
+     * may have more restrictive access permissions to files created by this
+     * method and so may be more suited to security-sensitive applications.
      *
      * @param  prefix     The prefix string to be used in generating the file's
      *                    name; must be at least three characters long
@@ -1907,6 +1917,7 @@
      *          method does not allow a file to be created
      *
      * @since 1.2
+     * @see java.nio.file.Files#createTempDirectory(String,FileAttribute[])
      */
     public static File createTempFile(String prefix, String suffix)
         throws IOException
@@ -1914,61 +1925,6 @@
         return createTempFile(prefix, suffix, null);
     }
 
-    /**
-     * Creates an empty file in the default temporary-file directory, using
-     * the given prefix and suffix to generate its name.
-     *
-     * <p> The {@code attrs} parameter is an optional array of {@link FileAttribute
-     * attributes} to set atomically when creating the file. Each attribute is
-     * identified by its {@link FileAttribute#name name}. If more than one attribute
-     * of the same name is included in the array then all but the last occurrence
-     * is ignored.
-     *
-     * <p> Where the {@code attrs} parameter does not specify <i>access
-     * permissions</i> to set atomically when creating the file, then the
-     * resulting file may have more restrictive access permissions than files
-     * created by the {@link #createTempFile(java.lang.String, java.lang.String)}
-     * method.
-     *
-     * @param   prefix
-     *          The prefix string to be used in generating the file's
-     *          name; must be at least three characters long
-     * @param   suffix
-     *          The suffix string to be used in generating the file's
-     *          name; may be {@code null}, in which case the suffix
-     *          {@code ".tmp"} will be used
-     * @param   attrs
-     *          An optional list of file attributes to set atomically when creating
-     *          the file
-     *
-     * @return  An abstract pathname denoting a newly-created empty file
-     *
-     * @throws  IllegalArgumentException
-     *          If the {@code prefix} argument contains fewer than three
-     *          characters
-     * @throws  UnsupportedOperationException
-     *          If the array contains an attribute that cannot be set atomically
-     *          when creating the file
-     * @throws  IOException
-     *          If a file could not be created
-     * @throws  SecurityException
-     *          If a security manager exists and its <code>{@link
-     *          java.lang.SecurityManager#checkWrite(java.lang.String)}</code>
-     *          method does not allow a file to be created.
-     *
-     * @since 1.7
-     */
-    public static File createTemporaryFile(String prefix,
-                                           String suffix,
-                                           FileAttribute<?>... attrs)
-        throws IOException
-    {
-        if (prefix.length() < 3)
-            throw new IllegalArgumentException("Prefix string too short");
-        suffix = (suffix == null) ? ".tmp" : suffix;
-        return TempFileHelper.createFile(prefix, suffix, attrs);
-    }
-
     /* -- Basic infrastructure -- */
 
     /**
@@ -2104,6 +2060,7 @@
      *          path (see {@link java.nio.file.FileSystem#getPath FileSystem.getPath})
      *
      * @since   1.7
+     * @see Path#toFile
      */
     public Path toPath() {
         Path result = filePath;
@@ -2111,12 +2068,7 @@
             synchronized (this) {
                 result = filePath;
                 if (result == null) {
-                    if (path.length() == 0) {
-                        // assume default file system treats "." as current directory
-                        result = Paths.get(".");
-                    } else {
-                        result = Paths.get(path);
-                    }
+                    result = FileSystems.getDefault().getPath(path);
                     filePath = result;
                 }
             }
--- a/jdk/src/share/classes/java/io/FileInputStream.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/io/FileInputStream.java	Wed Jul 05 17:35:13 2017 +0200
@@ -42,6 +42,7 @@
  * @see     java.io.File
  * @see     java.io.FileDescriptor
  * @see     java.io.FileOutputStream
+ * @see     java.nio.file.Files#newInputStream
  * @since   JDK1.0
  */
 public
--- a/jdk/src/share/classes/java/io/FileOutputStream.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/io/FileOutputStream.java	Wed Jul 05 17:35:13 2017 +0200
@@ -46,6 +46,7 @@
  * @see     java.io.File
  * @see     java.io.FileDescriptor
  * @see     java.io.FileInputStream
+ * @see     java.nio.file.Files#newOutputStream
  * @since   JDK1.0
  */
 public
--- a/jdk/src/share/classes/java/io/FilePermission.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/io/FilePermission.java	Wed Jul 05 17:35:13 2017 +0200
@@ -72,7 +72,7 @@
  *    <DT> readlink
  *    <DD> read link permission. Allows the target of a
  *         <a href="../nio/file/package-summary.html#links">symbolic link</a>
- *         to be read by invoking the {@link java.nio.file.Path#readSymbolicLink
+ *         to be read by invoking the {@link java.nio.file.Files#readSymbolicLink
  *         readSymbolicLink } method.
  * </DL>
  * <P>
--- a/jdk/src/share/classes/java/io/PrintStream.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/io/PrintStream.java	Wed Jul 05 17:35:13 2017 +0200
@@ -70,11 +70,11 @@
     private OutputStreamWriter charOut;
 
     /**
-     * nonNull is explicitly declared here so as not to create an extra
-     * dependency on java.util.Objects.nonNull. PrintStream is loaded
+     * requireNonNull is explicitly declared here so as not to create an extra
+     * dependency on java.util.Objects.requireNonNull. PrintStream is loaded
      * early during system initialization.
      */
-    private static <T> T nonNull(T obj, String message) {
+    private static <T> T requireNonNull(T obj, String message) {
         if (obj == null)
             throw new NullPointerException(message);
         return obj;
@@ -88,7 +88,7 @@
     private static Charset toCharset(String csn)
         throws UnsupportedEncodingException
     {
-        nonNull(csn, "charsetName");
+        requireNonNull(csn, "charsetName");
         try {
             return Charset.forName(csn);
         } catch (IllegalCharsetNameException|UnsupportedCharsetException unused) {
@@ -148,7 +148,7 @@
      * @see java.io.PrintWriter#PrintWriter(java.io.OutputStream, boolean)
      */
     public PrintStream(OutputStream out, boolean autoFlush) {
-        this(autoFlush, nonNull(out, "Null output stream"));
+        this(autoFlush, requireNonNull(out, "Null output stream"));
     }
 
     /**
@@ -173,7 +173,7 @@
         throws UnsupportedEncodingException
     {
         this(autoFlush,
-             nonNull(out, "Null output stream"),
+             requireNonNull(out, "Null output stream"),
              toCharset(encoding));
     }
 
--- a/jdk/src/share/classes/java/io/PrintWriter.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/io/PrintWriter.java	Wed Jul 05 17:35:13 2017 +0200
@@ -82,7 +82,7 @@
     private static Charset toCharset(String csn)
         throws UnsupportedEncodingException
     {
-        Objects.nonNull(csn, "charsetName");
+        Objects.requireNonNull(csn, "charsetName");
         try {
             return Charset.forName(csn);
         } catch (IllegalCharsetNameException|UnsupportedCharsetException unused) {
--- a/jdk/src/share/classes/java/io/SerialCallbackContext.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/io/SerialCallbackContext.java	Wed Jul 05 17:35:13 2017 +0200
@@ -54,5 +54,3 @@
           thread = null;
       }
   }
-
-
--- a/jdk/src/share/classes/java/io/TempFileHelper.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,139 +0,0 @@
-/*
- * Copyright (c) 2009, 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 java.io;
-
-import java.nio.file.FileSystems;
-import java.nio.file.InvalidPathException;
-import java.nio.file.FileAlreadyExistsException;
-import java.nio.file.attribute.FileAttribute;
-import java.nio.file.attribute.PosixFilePermission;
-import java.nio.file.attribute.PosixFilePermissions;
-import static java.nio.file.attribute.PosixFilePermission.*;
-import java.util.Set;
-import java.util.EnumSet;
-
-/**
- * Helper class to support creation of temporary files and directory with
- * initial attributes.
- */
-
-class TempFileHelper {
-    private TempFileHelper() { }
-
-    // default file and directory permissions (lazily initialized)
-    private static class PermissionsHolder {
-        static final boolean hasPosixPermissions = FileSystems.getDefault()
-            .supportedFileAttributeViews().contains("posix");
-        static final FileAttribute<Set<PosixFilePermission>> filePermissions =
-            PosixFilePermissions.asFileAttribute(EnumSet.of(OWNER_READ, OWNER_WRITE));
-        static final FileAttribute<Set<PosixFilePermission>> directoryPermissions =
-            PosixFilePermissions.asFileAttribute(EnumSet
-                .of(OWNER_READ, OWNER_WRITE, OWNER_EXECUTE));
-    }
-
-    /**
-     * Creates a file or directory in the temporary directory.
-     */
-    private static File create(String prefix,
-                               String suffix,
-                               FileAttribute[] attrs,
-                               boolean isDirectory)
-        throws IOException
-    {
-        // in POSIX environments use default file and directory permissions
-        // if initial permissions not given by caller.
-        if (PermissionsHolder.hasPosixPermissions) {
-            if (attrs.length == 0) {
-                // no attributes so use default permissions
-                attrs = new FileAttribute<?>[1];
-                attrs[0] = (isDirectory) ? PermissionsHolder.directoryPermissions :
-                    PermissionsHolder.filePermissions;
-            } else {
-                // check if posix permissions given; if not use default
-                boolean hasPermissions = false;
-                for (int i=0; i<attrs.length; i++) {
-                    if (attrs[i].name().equals("posix:permissions")) {
-                        hasPermissions = true;
-                        break;
-                    }
-                }
-                if (!hasPermissions) {
-                    FileAttribute<?>[] copy = new FileAttribute<?>[attrs.length+1];
-                    System.arraycopy(attrs, 0, copy, 0, attrs.length);
-                    attrs = copy;
-                    attrs[attrs.length-1] = (isDirectory) ?
-                        PermissionsHolder.directoryPermissions :
-                        PermissionsHolder.filePermissions;
-                }
-            }
-        }
-
-        // loop generating random names until file or directory can be created
-        SecurityManager sm = System.getSecurityManager();
-        for (;;) {
-            File tmpdir = File.TempDirectory.location();
-            File f = File.TempDirectory.generateFile(prefix, suffix, tmpdir);
-            try {
-                if (isDirectory) {
-                    f.toPath().createDirectory(attrs);
-                } else {
-                    f.toPath().createFile(attrs);
-                }
-                return f;
-            } catch (InvalidPathException e) {
-                // don't reveal temporary directory location
-                if (sm != null)
-                    throw new IllegalArgumentException("Invalid prefix or suffix");
-                throw e;
-            } catch (SecurityException e) {
-                // don't reveal temporary directory location
-                if (sm != null)
-                    throw new SecurityException("Unable to create temporary file");
-                throw e;
-            } catch (FileAlreadyExistsException e) {
-                // ignore
-            }
-        }
-    }
-
-    /**
-     * Creates a file in the temporary directory.
-     */
-    static File createFile(String prefix,  String suffix, FileAttribute[] attrs)
-        throws IOException
-    {
-        return create(prefix, suffix, attrs, false);
-    }
-
-    /**
-     * Creates a directory in the temporary directory.
-     */
-    static File createDirectory(String prefix, FileAttribute[] attrs)
-        throws IOException
-    {
-        return create(prefix, "", attrs, true);
-    }
-}
--- a/jdk/src/share/classes/java/lang/StackTraceElement.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/lang/StackTraceElement.java	Wed Jul 05 17:35:13 2017 +0200
@@ -68,8 +68,8 @@
      */
     public StackTraceElement(String declaringClass, String methodName,
                              String fileName, int lineNumber) {
-        this.declaringClass = Objects.nonNull(declaringClass, "Declaring class is null");
-        this.methodName     = Objects.nonNull(methodName, "Method name is null");
+        this.declaringClass = Objects.requireNonNull(declaringClass, "Declaring class is null");
+        this.methodName     = Objects.requireNonNull(methodName, "Method name is null");
         this.fileName       = fileName;
         this.lineNumber     = lineNumber;
     }
--- a/jdk/src/share/classes/java/lang/SuppressWarnings.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/lang/SuppressWarnings.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -44,7 +44,7 @@
  * @since 1.5
  * @author Josh Bloch
  */
-@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE, TYPE_PARAMETER})
+@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
 @Retention(RetentionPolicy.SOURCE)
 public @interface SuppressWarnings {
     /**
--- a/jdk/src/share/classes/java/lang/Thread.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/lang/Thread.java	Wed Jul 05 17:35:13 2017 +0200
@@ -690,7 +690,7 @@
         /* Notify the group that this thread is about to be started
          * so that it can be added to the group's list of threads
          * and the group's unstarted count can be decremented. */
-        group.threadStarting(this);
+        group.add(this);
 
         boolean started = false;
         try {
--- a/jdk/src/share/classes/java/lang/ThreadGroup.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/lang/ThreadGroup.java	Wed Jul 05 17:35:13 2017 +0200
@@ -868,21 +868,6 @@
     }
 
     /**
-     * Notifies the group that the thread {@code t} is about to be
-     * started and adds the thread to this thread group.
-     *
-     * The thread is now a fully fledged member of the group, even though
-     * it hasn't been started yet. It will prevent the group from being
-     * destroyed so the unstarted Threads count is decremented.
-     */
-    void threadStarting(Thread t) {
-        synchronized (this) {
-            add(t);
-            nUnstartedThreads--;
-        }
-    }
-
-    /**
      * Adds the specified thread to this thread group.
      *
      * <p> Note: This method is called from both library code
@@ -910,6 +895,12 @@
             // This is done last so it doesn't matter in case the
             // thread is killed
             nthreads++;
+
+            // The thread is now a fully fledged member of the group, even
+            // though it may, or may not, have been started yet. It will prevent
+            // the group from being destroyed so the unstarted Threads count is
+            // decremented.
+            nUnstartedThreads--;
         }
     }
 
--- a/jdk/src/share/classes/java/lang/annotation/ElementType.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/lang/annotation/ElementType.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -40,12 +40,6 @@
     /** Class, interface (including annotation type), or enum declaration */
     TYPE,
 
-    /** Uses of a type */
-    TYPE_USE,
-
-    /** type parameters */
-    TYPE_PARAMETER,
-
     /** Field declaration (includes enum constants) */
     FIELD,
 
--- a/jdk/src/share/classes/java/math/BigDecimal.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/math/BigDecimal.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 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
@@ -121,8 +121,8 @@
  * scale for each operation is listed in the table below.
  *
  * <table border>
- * <caption top><h3>Preferred Scales for Results of Arithmetic Operations
- * </h3></caption>
+ * <caption><b>Preferred Scales for Results of Arithmetic Operations
+ * </b></caption>
  * <tr><th>Operation</th><th>Preferred Scale of Result</th></tr>
  * <tr><td>Add</td><td>max(addend.scale(), augend.scale())</td>
  * <tr><td>Subtract</td><td>max(minuend.scale(), subtrahend.scale())</td>
@@ -661,25 +661,25 @@
      * <dd>{@code .} <i>FractionPart</i>
      * <dd><i>IntegerPart</i>
      * <p>
-     * <dt><i>IntegerPart:
-     * <dd>Digits</i>
+     * <dt><i>IntegerPart:</i>
+     * <dd><i>Digits</i>
      * <p>
-     * <dt><i>FractionPart:
-     * <dd>Digits</i>
+     * <dt><i>FractionPart:</i>
+     * <dd><i>Digits</i>
      * <p>
-     * <dt><i>Exponent:
-     * <dd>ExponentIndicator SignedInteger</i>
+     * <dt><i>Exponent:</i>
+     * <dd><i>ExponentIndicator SignedInteger</i>
      * <p>
      * <dt><i>ExponentIndicator:</i>
      * <dd>{@code e}
      * <dd>{@code E}
      * <p>
-     * <dt><i>SignedInteger:
-     * <dd>Sign<sub>opt</sub> Digits</i>
+     * <dt><i>SignedInteger:</i>
+     * <dd><i>Sign<sub>opt</sub> Digits</i>
      * <p>
-     * <dt><i>Digits:
-     * <dd>Digit
-     * <dd>Digits Digit</i>
+     * <dt><i>Digits:</i>
+     * <dd><i>Digit</i>
+     * <dd><i>Digits Digit</i>
      * <p>
      * <dt><i>Digit:</i>
      * <dd>any character for which {@link Character#isDigit}
--- a/jdk/src/share/classes/java/math/RoundingMode.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/math/RoundingMode.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -53,7 +53,7 @@
  *
  *<p>
  *<table border>
- * <caption top><h3>Summary of Rounding Operations Under Different Rounding Modes</h3></caption>
+ * <caption><b>Summary of Rounding Operations Under Different Rounding Modes</b></caption>
  * <tr><th></th><th colspan=8>Result of rounding input to one digit with the given
  *                           rounding mode</th>
  * <tr valign=top>
--- a/jdk/src/share/classes/java/nio/channels/FileChannel.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/channels/FileChannel.java	Wed Jul 05 17:35:13 2017 +0200
@@ -248,7 +248,7 @@
      * FileSystemProvider#newFileChannel newFileChannel} method on the
      * provider that created the {@code Path}.
      *
-     * @param   file
+     * @param   path
      *          The path of the file to open or create
      * @param   options
      *          Options specifying how the file is opened
@@ -261,7 +261,7 @@
      * @throws  IllegalArgumentException
      *          If the set contains an invalid combination of options
      * @throws  UnsupportedOperationException
-     *          If the {@code file} is associated with a provider that does not
+     *          If the {@code path} is associated with a provider that does not
      *          support creating file channels, or an unsupported open option is
      *          specified, or the array contains an attribute that cannot be set
      *          atomically when creating the file
@@ -278,13 +278,13 @@
      *
      * @since   1.7
      */
-    public static FileChannel open(Path file,
+    public static FileChannel open(Path path,
                                    Set<? extends OpenOption> options,
                                    FileAttribute<?>... attrs)
         throws IOException
     {
-        FileSystemProvider provider = file.getFileSystem().provider();
-        return provider.newFileChannel(file, options, attrs);
+        FileSystemProvider provider = path.getFileSystem().provider();
+        return provider.newFileChannel(path, options, attrs);
     }
 
     private static final FileAttribute<?>[] NO_ATTRIBUTES = new FileAttribute[0];
@@ -295,10 +295,12 @@
      * <p> An invocation of this method behaves in exactly the same way as the
      * invocation
      * <pre>
-     *     fc.{@link #open(Path,Set,FileAttribute[]) open}(file, options, new FileAttribute&lt;?&gt;[0]);
+     *     fc.{@link #open(Path,Set,FileAttribute[]) open}(file, opts, new FileAttribute&lt;?&gt;[0]);
      * </pre>
+     * where {@code opts} is a set of the options specified in the {@code
+     * options} array.
      *
-     * @param   file
+     * @param   path
      *          The path of the file to open or create
      * @param   options
      *          Options specifying how the file is opened
@@ -308,7 +310,7 @@
      * @throws  IllegalArgumentException
      *          If the set contains an invalid combination of options
      * @throws  UnsupportedOperationException
-     *          If the {@code file} is associated with a provider that does not
+     *          If the {@code path} is associated with a provider that does not
      *          support creating file channels, or an unsupported open option is
      *          specified
      * @throws  IOException
@@ -324,12 +326,12 @@
      *
      * @since   1.7
      */
-    public static FileChannel open(Path file, OpenOption... options)
+    public static FileChannel open(Path path, OpenOption... options)
         throws IOException
     {
         Set<OpenOption> set = new HashSet<OpenOption>(options.length);
         Collections.addAll(set, options);
-        return open(file, set, NO_ATTRIBUTES);
+        return open(path, set, NO_ATTRIBUTES);
     }
 
     // -- Channel operations --
--- a/jdk/src/share/classes/java/nio/channels/SeekableByteChannel.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/channels/SeekableByteChannel.java	Wed Jul 05 17:35:13 2017 +0200
@@ -47,7 +47,7 @@
  * so that method invocations on the implementation class can be chained.
  *
  * @since 1.7
- * @see java.nio.file.Path#newByteChannel
+ * @see java.nio.file.Files#newByteChannel
  */
 
 public interface SeekableByteChannel
--- a/jdk/src/share/classes/java/nio/file/AccessMode.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/AccessMode.java	Wed Jul 05 17:35:13 2017 +0200
@@ -29,8 +29,6 @@
  * Defines access modes used to test the accessibility of a file.
  *
  * @since 1.7
- *
- * @see Path#checkAccess
  */
 
 public enum AccessMode {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,158 @@
+/*
+ * Copyright (c) 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.  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 java.nio.file;
+
+import java.nio.file.attribute.*;
+import java.io.InputStream;
+import java.io.IOException;
+
+/**
+ * Helper class to support copying or moving files when the source and target
+ * are associated with different providers.
+ */
+
+class CopyMoveHelper {
+    private CopyMoveHelper() { }
+
+    /**
+     * Parses the arguments for a file copy operation.
+     */
+    private static class CopyOptions {
+        boolean replaceExisting = false;
+        boolean copyAttributes = false;
+        boolean followLinks = true;
+
+        private CopyOptions() { }
+
+        static CopyOptions parse(CopyOption... options) {
+            CopyOptions result = new CopyOptions();
+            for (CopyOption option: options) {
+                if (option == StandardCopyOption.REPLACE_EXISTING) {
+                    result.replaceExisting = true;
+                    continue;
+                }
+                if (option == LinkOption.NOFOLLOW_LINKS) {
+                    result.followLinks = false;
+                    continue;
+                }
+                if (option == StandardCopyOption.COPY_ATTRIBUTES) {
+                    result.copyAttributes = true;
+                    continue;
+                }
+                if (option == null)
+                    throw new NullPointerException();
+                throw new UnsupportedOperationException("'" + option +
+                    "' is not a recognized copy option");
+            }
+            return result;
+        }
+    }
+
+    /**
+     * Converts the given array of options for moving a file to options suitable
+     * for copying the file when a move is implemented as copy + delete.
+     */
+    private static CopyOption[] convertMoveToCopyOptions(CopyOption... options)
+        throws AtomicMoveNotSupportedException
+    {
+        int len = options.length;
+        CopyOption[] newOptions = new CopyOption[len+2];
+        for (int i=0; i<len; i++) {
+            CopyOption option = options[i];
+            if (option == StandardCopyOption.ATOMIC_MOVE) {
+                throw new AtomicMoveNotSupportedException(null, null,
+                    "Atomic move between providers is not supported");
+            }
+            newOptions[i] = option;
+        }
+        newOptions[len] = LinkOption.NOFOLLOW_LINKS;
+        newOptions[len+1] = StandardCopyOption.COPY_ATTRIBUTES;
+        return newOptions;
+    }
+
+    /**
+     * Simple copy for use when source and target are associated with different
+     * providers
+     */
+    static void copyToForeignTarget(Path source, Path target,
+                                    CopyOption... options)
+        throws IOException
+    {
+        CopyOptions opts = CopyOptions.parse(options);
+        LinkOption[] linkOptions = (opts.followLinks) ? new LinkOption[0] :
+            new LinkOption[] { LinkOption.NOFOLLOW_LINKS };
+
+        // attributes of source file
+        BasicFileAttributes attrs = Files.readAttributes(source,
+                                                         BasicFileAttributes.class,
+                                                         linkOptions);
+        if (attrs.isSymbolicLink())
+            throw new IOException("Copying of symbolic links not supported");
+
+        // delete target if it exists and REPLACE_EXISTING is specified
+        if (opts.replaceExisting) {
+            Files.deleteIfExists(target);
+        } else if (Files.exists(target))
+            throw new FileAlreadyExistsException(target.toString());
+
+        // create directory or copy file
+        if (attrs.isDirectory()) {
+            Files.createDirectory(target);
+        } else {
+            try (InputStream in = Files.newInputStream(source)) {
+                Files.copy(in, target);
+            }
+        }
+
+        // copy basic attributes to target
+        if (opts.copyAttributes) {
+            BasicFileAttributeView view =
+                Files.getFileAttributeView(target, BasicFileAttributeView.class, linkOptions);
+            try {
+                view.setTimes(attrs.lastModifiedTime(),
+                              attrs.lastAccessTime(),
+                              attrs.creationTime());
+            } catch (IOException x) {
+                // rollback
+                try {
+                    Files.delete(target);
+                } catch (IOException ignore) { }
+                throw x;
+            }
+        }
+    }
+
+    /**
+     * Simple move implements as copy+delete for use when source and target are
+     * associated with different providers
+     */
+    static void moveToForeignTarget(Path source, Path target,
+                                    CopyOption... options) throws IOException
+    {
+        copyToForeignTarget(source, target, convertMoveToCopyOptions(options));
+        Files.delete(source);
+    }
+}
--- a/jdk/src/share/classes/java/nio/file/CopyOption.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/CopyOption.java	Wed Jul 05 17:35:13 2017 +0200
@@ -28,8 +28,12 @@
 /**
  * An object that configures how to copy or move a file.
  *
- * <p> Objects of this type may be used with the {@link Path#copyTo copyTo} and
- * {@link Path#moveTo moveTo} methods to configure how a file is copied or moved.
+ * <p> Objects of this type may be used with the {@link
+ * Files#copy(Path,Path,CopyOption[]) Files.copy(Path,Path,CopyOption...)},
+ * {@link Files#copy(java.io.InputStream,Path,CopyOption[])
+ * Files.copy(InputStream,Path,CopyOption...)} and {@link Files#move
+ * Files.move(Path,Path,CopyOption...)} methods to configure how a file is
+ * copied or moved.
  *
  * <p> The {@link StandardCopyOption} enumeration type defines the
  * <i>standard</i> options.
--- a/jdk/src/share/classes/java/nio/file/DirectoryIteratorException.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/DirectoryIteratorException.java	Wed Jul 05 17:35:13 2017 +0200
@@ -56,7 +56,7 @@
      *          if the cause is {@code null}
      */
     public DirectoryIteratorException(IOException cause) {
-        super(Objects.nonNull(cause));
+        super(Objects.requireNonNull(cause));
     }
 
     /**
--- a/jdk/src/share/classes/java/nio/file/DirectoryStream.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/DirectoryStream.java	Wed Jul 05 17:35:13 2017 +0200
@@ -54,7 +54,7 @@
  * construct to ensure that the stream is closed:
  * <pre>
  *   Path dir = ...
- *   try (DirectoryStream&lt;Path&gt; stream = dir.newDirectoryStream()) {
+ *   try (DirectoryStream&lt;Path&gt; stream = Files.newDirectoryStream(dir)) {
  *       for (Path entry: stream) {
  *           ...
  *       }
@@ -97,8 +97,8 @@
  * both the for-each and try-with-resources constructs.
  * <pre>
  *   List&lt;Path&gt; listSourceFiles(Path dir) throws IOException {
- *       List&lt;Path&gt; result = new ArrayList&lt;Path&gt;();
- *       try (DirectoryStream&lt;Path&gt; stream = dir.newDirectoryStream("*.{c,h,cpp,hpp,java}")) {
+ *       List&lt;Path&gt; result = new ArrayList&lt;&gt;();
+ *       try (DirectoryStream&lt;Path&gt; stream = Files.newDirectoryStream(dir, "*.{c,h,cpp,hpp,java}")) {
  *           for (Path entry: stream) {
  *               result.add(entry);
  *           }
@@ -113,7 +113,7 @@
  *
  * @since 1.7
  *
- * @see Path#newDirectoryStream
+ * @see Files#newDirectoryStream(Path)
  */
 
 public interface DirectoryStream<T>
@@ -122,9 +122,9 @@
     /**
      * An interface that is implemented by objects that decide if a directory
      * entry should be accepted or filtered. A {@code Filter} is passed as the
-     * parameter to the {@link Path#newDirectoryStream(DirectoryStream.Filter)
-     * newDirectoryStream} method when opening a directory to iterate over the
-     * entries in the directory.
+     * parameter to the {@link Files#newDirectoryStream(Path,DirectoryStream.Filter)}
+     * method when opening a directory to iterate over the entries in the
+     * directory.
      *
      * @param   <T>     the type of the directory entry
      *
--- a/jdk/src/share/classes/java/nio/file/FileRef.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,322 +0,0 @@
-/*
- * Copyright (c) 2007, 2009, 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 java.nio.file;
-
-import java.nio.file.attribute.*;
-import java.util.Map;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.IOException;
-
-/**
- * A reference to a file.
- *
- * <p> A {@code FileRef} is an object that locates a file and defines methods to
- * open the file for reading or writing. It also provides access to associated
- * metadata or file attributes.
- *
- * @since 1.7
- * @see java.nio.file.attribute.Attributes
- * @see java.io.File#toPath
- */
-
-public interface FileRef {
-
-    /**
-     * Opens the file referenced by this object, returning an input stream to
-     * read from the file. The stream will not be buffered, and is not required
-     * to support the {@link InputStream#mark mark} or {@link InputStream#reset
-     * reset} methods. The stream will be safe for access by multiple concurrent
-     * threads. Reading commences at the beginning of the file.
-     *
-     * <p> The {@code options} parameter determines how the file is opened.
-     * If no options are present then it is equivalent to opening the file with
-     * the {@link StandardOpenOption#READ READ} option. In addition to the {@code
-     * READ} option, an implementation may also support additional implementation
-     * specific options.
-     *
-     * @return  an input stream to read bytes from the file
-     *
-     * @throws  IllegalArgumentException
-     *          if an invalid combination of options is specified
-     * @throws  UnsupportedOperationException
-     *          if an unsupported option is specified
-     * @throws  IOException
-     *          if an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
-     *          method is invoked to check read access to the file.
-     */
-    InputStream newInputStream(OpenOption... options) throws IOException;
-
-    /**
-     * Opens or creates the file located by this object for writing, returning
-     * an output stream to write bytes to the file.
-     *
-     * <p> The {@code options} parameter determines how the file is opened.
-     * If no options are present then this method creates a new file for writing
-     * or truncates an existing file. In addition to the {@link StandardOpenOption
-     * standard} options, an implementation may also support additional
-     * implementation specific options.
-     *
-     * <p> The resulting stream will not be buffered. The stream will be safe
-     * for access by multiple concurrent threads.
-     *
-     * @param   options
-     *          options specifying how the file is opened
-     *
-     * @return  a new output stream
-     *
-     * @throws  IllegalArgumentException
-     *          if {@code options} contains an invalid combination of options
-     * @throws  UnsupportedOperationException
-     *          if an unsupported option is specified
-     * @throws  IOException
-     *          if an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, the {@link SecurityManager#checkWrite(String) checkWrite}
-     *          method is invoked to check write access to the file.
-     */
-    OutputStream newOutputStream(OpenOption... options) throws IOException;
-
-    /**
-     * Returns a file attribute view of a given type.
-     *
-     * <p> A file attribute view provides a read-only or updatable view of a
-     * set of file attributes. This method is intended to be used where the file
-     * attribute view defines type-safe methods to read or update the file
-     * attributes. The {@code type} parameter is the type of the attribute view
-     * required and the method returns an instance of that type if supported.
-     * The {@link BasicFileAttributeView} type supports access to the basic
-     * attributes of a file. Invoking this method to select a file attribute
-     * view of that type will always return an instance of that class.
-     *
-     * <p> The {@code options} array may be used to indicate how symbolic links
-     * are handled by the resulting file attribute view for the case that the
-     * file is a symbolic link. By default, symbolic links are followed. If the
-     * option {@link LinkOption#NOFOLLOW_LINKS NOFOLLOW_LINKS} is present then
-     * symbolic links are not followed. This option is ignored by implementations
-     * that do not support symbolic links.
-     *
-     * @param   type
-     *          the {@code Class} object corresponding to the file attribute view
-     * @param   options
-     *          options indicating how symbolic links are handled
-     *
-     * @return  a file attribute view of the specified type, or {@code null} if
-     *          the attribute view type is not available
-     *
-     * @throws  UnsupportedOperationException
-     *          If options contains an unsupported option. This exception is
-     *          specified to allow the {@code LinkOption} enum be extended
-     *          in future releases.
-     *
-     * @see Attributes#readBasicFileAttributes
-     */
-    <V extends FileAttributeView> V getFileAttributeView(Class<V> type,
-                                                         LinkOption... options);
-
-    /**
-     * Sets the value of a file attribute.
-     *
-     * <p> The {@code attribute} parameter identifies the attribute to be set
-     * and takes the form:
-     * <blockquote>
-     * [<i>view-name</i><b>:</b>]<i>attribute-name</i>
-     * </blockquote>
-     * where square brackets [...] delineate an optional component and the
-     * character {@code ':'} stands for itself.
-     *
-     * <p> <i>view-name</i> is the {@link FileAttributeView#name name} of a {@link
-     * FileAttributeView} that identifies a set of file attributes. If not
-     * specified then it defaults to {@code "basic"}, the name of the file
-     * attribute view that identifies the basic set of file attributes common to
-     * many file systems. <i>attribute-name</i> is the name of the attribute
-     * within the set.
-     *
-     * <p> <b>Usage Example:</b>
-     * Suppose we want to set the DOS "hidden" attribute:
-     * <pre>
-     *    file.setAttribute("dos:hidden", true);
-     * </pre>
-     *
-     * @param   attribute
-     *          the attribute to set
-     * @param   value
-     *          the attribute value
-     * @param   options
-     *          options indicating how symbolic links are handled
-     *
-     * @throws  UnsupportedOperationException
-     *          if the attribute view is not available or it does not support
-     *          updating the attribute
-     * @throws  IllegalArgumentException
-     *          if the attribute value is of the correct type but has an
-     *          inappropriate value
-     * @throws  ClassCastException
-     *          If the attribute value is not of the expected type or is a
-     *          collection containing elements that are not of the expected
-     *          type
-     * @throws  IOException
-     *          If an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, its {@link SecurityManager#checkWrite(String) checkWrite}
-     *          method denies write access to the file. If this method is invoked
-     *          to set security sensitive attributes then the security manager
-     *          may be invoked to check for additional permissions.
-     */
-    void setAttribute(String attribute, Object value, LinkOption... options)
-        throws IOException;
-
-    /**
-     * Reads the value of a file attribute.
-     *
-     * <p> The {@code attribute} parameter identifies the attribute to be read
-     * and takes the form:
-     * <blockquote>
-     * [<i>view-name</i><b>:</b>]<i>attribute-name</i>
-     * </blockquote>
-     * where square brackets [...] delineate an optional component and the
-     * character {@code ':'} stands for itself.
-     *
-     * <p> <i>view-name</i> is the {@link FileAttributeView#name name} of a {@link
-     * FileAttributeView} that identifies a set of file attributes. If not
-     * specified then it defaults to {@code "basic"}, the name of the file
-     * attribute view that identifies the basic set of file attributes common to
-     * many file systems. <i>attribute-name</i> is the name of the attribute.
-     *
-     * <p> The {@code options} array may be used to indicate how symbolic links
-     * are handled for the case that the file is a symbolic link. By default,
-     * symbolic links are followed and the file attribute of the final target
-     * of the link is read. If the option {@link LinkOption#NOFOLLOW_LINKS
-     * NOFOLLOW_LINKS} is present then symbolic links are not followed and so
-     * the method returns the file attribute of the symbolic link.
-     *
-     * <p> <b>Usage Example:</b>
-     * Suppose we require the user ID of the file owner on a system that
-     * supports a "{@code unix}" view:
-     * <pre>
-     *    int uid = (Integer)file.getAttribute("unix:uid");
-     * </pre>
-     *
-     * @param   attribute
-     *          the attribute to read
-     * @param   options
-     *          options indicating how symbolic links are handled
-     * @return  the attribute value or {@code null} if the attribute view
-     *          is not available or it does not support reading the attribute
-     *
-     *          reading the attribute
-     * @throws  IOException
-     *          if an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, its {@link SecurityManager#checkRead(String) checkRead}
-     *          method denies read access to the file. If this method is invoked
-     *          to read security sensitive attributes then the security manager
-     *          may be invoked to check for additional permissions.
-     */
-    Object getAttribute(String attribute, LinkOption... options) throws IOException;
-
-    /**
-     * Reads a set of file attributes as a bulk operation.
-     *
-     * <p> The {@code attributes} parameter identifies the attributes to be read
-     * and takes the form:
-     * <blockquote>
-     * [<i>view-name</i><b>:</b>]<i>attribute-list</i>
-     * </blockquote>
-     * where square brackets [...] delineate an optional component and the
-     * character {@code ':'} stands for itself.
-     *
-     * <p> <i>view-name</i> is the {@link FileAttributeView#name name} of a {@link
-     * FileAttributeView} that identifies a set of file attributes. If not
-     * specified then it defaults to {@code "basic"}, the name of the file
-     * attribute view that identifies the basic set of file attributes common to
-     * many file systems.
-     *
-     * <p> The <i>attribute-list</i> component is a comma separated list of
-     * zero or more names of attributes to read. If the list contains the value
-     * {@code "*"} then all attributes are read. Attributes that are not supported
-     * are ignored and will not be present in the returned map. It is
-     * implementation specific if all attributes are read as an atomic operation
-     * with respect to other file system operations.
-     *
-     * <p> The following examples demonstrate possible values for the {@code
-     * attributes} parameter:
-     *
-     * <blockquote>
-     * <table border="0">
-     * <tr>
-     *   <td> {@code "*"} </td>
-     *   <td> Read all {@link BasicFileAttributes basic-file-attributes}. </td>
-     * </tr>
-     * <tr>
-     *   <td> {@code "size,lastModifiedTime,lastAccessTime"} </td>
-     *   <td> Reads the file size, last modified time, and last access time
-     *     attributes. </td>
-     * </tr>
-     * <tr>
-     *   <td> {@code "posix:*"} </td>
-     *   <td> Read all {@link PosixFileAttributes POSIX-file-attributes}.. </td>
-     * </tr>
-     * <tr>
-     *   <td> {@code "posix:permissions,owner,size"} </td>
-     *   <td> Reads the POSX file permissions, owner, and file size. </td>
-     * </tr>
-     * </table>
-     * </blockquote>
-     *
-     * <p> The {@code options} array may be used to indicate how symbolic links
-     * are handled for the case that the file is a symbolic link. By default,
-     * symbolic links are followed and the file attribute of the final target
-     * of the link is read. If the option {@link LinkOption#NOFOLLOW_LINKS
-     * NOFOLLOW_LINKS} is present then symbolic links are not followed and so
-     * the method returns the file attribute of the symbolic link.
-     *
-     * @param   attributes
-     *          The attributes to read
-     * @param   options
-     *          Options indicating how symbolic links are handled
-     *
-     * @return  A map of the attributes returned; may be empty. The map's keys
-     *          are the attribute names, its values are the attribute values
-     *
-     * @throws  IOException
-     *          If an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, its {@link SecurityManager#checkRead(String) checkRead}
-     *          method denies read access to the file. If this method is invoked
-     *          to read security sensitive attributes then the security manager
-     *          may be invoke to check for additional permissions.
-     */
-    Map<String,?> readAttributes(String attributes, LinkOption... options)
-        throws IOException;
-}
--- a/jdk/src/share/classes/java/nio/file/FileStore.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/FileStore.java	Wed Jul 05 17:35:13 2017 +0200
@@ -32,16 +32,13 @@
  * Storage for files. A {@code FileStore} represents a storage pool, device,
  * partition, volume, concrete file system or other implementation specific means
  * of file storage. The {@code FileStore} for where a file is stored is obtained
- * by invoking the {@link Path#getFileStore getFileStore} method, or all file
+ * by invoking the {@link Files#getFileStore getFileStore} method, or all file
  * stores can be enumerated by invoking the {@link FileSystem#getFileStores
  * getFileStores} method.
  *
  * <p> In addition to the methods defined by this class, a file store may support
  * one or more {@link FileStoreAttributeView FileStoreAttributeView} classes
  * that provide a read-only or updatable view of a set of file store attributes.
- * File stores associated with the default provider support the {@link
- * FileStoreSpaceAttributeView} to read the space related attributes of the
- * file store.
  *
  * @since 1.7
  */
@@ -87,6 +84,51 @@
     public abstract boolean isReadOnly();
 
     /**
+     * Returns the size, in bytes, of the file store.
+     *
+     * @return  the size of the file store, in bytes
+     *
+     * @throws  IOException
+     *          if an I/O error occurs
+     */
+    public abstract long getTotalSpace() throws IOException;
+
+    /**
+     * Returns the number of bytes available to this Java virtual machine on the
+     * file store.
+     *
+     * <p> The returned number of available bytes is a hint, but not a
+     * guarantee, that it is possible to use most or any of these bytes.  The
+     * number of usable bytes is most likely to be accurate immediately
+     * after the space attributes are obtained. It is likely to be made inaccurate
+     * by any external I/O operations including those made on the system outside
+     * of this Java virtual machine.
+     *
+     * @return  the number of bytes available
+     *
+     * @throws  IOException
+     *          if an I/O error occurs
+     */
+    public abstract long getUsableSpace() throws IOException;
+
+    /**
+     * Returns the number of unallocated bytes in the file store.
+     *
+     * <p> The returned number of unallocated bytes is a hint, but not a
+     * guarantee, that it is possible to use most or any of these bytes.  The
+     * number of unallocated bytes is most likely to be accurate immediately
+     * after the space attributes are obtained. It is likely to be
+     * made inaccurate by any external I/O operations including those made on
+     * the system outside of this virtual machine.
+     *
+     * @return  the number of unallocated bytes
+     *
+     * @throws  IOException
+     *          if an I/O error occurs
+     */
+    public abstract long getUnallocatedSpace() throws IOException;
+
+    /**
      * Tells whether or not this file store supports the file attributes
      * identified by the given file attribute view.
      *
@@ -131,12 +173,6 @@
      * The {@code type} parameter is the type of the attribute view required and
      * the method returns an instance of that type if supported.
      *
-     * <p> For {@code FileStore} objects created by the default provider, then
-     * the file stores support the {@link FileStoreSpaceAttributeView} that
-     * provides access to space attributes. In that case invoking this method
-     * with a parameter value of {@code FileStoreSpaceAttributeView.class} will
-     * always return an instance of that class.
-     *
      * @param   type
      *          the {@code Class} object corresponding to the attribute view
      *
@@ -160,10 +196,6 @@
      * a {@link FileStore AttributeView} that identifies a set of file attributes.
      * <i>attribute-name</i> is the name of the attribute.
      *
-     * <p> For {@code FileStore} objects created by the default provider, then
-     * the file stores support the {@link FileStoreSpaceAttributeView} that
-     * provides access to space attributes.
-     *
      * <p> <b>Usage Example:</b>
      * Suppose we want to know if ZFS compression is enabled (assuming the "zfs"
      * view is supported):
--- a/jdk/src/share/classes/java/nio/file/FileSystem.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/FileSystem.java	Wed Jul 05 17:35:13 2017 +0200
@@ -38,8 +38,8 @@
  * <p> The default file system, obtained by invoking the {@link FileSystems#getDefault
  * FileSystems.getDefault} method, provides access to the file system that is
  * accessible to the Java virtual machine. The {@link FileSystems} class defines
- * methods to create file systems that provide access to other types of file
- * systems.
+ * methods to create file systems that provide access to other types of (custom)
+ * file systems.
  *
  * <p> A file system is the factory for several types of objects:
  *
@@ -214,10 +214,9 @@
      * Suppose we want to print the space usage for all file stores:
      * <pre>
      *     for (FileStore store: FileSystems.getDefault().getFileStores()) {
-     *         FileStoreSpaceAttributes attrs = Attributes.readFileStoreSpaceAttributes(store);
-     *         long total = attrs.totalSpace() / 1024;
-     *         long used = (attrs.totalSpace() - attrs.unallocatedSpace()) / 1024;
-     *         long avail = attrs.usableSpace() / 1024;
+     *         long total = store.getTotalSpace() / 1024;
+     *         long used = (store.getTotalSpace() - store.getUnallocatedSpace()) / 1024;
+     *         long avail = store.getUsableSpace() / 1024;
      *         System.out.format("%-20s %12d %12d %12d%n", store, total, used, avail);
      *     }
      * </pre>
@@ -244,7 +243,20 @@
     public abstract Set<String> supportedFileAttributeViews();
 
     /**
-     * Converts a path string to a {@code Path}.
+     * Converts a path string, or a sequence of strings that when joined form
+     * a path string, to a {@code Path}. If {@code more} does not specify any
+     * elements then the value of the {@code first} parameter is the path string
+     * to convert. If {@code more} specifies one or more elements then each
+     * non-empty string, including {@code first}, is considered to be a sequence
+     * of name elements (see {@link Path}) and is joined to form a path string.
+     * The details as to how the Strings are joined is provider specific but
+     * typically they will be joined using the {@link #getSeparator
+     * name-separator} as the separator. For example, if the name separator is
+     * "{@code /}" and {@code getPath("/foo","bar","gus")} is invoked, then the
+     * path string {@code "/foo/bar/gus"} is converted to a {@code Path}.
+     * A {@code Path} representing an empty path is returned if {@code first}
+     * is the empty string and {@code more} does not contain any non-empty
+     * strings.
      *
      * <p> The parsing and conversion to a path object is inherently
      * implementation dependent. In the simplest case, the path string is rejected,
@@ -270,18 +282,17 @@
      * index} value indicating the first position in the {@code path} parameter
      * that caused the path string to be rejected.
      *
-     * <p> Invoking this method with an empty path string throws
-     * {@code InvalidPathException}.
+     * @param   first
+     *          the path string or initial part of the path string
+     * @param   more
+     *          additional strings to be joined to form the path string
      *
-     * @param   path
-     *          The path string
-     *
-     * @return  A {@code Path} object
+     * @return  the resulting {@code Path}
      *
      * @throws  InvalidPathException
      *          If the path string cannot be converted
      */
-    public abstract Path getPath(String path);
+    public abstract Path getPath(String first, String... more);
 
     /**
      * Returns a {@code PathMatcher} that performs match operations on the
@@ -290,9 +301,9 @@
      *
      * The {@code syntaxAndPattern} parameter identifies the syntax and the
      * pattern and takes the form:
-     * <blockquote>
+     * <blockquote><pre>
      * <i>syntax</i><b>:</b><i>pattern</i>
-     * </blockquote>
+     * </pre></blockquote>
      * where {@code ':'} stands for itself.
      *
      * <p> A {@code FileSystem} implementation supports the "{@code glob}" and
@@ -409,7 +420,7 @@
      * @throws  UnsupportedOperationException
      *          If the pattern syntax is not known to the implementation
      *
-     * @see Path#newDirectoryStream(String)
+     * @see Files#newDirectoryStream(Path,String)
      */
     public abstract PathMatcher getPathMatcher(String syntaxAndPattern);
 
@@ -421,10 +432,8 @@
      * <p> <b>Usage Example:</b>
      * Suppose we want to make "joe" the owner of a file:
      * <pre>
-     *     Path file = ...
-     *     UserPrincipal joe = file.getFileSystem().getUserPrincipalLookupService()
-     *         .lookupPrincipalByName("joe");
-     *     Attributes.setOwner(file, joe);
+     *     UserPrincipalLookupService lookupService = FileSystems.getDefault().getUserPrincipalLookupService();
+     *     Files.setOwner(path, lookupService.lookupPrincipalByName("joe"));
      * </pre>
      *
      * @throws  UnsupportedOperationException
--- a/jdk/src/share/classes/java/nio/file/FileSystems.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/FileSystems.java	Wed Jul 05 17:35:13 2017 +0200
@@ -164,8 +164,8 @@
      * to the first provider instance. The third provider class is instantiated
      * by invoking it with a reference to the second instance, and so on. The
      * last provider to be instantiated becomes the default provider; its {@code
-     * getFileSystem} method is invoked with the URI {@code "file:///"} to create
-     * the default file system.
+     * getFileSystem} method is invoked with the URI {@code "file:///"} to
+     * get a reference to the default file system.
      *
      * <p> Subsequent invocations of this method return the file system that was
      * returned by the first invocation.
@@ -238,7 +238,7 @@
      * Suppose there is a provider identified by the scheme {@code "memory"}
      * installed:
      * <pre>
-     *   Map&lt;String,String&gt; env = new HashMap&lt;String,String&gt;();
+     *   Map&lt;String,String&gt; env = new HashMap&lt;&gt;();
      *   env.put("capacity", "16G");
      *   env.put("blockSize", "4k");
      *   FileSystem fs = FileSystems.newFileSystem(URI.create("memory:///?name=logfs"), env);
@@ -343,33 +343,25 @@
      *
      * <p> This method makes use of specialized providers that create pseudo file
      * systems where the contents of one or more files is treated as a file
-     * system. The {@code file} parameter is a reference to an existing file
-     * and the {@code env} parameter is a map of provider specific properties to
-     * configure the file system.
+     * system.
      *
      * <p> This method iterates over the {@link FileSystemProvider#installedProviders()
      * installed} providers. It invokes, in turn, each provider's {@link
-     * FileSystemProvider#newFileSystem(FileRef,Map) newFileSystem(FileRef,Map)} method.
-     * If a provider returns a file system then the iteration terminates
-     * and the file system is returned. If none of the installed providers return
-     * a {@code FileSystem} then an attempt is made to locate the provider using
-     * the given class loader. If a provider returns a file system then the lookup
-     * terminates and the file system is returned.
+     * FileSystemProvider#newFileSystem(Path,Map) newFileSystem(Path,Map)} method
+     * with an empty map. If a provider returns a file system then the iteration
+     * terminates and the file system is returned. If none of the installed
+     * providers return a {@code FileSystem} then an attempt is made to locate
+     * the provider using the given class loader. If a provider returns a file
+     * system then the lookup terminates and the file system is returned.
      *
-     * @param   file
-     *          a reference to a file
-     * @param   env
-     *          a map of provider specific properties to configure the file system;
-     *          may be empty
+     * @param   path
+     *          the path to the file
      * @param   loader
      *          the class loader to locate the provider or {@code null} to only
      *          attempt to locate an installed provider
      *
      * @return  a new file system
      *
-     * @throws  IllegalArgumentException
-     *          if the {@code env} parameter does not contain properties required
-     *          by the provider, or a property value is invalid
      * @throws  ProviderNotFoundException
      *          if a provider supporting this file type cannot be located
      * @throws  ServiceConfigurationError
@@ -380,18 +372,18 @@
      *          if a security manager is installed and it denies an unspecified
      *          permission
      */
-    public static FileSystem newFileSystem(FileRef file,
-                                           Map<String,?> env,
+    public static FileSystem newFileSystem(Path path,
                                            ClassLoader loader)
         throws IOException
     {
-        if (file == null)
+        if (path == null)
             throw new NullPointerException();
+        Map<String,?> env = Collections.emptyMap();
 
         // check installed providers
         for (FileSystemProvider provider: FileSystemProvider.installedProviders()) {
             try {
-                return provider.newFileSystem(file, env);
+                return provider.newFileSystem(path, env);
             } catch (UnsupportedOperationException uoe) {
             }
         }
@@ -402,7 +394,7 @@
                 .load(FileSystemProvider.class, loader);
             for (FileSystemProvider provider: sl) {
                 try {
-                    return provider.newFileSystem(file, env);
+                    return provider.newFileSystem(path, env);
                 } catch (UnsupportedOperationException uoe) {
                 }
             }
--- a/jdk/src/share/classes/java/nio/file/FileTreeWalker.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/FileTreeWalker.java	Wed Jul 05 17:35:13 2017 +0200
@@ -69,7 +69,7 @@
         FileVisitResult result = walk(start,
                                       0,
                                       new ArrayList<AncestorDirectory>());
-        Objects.nonNull(result, "FileVisitor returned null");
+        Objects.requireNonNull(result, "FileVisitor returned null");
     }
 
     /**
@@ -102,12 +102,13 @@
         if (attrs == null) {
             try {
                 try {
-                    attrs = Attributes.readBasicFileAttributes(file, linkOptions);
+                    attrs = Files.readAttributes(file, BasicFileAttributes.class, linkOptions);
                 } catch (IOException x1) {
                     if (followLinks) {
                         try {
-                            attrs = Attributes
-                                .readBasicFileAttributes(file, LinkOption.NOFOLLOW_LINKS);
+                            attrs = Files.readAttributes(file,
+                                                         BasicFileAttributes.class,
+                                                         LinkOption.NOFOLLOW_LINKS);
                         } catch (IOException x2) {
                             exc = x2;
                         }
@@ -151,7 +152,7 @@
                 } else {
                     boolean isSameFile = false;
                     try {
-                        isSameFile = file.isSameFile(ancestor.file());
+                        isSameFile = Files.isSameFile(file, ancestor.file());
                     } catch (IOException x) {
                         // ignore
                     } catch (SecurityException x) {
@@ -175,7 +176,7 @@
 
             // open the directory
             try {
-                stream = file.newDirectoryStream();
+                stream = Files.newDirectoryStream(file);
             } catch (IOException x) {
                 return visitor.visitFileFailed(file, x);
             } catch (SecurityException x) {
@@ -212,7 +213,11 @@
             } finally {
                 try {
                     stream.close();
-                } catch (IOException x) { }
+                } catch (IOException e) {
+                    // IOException will be notified to postVisitDirectory
+                    if (ioe == null)
+                        ioe = e;
+                }
             }
 
             // invoke postVisitDirectory last
--- a/jdk/src/share/classes/java/nio/file/FileVisitor.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/FileVisitor.java	Wed Jul 05 17:35:13 2017 +0200
@@ -30,8 +30,8 @@
 
 /**
  * A visitor of files. An implementation of this interface is provided to the
- * {@link Files#walkFileTree walkFileTree} utility method to visit each file
- * in a tree.
+ * {@link Files#walkFileTree Files.walkFileTree} methods to visit each file in
+ * a file tree.
  *
  * <p> <b>Usage Examples:</b>
  * Suppose we want to delete a file tree. In that case, each directory should
@@ -43,19 +43,20 @@
  *         public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
  *             throws IOException
  *         {
- *             file.delete();
+ *             Files.delete(file);
  *             return FileVisitResult.CONTINUE;
  *         }
  *         &#64;Override
  *         public FileVisitResult postVisitDirectory(Path dir, IOException e)
  *             throws IOException
  *         {
- *             if (e != null) {
+ *             if (e == null) {
+ *                 Files.delete(dir);
+ *                 return FileVisitResult.CONTINUE;
+ *             } else {
  *                 // directory iteration failed
  *                 throw e;
  *             }
- *             dir.delete();
- *             return FileVisitResult.CONTINUE;
  *         }
  *     });
  * </pre>
@@ -72,10 +73,12 @@
  *             public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs)
  *                 throws IOException
  *             {
+ *                 Path targetdir = target.resolve(source.relativize(dir));
  *                 try {
- *                     dir.copyTo(target.resolve(source.relativize(dir)));
+ *                     Files.copy(dir, targetdir);
  *                 } catch (FileAlreadyExistsException e) {
- *                      // ignore
+ *                      if (!Files.isDirectory(targetdir))
+ *                          throw e;
  *                 }
  *                 return CONTINUE;
  *             }
@@ -83,7 +86,7 @@
  *             public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
  *                 throws IOException
  *             {
- *                 file.copyTo(target.resolve(source.relativize(file)));
+ *                 Files.copy(file, target.resolve(source.relativize(file)));
  *                 return CONTINUE;
  *             }
  *         });
--- a/jdk/src/share/classes/java/nio/file/Files.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/Files.java	Wed Jul 05 17:35:13 2017 +0200
@@ -25,16 +25,32 @@
 
 package java.nio.file;
 
+import java.nio.file.attribute.*;
+import java.nio.file.spi.FileSystemProvider;
 import java.nio.file.spi.FileTypeDetector;
-import java.nio.file.attribute.*;
+import java.nio.channels.SeekableByteChannel;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.Writer;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
 import java.io.IOException;
 import java.util.*;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
 
 /**
- * This class consists exclusively of static methods that operate on files or
- * directories.
+ * This class consists exclusively of static methods that operate on files,
+ * directories, or other types of files.
+ *
+ * <p> In most cases, the methods defined here will delegate to the associated
+ * file system provider to perform the file operations.
  *
  * @since 1.7
  */
@@ -42,8 +58,1422 @@
 public final class Files {
     private Files() { }
 
+    /**
+     * Returns the {@code FileSystemProvider} to delegate to.
+     */
+    private static FileSystemProvider provider(Path path) {
+        return path.getFileSystem().provider();
+    }
+
+    // -- File contents --
+
+    /**
+     * Opens a file, returning an input stream to read from the file. The stream
+     * will not be buffered, and is not required to support the {@link
+     * InputStream#mark mark} or {@link InputStream#reset reset} methods. The
+     * stream will be safe for access by multiple concurrent threads. Reading
+     * commences at the beginning of the file. Whether the returned stream is
+     * <i>asynchronously closeable</i> and/or <i>interruptible</i> is highly
+     * file system provider specific and therefore not specified.
+     *
+     * <p> The {@code options} parameter determines how the file is opened.
+     * If no options are present then it is equivalent to opening the file with
+     * the {@link StandardOpenOption#READ READ} option. In addition to the {@code
+     * READ} option, an implementation may also support additional implementation
+     * specific options.
+     *
+     * @param   path
+     *          the path to the file to open
+     * @param   options
+     *          options specifying how the file is opened
+     *
+     * @return  a new input stream
+     *
+     * @throws  IllegalArgumentException
+     *          if an invalid combination of options is specified
+     * @throws  UnsupportedOperationException
+     *          if an unsupported option is specified
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
+     *          method is invoked to check read access to the file.
+     */
+    public static InputStream newInputStream(Path path, OpenOption... options)
+        throws IOException
+    {
+        return provider(path).newInputStream(path, options);
+    }
+
+    /**
+     * Opens or creates a file, returning an output stream that may be used to
+     * write bytes to the file. The resulting stream will not be buffered. The
+     * stream will be safe for access by multiple concurrent threads. Whether
+     * the returned stream is <i>asynchronously closeable</i> and/or
+     * <i>interruptible</i> is highly file system provider specific and
+     * therefore not specified.
+     *
+     * <p> This method opens or creates a file in exactly the manner specified
+     * by the {@link #newByteChannel(Path,Set,FileAttribute[]) newByteChannel}
+     * method with the exception that the {@link StandardOpenOption#READ READ}
+     * option may not be present in the array of options. If no options are
+     * present then this method works as if the {@link StandardOpenOption#CREATE
+     * CREATE}, {@link StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING},
+     * and {@link StandardOpenOption#WRITE WRITE} options are present. In other
+     * words, it opens the file for writing, creating the file if it doesn't
+     * exist, or initially truncating an existing {@link #isRegularFile
+     * regular-file} to a size of {@code 0} if it exists.
+     *
+     * <p> <b>Usage Examples:</b>
+     * <pre>
+     *     Path path = ...
+     *
+     *     // replace an existing file or create the file if it doesn't initially exist
+     *     OutputStream out = Files.newOutputStream(path);
+     *
+     *     // append to an existing file, fail if the file does not exist
+     *     out = Files.newOutputStream(path, APPEND);
+     *
+     *     // append to an existing file, create file if it doesn't initially exist
+     *     out = Files.newOutputStream(CREATE, APPEND);
+     *
+     *     // always create new file, failing if it already exists
+     *     out = Files.newOutputStream(CREATE_NEW);
+     * </pre>
+     *
+     * @param   path
+     *          the path to the file to open or create
+     * @param   options
+     *          options specifying how the file is opened
+     *
+     * @return  a new output stream
+     *
+     * @throws  IllegalArgumentException
+     *          if {@code options} contains an invalid combination of options
+     * @throws  UnsupportedOperationException
+     *          if an unsupported option is specified
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkWrite(String) checkWrite}
+     *          method is invoked to check write access to the file. The {@link
+     *          SecurityManager#checkDelete(String) checkDelete} method is
+     *          invoked to check delete access if the file is opened with the
+     *          {@code DELETE_ON_CLOSE} option.
+     */
+    public static OutputStream newOutputStream(Path path, OpenOption... options)
+        throws IOException
+    {
+        return provider(path).newOutputStream(path, options);
+    }
+
+    /**
+     * Opens or creates a file, returning a seekable byte channel to access the
+     * file.
+     *
+     * <p> The {@code options} parameter determines how the file is opened.
+     * The {@link StandardOpenOption#READ READ} and {@link
+     * StandardOpenOption#WRITE WRITE} options determine if the file should be
+     * opened for reading and/or writing. If neither option (or the {@link
+     * StandardOpenOption#APPEND APPEND} option) is present then the file is
+     * opened for reading. By default reading or writing commence at the
+     * beginning of the file.
+     *
+     * <p> In the addition to {@code READ} and {@code WRITE}, the following
+     * options may be present:
+     *
+     * <table border=1 cellpadding=5 summary="">
+     * <tr> <th>Option</th> <th>Description</th> </tr>
+     * <tr>
+     *   <td> {@link StandardOpenOption#APPEND APPEND} </td>
+     *   <td> If this option is present then the file is opened for writing and
+     *     each invocation of the channel's {@code write} method first advances
+     *     the position to the end of the file and then writes the requested
+     *     data. Whether the advancement of the position and the writing of the
+     *     data are done in a single atomic operation is system-dependent and
+     *     therefore unspecified. This option may not be used in conjunction
+     *     with the {@code READ} or {@code TRUNCATE_EXISTING} options. </td>
+     * </tr>
+     * <tr>
+     *   <td> {@link StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING} </td>
+     *   <td> If this option is present then the existing file is truncated to
+     *   a size of 0 bytes. This option is ignored when the file is opened only
+     *   for reading. </td>
+     * </tr>
+     * <tr>
+     *   <td> {@link StandardOpenOption#CREATE_NEW CREATE_NEW} </td>
+     *   <td> If this option is present then a new file is created, failing if
+     *   the file already exists or is a symbolic link. When creating a file the
+     *   check for the existence of the file and the creation of the file if it
+     *   does not exist is atomic with respect to other file system operations.
+     *   This option is ignored when the file is opened only for reading. </td>
+     * </tr>
+     * <tr>
+     *   <td > {@link StandardOpenOption#CREATE CREATE} </td>
+     *   <td> If this option is present then an existing file is opened if it
+     *   exists, otherwise a new file is created. This option is ignored if the
+     *   {@code CREATE_NEW} option is also present or the file is opened only
+     *   for reading. </td>
+     * </tr>
+     * <tr>
+     *   <td > {@link StandardOpenOption#DELETE_ON_CLOSE DELETE_ON_CLOSE} </td>
+     *   <td> When this option is present then the implementation makes a
+     *   <em>best effort</em> attempt to delete the file when closed by the
+     *   {@link SeekableByteChannel#close close} method. If the {@code close}
+     *   method is not invoked then a <em>best effort</em> attempt is made to
+     *   delete the file when the Java virtual machine terminates. </td>
+     * </tr>
+     * <tr>
+     *   <td>{@link StandardOpenOption#SPARSE SPARSE} </td>
+     *   <td> When creating a new file this option is a <em>hint</em> that the
+     *   new file will be sparse. This option is ignored when not creating
+     *   a new file. </td>
+     * </tr>
+     * <tr>
+     *   <td> {@link StandardOpenOption#SYNC SYNC} </td>
+     *   <td> Requires that every update to the file's content or metadata be
+     *   written synchronously to the underlying storage device. (see <a
+     *   href="package-summary.html#integrity"> Synchronized I/O file
+     *   integrity</a>). </td>
+     * <tr>
+     * <tr>
+     *   <td> {@link StandardOpenOption#DSYNC DSYNC} </td>
+     *   <td> Requires that every update to the file's content be written
+     *   synchronously to the underlying storage device. (see <a
+     *   href="package-summary.html#integrity"> Synchronized I/O file
+     *   integrity</a>). </td>
+     * </tr>
+     * </table>
+     *
+     * <p> An implementation may also support additional implementation specific
+     * options.
+     *
+     * <p> The {@code attrs} parameter is optional {@link FileAttribute
+     * file-attributes} to set atomically when a new file is created.
+     *
+     * <p> In the case of the default provider, the returned seekable byte channel
+     * is a {@link java.nio.channels.FileChannel}.
+     *
+     * <p> <b>Usage Examples:</b>
+     * <pre>
+     *     Path path = ...
+     *
+     *     // open file for reading
+     *     ReadableByteChannel rbc = Files.newByteChannel(path, EnumSet.of(READ)));
+     *
+     *     // open file for writing to the end of an existing file, creating
+     *     // the file if it doesn't already exist
+     *     WritableByteChannel wbc = Files.newByteChannel(path, EnumSet.of(CREATE,APPEND));
+     *
+     *     // create file with initial permissions, opening it for both reading and writing
+     *     {@code FileAttribute<<SetPosixFilePermission>> perms = ...}
+     *     SeekableByteChannel sbc = Files.newByteChannel(path, EnumSet.of(CREATE_NEW,READ,WRITE), perms);
+     * </pre>
+     *
+     * @param   path
+     *          the path to the file to open or create
+     * @param   options
+     *          options specifying how the file is opened
+     * @param   attrs
+     *          an optional list of file attributes to set atomically when
+     *          creating the file
+     *
+     * @return  a new seekable byte channel
+     *
+     * @throws  IllegalArgumentException
+     *          if the set contains an invalid combination of options
+     * @throws  UnsupportedOperationException
+     *          if an unsupported open option is specified or the array contains
+     *          attributes that cannot be set atomically when creating the file
+     * @throws  FileAlreadyExistsException
+     *          if a file of that name already exists and the {@link
+     *          StandardOpenOption#CREATE_NEW CREATE_NEW} option is specified
+     *          <i>(optional specific exception)</i>
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
+     *          method is invoked to check read access to the path if the file is
+     *          opened for reading. The {@link SecurityManager#checkWrite(String)
+     *          checkWrite} method is invoked to check write access to the path
+     *          if the file is opened for writing. The {@link
+     *          SecurityManager#checkDelete(String) checkDelete} method is
+     *          invoked to check delete access if the file is opened with the
+     *          {@code DELETE_ON_CLOSE} option.
+     *
+     * @see java.nio.channels.FileChannel#open(Path,Set,FileAttribute[])
+     */
+    public static SeekableByteChannel newByteChannel(Path path,
+                                                     Set<? extends OpenOption> options,
+                                                     FileAttribute<?>... attrs)
+        throws IOException
+    {
+        return provider(path).newByteChannel(path, options, attrs);
+    }
+
+    /**
+     * Opens or creates a file, returning a seekable byte channel to access the
+     * file.
+     *
+     * <p> This method opens or creates a file in exactly the manner specified
+     * by the {@link #newByteChannel(Path,Set,FileAttribute[]) newByteChannel}
+     * method.
+     *
+     * @param   path
+     *          the path to the file to open or create
+     * @param   options
+     *          options specifying how the file is opened
+     *
+     * @return  a new seekable byte channel
+     *
+     * @throws  IllegalArgumentException
+     *          if the set contains an invalid combination of options
+     * @throws  UnsupportedOperationException
+     *          if an unsupported open option is specified
+     * @throws  FileAlreadyExistsException
+     *          if a file of that name already exists and the {@link
+     *          StandardOpenOption#CREATE_NEW CREATE_NEW} option is specified
+     *          <i>(optional specific exception)</i>
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
+     *          method is invoked to check read access to the path if the file is
+     *          opened for reading. The {@link SecurityManager#checkWrite(String)
+     *          checkWrite} method is invoked to check write access to the path
+     *          if the file is opened for writing. The {@link
+     *          SecurityManager#checkDelete(String) checkDelete} method is
+     *          invoked to check delete access if the file is opened with the
+     *          {@code DELETE_ON_CLOSE} option.
+     *
+     * @see java.nio.channels.FileChannel#open(Path,OpenOption[])
+     */
+    public static SeekableByteChannel newByteChannel(Path path, OpenOption... options)
+        throws IOException
+    {
+        Set<OpenOption> set = new HashSet<OpenOption>(options.length);
+        Collections.addAll(set, options);
+        return newByteChannel(path, set);
+    }
+
+    // -- Directories --
+
+    /**
+     * Opens a directory, returning a {@link DirectoryStream} to iterate over
+     * all entries in the directory. The elements returned by the directory
+     * stream's {@link DirectoryStream#iterator iterator} are of type {@code
+     * Path}, each one representing an entry in the directory. The {@code Path}
+     * objects are obtained as if by {@link Path#resolve(Path) resolving} the
+     * name of the directory entry against {@code dir}.
+     *
+     * <p> When not using the try-with-resources construct, then directory
+     * stream's {@code close} method should be invoked after iteration is
+     * completed so as to free any resources held for the open directory.
+     *
+     * <p> When an implementation supports operations on entries in the
+     * directory that execute in a race-free manner then the returned directory
+     * stream is a {@link SecureDirectoryStream}.
+     *
+     * @param   dir
+     *          the path to the directory
+     *
+     * @return  a new and open {@code DirectoryStream} object
+     *
+     * @throws  NotDirectoryException
+     *          if the file could not otherwise be opened because it is not
+     *          a directory <i>(optional specific exception)</i>
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
+     *          method is invoked to check read access to the directory.
+     */
+    public static DirectoryStream<Path> newDirectoryStream(Path dir)
+        throws IOException
+    {
+        return provider(dir).newDirectoryStream(dir, new DirectoryStream.Filter<Path>() {
+            @Override
+            public boolean accept(Path entry) {
+                return true;
+            }
+        });
+    }
+
+    /**
+     * Opens a directory, returning a {@link DirectoryStream} to iterate over
+     * the entries in the directory. The elements returned by the directory
+     * stream's {@link DirectoryStream#iterator iterator} are of type {@code
+     * Path}, each one representing an entry in the directory. The {@code Path}
+     * objects are obtained as if by {@link Path#resolve(Path) resolving} the
+     * name of the directory entry against {@code dir}. The entries returned by
+     * the iterator are filtered by matching the {@code String} representation
+     * of their file names against the given <em>globbing</em> pattern.
+     *
+     * <p> For example, suppose we want to iterate over the files ending with
+     * ".java" in a directory:
+     * <pre>
+     *     Path dir = ...
+     *     try (DirectoryStream&lt;Path&gt; stream = Files.newDirectoryStream(dir, "*.java")) {
+     *         :
+     *     }
+     * </pre>
+     *
+     * <p> The globbing pattern is specified by the {@link
+     * FileSystem#getPathMatcher getPathMatcher} method.
+     *
+     * <p> When not using the try-with-resources construct, then directory
+     * stream's {@code close} method should be invoked after iteration is
+     * completed so as to free any resources held for the open directory.
+     *
+     * <p> When an implementation supports operations on entries in the
+     * directory that execute in a race-free manner then the returned directory
+     * stream is a {@link SecureDirectoryStream}.
+     *
+     * @param   dir
+     *          the path to the directory
+     * @param   glob
+     *          the glob pattern
+     *
+     * @return  a new and open {@code DirectoryStream} object
+     *
+     * @throws  java.util.regex.PatternSyntaxException
+     *          if the pattern is invalid
+     * @throws  NotDirectoryException
+     *          if the file could not otherwise be opened because it is not
+     *          a directory <i>(optional specific exception)</i>
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
+     *          method is invoked to check read access to the directory.
+     */
+    public static DirectoryStream<Path> newDirectoryStream(Path dir, String glob)
+        throws IOException
+    {
+        // avoid creating a matcher if all entries are required.
+        if (glob.equals("*"))
+            return newDirectoryStream(dir);
+
+        // create a matcher and return a filter that uses it.
+        FileSystem fs = dir.getFileSystem();
+        final PathMatcher matcher = fs.getPathMatcher("glob:" + glob);
+        DirectoryStream.Filter<Path> filter = new DirectoryStream.Filter<Path>() {
+            @Override
+            public boolean accept(Path entry)  {
+                return matcher.matches(entry.getFileName());
+            }
+        };
+        return fs.provider().newDirectoryStream(dir, filter);
+    }
+
+    /**
+     * Opens a directory, returning a {@link DirectoryStream} to iterate over
+     * the entries in the directory. The elements returned by the directory
+     * stream's {@link DirectoryStream#iterator iterator} are of type {@code
+     * Path}, each one representing an entry in the directory. The {@code Path}
+     * objects are obtained as if by {@link Path#resolve(Path) resolving} the
+     * name of the directory entry against {@code dir}. The entries returned by
+     * the iterator are filtered by the given {@link DirectoryStream.Filter
+     * filter}.
+     *
+     * <p> When not using the try-with-resources construct, then directory
+     * stream's {@code close} method should be invoked after iteration is
+     * completed so as to free any resources held for the open directory.
+     *
+     * <p> Where the filter terminates due to an uncaught error or runtime
+     * exception then it is propagated to the {@link Iterator#hasNext()
+     * hasNext} or {@link Iterator#next() next} method. Where an {@code
+     * IOException} is thrown, it results in the {@code hasNext} or {@code
+     * next} method throwing a {@link DirectoryIteratorException} with the
+     * {@code IOException} as the cause.
+     *
+     * <p> When an implementation supports operations on entries in the
+     * directory that execute in a race-free manner then the returned directory
+     * stream is a {@link SecureDirectoryStream}.
+     *
+     * <p> <b>Usage Example:</b>
+     * Suppose we want to iterate over the files in a directory that are
+     * larger than 8K.
+     * <pre>
+     *     DirectoryStream.Filter&lt;Path&gt; filter = new DirectoryStream.Filter&lt;Path&gt;() {
+     *         public boolean accept(Path file) throws IOException {
+     *             return (Files.size(file) > 8192L);
+     *         }
+     *     };
+     *     Path dir = ...
+     *     try (DirectoryStream&lt;Path&gt; stream = Files.newDirectoryStream(dir, filter)) {
+     *         :
+     *     }
+     * </pre>
+     *
+     * @param   dir
+     *          the path to the directory
+     * @param   filter
+     *          the directory stream filter
+     *
+     * @return  a new and open {@code DirectoryStream} object
+     *
+     * @throws  NotDirectoryException
+     *          if the file could not otherwise be opened because it is not
+     *          a directory <i>(optional specific exception)</i>
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
+     *          method is invoked to check read access to the directory.
+     */
+    public static DirectoryStream<Path> newDirectoryStream(Path dir,
+                                                           DirectoryStream.Filter<? super Path> filter)
+        throws IOException
+    {
+        return provider(dir).newDirectoryStream(dir, filter);
+    }
+
+    // -- Creation and deletion --
+
+    /**
+     * Creates a new and empty file, failing if the file already exists. The
+     * check for the existence of the file and the creation of the new file if
+     * it does not exist are a single operation that is atomic with respect to
+     * all other filesystem activities that might affect the directory.
+     *
+     * <p> The {@code attrs} parameter is optional {@link FileAttribute
+     * file-attributes} to set atomically when creating the file. Each attribute
+     * is identified by its {@link FileAttribute#name name}. If more than one
+     * attribute of the same name is included in the array then all but the last
+     * occurrence is ignored.
+     *
+     * @param   path
+     *          the path to the file to create
+     * @param   attrs
+     *          an optional list of file attributes to set atomically when
+     *          creating the file
+     *
+     * @return  the file
+     *
+     * @throws  UnsupportedOperationException
+     *          if the array contains an attribute that cannot be set atomically
+     *          when creating the file
+     * @throws  FileAlreadyExistsException
+     *          if a file of that name already exists
+     *          <i>(optional specific exception)</i>
+     * @throws  IOException
+     *          if an I/O error occurs or the parent directory does not exist
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkWrite(String) checkWrite}
+     *          method is invoked to check write access to the new file.
+     */
+    public static Path createFile(Path path, FileAttribute<?>... attrs)
+        throws IOException
+    {
+        EnumSet<StandardOpenOption> options =
+            EnumSet.<StandardOpenOption>of(StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE);
+        newByteChannel(path, options, attrs).close();
+        return path;
+    }
+
+    /**
+     * Creates a new directory. The check for the existence of the file and the
+     * creation of the directory if it does not exist are a single operation
+     * that is atomic with respect to all other filesystem activities that might
+     * affect the directory. The {@link #createDirectories createDirectories}
+     * method should be used where it is required to create all nonexistent
+     * parent directories first.
+     *
+     * <p> The {@code attrs} parameter is optional {@link FileAttribute
+     * file-attributes} to set atomically when creating the directory. Each
+     * attribute is identified by its {@link FileAttribute#name name}. If more
+     * than one attribute of the same name is included in the array then all but
+     * the last occurrence is ignored.
+     *
+     * @param   dir
+     *          the directory to create
+     * @param   attrs
+     *          an optional list of file attributes to set atomically when
+     *          creating the directory
+     *
+     * @return  the directory
+     *
+     * @throws  UnsupportedOperationException
+     *          if the array contains an attribute that cannot be set atomically
+     *          when creating the directory
+     * @throws  FileAlreadyExistsException
+     *          if a directory could not otherwise be created because a file of
+     *          that name already exists <i>(optional specific exception)</i>
+     * @throws  IOException
+     *          if an I/O error occurs or the parent directory does not exist
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkWrite(String) checkWrite}
+     *          method is invoked to check write access to the new directory.
+     */
+    public static Path createDirectory(Path dir, FileAttribute<?>... attrs)
+        throws IOException
+    {
+        provider(dir).createDirectory(dir, attrs);
+        return dir;
+    }
+
+    /**
+     * Creates a directory by creating all nonexistent parent directories first.
+     * Unlike the {@link #createDirectory createDirectory} method, an exception
+     * is not thrown if the directory could not be created because it already
+     * exists.
+     *
+     * <p> The {@code attrs} parameter is optional {@link FileAttribute
+     * file-attributes} to set atomically when creating the nonexistent
+     * directories. Each file attribute is identified by its {@link
+     * FileAttribute#name name}. If more than one attribute of the same name is
+     * included in the array then all but the last occurrence is ignored.
+     *
+     * <p> If this method fails, then it may do so after creating some, but not
+     * all, of the parent directories.
+     *
+     * @param   dir
+     *          the directory to create
+     *
+     * @param   attrs
+     *          an optional list of file attributes to set atomically when
+     *          creating the directory
+     *
+     * @return  the directory
+     *
+     * @throws  UnsupportedOperationException
+     *          if the array contains an attribute that cannot be set atomically
+     *          when creating the directory
+     * @throws  FileAlreadyExistsException
+     *          if {@code dir} exists but is not a directory <i>(optional specific
+     *          exception)</i>
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          in the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkWrite(String) checkWrite}
+     *          method is invoked prior to attempting to create a directory and
+     *          its {@link SecurityManager#checkRead(String) checkRead} is
+     *          invoked for each parent directory that is checked. If {@code
+     *          dir} is not an absolute path then its {@link Path#toAbsolutePath
+     *          toAbsolutePath} may need to be invoked to get its absolute path.
+     *          This may invoke the security manager's {@link
+     *          SecurityManager#checkPropertyAccess(String) checkPropertyAccess}
+     *          method to check access to the system property {@code user.dir}
+     */
+    public static Path createDirectories(Path dir, FileAttribute<?>... attrs)
+        throws IOException
+    {
+        // attempt to create the directory
+        try {
+            createAndCheckIsDirectory(dir, attrs);
+            return dir;
+        } catch (FileAlreadyExistsException x) {
+            // file exists and is not a directory
+            throw x;
+        } catch (IOException x) {
+            // parent may not exist or other reason
+        }
+        SecurityException se = null;
+        try {
+            dir = dir.toAbsolutePath();
+        } catch (SecurityException x) {
+            // don't have permission to get absolute path
+            se = x;
+        }
+        // find a decendent that exists
+        Path parent = dir.getParent();
+        while (parent != null) {
+            try {
+                provider(parent).checkAccess(parent);
+                break;
+            } catch (NoSuchFileException x) {
+                // does not exist
+            }
+            parent = parent.getParent();
+        }
+        if (parent == null) {
+            // unable to find existing parent
+            if (se != null)
+                throw se;
+            throw new IOException("Root directory does not exist");
+        }
+
+        // create directories
+        Path child = parent;
+        for (Path name: parent.relativize(dir)) {
+            child = child.resolve(name);
+            createAndCheckIsDirectory(child, attrs);
+        }
+        return dir;
+    }
+
+    /**
+     * Used by createDirectories to attempt to create a directory. A no-op
+     * if the directory already exists.
+     */
+    private static void createAndCheckIsDirectory(Path dir,
+                                                  FileAttribute<?>... attrs)
+        throws IOException
+    {
+        try {
+            createDirectory(dir, attrs);
+        } catch (FileAlreadyExistsException x) {
+            if (!isDirectory(dir, LinkOption.NOFOLLOW_LINKS))
+                throw x;
+        }
+    }
+
+    /**
+     * Creates a new empty file in the specified directory, using the given
+     * prefix and suffix strings to generate its name. The resulting
+     * {@code Path} is associated with the same {@code FileSystem} as the given
+     * directory.
+     *
+     * <p> The details as to how the name of the file is constructed is
+     * implementation dependent and therefore not specified. Where possible
+     * the {@code prefix} and {@code suffix} are used to construct candidate
+     * names in the same manner as the {@link
+     * java.io.File#createTempFile(String,String,File)} method.
+     *
+     * <p> As with the {@code File.createTempFile} methods, this method is only
+     * part of a temporary-file facility. Where used as a <em>work files</em>,
+     * the resulting file may be opened using the {@link
+     * StandardOpenOption#DELETE_ON_CLOSE DELETE_ON_CLOSE} option so that the
+     * file is deleted when the appropriate {@code close} method is invoked.
+     * Alternatively, a {@link Runtime#addShutdownHook shutdown-hook}, or the
+     * {@link java.io.File#deleteOnExit} mechanism may be used to delete the
+     * file automatically.
+     *
+     * <p> The {@code attrs} parameter is optional {@link FileAttribute
+     * file-attributes} to set atomically when creating the file. Each attribute
+     * is identified by its {@link FileAttribute#name name}. If more than one
+     * attribute of the same name is included in the array then all but the last
+     * occurrence is ignored. When no file attributes are specified, then the
+     * resulting file may have more restrictive access permissions to files
+     * created by the {@link java.io.File#createTempFile(String,String,File)}
+     * method.
+     *
+     * @param   dir
+     *          the path to directory in which to create the file
+     * @param   prefix
+     *          the prefix string to be used in generating the file's name;
+     *          may be {@code null}
+     * @param   suffix
+     *          the suffix string to be used in generating the file's name;
+     *          may be {@code null}, in which case "{@code .tmp}" is used
+     * @param   attrs
+     *          an optional list of file attributes to set atomically when
+     *          creating the file
+     *
+     * @return  the path to the newly created file that did not exist before
+     *          this method was invoked
+     *
+     * @throws  IllegalArgumentException
+     *          if the prefix or suffix parameters cannot be used to generate
+     *          a candidate file name
+     * @throws  UnsupportedOperationException
+     *          if the array contains an attribute that cannot be set atomically
+     *          when creating the directory
+     * @throws  IOException
+     *          if an I/O error occurs or {@code dir} does not exist
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkWrite(String) checkWrite}
+     *          method is invoked to check write access to the file.
+     */
+    public static Path createTempFile(Path dir,
+                                      String prefix,
+                                      String suffix,
+                                      FileAttribute<?>... attrs)
+        throws IOException
+    {
+        return TempFileHelper.createTempFile(dir, prefix, suffix, attrs);
+    }
+
+    /**
+     * Creates an empty file in the default temporary-file directory, using
+     * the given prefix and suffix to generate its name. The resulting {@code
+     * Path} is associated with the default {@code FileSystem}.
+     *
+     * <p> This method works in exactly the manner specified by the
+     * {@link #createTempFile(Path,String,String,FileAttribute[])} method for
+     * the case that the {@code dir} parameter is the temporary-file directory.
+     *
+     * @param   prefix
+     *          the prefix string to be used in generating the file's name;
+     *          may be {@code null}
+     * @param   suffix
+     *          the suffix string to be used in generating the file's name;
+     *          may be {@code null}, in which case "{@code .tmp}" is used
+     * @param   attrs
+     *          an optional list of file attributes to set atomically when
+     *          creating the file
+     *
+     * @return  the path to the newly created file that did not exist before
+     *          this method was invoked
+     *
+     * @throws  IllegalArgumentException
+     *          if the prefix or suffix parameters cannot be used to generate
+     *          a candidate file name
+     * @throws  UnsupportedOperationException
+     *          if the array contains an attribute that cannot be set atomically
+     *          when creating the directory
+     * @throws  IOException
+     *          if an I/O error occurs or the temporary-file directory does not
+     *          exist
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkWrite(String) checkWrite}
+     *          method is invoked to check write access to the file.
+     */
+    public static Path createTempFile(String prefix,
+                                      String suffix,
+                                      FileAttribute<?>... attrs)
+        throws IOException
+    {
+        return TempFileHelper.createTempFile(null, prefix, suffix, attrs);
+    }
+
+    /**
+     * Creates a new directory in the specified directory, using the given
+     * prefix to generate its name.  The resulting {@code Path} is associated
+     * with the same {@code FileSystem} as the given directory.
+     *
+     * <p> The details as to how the name of the directory is constructed is
+     * implementation dependent and therefore not specified. Where possible
+     * the {@code prefix} is used to construct candidate names.
+     *
+     * <p> As with the {@code createTempFile} methods, this method is only
+     * part of a temporary-file facility. A {@link Runtime#addShutdownHook
+     * shutdown-hook}, or the {@link java.io.File#deleteOnExit} mechanism may be
+     * used to delete the directory automatically.
+     *
+     * <p> The {@code attrs} parameter is optional {@link FileAttribute
+     * file-attributes} to set atomically when creating the directory. Each
+     * attribute is identified by its {@link FileAttribute#name name}. If more
+     * than one attribute of the same name is included in the array then all but
+     * the last occurrence is ignored.
+     *
+     * @param   dir
+     *          the path to directory in which to create the directory
+     * @param   prefix
+     *          the prefix string to be used in generating the directory's name;
+     *          may be {@code null}
+     * @param   attrs
+     *          an optional list of file attributes to set atomically when
+     *          creating the directory
+     *
+     * @return  the path to the newly created directory that did not exist before
+     *          this method was invoked
+     *
+     * @throws  IllegalArgumentException
+     *          if the prefix cannot be used to generate a candidate directory name
+     * @throws  UnsupportedOperationException
+     *          if the array contains an attribute that cannot be set atomically
+     *          when creating the directory
+     * @throws  IOException
+     *          if an I/O error occurs or {@code dir} does not exist
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkWrite(String) checkWrite}
+     *          method is invoked to check write access when creating the
+     *          directory.
+     */
+    public static Path createTempDirectory(Path dir,
+                                           String prefix,
+                                           FileAttribute<?>... attrs)
+        throws IOException
+    {
+        return TempFileHelper.createTempDirectory(dir, prefix, attrs);
+    }
+
+    /**
+     * Creates a new directory in the default temporary-file directory, using
+     * the given prefix and suffix to generate its name. The resulting {@code
+     * Path} is associated with the default {@code FileSystem}.
+     *
+     * <p> This method works in exactly the manner specified by {@link
+     * #createTempDirectory(Path,String,FileAttribute[])} method for the case
+     * that the {@code dir} parameter is the temporary-file directory.
+     *
+     * @param   prefix
+     *          the prefix string to be used in generating the directory's name;
+     *          may be {@code null}
+     * @param   attrs
+     *          an optional list of file attributes to set atomically when
+     *          creating the directory
+     *
+     * @return  the path to the newly created directory that did not exist before
+     *          this method was invoked
+     *
+     * @throws  IllegalArgumentException
+     *          if the prefix cannot be used to generate a candidate directory name
+     * @throws  UnsupportedOperationException
+     *          if the array contains an attribute that cannot be set atomically
+     *          when creating the directory
+     * @throws  IOException
+     *          if an I/O error occurs or the temporary-file directory does not
+     *          exist
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkWrite(String) checkWrite}
+     *          method is invoked to check write access when creating the
+     *          directory.
+     */
+    public static Path createTempDirectory(String prefix,
+                                           FileAttribute<?>... attrs)
+        throws IOException
+    {
+        return TempFileHelper.createTempDirectory(null, prefix, attrs);
+    }
+
+    /**
+     * Creates a symbolic link to a target <i>(optional operation)</i>.
+     *
+     * <p> The {@code target} parameter is the target of the link. It may be an
+     * {@link Path#isAbsolute absolute} or relative path and may not exist. When
+     * the target is a relative path then file system operations on the resulting
+     * link are relative to the path of the link.
+     *
+     * <p> The {@code attrs} parameter is optional {@link FileAttribute
+     * attributes} to set atomically when creating the link. Each attribute is
+     * identified by its {@link FileAttribute#name name}. If more than one attribute
+     * of the same name is included in the array then all but the last occurrence
+     * is ignored.
+     *
+     * <p> Where symbolic links are supported, but the underlying {@link FileStore}
+     * does not support symbolic links, then this may fail with an {@link
+     * IOException}. Additionally, some operating systems may require that the
+     * Java virtual machine be started with implementation specific privileges to
+     * create symbolic links, in which case this method may throw {@code IOException}.
+     *
+     * @param   link
+     *          the path of the symbolic link to create
+     * @param   target
+     *          the target of the symbolic link
+     * @param   attrs
+     *          the array of attributes to set atomically when creating the
+     *          symbolic link
+     *
+     * @return  the path to the symbolic link
+     *
+     * @throws  UnsupportedOperationException
+     *          if the implementation does not support symbolic links or the
+     *          array contains an attribute that cannot be set atomically when
+     *          creating the symbolic link
+     * @throws  FileAlreadyExistsException
+     *          if a file with the name already exists <i>(optional specific
+     *          exception)</i>
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager
+     *          is installed, it denies {@link LinkPermission}<tt>("symbolic")</tt>
+     *          or its {@link SecurityManager#checkWrite(String) checkWrite}
+     *          method denies write access to the path of the symbolic link.
+     */
+    public static Path createSymbolicLink(Path link, Path target,
+                                          FileAttribute<?>... attrs)
+        throws IOException
+    {
+        provider(link).createSymbolicLink(link, target, attrs);
+        return link;
+    }
+
+    /**
+     * Creates a new link (directory entry) for an existing file <i>(optional
+     * operation)</i>.
+     *
+     * <p> The {@code link} parameter locates the directory entry to create.
+     * The {@code existing} parameter is the path to an existing file. This
+     * method creates a new directory entry for the file so that it can be
+     * accessed using {@code link} as the path. On some file systems this is
+     * known as creating a "hard link". Whether the file attributes are
+     * maintained for the file or for each directory entry is file system
+     * specific and therefore not specified. Typically, a file system requires
+     * that all links (directory entries) for a file be on the same file system.
+     * Furthermore, on some platforms, the Java virtual machine may require to
+     * be started with implementation specific privileges to create hard links
+     * or to create links to directories.
+     *
+     * @param   link
+     *          the link (directory entry) to create
+     * @param   existing
+     *          a path to an existing file
+     *
+     * @return  the path to the link (directory entry)
+     *
+     * @throws  UnsupportedOperationException
+     *          if the implementation does not support adding an existing file
+     *          to a directory
+     * @throws  FileAlreadyExistsException
+     *          if the entry could not otherwise be created because a file of
+     *          that name already exists <i>(optional specific exception)</i>
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager
+     *          is installed, it denies {@link LinkPermission}<tt>("hard")</tt>
+     *          or its {@link SecurityManager#checkWrite(String) checkWrite}
+     *          method denies write access to either the link or the
+     *          existing file.
+     */
+    public static Path createLink(Path link, Path existing) throws IOException {
+        provider(link).createLink(link, existing);
+        return link;
+    }
+
+    /**
+     * Deletes a file.
+     *
+     * <p> An implementation may require to examine the file to determine if the
+     * file is a directory. Consequently this method may not be atomic with respect
+     * to other file system operations.  If the file is a symbolic link then the
+     * symbolic link itself, not the final target of the link, is deleted.
+     *
+     * <p> If the file is a directory then the directory must be empty. In some
+     * implementations a directory has entries for special files or links that
+     * are created when the directory is created. In such implementations a
+     * directory is considered empty when only the special entries exist.
+     * This method can be used with the {@link #walkFileTree walkFileTree}
+     * method to delete a directory and all entries in the directory, or an
+     * entire <i>file-tree</i> where required.
+     *
+     * <p> On some operating systems it may not be possible to remove a file when
+     * it is open and in use by this Java virtual machine or other programs.
+     *
+     * @param   path
+     *          the path to the file to delete
+     *
+     * @throws  NoSuchFileException
+     *          if the file does not exist <i>(optional specific exception)</i>
+     * @throws  DirectoryNotEmptyException
+     *          if the file is a directory and could not otherwise be deleted
+     *          because the directory is not empty <i>(optional specific
+     *          exception)</i>
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkDelete(String)} method
+     *          is invoked to check delete access to the file
+     */
+    public static void delete(Path path) throws IOException {
+        provider(path).delete(path);
+    }
+
+    /**
+     * Deletes a file if it exists.
+     *
+     * <p> As with the {@link #delete(Path) delete(Path)} method, an
+     * implementation may need to examine the file to determine if the file is a
+     * directory. Consequently this method may not be atomic with respect to
+     * other file system operations.  If the file is a symbolic link, then the
+     * symbolic link itself, not the final target of the link, is deleted.
+     *
+     * <p> If the file is a directory then the directory must be empty. In some
+     * implementations a directory has entries for special files or links that
+     * are created when the directory is created. In such implementations a
+     * directory is considered empty when only the special entries exist.
+     *
+     * <p> On some operating systems it may not be possible to remove a file when
+     * it is open and in use by this Java virtual machine or other programs.
+     *
+     * @param   path
+     *          the path to the file to delete
+     *
+     * @return  {@code true} if the file was deleted by this method; {@code
+     *          false} if the file could not be deleted because it did not
+     *          exist
+     *
+     * @throws  DirectoryNotEmptyException
+     *          if the file is a directory and could not otherwise be deleted
+     *          because the directory is not empty <i>(optional specific
+     *          exception)</i>
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkDelete(String)} method
+     *          is invoked to check delete access to the file.
+     */
+    public static boolean deleteIfExists(Path path) throws IOException {
+        return provider(path).deleteIfExists(path);
+    }
+
+    // -- Copying and moving files --
+
+    /**
+     * Copy a file to a target file.
+     *
+     * <p> This method copies a file to the target file with the {@code
+     * options} parameter specifying how the copy is performed. By default, the
+     * copy fails if the target file already exists or is a symbolic link,
+     * except if the source and target are the {@link #isSameFile same} file, in
+     * which case the method completes without copying the file. File attributes
+     * are not required to be copied to the target file. If symbolic links are
+     * supported, and the file is a symbolic link, then the final target of the
+     * link is copied. If the file is a directory then it creates an empty
+     * directory in the target location (entries in the directory are not
+     * copied). This method can be used with the {@link #walkFileTree
+     * walkFileTree} method to copy a directory and all entries in the directory,
+     * or an entire <i>file-tree</i> where required.
+     *
+     * <p> The {@code options} parameter may include any of the following:
+     *
+     * <table border=1 cellpadding=5 summary="">
+     * <tr> <th>Option</th> <th>Description</th> </tr>
+     * <tr>
+     *   <td> {@link StandardCopyOption#REPLACE_EXISTING REPLACE_EXISTING} </td>
+     *   <td> If the target file exists, then the target file is replaced if it
+     *     is not a non-empty directory. If the target file exists and is a
+     *     symbolic link, then the symbolic link itself, not the target of
+     *     the link, is replaced. </td>
+     * </tr>
+     * <tr>
+     *   <td> {@link StandardCopyOption#COPY_ATTRIBUTES COPY_ATTRIBUTES} </td>
+     *   <td> Attempts to copy the file attributes associated with this file to
+     *     the target file. The exact file attributes that are copied is platform
+     *     and file system dependent and therefore unspecified. Minimally, the
+     *     {@link BasicFileAttributes#lastModifiedTime last-modified-time} is
+     *     copied to the target file if supported by both the source and target
+     *     file store. Copying of file timestamps may result in precision
+     *     loss. </td>
+     * </tr>
+     * <tr>
+     *   <td> {@link LinkOption#NOFOLLOW_LINKS NOFOLLOW_LINKS} </td>
+     *   <td> Symbolic links are not followed. If the file is a symbolic link,
+     *     then the symbolic link itself, not the target of the link, is copied.
+     *     It is implementation specific if file attributes can be copied to the
+     *     new link. In other words, the {@code COPY_ATTRIBUTES} option may be
+     *     ignored when copying a symbolic link. </td>
+     * </tr>
+     * </table>
+     *
+     * <p> An implementation of this interface may support additional
+     * implementation specific options.
+     *
+     * <p> Copying a file is not an atomic operation. If an {@link IOException}
+     * is thrown then it possible that the target file is incomplete or some of
+     * its file attributes have not been copied from the source file. When the
+     * {@code REPLACE_EXISTING} option is specified and the target file exists,
+     * then the target file is replaced. The check for the existence of the file
+     * and the creation of the new file may not be atomic with respect to other
+     * file system activities.
+     *
+     * <p> <b>Usage Example:</b>
+     * Suppose we want to copy a file into a directory, giving it the same file
+     * name as the source file:
+     * <pre>
+     *     Path source = ...
+     *     Path newdir = ...
+     *     Files.copy(source, newdir.resolve(source.getFileName());
+     * </pre>
+     *
+     * @param   source
+     *          the path to the file to copy
+     * @param   target
+     *          the path to the target file (may be associated with a different
+     *          provider to the source path)
+     * @param   options
+     *          options specifying how the copy should be done
+     *
+     * @return  the path to the target file
+     *
+     * @throws  UnsupportedOperationException
+     *          if the array contains a copy option that is not supported
+     * @throws  FileAlreadyExistsException
+     *          if the target file exists but cannot be replaced because the
+     *          {@code REPLACE_EXISTING} option is not specified <i>(optional
+     *          specific exception)</i>
+     * @throws  DirectoryNotEmptyException
+     *          the {@code REPLACE_EXISTING} option is specified but the file
+     *          cannot be replaced because it is a non-empty directory
+     *          <i>(optional specific exception)</i>
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
+     *          method is invoked to check read access to the source file, the
+     *          {@link SecurityManager#checkWrite(String) checkWrite} is invoked
+     *          to check write access to the target file. If a symbolic link is
+     *          copied the security manager is invoked to check {@link
+     *          LinkPermission}{@code ("symbolic")}.
+     */
+    public static Path copy(Path source, Path target, CopyOption... options)
+        throws IOException
+    {
+        FileSystemProvider provider = provider(source);
+        if (provider(target) == provider) {
+            // same provider
+            provider.copy(source, target, options);
+        } else {
+            // different providers
+            CopyMoveHelper.copyToForeignTarget(source, target, options);
+        }
+        return target;
+    }
+
+    /**
+     * Move or rename a file to a target file.
+     *
+     * <p> By default, this method attempts to move the file to the target
+     * file, failing if the target file exists except if the source and
+     * target are the {@link #isSameFile same} file, in which case this method
+     * has no effect. If the file is a symbolic link then the symbolic link
+     * itself, not the target of the link, is moved. This method may be
+     * invoked to move an empty directory. In some implementations a directory
+     * has entries for special files or links that are created when the
+     * directory is created. In such implementations a directory is considered
+     * empty when only the special entries exist. When invoked to move a
+     * directory that is not empty then the directory is moved if it does not
+     * require moving the entries in the directory.  For example, renaming a
+     * directory on the same {@link FileStore} will usually not require moving
+     * the entries in the directory. When moving a directory requires that its
+     * entries be moved then this method fails (by throwing an {@code
+     * IOException}). To move a <i>file tree</i> may involve copying rather
+     * than moving directories and this can be done using the {@link
+     * #copy copy} method in conjunction with the {@link
+     * #walkFileTree Files.walkFileTree} utility method.
+     *
+     * <p> The {@code options} parameter may include any of the following:
+     *
+     * <table border=1 cellpadding=5 summary="">
+     * <tr> <th>Option</th> <th>Description</th> </tr>
+     * <tr>
+     *   <td> {@link StandardCopyOption#REPLACE_EXISTING REPLACE_EXISTING} </td>
+     *   <td> If the target file exists, then the target file is replaced if it
+     *     is not a non-empty directory. If the target file exists and is a
+     *     symbolic link, then the symbolic link itself, not the target of
+     *     the link, is replaced. </td>
+     * </tr>
+     * <tr>
+     *   <td> {@link StandardCopyOption#ATOMIC_MOVE ATOMIC_MOVE} </td>
+     *   <td> The move is performed as an atomic file system operation and all
+     *     other options are ignored. If the target file exists then it is
+     *     implementation specific if the existing file is replaced or this method
+     *     fails by throwing an {@link IOException}. If the move cannot be
+     *     performed as an atomic file system operation then {@link
+     *     AtomicMoveNotSupportedException} is thrown. This can arise, for
+     *     example, when the target location is on a different {@code FileStore}
+     *     and would require that the file be copied, or target location is
+     *     associated with a different provider to this object. </td>
+     * </table>
+     *
+     * <p> An implementation of this interface may support additional
+     * implementation specific options.
+     *
+     * <p> Where the move requires that the file be copied then the {@link
+     * BasicFileAttributes#lastModifiedTime last-modified-time} is copied to the
+     * new file. An implementation may also attempt to copy other file
+     * attributes but is not required to fail if the file attributes cannot be
+     * copied. When the move is performed as a non-atomic operation, and a {@code
+     * IOException} is thrown, then the state of the files is not defined. The
+     * original file and the target file may both exist, the target file may be
+     * incomplete or some of its file attributes may not been copied from the
+     * original file.
+     *
+     * <p> <b>Usage Examples:</b>
+     * Suppose we want to rename a file to "newname", keeping the file in the
+     * same directory:
+     * <pre>
+     *     Path source = ...
+     *     Files.move(source, source.resolveSibling("newname"));
+     * </pre>
+     * Alternatively, suppose we want to move a file to new directory, keeping
+     * the same file name, and replacing any existing file of that name in the
+     * directory:
+     * <pre>
+     *     Path source = ...
+     *     Path newdir = ...
+     *     Files.move(source, newdir.resolve(source.getFileName()), REPLACE_EXISTING);
+     * </pre>
+     *
+     * @param   source
+     *          the path to the file to move
+     * @param   target
+     *          the path to the target file (may be associated with a different
+     *          provider to the source path)
+     * @param   options
+     *          options specifying how the move should be done
+     *
+     * @return  the path to the target file
+     *
+     * @throws  UnsupportedOperationException
+     *          if the array contains a copy option that is not supported
+     * @throws  FileAlreadyExistsException
+     *          if the target file exists but cannot be replaced because the
+     *          {@code REPLACE_EXISTING} option is not specified <i>(optional
+     *          specific exception)</i>
+     * @throws  DirectoryNotEmptyException
+     *          the {@code REPLACE_EXISTING} option is specified but the file
+     *          cannot be replaced because it is a non-empty directory
+     *          <i>(optional specific exception)</i>
+     * @throws  AtomicMoveNotSupportedException
+     *          if the options array contains the {@code ATOMIC_MOVE} option but
+     *          the file cannot be moved as an atomic file system operation.
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkWrite(String) checkWrite}
+     *          method is invoked to check write access to both the source and
+     *          target file.
+     */
+    public static Path move(Path source, Path target, CopyOption... options)
+        throws IOException
+    {
+        FileSystemProvider provider = provider(source);
+        if (provider(target) == provider) {
+            // same provider
+            provider.move(source, target, options);
+        } else {
+            // different providers
+            CopyMoveHelper.moveToForeignTarget(source, target, options);
+        }
+        return target;
+    }
+
+    // -- Miscellenous --
+
+    /**
+     * Reads the target of a symbolic link <i>(optional operation)</i>.
+     *
+     * <p> If the file system supports <a href="package-summary.html#links">symbolic
+     * links</a> then this method is used to read the target of the link, failing
+     * if the file is not a symbolic link. The target of the link need not exist.
+     * The returned {@code Path} object will be associated with the same file
+     * system as {@code link}.
+     *
+     * @param   link
+     *          the path to the symbolic link
+     *
+     * @return  a {@code Path} object representing the target of the link
+     *
+     * @throws  UnsupportedOperationException
+     *          if the implementation does not support symbolic links
+     * @throws  NotLinkException
+     *          if the target could otherwise not be read because the file
+     *          is not a symbolic link <i>(optional specific exception)</i>
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager
+     *          is installed, it checks that {@code FilePermission} has been
+     *          granted with the "{@code readlink}" action to read the link.
+     */
+    public static Path readSymbolicLink(Path link) throws IOException {
+        return provider(link).readSymbolicLink(link);
+    }
+
+    /**
+     * Returns the {@link FileStore} representing the file store where a file
+     * is located.
+     *
+     * <p> Once a reference to the {@code FileStore} is obtained it is
+     * implementation specific if operations on the returned {@code FileStore},
+     * or {@link FileStoreAttributeView} objects obtained from it, continue
+     * to depend on the existence of the file. In particular the behavior is not
+     * defined for the case that the file is deleted or moved to a different
+     * file store.
+     *
+     * @param   path
+     *          the path to the file
+     *
+     * @return  the file store where the file is stored
+     *
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
+     *          method is invoked to check read access to the file, and in
+     *          addition it checks {@link RuntimePermission}<tt>
+     *          ("getFileStoreAttributes")</tt>
+     */
+    public static FileStore getFileStore(Path path) throws IOException {
+        return provider(path).getFileStore(path);
+    }
+
+    /**
+     * Tests if two paths locate the same file.
+     *
+     * <p> If both {@code Path} objects are {@link Path#equals(Object) equal}
+     * then this method returns {@code true} without checking if the file exists.
+     * If the two {@code Path} objects are associated with different providers
+     * then this method returns {@code false}. Otherwise, this method checks if
+     * both {@code Path} objects locate the same file, and depending on the
+     * implementation, may require to open or access both files.
+     *
+     * <p> If the file system and files remain static, then this method implements
+     * an equivalence relation for non-null {@code Paths}.
+     * <ul>
+     * <li>It is <i>reflexive</i>: for {@code Path} {@code f},
+     *     {@code isSameFile(f,f)} should return {@code true}.
+     * <li>It is <i>symmetric</i>: for two {@code Paths} {@code f} and {@code g},
+     *     {@code isSameFile(f,g)} will equal {@code isSameFile(g,f)}.
+     * <li>It is <i>transitive</i>: for three {@code Paths}
+     *     {@code f}, {@code g}, and {@code h}, if {@code isSameFile(f,g)} returns
+     *     {@code true} and {@code isSameFile(g,h)} returns {@code true}, then
+     *     {@code isSameFile(g,h)} will return return {@code true}.
+     * </ul>
+     *
+     * @param   path
+     *          one path to the file
+     * @param   path2
+     *          the other path
+     *
+     * @return  {@code true} if, and only if, the two paths locate the same file
+     *
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
+     *          method is invoked to check read access to both files.
+     *
+     * @see java.nio.file.attribute.BasicFileAttributes#fileKey
+     */
+    public static boolean isSameFile(Path path, Path path2) throws IOException {
+        return provider(path).isSameFile(path, path2);
+    }
+
+    /**
+     * Tells whether or not a file is considered <em>hidden</em>. The exact
+     * definition of hidden is platform or provider dependent. On UNIX for
+     * example a file is considered to be hidden if its name begins with a
+     * period character ('.'). On Windows a file is considered hidden if it
+     * isn't a directory and the DOS {@link DosFileAttributes#isHidden hidden}
+     * attribute is set.
+     *
+     * <p> Depending on the implementation this method may require to access
+     * the file system to determine if the file is considered hidden.
+     *
+     * @param   path
+     *          the path to the file to test
+     *
+     * @return  {@code true} if the file is considered hidden
+     *
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
+     *          method is invoked to check read access to the file.
+     */
+    public static boolean isHidden(Path path) throws IOException {
+        return provider(path).isHidden(path);
+    }
+
     // lazy loading of default and installed file type detectors
-    private static class DefaultFileTypeDetectorHolder {
+    private static class FileTypeDetectors{
         static final FileTypeDetector defaultFileTypeDetector =
             sun.nio.fs.DefaultFileTypeDetector.create();
         static final List<FileTypeDetector> installeDetectors =
@@ -54,7 +1484,7 @@
             return AccessController
                 .doPrivileged(new PrivilegedAction<List<FileTypeDetector>>() {
                     @Override public List<FileTypeDetector> run() {
-                        List<FileTypeDetector> list = new ArrayList<FileTypeDetector>();
+                        List<FileTypeDetector> list = new ArrayList<>();
                         ServiceLoader<FileTypeDetector> loader = ServiceLoader
                             .load(FileTypeDetector.class, ClassLoader.getSystemClassLoader());
                         for (FileTypeDetector detector: loader) {
@@ -100,34 +1530,949 @@
      * Message Bodies</i></a>. The string is guaranteed to be parsable according
      * to the grammar in the RFC.
      *
-     * @param   file
-     *          The file reference
+     * @param   path
+     *          the path to the file to probe
      *
      * @return  The content type of the file, or {@code null} if the content
      *          type cannot be determined
      *
      * @throws  IOException
-     *          If an I/O error occurs
+     *          if an I/O error occurs
      * @throws  SecurityException
      *          If a security manager is installed and it denies an unspecified
      *          permission required by a file type detector implementation.
      */
-    public static String probeContentType(FileRef file)
+    public static String probeContentType(Path path)
         throws IOException
     {
         // try installed file type detectors
-        for (FileTypeDetector detector: DefaultFileTypeDetectorHolder.installeDetectors) {
-            String result = detector.probeContentType(file);
+        for (FileTypeDetector detector: FileTypeDetectors.installeDetectors) {
+            String result = detector.probeContentType(path);
             if (result != null)
                 return result;
         }
 
         // fallback to default
-        return DefaultFileTypeDetectorHolder.defaultFileTypeDetector
-            .probeContentType(file);
+        return FileTypeDetectors.defaultFileTypeDetector.probeContentType(path);
+    }
+
+    // -- File Attributes --
+
+    /**
+     * Returns a file attribute view of a given type.
+     *
+     * <p> A file attribute view provides a read-only or updatable view of a
+     * set of file attributes. This method is intended to be used where the file
+     * attribute view defines type-safe methods to read or update the file
+     * attributes. The {@code type} parameter is the type of the attribute view
+     * required and the method returns an instance of that type if supported.
+     * The {@link BasicFileAttributeView} type supports access to the basic
+     * attributes of a file. Invoking this method to select a file attribute
+     * view of that type will always return an instance of that class.
+     *
+     * <p> The {@code options} array may be used to indicate how symbolic links
+     * are handled by the resulting file attribute view for the case that the
+     * file is a symbolic link. By default, symbolic links are followed. If the
+     * option {@link LinkOption#NOFOLLOW_LINKS NOFOLLOW_LINKS} is present then
+     * symbolic links are not followed. This option is ignored by implementations
+     * that do not support symbolic links.
+     *
+     * <p> <b>Usage Example:</b>
+     * Suppose we want read or set a file's ACL, if supported:
+     * <pre>
+     *     Path path = ...
+     *     AclFileAttributeView view = Files.getFileAttributeView(path, AclFileAttributeView.class);
+     *     if (view != null) {
+     *         List&lt;AclEntry&gt acl = view.getAcl();
+     *         :
+     *     }
+     * </pre>
+     *
+     *
+     * @param   path
+     *          the path to the file
+     * @param   type
+     *          the {@code Class} object corresponding to the file attribute view
+     * @param   options
+     *          options indicating how symbolic links are handled
+     *
+     * @return  a file attribute view of the specified type, or {@code null} if
+     *          the attribute view type is not available
+     */
+    public static <V extends FileAttributeView> V getFileAttributeView(Path path,
+                                                                       Class<V> type,
+                                                                       LinkOption... options)
+    {
+        return provider(path).getFileAttributeView(path, type, options);
+    }
+
+    /**
+     * Reads a file's attributes as a bulk operation.
+     *
+     * <p> The {@code type} parameter is the type of the attributes required
+     * and this method returns an instance of that type if supported. All
+     * implementations support a basic set of file attributes and so invoking
+     * this method with a  {@code type} parameter of {@code
+     * BasicFileAttributes.class} will not throw {@code
+     * UnsupportedOperationException}.
+     *
+     * <p> The {@code options} array may be used to indicate how symbolic links
+     * are handled for the case that the file is a symbolic link. By default,
+     * symbolic links are followed and the file attribute of the final target
+     * of the link is read. If the option {@link LinkOption#NOFOLLOW_LINKS
+     * NOFOLLOW_LINKS} is present then symbolic links are not followed.
+     *
+     * <p> It is implementation specific if all file attributes are read as an
+     * atomic operation with respect to other file system operations.
+     *
+     * <p> <b>Usage Example:</b>
+     * Suppose we want to read a file's attributes in bulk:
+     * <pre>
+     *    Path path = ...
+     *    BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class);
+     * </pre>
+     * Alternatively, suppose we want to read file's POSIX attributes without
+     * following symbolic links:
+     * <pre>
+     *    PosixFileAttributes attrs = Files.readAttributes(path, PosixFileAttributes.class, NOFOLLOW_LINKS);
+     * </pre>
+     *
+     * @param   path
+     *          the path to the file
+     * @param   type
+     *          the {@code Class} of the file attributes required
+     *          to read
+     * @param   options
+     *          options indicating how symbolic links are handled
+     *
+     * @return  the file attributes
+     *
+     * @throws  UnsupportedOperationException
+     *          if an attributes of the given type are not supported
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, a security manager is
+     *          installed, its {@link SecurityManager#checkRead(String) checkRead}
+     *          method is invoked to check read access to the file. If this
+     *          method is invoked to read security sensitive attributes then the
+     *          security manager may be invoke to check for additional permissions.
+     */
+    public static <A extends BasicFileAttributes> A readAttributes(Path path,
+                                                                   Class<A> type,
+                                                                   LinkOption... options)
+        throws IOException
+    {
+        return provider(path).readAttributes(path, type, options);
+    }
+
+    /**
+     * Sets the value of a file attribute.
+     *
+     * <p> The {@code attribute} parameter identifies the attribute to be set
+     * and takes the form:
+     * <blockquote>
+     * [<i>view-name</i><b>:</b>]<i>attribute-name</i>
+     * </blockquote>
+     * where square brackets [...] delineate an optional component and the
+     * character {@code ':'} stands for itself.
+     *
+     * <p> <i>view-name</i> is the {@link FileAttributeView#name name} of a {@link
+     * FileAttributeView} that identifies a set of file attributes. If not
+     * specified then it defaults to {@code "basic"}, the name of the file
+     * attribute view that identifies the basic set of file attributes common to
+     * many file systems. <i>attribute-name</i> is the name of the attribute
+     * within the set.
+     *
+     * <p> The {@code options} array may be used to indicate how symbolic links
+     * are handled for the case that the file is a symbolic link. By default,
+     * symbolic links are followed and the file attribute of the final target
+     * of the link is set. If the option {@link LinkOption#NOFOLLOW_LINKS
+     * NOFOLLOW_LINKS} is present then symbolic links are not followed.
+     *
+     * <p> <b>Usage Example:</b>
+     * Suppose we want to set the DOS "hidden" attribute:
+     * <pre>
+     *    Path path = ...
+     *    Files.setAttribute(path, "dos:hidden", true);
+     * </pre>
+     *
+     * @param   path
+     *          the path to the file
+     * @param   attribute
+     *          the attribute to set
+     * @param   value
+     *          the attribute value
+     * @param   options
+     *          options indicating how symbolic links are handled
+     *
+     * @return  the {@code path} parameter
+     *
+     * @throws  UnsupportedOperationException
+     *          if the attribute view is not available or it does not support
+     *          updating the attribute
+     * @throws  IllegalArgumentException
+     *          if the attribute value is of the correct type but has an
+     *          inappropriate value
+     * @throws  ClassCastException
+     *          if the attribute value is not of the expected type or is a
+     *          collection containing elements that are not of the expected
+     *          type
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, its {@link SecurityManager#checkWrite(String) checkWrite}
+     *          method denies write access to the file. If this method is invoked
+     *          to set security sensitive attributes then the security manager
+     *          may be invoked to check for additional permissions.
+     */
+    public static Path setAttribute(Path path, String attribute, Object value,
+                                    LinkOption... options)
+        throws IOException
+    {
+        provider(path).setAttribute(path, attribute, value, options);
+        return path;
+    }
+
+    /**
+     * Reads the value of a file attribute.
+     *
+     * <p> The {@code attribute} parameter identifies the attribute to be read
+     * and takes the form:
+     * <blockquote>
+     * [<i>view-name</i><b>:</b>]<i>attribute-name</i>
+     * </blockquote>
+     * where square brackets [...] delineate an optional component and the
+     * character {@code ':'} stands for itself.
+     *
+     * <p> <i>view-name</i> is the {@link FileAttributeView#name name} of a {@link
+     * FileAttributeView} that identifies a set of file attributes. If not
+     * specified then it defaults to {@code "basic"}, the name of the file
+     * attribute view that identifies the basic set of file attributes common to
+     * many file systems. <i>attribute-name</i> is the name of the attribute.
+     *
+     * <p> The {@code options} array may be used to indicate how symbolic links
+     * are handled for the case that the file is a symbolic link. By default,
+     * symbolic links are followed and the file attribute of the final target
+     * of the link is read. If the option {@link LinkOption#NOFOLLOW_LINKS
+     * NOFOLLOW_LINKS} is present then symbolic links are not followed.
+     *
+     * <p> <b>Usage Example:</b>
+     * Suppose we require the user ID of the file owner on a system that
+     * supports a "{@code unix}" view:
+     * <pre>
+     *    Path path = ...
+     *    int uid = (Integer)Files.getAttribute(path, "unix:uid");
+     * </pre>
+     *
+     * @param   path
+     *          the path to the file
+     * @param   attribute
+     *          the attribute to read
+     * @param   options
+     *          options indicating how symbolic links are handled
+     *
+     * @return  the attribute value or {@code null} if the attribute view
+     *          is not available or it does not support reading the attribute
+     *
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, its {@link SecurityManager#checkRead(String) checkRead}
+     *          method denies read access to the file. If this method is invoked
+     *          to read security sensitive attributes then the security manager
+     *          may be invoked to check for additional permissions.
+     */
+    public static Object getAttribute(Path path, String attribute,
+                                      LinkOption... options)
+        throws IOException
+    {
+        // only one attribute should be read
+        if (attribute.indexOf('*') >= 0 || attribute.indexOf(',') >= 0)
+            return null;
+        Map<String,Object> map = readAttributes(path, attribute, options);
+        String name;
+        int pos = attribute.indexOf(':');
+        if (pos == -1) {
+            name = attribute;
+        } else {
+            name = (pos == attribute.length()) ? "" : attribute.substring(pos+1);
+        }
+        return map.get(name);
+    }
+
+    /**
+     * Reads a set of file attributes as a bulk operation.
+     *
+     * <p> The {@code attributes} parameter identifies the attributes to be read
+     * and takes the form:
+     * <blockquote>
+     * [<i>view-name</i><b>:</b>]<i>attribute-list</i>
+     * </blockquote>
+     * where square brackets [...] delineate an optional component and the
+     * character {@code ':'} stands for itself.
+     *
+     * <p> <i>view-name</i> is the {@link FileAttributeView#name name} of a {@link
+     * FileAttributeView} that identifies a set of file attributes. If not
+     * specified then it defaults to {@code "basic"}, the name of the file
+     * attribute view that identifies the basic set of file attributes common to
+     * many file systems.
+     *
+     * <p> The <i>attribute-list</i> component is a comma separated list of
+     * zero or more names of attributes to read. If the list contains the value
+     * {@code "*"} then all attributes are read. Attributes that are not supported
+     * are ignored and will not be present in the returned map. It is
+     * implementation specific if all attributes are read as an atomic operation
+     * with respect to other file system operations.
+     *
+     * <p> The following examples demonstrate possible values for the {@code
+     * attributes} parameter:
+     *
+     * <blockquote>
+     * <table border="0">
+     * <tr>
+     *   <td> {@code "*"} </td>
+     *   <td> Read all {@link BasicFileAttributes basic-file-attributes}. </td>
+     * </tr>
+     * <tr>
+     *   <td> {@code "size,lastModifiedTime,lastAccessTime"} </td>
+     *   <td> Reads the file size, last modified time, and last access time
+     *     attributes. </td>
+     * </tr>
+     * <tr>
+     *   <td> {@code "posix:*"} </td>
+     *   <td> Read all {@link PosixFileAttributes POSIX-file-attributes}. </td>
+     * </tr>
+     * <tr>
+     *   <td> {@code "posix:permissions,owner,size"} </td>
+     *   <td> Reads the POSX file permissions, owner, and file size. </td>
+     * </tr>
+     * </table>
+     * </blockquote>
+     *
+     * <p> The {@code options} array may be used to indicate how symbolic links
+     * are handled for the case that the file is a symbolic link. By default,
+     * symbolic links are followed and the file attribute of the final target
+     * of the link is read. If the option {@link LinkOption#NOFOLLOW_LINKS
+     * NOFOLLOW_LINKS} is present then symbolic links are not followed.
+     *
+     * @param   path
+     *          the path to the file
+     * @param   attributes
+     *          the attributes to read
+     * @param   options
+     *          options indicating how symbolic links are handled
+     *
+     * @return  a map of the attributes returned; may be empty. The map's keys
+     *          are the attribute names, its values are the attribute values
+     *
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, its {@link SecurityManager#checkRead(String) checkRead}
+     *          method denies read access to the file. If this method is invoked
+     *          to read security sensitive attributes then the security manager
+     *          may be invoke to check for additional permissions.
+     */
+    public static Map<String,Object> readAttributes(Path path, String attributes,
+                                                    LinkOption... options)
+        throws IOException
+    {
+        return provider(path).readAttributes(path, attributes, options);
+    }
+
+    /**
+     * Returns a file's POSIX file permissions.
+     *
+     * <p> The {@code path} parameter is associated with a {@code FileSystem}
+     * that supports the {@link PosixFileAttributeView}. This attribute view
+     * provides access to file attributes commonly associated with files on file
+     * systems used by operating systems that implement the Portable Operating
+     * System Interface (POSIX) family of standards.
+     *
+     * <p> The {@code options} array may be used to indicate how symbolic links
+     * are handled for the case that the file is a symbolic link. By default,
+     * symbolic links are followed and the file attribute of the final target
+     * of the link is read. If the option {@link LinkOption#NOFOLLOW_LINKS
+     * NOFOLLOW_LINKS} is present then symbolic links are not followed.
+     *
+     * @param   path
+     *          the path to the file
+     * @param   options
+     *          options indicating how symbolic links are handled
+     *
+     * @return  the file permissions
+     *
+     * @throws  UnsupportedOperationException
+     *          if the associated file system does not support the {@code
+     *          PosixFileAttributeView}
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, a security manager is
+     *          installed, and it denies {@link RuntimePermission}<tt>("accessUserInformation")</tt>
+     *          or its {@link SecurityManager#checkRead(String) checkRead} method
+     *          denies read access to the file.
+     */
+    public static Set<PosixFilePermission> getPosixFilePermissions(Path path,
+                                                                   LinkOption... options)
+        throws IOException
+    {
+        return readAttributes(path, PosixFileAttributes.class, options).permissions();
+    }
+
+    /**
+     * Sets a file's POSIX permissions.
+     *
+     * <p> The {@code path} parameter is associated with a {@code FileSystem}
+     * that supports the {@link PosixFileAttributeView}. This attribute view
+     * provides access to file attributes commonly associated with files on file
+     * systems used by operating systems that implement the Portable Operating
+     * System Interface (POSIX) family of standards.
+     *
+     * @param   path
+     *          A file reference that locates the file
+     * @param   perms
+     *          The new set of permissions
+     *
+     * @throws  UnsupportedOperationException
+     *          if the associated file system does not support the {@code
+     *          PosixFileAttributeView}
+     * @throws  ClassCastException
+     *          if the sets contains elements that are not of type {@code
+     *          PosixFilePermission}
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, it denies {@link RuntimePermission}<tt>("accessUserInformation")</tt>
+     *          or its {@link SecurityManager#checkWrite(String) checkWrite}
+     *          method denies write access to the file.
+     */
+    public static Path setPosixFilePermissions(Path path,
+                                               Set<PosixFilePermission> perms)
+        throws IOException
+    {
+        PosixFileAttributeView view =
+            getFileAttributeView(path, PosixFileAttributeView.class);
+        if (view == null)
+            throw new UnsupportedOperationException();
+        view.setPermissions(perms);
+        return path;
+    }
+
+    /**
+     * Returns the owner of a file.
+     *
+     * <p> The {@code path} parameter is associated with a file system that
+     * supports {@link FileOwnerAttributeView}. This file attribute view provides
+     * access to a file attribute that is the owner of the file.
+     *
+     * @param   path
+     *          A file reference that locates the file
+     * @param   options
+     *          options indicating how symbolic links are handled
+     *
+     * @return  A user principal representing the owner of the file
+     *
+     * @throws  UnsupportedOperationException
+     *          if the associated file system does not support the {@code
+     *          FileOwnerAttributeView}
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, it denies {@link RuntimePermission}<tt>("accessUserInformation")</tt>
+     *          or its {@link SecurityManager#checkRead(String) checkRead} method
+     *          denies read access to the file.
+     */
+    public static UserPrincipal getOwner(Path path, LinkOption... options) throws IOException {
+        FileOwnerAttributeView view =
+            getFileAttributeView(path, FileOwnerAttributeView.class, options);
+        if (view == null)
+            throw new UnsupportedOperationException();
+        return view.getOwner();
     }
 
     /**
+     * Updates the file owner.
+     *
+     * <p> The {@code path} parameter is associated with a file system that
+     * supports {@link FileOwnerAttributeView}. This file attribute view provides
+     * access to a file attribute that is the owner of the file.
+     *
+     * <p> <b>Usage Example:</b>
+     * Suppose we want to make "joe" the owner of a file:
+     * <pre>
+     *     Path path = ...
+     *     UserPrincipalLookupService lookupService =
+     *         provider(path).getUserPrincipalLookupService();
+     *     UserPrincipal joe = lookupService.lookupPrincipalByName("joe");
+     *     Files.setOwner(path, joe);
+     * </pre>
+     *
+     * @param   path
+     *          A file reference that locates the file
+     * @param   owner
+     *          The new file owner
+     *
+     * @throws  UnsupportedOperationException
+     *          if the associated file system does not support the {@code
+     *          FileOwnerAttributeView}
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, it denies {@link RuntimePermission}<tt>("accessUserInformation")</tt>
+     *          or its {@link SecurityManager#checkWrite(String) checkWrite}
+     *          method denies write access to the file.
+     *
+     * @see FileSystem#getUserPrincipalLookupService
+     * @see java.nio.file.attribute.UserPrincipalLookupService
+     */
+    public static Path setOwner(Path path, UserPrincipal owner)
+        throws IOException
+    {
+        FileOwnerAttributeView view =
+            getFileAttributeView(path, FileOwnerAttributeView.class);
+        if (view == null)
+            throw new UnsupportedOperationException();
+        view.setOwner(owner);
+        return path;
+    }
+
+    /**
+     * Tests whether a file is a symbolic link.
+     *
+     * <p> Where is it required to distinguish an I/O exception from the case
+     * that the file is not a symbolic link then the file attributes can be
+     * read with the {@link #readAttributes(Path,Class,LinkOption[])
+     * readAttributes} method and the file type tested with the {@link
+     * BasicFileAttributes#isSymbolicLink} method.
+     *
+     * @return  {@code true} if the file is a symbolic link; {@code false} if
+     *          the file does not exist, is not a symbolic link, or it cannot
+     *          be determined if the file is symbolic link or not.
+     *
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, its {@link SecurityManager#checkRead(String) checkRead}
+     *          method denies read access to the file.
+     */
+    public static boolean isSymbolicLink(Path path) {
+        try {
+            return readAttributes(path,
+                                  BasicFileAttributes.class,
+                                  LinkOption.NOFOLLOW_LINKS).isSymbolicLink();
+        } catch (IOException ioe) {
+            return false;
+        }
+    }
+
+    /**
+     * Tests whether a file is a directory.
+     *
+     * <p> The {@code options} array may be used to indicate how symbolic links
+     * are handled for the case that the file is a symbolic link. By default,
+     * symbolic links are followed and the file attribute of the final target
+     * of the link is read. If the option {@link LinkOption#NOFOLLOW_LINKS
+     * NOFOLLOW_LINKS} is present then symbolic links are not followed.
+     *
+     * <p> Where is it required to distinguish an I/O exception from the case
+     * that the file is not a directory then the file attributes can be
+     * read with the {@link #readAttributes(Path,Class,LinkOption[])
+     * readAttributes} method and the file type tested with the {@link
+     * BasicFileAttributes#isDirectory} method.
+     *
+     * @param   path
+     *          the path to the file to test
+     * @param   options
+     *          options indicating how symbolic links are handled
+     *
+     * @return  {@code true} if the file is a directory; {@code false} if
+     *          the file does not exist, is not a directory, or it cannot
+     *          be determined if the file is directory or not.
+     *
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, its {@link SecurityManager#checkRead(String) checkRead}
+     *          method denies read access to the file.
+     */
+    public static boolean isDirectory(Path path, LinkOption... options) {
+        try {
+            return readAttributes(path, BasicFileAttributes.class, options).isDirectory();
+        } catch (IOException ioe) {
+            return false;
+        }
+    }
+
+    /**
+     * Tests whether a file is a regular file with opaque content.
+     *
+     * <p> The {@code options} array may be used to indicate how symbolic links
+     * are handled for the case that the file is a symbolic link. By default,
+     * symbolic links are followed and the file attribute of the final target
+     * of the link is read. If the option {@link LinkOption#NOFOLLOW_LINKS
+     * NOFOLLOW_LINKS} is present then symbolic links are not followed.
+     *
+     * <p> Where is it required to distinguish an I/O exception from the case
+     * that the file is not a regular file then the file attributes can be
+     * read with the {@link #readAttributes(Path,Class,LinkOption[])
+     * readAttributes} method and the file type tested with the {@link
+     * BasicFileAttributes#isRegularFile} method.
+     *
+     * @param   path
+     *          the path to the file
+     * @param   options
+     *          options indicating how symbolic links are handled
+     *
+     * @return  {@code true} if the file is a regular file; {@code false} if
+     *          the file does not exist, is not a direcregular filetory, or it
+     *          cannot be determined if the file is regular file or not.
+     *
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, its {@link SecurityManager#checkRead(String) checkRead}
+     *          method denies read access to the file.
+     */
+    public static boolean isRegularFile(Path path, LinkOption... options) {
+        try {
+            return readAttributes(path, BasicFileAttributes.class, options).isRegularFile();
+        } catch (IOException ioe) {
+            return false;
+        }
+    }
+
+    /**
+     * Returns a file's last modified time.
+     *
+     * <p> The {@code options} array may be used to indicate how symbolic links
+     * are handled for the case that the file is a symbolic link. By default,
+     * symbolic links are followed and the file attribute of the final target
+     * of the link is read. If the option {@link LinkOption#NOFOLLOW_LINKS
+     * NOFOLLOW_LINKS} is present then symbolic links are not followed.
+     *
+     * @param   path
+     *          the path to the file
+     * @param   options
+     *          options indicating how symbolic links are handled
+     *
+     * @return  a {@code FileTime} representing the time the file was last
+     *          modified, or an implementation specific default when a time
+     *          stamp to indicate the time of last modification is not supported
+     *          by the file system
+     *
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, its {@link SecurityManager#checkRead(String) checkRead}
+     *          method denies read access to the file.
+     *
+     * @see BasicFileAttributes#lastModifiedTime
+     */
+    public static FileTime getLastModifiedTime(Path path, LinkOption... options)
+        throws IOException
+    {
+        return readAttributes(path, BasicFileAttributes.class, options).lastModifiedTime();
+    }
+
+    /**
+     * Updates a file's last modified time attribute. The file time is converted
+     * to the epoch and precision supported by the file system. Converting from
+     * finer to coarser granularities result in precision loss. The behavior of
+     * this method when attempting to set the last modified time when it is not
+     * supported by the file system or is outside the range supported by the
+     * underlying file store is not defined. It may or not fail by throwing an
+     * {@code IOException}.
+     *
+     * <p> <b>Usage Example:</b>
+     * Suppose we want to set the last modified time to the current time:
+     * <pre>
+     *    Path path = ...
+     *    FileTime now = FileTime.fromMillis(System.currentTimeMillis());
+     *    Files.setLastModifiedTime(path, now);
+     * </pre>
+     *
+     * @param   path
+     *          the path to the file
+     * @param   time
+     *          the new last modified time
+     *
+     * @return  the file
+     *
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, the security manager's {@link
+     *          SecurityManager#checkWrite(String) checkWrite} method is invoked
+     *          to check write access to file
+     *
+     * @see BasicFileAttributeView#setTimes
+     */
+    public static Path setLastModifiedTime(Path path, FileTime time)
+        throws IOException
+    {
+        getFileAttributeView(path, BasicFileAttributeView.class)
+            .setTimes(time, null, null);
+        return path;
+    }
+
+    /**
+     * Returns the size of a file (in bytes). The size may differ from the
+     * actual size on the file system due to compression, support for sparse
+     * files, or other reasons. The size of files that are not {@link
+     * #isRegularFile regular} files is implementation specific and
+     * therefore unspecified.
+     *
+     * @param   path
+     *          the path to the file
+     *
+     * @return  the file size, in bytes
+     *
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, its {@link SecurityManager#checkRead(String) checkRead}
+     *          method denies read access to the file.
+     *
+     * @see BasicFileAttributes#size
+     */
+    public static long size(Path path) throws IOException {
+        return readAttributes(path, BasicFileAttributes.class).size();
+    }
+
+    // -- Accessibility --
+
+    /**
+     * Returns {@code false} if NOFOLLOW_LINKS is present.
+     */
+    private static boolean followLinks(LinkOption... options) {
+        boolean followLinks = true;
+        for (LinkOption opt: options) {
+            if (opt == LinkOption.NOFOLLOW_LINKS) {
+                followLinks = false;
+                continue;
+            }
+            if (opt == null)
+                throw new NullPointerException();
+            throw new AssertionError("Should not get here");
+        }
+        return followLinks;
+    }
+
+    /**
+     * Tests whether a file exists.
+     *
+     * <p> The {@code options} parameter may be used to indicate how symbolic links
+     * are handled for the case that the file is a symbolic link. By default,
+     * symbolic links are followed. If the option {@link LinkOption#NOFOLLOW_LINKS
+     * NOFOLLOW_LINKS} is present then symbolic links are not followed.
+     *
+     * <p> Note that the result of this method is immediately outdated. If this
+     * method indicates the file exists then there is no guarantee that a
+     * subsequence access will succeed. Care should be taken when using this
+     * method in security sensitive applications.
+     *
+     * @param   path
+     *          the path to the file to test
+     * @param   options
+     *          options indicating how symbolic links are handled
+     * .
+     * @return  {@code true} if the file exists; {@code false} if the file does
+     *          not exist or its existence cannot be determined.
+     *
+     * @throws  SecurityException
+     *          In the case of the default provider, the {@link
+     *          SecurityManager#checkRead(String)} is invoked to check
+     *          read access to the file.
+     *
+     * @see #notExists
+     */
+    public static boolean exists(Path path, LinkOption... options) {
+        try {
+            if (followLinks(options)) {
+                provider(path).checkAccess(path);
+            } else {
+                // attempt to read attributes without following links
+                readAttributes(path, BasicFileAttributes.class,
+                               LinkOption.NOFOLLOW_LINKS);
+            }
+            // file exists
+            return true;
+        } catch (IOException x) {
+            // does not exist or unable to determine if file exists
+            return false;
+        }
+
+    }
+
+    /**
+     * Tests whether the file located by this path does not exist. This method
+     * is intended for cases where it is required to take action when it can be
+     * confirmed that a file does not exist.
+     *
+     * <p> The {@code options} parameter may be used to indicate how symbolic links
+     * are handled for the case that the file is a symbolic link. By default,
+     * symbolic links are followed. If the option {@link LinkOption#NOFOLLOW_LINKS
+     * NOFOLLOW_LINKS} is present then symbolic links are not followed.
+     *
+     * <p> Note that this method is not the complement of the {@link #exists
+     * exists} method. Where it is not possible to determine if a file exists
+     * or not then both methods return {@code false}. As with the {@code exists}
+     * method, the result of this method is immediately outdated. If this
+     * method indicates the file does exist then there is no guarantee that a
+     * subsequence attempt to create the file will succeed. Care should be taken
+     * when using this method in security sensitive applications.
+     *
+     * @param   path
+     *          the path to the file to test
+     * @param   options
+     *          options indicating how symbolic links are handled
+     *
+     * @return  {@code true} if the file does not exist; {@code false} if the
+     *          file exists or its existence cannot be determined
+     *
+     * @throws  SecurityException
+     *          In the case of the default provider, the {@link
+     *          SecurityManager#checkRead(String)} is invoked to check
+     *          read access to the file.
+     */
+    public static boolean notExists(Path path, LinkOption... options) {
+        try {
+            if (followLinks(options)) {
+                provider(path).checkAccess(path);
+            } else {
+                // attempt to read attributes without following links
+                readAttributes(path, BasicFileAttributes.class,
+                               LinkOption.NOFOLLOW_LINKS);
+            }
+            // file exists
+            return false;
+        } catch (NoSuchFileException x) {
+            // file confirmed not to exist
+            return true;
+        } catch (IOException x) {
+            return false;
+        }
+    }
+
+    /**
+     * Used by isReadbale, isWritable, isExecutable to test access to a file.
+     */
+    private static boolean isAccessible(Path path, AccessMode... modes) {
+        try {
+            provider(path).checkAccess(path, modes);
+            return true;
+        } catch (IOException x) {
+            return false;
+        }
+    }
+
+    /**
+     * Tests whether a file is readable. This method checks that a file exists
+     * and that this Java virtual machine has appropriate privileges that would
+     * allow it open the file for reading. Depending on the implementation, this
+     * method may require to read file permissions, access control lists, or
+     * other file attributes in order to check the effective access to the file.
+     * Consequently, this method may not be atomic with respect to other file
+     * system operations.
+     *
+     * <p> Note that the result of this method is immediately outdated, there is
+     * no guarantee that a subsequent attempt to open the file for reading will
+     * succeed (or even that it will access the same file). Care should be taken
+     * when using this method in security sensitive applications.
+     *
+     * @param   path
+     *          the path to the file to check
+     *
+     * @return  {@code true} if the file exists and is readable; {@code false}
+     *          if the file does not exist, read access would be denied because
+     *          the Java virtual machine has insufficient privileges, or access
+     *          cannot be determined
+     *
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
+     *          is invoked to check read access to the file.
+     */
+    public static boolean isReadable(Path path) {
+        return isAccessible(path, AccessMode.READ);
+    }
+
+    /**
+     * Tests whether a file is writable. This method checks that a file exists
+     * and that this Java virtual machine has appropriate privileges that would
+     * allow it open the file for writing. Depending on the implementation, this
+     * method may require to read file permissions, access control lists, or
+     * other file attributes in order to check the effective access to the file.
+     * Consequently, this method may not be atomic with respect to other file
+     * system operations.
+     *
+     * <p> Note that result of this method is immediately outdated, there is no
+     * guarantee that a subsequent attempt to open the file for writing will
+     * succeed (or even that it will access the same file). Care should be taken
+     * when using this method in security sensitive applications.
+     *
+     * @param   path
+     *          the path to the file to check
+     *
+     * @return  {@code true} if the file exists and is writable; {@code false}
+     *          if the file does not exist, write access would be denied because
+     *          the Java virtual machine has insufficient privileges, or access
+     *          cannot be determined
+     *
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkWrite(String) checkWrite}
+     *          is invoked to check write access to the file.
+     */
+    public static boolean isWritable(Path path) {
+        return isAccessible(path, AccessMode.WRITE);
+    }
+
+    /**
+     * Tests whether a file is executable. This method checks that a file exists
+     * and that this Java virtual machine has appropriate privileges to {@link
+     * Runtime#exec execute} the file. The semantics may differ when checking
+     * access to a directory. For example, on UNIX systems, checking for
+     * execute access checks that the Java virtual machine has permission to
+     * search the directory in order to access file or subdirectories.
+     *
+     * <p> Depending on the implementation, this method may require to read file
+     * permissions, access control lists, or other file attributes in order to
+     * check the effective access to the file. Consequently, this method may not
+     * be atomic with respect to other file system operations.
+     *
+     * <p> Note that the result of this method is immediately outdated, there is
+     * no guarantee that a subsequent attempt to execute the file will succeed
+     * (or even that it will access the same file). Care should be taken when
+     * using this method in security sensitive applications.
+     *
+     * @param   path
+     *          the path to the file to check
+     *
+     * @return  {@code true} if the file exists and is executable; {@code false}
+     *          if the file does not exist, execute access would be denied because
+     *          the Java virtual machine has insufficient privileges, or access
+     *          cannot be determined
+     *
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkExec(String)
+     *          checkExec} is invoked to check execute access to the file.
+     */
+    public static boolean isExecutable(Path path) {
+       return isAccessible(path, AccessMode.EXECUTE);
+    }
+
+    // -- Recursive operations --
+
+    /**
      * Walks a file tree.
      *
      * <p> This method walks a file tree rooted at a given starting file. The
@@ -139,7 +2484,7 @@
      * an uncaught error, or runtime exception, then the traversal is terminated
      * and the error or exception is propagated to the caller of this method.
      *
-     * <p> For each file encountered this method attempts to gets its {@link
+     * <p> For each file encountered this method attempts to read its {@link
      * java.nio.file.attribute.BasicFileAttributes}. If the file is not a
      * directory then the {@link FileVisitor#visitFile visitFile} method is
      * invoked with the file attributes. If the file attributes cannot be read,
@@ -174,7 +2519,7 @@
      * arises when there is an entry in a directory that is an ancestor of the
      * directory. Cycle detection is done by recording the {@link
      * java.nio.file.attribute.BasicFileAttributes#fileKey file-key} of directories,
-     * or if file keys are not available, by invoking the {@link Path#isSameFile
+     * or if file keys are not available, by invoking the {@link #isSameFile
      * isSameFile} method to test if a directory is the same file as an
      * ancestor. When a cycle is detected it is treated as an I/O error, and the
      * {@link FileVisitor#visitFileFailed visitFileFailed} method is invoked with
@@ -197,25 +2542,27 @@
      * that file (or directory).
      *
      * @param   start
-     *          The starting file
+     *          the starting file
      * @param   options
-     *          Options to configure the traversal
+     *          options to configure the traversal
      * @param   maxDepth
-     *          The maximum number of directory levels to visit
+     *          the maximum number of directory levels to visit
      * @param   visitor
-     *          The file visitor to invoke for each file
+     *          the file visitor to invoke for each file
+     *
+     * @return  the starting file
      *
      * @throws  IllegalArgumentException
-     *          If the {@code maxDepth} parameter is negative
+     *          if the {@code maxDepth} parameter is negative
      * @throws  SecurityException
      *          If the security manager denies access to the starting file.
      *          In the case of the default provider, the {@link
      *          SecurityManager#checkRead(String) checkRead} method is invoked
      *          to check read access to the directory.
      * @throws  IOException
-     *          If an I/O error is thrown by a visitor method
+     *          if an I/O error is thrown by a visitor method
      */
-    public static void walkFileTree(Path start,
+    public static Path walkFileTree(Path start,
                                     Set<FileVisitOption> options,
                                     int maxDepth,
                                     FileVisitor<? super Path> visitor)
@@ -224,6 +2571,7 @@
         if (maxDepth < 0)
             throw new IllegalArgumentException("'maxDepth' is negative");
         new FileTreeWalker(options, visitor, maxDepth).walk(start);
+        return start;
     }
 
     /**
@@ -234,11 +2582,15 @@
      * <blockquote><pre>
      * walkFileTree(start, EnumSet.noneOf(FileVisitOption.class), Integer.MAX_VALUE, visitor)
      * </pre></blockquote>
+     * In other words, it does not follow symbolic links, and visits all levels
+     * of the file level.
      *
      * @param   start
-     *          The starting file
+     *          the starting file
      * @param   visitor
-     *          The file visitor to invoke for each file
+     *          the file visitor to invoke for each file
+     *
+     * @return  the starting file
      *
      * @throws  SecurityException
      *          If the security manager denies access to the starting file.
@@ -246,118 +2598,511 @@
      *          SecurityManager#checkRead(String) checkRead} method is invoked
      *          to check read access to the directory.
      * @throws  IOException
-     *          If an I/O error is thrown by a visitor method
+     *          if an I/O error is thrown by a visitor method
      */
-    public static void walkFileTree(Path start, FileVisitor<? super Path> visitor)
+    public static Path walkFileTree(Path start, FileVisitor<? super Path> visitor)
+        throws IOException
+    {
+        return walkFileTree(start,
+                            EnumSet.noneOf(FileVisitOption.class),
+                            Integer.MAX_VALUE,
+                            visitor);
+    }
+
+
+    // -- Utility methods for simple usages --
+
+    // buffer size used for reading and writing
+    private static final int BUFFER_SIZE = 8192;
+
+    /**
+     * Opens a file for reading, returning a {@code BufferedReader} that may be
+     * used to read text from the file in an efficient manner. Bytes from the
+     * file are decoded into characters using the specified charset. Reading
+     * commences at the beginning of the file.
+     *
+     * <p> The {@code Reader} methods that read from the file throw {@code
+     * IOException} if a malformed or unmappable byte sequence is read.
+     *
+     * @param   path
+     *          the path to the file
+     * @param   cs
+     *          the charset to use for decoding
+     *
+     * @return  a new buffered reader, with default buffer size, to read text
+     *          from the file
+     *
+     * @throws  IOException
+     *          if an I/O error occurs opening the file
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
+     *          method is invoked to check read access to the file.
+     *
+     * @see #readAllLines
+     */
+    public static BufferedReader newBufferedReader(Path path, Charset cs)
         throws IOException
     {
-        walkFileTree(start,
-                     EnumSet.noneOf(FileVisitOption.class),
-                     Integer.MAX_VALUE,
-                     visitor);
+        CharsetDecoder decoder = cs.newDecoder();
+        Reader reader = new InputStreamReader(newInputStream(path), decoder);
+        return new BufferedReader(reader);
+    }
+
+    /**
+     * Opens or creates a file for writing, returning a {@code BufferedWriter}
+     * that may be used to write text to the file in an efficient manner.
+     * The {@code options} parameter specifies how the the file is created or
+     * opened. If no options are present then this method works as if the {@link
+     * StandardOpenOption#CREATE CREATE}, {@link
+     * StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING}, and {@link
+     * StandardOpenOption#WRITE WRITE} options are present. In other words, it
+     * opens the file for writing, creating the file if it doesn't exist, or
+     * initially truncating an existing {@link #isRegularFile regular-file} to
+     * a size of {@code 0} if it exists.
+     *
+     * <p> The {@code Writer} methods to write text throw {@code IOException}
+     * if the text cannot be encoded using the specified charset.
+     *
+     * @param   path
+     *          the path to the file
+     * @param   cs
+     *          the charset to use for encoding
+     * @param   options
+     *          options specifying how the file is opened
+     *
+     * @return  a new buffered writer, with default buffer size, to write text
+     *          to the file
+     *
+     * @throws  IOException
+     *          if an I/O error occurs opening or creating the file
+     * @throws  UnsupportedOperationException
+     *          if an unsupported option is specified
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkWrite(String) checkWrite}
+     *          method is invoked to check write access to the file.
+     *
+     * @see #write(Path,Iterable,Charset,OpenOption[])
+     */
+    public static BufferedWriter newBufferedWriter(Path path, Charset cs,
+                                                   OpenOption... options)
+        throws IOException
+    {
+        CharsetEncoder encoder = cs.newEncoder();
+        Writer writer = new OutputStreamWriter(newOutputStream(path, options), encoder);
+        return new BufferedWriter(writer);
+    }
+
+    /**
+     * Reads all bytes from an input stream and writes them to an output stream.
+     */
+    private static long copy(InputStream source, OutputStream sink)
+        throws IOException
+    {
+        long nread = 0L;
+        byte[] buf = new byte[BUFFER_SIZE];
+        int n;
+        while ((n = source.read(buf)) > 0) {
+            sink.write(buf, 0, n);
+            nread += n;
+        }
+        return nread;
     }
 
     /**
-     * Creates a directory by creating all nonexistent parent directories first.
+     * Copies all bytes from an input stream to a file. On return, the input
+     * stream will be at end of stream.
+     *
+     * <p> By default, the copy fails if the target file already exists or is a
+     * symbolic link. If the {@link StandardCopyOption#REPLACE_EXISTING
+     * REPLACE_EXISTING} option is specified, and the target file already exists,
+     * then it is replaced if it is not a non-empty directory. If the target
+     * file exists and is a symbolic link, then the symbolic link is replaced.
+     * In this release, the {@code REPLACE_EXISTING} option is the only option
+     * required to be supported by this method. Additional options may be
+     * supported in future releases.
      *
-     * <p> The {@code attrs} parameter is an optional array of {@link FileAttribute
-     * file-attributes} to set atomically when creating the nonexistent
-     * directories. Each file attribute is identified by its {@link
-     * FileAttribute#name name}. If more than one attribute of the same name is
-     * included in the array then all but the last occurrence is ignored.
+     * <p>  If an I/O error occurs reading from the input stream or writing to
+     * the file, then it may do so after the target file has been created and
+     * after some bytes have been read or written. Consequently the input
+     * stream may not be at end of stream and may be in an inconsistent state.
+     * It is strongly recommended that the input stream be promptly closed if an
+     * I/O error occurs.
+     *
+     * <p> This method may block indefinitely reading from the input stream (or
+     * writing to the file). The behavior for the case that the input stream is
+     * <i>asynchronously closed</i> or the thread interrupted during the copy is
+     * highly input stream and file system provider specific and therefore not
+     * specified.
      *
-     * <p> If this method fails, then it may do so after creating some, but not
-     * all, of the parent directories.
+     * <p> <b>Usage example</b>: Suppose we want to capture a web page and save
+     * it to a file:
+     * <pre>
+     *     Path path = ...
+     *     URI u = URI.create("http://java.sun.com/");
+     *     try (InputStream in = u.toURL().openStream()) {
+     *         Files.copy(in, path);
+     *     }
+     * </pre>
      *
-     * @param   dir
-     *          the directory to create
+     * @param   in
+     *          the input stream to read from
+     * @param   target
+     *          the path to the file
+     * @param   options
+     *          options specifying how the copy should be done
+     *
+     * @return  the number of bytes read or written
      *
-     * @param   attrs
-     *          an optional list of file attributes to set atomically when
-     *          creating the directory
-     *
+     * @throws  IOException
+     *          if an I/O error occurs when reading or writing
+     * @throws  FileAlreadyExistsException
+     *          if the target file exists but cannot be replaced because the
+     *          {@code REPLACE_EXISTING} option is not specified <i>(optional
+     *          specific exception)</i>
+     * @throws  DirectoryNotEmptyException
+     *          the {@code REPLACE_EXISTING} option is specified but the file
+     *          cannot be replaced because it is a non-empty directory
+     *          <i>(optional specific exception)</i>     *
      * @throws  UnsupportedOperationException
-     *          if the array contains an attribute that cannot be set atomically
-     *          when creating the directory
-     * @throws  FileAlreadyExistsException
-     *          if {@code dir} exists but is not a directory <i>(optional specific
-     *          exception)</i>
-     * @throws  IOException
-     *          if an I/O error occurs
+     *          if {@code options} contains a copy option that is not supported
      * @throws  SecurityException
-     *          in the case of the default provider, and a security manager is
+     *          In the case of the default provider, and a security manager is
      *          installed, the {@link SecurityManager#checkWrite(String) checkWrite}
-     *          method is invoked prior to attempting to create a directory and
-     *          its {@link SecurityManager#checkRead(String) checkRead} is
-     *          invoked for each parent directory that is checked. If {@code
-     *          dir} is not an absolute path then its {@link Path#toAbsolutePath
-     *          toAbsolutePath} may need to be invoked to get its absolute path.
-     *          This may invoke the security manager's {@link
-     *          SecurityManager#checkPropertyAccess(String) checkPropertyAccess}
-     *          method to check access to the system property {@code user.dir}
-     *
+     *          method is invoked to check write access to the file. Where the
+     *          {@code REPLACE_EXISTING} option is specified, the security
+     *          manager's {@link SecurityManager#checkDelete(String) checkDelete}
+     *          method is invoked to check that an existing file can be deleted.
      */
-    public static void createDirectories(Path dir, FileAttribute<?>... attrs)
+    public static long copy(InputStream in, Path target, CopyOption... options)
         throws IOException
     {
-        // attempt to create the directory
-        try {
-            createAndCheckIsDirectory(dir, attrs);
-            return;
-        } catch (FileAlreadyExistsException x) {
-            // file exists and is not a directory
-            throw x;
-        } catch (IOException x) {
-            // parent may not exist or other reason
+        // ensure not null before opening file
+        Objects.requireNonNull(in);
+
+        // check for REPLACE_EXISTING
+        boolean replaceExisting = false;
+        for (CopyOption opt: options) {
+            if (opt == StandardCopyOption.REPLACE_EXISTING) {
+                replaceExisting = true;
+            } else {
+                if (opt == null) {
+                    throw new NullPointerException("options contains 'null'");
+                }  else {
+                    throw new UnsupportedOperationException(opt + " not supported");
+                }
+            }
         }
 
-        // find existing parent (may require absolute path)
+        // attempt to delete an existing file
         SecurityException se = null;
-        try {
-            dir = dir.toAbsolutePath();
-        } catch (SecurityException x) {
-            // don't have permission to get absolute path
-            se = x;
+        if (replaceExisting) {
+            try {
+                deleteIfExists(target);
+            } catch (SecurityException x) {
+                se = x;
+            }
         }
-        Path parent = dir.getParent();
-        while (parent != null) {
-            try {
-                parent.checkAccess();
-                break;
-            } catch (NoSuchFileException x) {
-                // does not exist
-            }
-            parent = parent.getParent();
-        }
-        if (parent == null) {
-            // unable to find existing parent
+
+        // attempt to create target file. If it fails with
+        // FileAlreadyExistsException then it may be because the security
+        // manager prevented us from deleting the file, in which case we just
+        // throw the SecurityException.
+        OutputStream ostream;
+        try {
+            ostream = newOutputStream(target, StandardOpenOption.CREATE_NEW,
+                                              StandardOpenOption.WRITE);
+        } catch (FileAlreadyExistsException x) {
             if (se != null)
                 throw se;
-            throw new IOException("Root directory does not exist");
+            // someone else won the race and created the file
+            throw x;
         }
 
-        // create directories
-        Path child = parent;
-        for (Path name: parent.relativize(dir)) {
-            child = child.resolve(name);
-            createAndCheckIsDirectory(child, attrs);
+        // do the copy
+        try (OutputStream out = ostream) {
+            return copy(in, out);
         }
     }
 
     /**
-     * Attempts to create a directory. Does nothing if the directory already
-     * exists.
+     * Copies all bytes from a file to an output stream.
+     *
+     * <p> If an I/O error occurs reading from the file or writing to the output
+     * stream, then it may do so after some bytes have been read or written.
+     * Consequently the output stream may be in an inconsistent state. It is
+     * strongly recommended that the output stream be promptly closed if an I/O
+     * error occurs.
+     *
+     * <p> This method may block indefinitely writing to the output stream (or
+     * reading from the file). The behavior for the case that the output stream
+     * is <i>asynchronously closed</i> or the thread interrupted during the copy
+     * is highly output stream and file system provider specific and therefore
+     * not specified.
+     *
+     * <p> Note that if the given output stream is {@link java.io.Flushable}
+     * then its {@link java.io.Flushable#flush flush} method may need to invoked
+     * after this method completes so as to flush any buffered output.
+     *
+     * @param   source
+     *          the  path to the file
+     * @param   out
+     *          the output stream to write to
+     *
+     * @return  the number of bytes read or written
+     *
+     * @throws  IOException
+     *          if an I/O error occurs when reading or writing
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
+     *          method is invoked to check read access to the file.
      */
-    private static void createAndCheckIsDirectory(Path dir, FileAttribute<?>... attrs)
+    public static long copy(Path source, OutputStream out) throws IOException {
+        // ensure not null before opening file
+        Objects.requireNonNull(out);
+
+        try (InputStream in = newInputStream(source)) {
+            return copy(in, out);
+        }
+    }
+
+    /**
+     * Read all the bytes from an input stream. The {@code initialSize}
+     * parameter indicates the initial size of the byte[] to allocate.
+     */
+    private static byte[] read(InputStream source, int initialSize)
         throws IOException
     {
-        try {
-            dir.createDirectory(attrs);
-        } catch (FileAlreadyExistsException x) {
-            boolean isDirectory = Attributes
-                .readBasicFileAttributes(dir, LinkOption.NOFOLLOW_LINKS).isDirectory();
-            if (!isDirectory)
-                throw x;
+        int capacity = initialSize;
+        byte[] buf = new byte[capacity];
+        int nread = 0;
+        int rem = buf.length;
+        int n;
+        // read to EOF which may read more or less than initialSize (eg: file
+        // is truncated while we are reading)
+        while ((n = source.read(buf, nread, rem)) > 0) {
+            nread += n;
+            rem -= n;
+            assert rem >= 0;
+            if (rem == 0) {
+                // need larger buffer
+                int newCapacity = capacity << 1;
+                if (newCapacity < 0) {
+                    if (capacity == Integer.MAX_VALUE)
+                        throw new OutOfMemoryError("Required array size too large");
+                    newCapacity = Integer.MAX_VALUE;
+                }
+                rem = newCapacity - capacity;
+                buf = Arrays.copyOf(buf, newCapacity);
+                capacity = newCapacity;
+            }
+        }
+        return (capacity == nread) ? buf : Arrays.copyOf(buf, nread);
+    }
+
+    /**
+     * Read all the bytes from a file. The method ensures that the file is
+     * closed when all bytes have been read or an I/O error, or other runtime
+     * exception, is thrown.
+     *
+     * <p> Note that this method is intended for simple cases where it is
+     * convenient to read all bytes into a byte array. It is not intended for
+     * reading in large files.
+     *
+     * @param   path
+     *          the path to the file
+     *
+     * @return  a byte array containing the bytes read from the file
+     *
+     * @throws  IOException
+     *          if an I/O error occurs reading from the stream
+     * @throws  OutOfMemoryError
+     *          if an array of the required size cannot be allocated, for
+     *          example the file is larger that {@code 2GB}
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
+     *          method is invoked to check read access to the file.
+     */
+    public static byte[] readAllBytes(Path path) throws IOException {
+        long size = size(path);
+        if (size > (long)Integer.MAX_VALUE)
+            throw new OutOfMemoryError("Required array size too large");
+
+        try (InputStream in = newInputStream(path)) {
+             return read(in, (int)size);
+        }
+    }
+
+    /**
+     * Read all lines from a file. This method ensures that the file is
+     * closed when all bytes have been read or an I/O error, or other runtime
+     * exception, is thrown. Bytes from the file are decoded into characters
+     * using the specified charset.
+     *
+     * <p> This method recognizes the following as line terminators:
+     * <ul>
+     *   <li> <code>&#92;u000D</code> followed by <code>&#92;u000A</code>,
+     *     CARRIAGE RETURN followed by LINE FEED </li>
+     *   <li> <code>&#92;u000A</code>, LINE FEED </li>
+     *   <li> <code>&#92;u000D</code>, CARRIAGE RETURN </li>
+     * </ul>
+     * <p> Additional Unicode line terminators may be recognized in future
+     * releases.
+     *
+     * <p> Note that this method is intended for simple cases where it is
+     * convenient to read all lines in a single operation. It is not intended
+     * for reading in large files.
+     *
+     * @param   path
+     *          the path to the file
+     * @param   cs
+     *          the charset to use for decoding
+     *
+     * @return  the lines from the file as a {@code List}; whether the {@code
+     *          List} is modifiable or not is implementation dependent and
+     *          therefore not specified
+     *
+     * @throws  IOException
+     *          if an I/O error occurs reading from the file or a malformed or
+     *          unmappable byte sequence is read
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
+     *          method is invoked to check read access to the file.
+     *
+     * @see #newBufferedReader
+     */
+    public static List<String> readAllLines(Path path, Charset cs)
+        throws IOException
+    {
+        try (BufferedReader reader = newBufferedReader(path, cs)) {
+            List<String> result = new ArrayList<>();
+            for (;;) {
+                String line = reader.readLine();
+                if (line == null)
+                    break;
+                result.add(line);
+            }
+            return result;
         }
     }
+
+    /**
+     * Writes bytes to a file. The {@code options} parameter specifies how the
+     * the file is created or opened. If no options are present then this method
+     * works as if the {@link StandardOpenOption#CREATE CREATE}, {@link
+     * StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING}, and {@link
+     * StandardOpenOption#WRITE WRITE} options are present. In other words, it
+     * opens the file for writing, creating the file if it doesn't exist, or
+     * initially truncating an existing {@link #isRegularFile regular-file} to
+     * a size of {@code 0}. All bytes in the byte array are written to the file.
+     * The method ensures that the file is closed when all bytes have been
+     * written (or an I/O error or other runtime exception is thrown). If an I/O
+     * error occurs then it may do so after the file has created or truncated,
+     * or after some bytes have been written to the file.
+     *
+     * <p> <b>Usage example</b>: By default the method creates a new file or
+     * overrides an existing file. Suppose you instead want to append bytes
+     * to an existing file:
+     * <pre>
+     *     Path path = ...
+     *     byte[] bytes = ...
+     *     Files.write(path, bytes, StandardOpenOption.APPEND);
+     * </pre>
+     *
+     * @param   path
+     *          the path to the file
+     * @param   bytes
+     *          the byte array with the bytes to write
+     * @param   options
+     *          options specifying how the file is opened
+     *
+     * @return  the path
+     *
+     * @throws  IOException
+     *          if an I/O error occurs writing to or creating the file
+     * @throws  UnsupportedOperationException
+     *          if an unsupported option is specified
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkWrite(String) checkWrite}
+     *          method is invoked to check write access to the file.
+     */
+    public static Path write(Path path, byte[] bytes, OpenOption... options)
+        throws IOException
+    {
+        // ensure bytes is not null before opening file
+        Objects.requireNonNull(bytes);
+
+        try (OutputStream out = Files.newOutputStream(path, options)) {
+            int len = bytes.length;
+            int rem = len;
+            while (rem > 0) {
+                int n = Math.min(rem, BUFFER_SIZE);
+                out.write(bytes, (len-rem), n);
+                rem -= n;
+            }
+        }
+        return path;
+    }
+
+    /**
+     * Write lines of text to a file. Each line is a char sequence and is
+     * written to the file in sequence with each line terminated by the
+     * platform's line separator, as defined by the system property {@code
+     * line.separator}. Characters are encoded into bytes using the specified
+     * charset.
+     *
+     * <p> The {@code options} parameter specifies how the the file is created
+     * or opened. If no options are present then this method works as if the
+     * {@link StandardOpenOption#CREATE CREATE}, {@link
+     * StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING}, and {@link
+     * StandardOpenOption#WRITE WRITE} options are present. In other words, it
+     * opens the file for writing, creating the file if it doesn't exist, or
+     * initially truncating an existing {@link #isRegularFile regular-file} to
+     * a size of {@code 0}. The method ensures that the file is closed when all
+     * lines have been written (or an I/O error or other runtime exception is
+     * thrown). If an I/O error occurs then it may do so after the file has
+     * created or truncated, or after some bytes have been written to the file.
+     *
+     * @param   path
+     *          the path to the file
+     * @param   lines
+     *          an object to iterate over the char sequences
+     * @param   cs
+     *          the charset to use for encoding
+     * @param   options
+     *          options specifying how the file is opened
+     *
+     * @return  the path
+     *
+     * @throws  IOException
+     *          if an I/O error occurs writing to or creating the file, or the
+     *          text cannot be encoded using the specified charset
+     * @throws  UnsupportedOperationException
+     *          if an unsupported option is specified
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkWrite(String) checkWrite}
+     *          method is invoked to check write access to the file.
+     */
+    public static Path write(Path path, Iterable<? extends CharSequence> lines,
+                             Charset cs, OpenOption... options)
+        throws IOException
+    {
+        // ensure lines is not null before opening file
+        Objects.requireNonNull(lines);
+        CharsetEncoder encoder = cs.newEncoder();
+        OutputStream out = newOutputStream(path, options);
+        try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, encoder))) {
+            for (CharSequence line: lines) {
+                writer.append(line);
+                writer.newLine();
+            }
+        }
+        return path;
+    }
 }
--- a/jdk/src/share/classes/java/nio/file/LinkOption.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/LinkOption.java	Wed Jul 05 17:35:13 2017 +0200
@@ -35,8 +35,8 @@
     /**
      * Do not follow symbolic links.
      *
-     * @see FileRef#getFileAttributeView(Class,LinkOption[])
-     * @see Path#copyTo
+     * @see Files#getFileAttributeView(Path,Class,LinkOption[])
+     * @see Files#copy
      * @see SecureDirectoryStream#newByteChannel
      */
     NOFOLLOW_LINKS;
--- a/jdk/src/share/classes/java/nio/file/LinkPermission.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/LinkPermission.java	Wed Jul 05 17:35:13 2017 +0200
@@ -59,8 +59,8 @@
  *
  * @since 1.7
  *
- * @see Path#createLink
- * @see Path#createSymbolicLink
+ * @see Files#createLink
+ * @see Files#createSymbolicLink
  */
 public final class LinkPermission extends BasicPermission {
     static final long serialVersionUID = -1441492453772213220L;
--- a/jdk/src/share/classes/java/nio/file/OpenOption.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/OpenOption.java	Wed Jul 05 17:35:13 2017 +0200
@@ -29,8 +29,8 @@
  * An object that configures how to open or create a file.
  *
  * <p> Objects of this type are used by methods such as {@link
- * Path#newOutputStream(OpenOption[]) newOutputStream}, {@link
- * Path#newByteChannel newByteChannel}, {@link
+ * Files#newOutputStream(Path,OpenOption[]) newOutputStream}, {@link
+ * Files#newByteChannel newByteChannel}, {@link
  * java.nio.channels.FileChannel#open FileChannel.open}, and {@link
  * java.nio.channels.AsynchronousFileChannel#open AsynchronousFileChannel.open}
  * when opening or creating a file.
--- a/jdk/src/share/classes/java/nio/file/Path.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/Path.java	Wed Jul 05 17:35:13 2017 +0200
@@ -25,147 +25,95 @@
 
 package java.nio.file;
 
-import java.nio.file.attribute.*;
-import java.nio.channels.SeekableByteChannel;
+import java.io.File;
 import java.io.IOException;
-import java.io.OutputStream;
 import java.net.URI;
 import java.util.Iterator;
-import java.util.Set;
 
 /**
- * A file reference that locates a file using a system dependent path. The file
- * is not required to exist.
- *
- * <p> On many platforms a <em>path</em> is the means to locate and access files
- * in a file system. A path is hierarchical and composed of a sequence of
- * directory and file name elements separated by a special separator or
- * delimiter.
- *
- * <h4>Path operations</h4>
+ * An object that may be used to locate a file in a file system. It will
+ * typically represent a system dependent file path.
  *
- * <p> A system dependent path represented by this class is conceptually a
- * sequence of name elements and optionally a <em>root component</em>. The name
- * that is <em>farthest</em> from the root of the directory hierarchy is the
- * name of a file or directory. The other elements are directory names. The root
- * component typically identifies a file system hierarchy. A {@code Path} can
- * represent a root, a root and a sequence of names, or simply one or more name
- * elements. It defines the {@link #getName() getName}, {@link #getParent
- * getParent}, {@link #getRoot getRoot}, and {@link #subpath subpath} methods
- * to access the components or a subsequence of its name elements.
+ * <p> A {@code Path} represents a path that is hierarchical and composed of a
+ * sequence of directory and file name elements separated by a special separator
+ * or delimiter. A <em>root component</em>, that identifies a file system
+ * hierarchy, may also be present. The name element that is <em>farthest</em>
+ * from the root of the directory hierarchy is the name of a file or directory.
+ * The other name elements are directory names. A {@code Path} can represent a
+ * root, a root and a sequence of names, or simply one or more name elements.
+ * A {@code Path} is considered to be an <i>empty path</i> if it consists
+ * solely of one name element that is empty. Accessing a file using an
+ * <i>empty path</i> is equivalent to accessing the default directory of the
+ * file system. {@code Path} defines the {@link #getFileName() getFileName},
+ * {@link #getParent getParent}, {@link #getRoot getRoot}, and {@link #subpath
+ * subpath} methods to access the path components or a subsequence of its name
+ * elements.
  *
  * <p> In addition to accessing the components of a path, a {@code Path} also
- * defines {@link #resolve(Path) resolve} and {@link #relativize relativize}
- * operations. Paths can also be {@link #compareTo compared}, and tested
- * against each other using using the {@link #startsWith startsWith} and {@link
- * #endsWith endWith} methods.
- *
- * <h4>File operations</h4>
+ * defines the {@link #resolve(Path) resolve} and {@link #resolveSibling(Path)
+ * resolveSibling} methods to combine paths. The {@link #relativize relativize}
+ * method that can be used to construct a relative path between two paths.
+ * Paths can be {@link #compareTo compared}, and tested against each other using
+ * the {@link #startsWith startsWith} and {@link #endsWith endWith} methods.
  *
- * <p> A {@code Path} is either <em>absolute</em> or <em>relative</em>. An
- * absolute path is complete in that does not need to be combined with another
- * path in order to locate a file. All operations on relative paths are first
- * resolved against a file system's default directory as if by invoking the
- * {@link #toAbsolutePath toAbsolutePath} method.
- *
- * <p> In addition to the operations defined by the {@link FileRef} interface,
- * this class defines the following operations:
+ * <p> This interface extends {@link Watchable} interface so that a directory
+ * located by a path can be {@link #register registered} with a {@link
+ * WatchService} and entries in the directory watched. </p>
  *
- * <ul>
- *   <li><p> The {@link #newByteChannel newByteChannel} method
- *     may be used to open a file and obtain a byte channel for reading or
- *     writing. </p></li>
- *   <li><p> Files may be {@link #createFile(FileAttribute[]) created}, or
- *     directories may be {@link #createDirectory(FileAttribute[]) created}.
- *     </p></li>
- *   <li><p> The {@link #delete delete} method may be used to delete a file.
- *     </p></li>
- *   <li><p> The {@link #checkAccess checkAccess} method may be used to check
- *     the existence or accessibility of a file. </p></li>
- *   <li><p> The {@link #isSameFile isSameFile} method may be used to test if
- *     two file references locate the same file. </p></li>
- *   <li><p> The {@link #getFileStore getFileStore} method may be used to
- *     obtain the {@link FileStore} representing the storage where a file is
- *     located. </p></li>
- *   <li><p> Directories can be {@link #newDirectoryStream opened} so as to
- *      iterate over the entries in the directory. </p></li>
- *   <li><p> Files can be {@link #copyTo(Path,CopyOption[]) copied} or
- *     {@link #moveTo(Path,CopyOption[]) moved}. </p></li>
- *   <li><p> Symbolic links may be {@link #createSymbolicLink created}, or the
- *     target of a symbolic link may be {@link #readSymbolicLink read}. </p></li>
- *   <li><p> The {@link #toRealPath real} path of an existing file may be
- *     obtained. </li></p>
- * </ul>
+ * <p> <b>WARNING:</b> This interface is only intended to be implemented by
+ * those developing custom file system implementations. Methods may be added to
+ * this interface in future releases. </p>
  *
- * <p> This class implements {@link Watchable} interface so that a directory
- * located by a path can be {@link #register registered} with a {@link WatchService}.
- * and entries in the directory watched.
- *
- * <h4>File attributes</h4>
- *
- * In addition to the {@link #setAttribute setAttribute} and {@link #getAttribute
- * getAttribute} methods, the <a href="attribute/package-summary.html">{@code
- * java.nio.file.attribute}</a> package provides type-safe and efficient access
- * to file attributes or <em>meta-data</em> associated with files. The {@link
- * Attributes Attributes} class defines methods that operate on or return file
- * attributes. For example, the file type, size, timestamps, and other
- * <em>basic</em> meta-data are obtained, in bulk, by invoking the {@link
- * Attributes#readBasicFileAttributes Attributes.readBasicFileAttributes} method:
+ * <a name="interop"><h4>Accessing Files</h4></a>
+ * <p> Paths may be used with the {@link Files} class to operate on files,
+ * directories, and other types of files. For example, suppose we want a {@link
+ * java.io.BufferedReader} to read text from a file "{@code access.log}". The
+ * file is located in a directory "{@code logs}" relative to the current working
+ * directory and is UTF-8 encoded.
  * <pre>
- *     Path file = ...
- *     BasicFileAttributes attrs = Attributes.readBasicFileAttributes(file);
+ *     Path path = FileSystems.getDefault().getPath("logs", "access.log");
+ *     BufferReader reader = Files.newBufferedReader(path, Charset.forName("UTF-8"));
  * </pre>
  *
  * <a name="interop"><h4>Interoperability</h4></a>
- *
- * <p> Paths created by file systems associated with the default {@link
+ * <p> Paths associated with the default {@link
  * java.nio.file.spi.FileSystemProvider provider} are generally interoperable
  * with the {@link java.io.File java.io.File} class. Paths created by other
  * providers are unlikely to be interoperable with the abstract path names
- * represented by {@code java.io.File}. The {@link java.io.File#toPath
- * File.toPath} method may be used to obtain a {@code Path} from the abstract
- * path name represented by a {@code java.io.File java.io.File} object. The
- * resulting {@code Path} can be used to operate on the same file as the {@code
- * java.io.File} object.
- *
- * <p> Path objects created by file systems associated with the default
- * provider are interoperable with objects created by other file systems created
- * by the same provider. Path objects created by file systems associated with
- * other providers may not be interoperable with other file systems created by
- * the same provider. The reasons for this are provider specific.
+ * represented by {@code java.io.File}. The {@link java.io.File#toPath toPath}
+ * method may be used to obtain a {@code Path} from the abstract path name
+ * represented by a {@code java.io.File} object. The resulting {@code Path} can
+ * be used to operate on the same file as the {@code java.io.File} object. In
+ * addition, the {@link #toFile toFile} method is useful to construct a {@code
+ * File} from the {@code String} representation of a {@code Path}.
  *
  * <h4>Concurrency</h4></a>
- *
- * <p> Instances of this class are immutable and safe for use by multiple concurrent
- * threads.
+ * <p> Implementations of this interface are immutable and safe for use by
+ * multiple concurrent threads.
  *
  * @since 1.7
+ * @see Paths
  */
 
-public abstract class Path
-    implements FileRef, Comparable<Path>, Iterable<Path>, Watchable
+public interface Path
+    extends Comparable<Path>, Iterable<Path>, Watchable
 {
     /**
-     * Initializes a new instance of this class.
-     */
-    protected Path() { }
-
-    /**
      * Returns the file system that created this object.
      *
      * @return  the file system that created this object
      */
-    public abstract FileSystem getFileSystem();
+    FileSystem getFileSystem();
 
     /**
      * Tells whether or not this path is absolute.
      *
-     * <p> An absolute path is complete in that it doesn't need to be
-     * combined with other path information in order to locate a file.
+     * <p> An absolute path is complete in that it doesn't need to be combined
+     * with other path information in order to locate a file.
      *
      * @return  {@code true} if, and only if, this path is absolute
      */
-    public abstract boolean isAbsolute();
+    boolean isAbsolute();
 
     /**
      * Returns the root component of this path as a {@code Path} object,
@@ -174,17 +122,17 @@
      * @return  a path representing the root component of this path,
      *          or {@code null}
      */
-    public abstract Path getRoot();
+    Path getRoot();
 
     /**
-     * Returns the name of the file or directory denoted by this path. The
-     * file name is the <em>farthest</em> element from the root in the directory
-     * hierarchy.
+     * Returns the name of the file or directory denoted by this path as a
+     * {@code Path} object. The file name is the <em>farthest</em> element from
+     * the root in the directory hierarchy.
      *
      * @return  a path representing the name of the file or directory, or
      *          {@code null} if this path has zero elements
      */
-    public abstract Path getName();
+    Path getFileName();
 
     /**
      * Returns the <em>parent path</em>, or {@code null} if this path does not
@@ -209,7 +157,7 @@
      *
      * @return  a path representing the path's parent
      */
-    public abstract Path getParent();
+    Path getParent();
 
     /**
      * Returns the number of name elements in the path.
@@ -217,10 +165,10 @@
      * @return  the number of elements in the path, or {@code 0} if this path
      *          only represents a root component
      */
-    public abstract int getNameCount();
+    int getNameCount();
 
-   /**
-     * Returns a name element of this path.
+    /**
+     * Returns a name element of this path as a {@code Path} object.
      *
      * <p> The {@code index} parameter is the index of the name element to return.
      * The element that is <em>closest</em> to the root in the directory hierarchy
@@ -237,7 +185,7 @@
      *          equal to the number of elements, or this path has zero name
      *          elements
      */
-    public abstract Path getName(int index);
+    Path getName(int index);
 
     /**
      * Returns a relative {@code Path} that is a subsequence of the name
@@ -264,7 +212,7 @@
      *          the number of elements. If {@code endIndex} is less than or
      *          equal to {@code beginIndex}, or larger than the number of elements.
      */
-    public abstract Path subpath(int beginIndex, int endIndex);
+    Path subpath(int beginIndex, int endIndex);
 
     /**
      * Tests if this path starts with the given path.
@@ -286,7 +234,25 @@
      * @return  {@code true} if this path starts with the given path; otherwise
      *          {@code false}
      */
-    public abstract boolean startsWith(Path other);
+    boolean startsWith(Path other);
+
+    /**
+     * Tests if this path starts with a {@code Path}, constructed by converting
+     * the given path string, in exactly the manner specified by the {@link
+     * #startsWith(Path) startsWith(Path)} method. On UNIX for example, the path
+     * "{@code foo/bar}" starts with "{@code foo}" and "{@code foo/bar}". It
+     * does not start with "{@code f}" or "{@code fo}".
+     *
+     * @param   other
+     *          the given path string
+     *
+     * @return  {@code true} if this path starts with the given path; otherwise
+     *          {@code false}
+     *
+     * @throws  InvalidPathException
+     *          If the path string cannot be converted to a Path.
+     */
+    boolean startsWith(String other);
 
     /**
      * Tests if this path ends with the given path.
@@ -310,7 +276,25 @@
      * @return  {@code true} if this path ends with the given path; otherwise
      *          {@code false}
      */
-    public abstract boolean endsWith(Path other);
+    boolean endsWith(Path other);
+
+    /**
+     * Tests if this path ends with a {@code Path}, constructed by converting
+     * the given path string, in exactly the manner specified by the {@link
+     * #endsWith(Path) endsWith(Path)} method. On UNIX for example, the path
+     * "{@code foo/bar}" ends with "{@code foo/bar}" and "{@code bar}". It does
+     * not end with "{@code r}" or "{@code /bar}".
+     *
+     * @param   other
+     *          the given path string
+     *
+     * @return  {@code true} if this path starts with the given path; otherwise
+     *          {@code false}
+     *
+     * @throws  InvalidPathException
+     *          If the path string cannot be converted to a Path.
+     */
+    boolean endsWith(String other);
 
     /**
      * Returns a path that is this path with redundant name elements eliminated.
@@ -330,14 +314,14 @@
      * path may result in the path that locates a different file than the original
      * path. This can arise when the preceding name is a symbolic link.
      *
-     * @return  the resulting path, or this path if it does not contain
-     *          redundant name elements, or {@code null} if this path does not
-     *          have a root component and all name elements are redundant
+     * @return  the resulting path or this path if it does not contain
+     *          redundant name elements; an empty path is returned if this path
+     *          does have a root component and all name elements are redundant
      *
      * @see #getParent
      * @see #toRealPath
      */
-    public abstract Path normalize();
+    Path normalize();
 
     // -- resolution and relativization --
 
@@ -346,28 +330,31 @@
      *
      * <p> If the {@code other} parameter is an {@link #isAbsolute() absolute}
      * path then this method trivially returns {@code other}. If {@code other}
-     * is {@code null} then this path is returned. Otherwise this method
-     * considers this path to be a directory and resolves the given path
-     * against this path. In the simplest case, the given path does not have
-     * a {@link #getRoot root} component, in which case this method <em>joins</em>
-     * the given path to this path and returns a resulting path that {@link
-     * #endsWith ends} with the given path. Where the given path has a root
-     * component then resolution is highly implementation dependent and therefore
-     * unspecified.
+     * is an <i>empty path</i> then this method trivially returns this path.
+     * Otherwise this method considers this path to be a directory and resolves
+     * the given path against this path. In the simplest case, the given path
+     * does not have a {@link #getRoot root} component, in which case this method
+     * <em>joins</em> the given path to this path and returns a resulting path
+     * that {@link #endsWith ends} with the given path. Where the given path has
+     * a root component then resolution is highly implementation dependent and
+     * therefore unspecified.
      *
      * @param   other
-     *          the path to resolve against this path; can be {@code null}
+     *          the path to resolve against this path
      *
      * @return  the resulting path
      *
      * @see #relativize
      */
-    public abstract Path resolve(Path other);
+    Path resolve(Path other);
 
     /**
      * Converts a given path string to a {@code Path} and resolves it against
      * this {@code Path} in exactly the manner specified by the {@link
-     * #resolve(Path) resolve} method.
+     * #resolve(Path) resolve} method. For example, suppose that the name
+     * separator is "{@code /}" and a path represents "{@code foo/bar}", then
+     * invoking this method with the path string "{@code gus}" will result in
+     * the {@code Path} "{@code foo/bar/gus}".
      *
      * @param   other
      *          the path string to resolve against this path
@@ -375,11 +362,49 @@
      * @return  the resulting path
      *
      * @throws  InvalidPathException
-     *          If the path string cannot be converted to a Path.
+     *          if the path string cannot be converted to a Path.
      *
      * @see FileSystem#getPath
      */
-    public abstract Path resolve(String other);
+    Path resolve(String other);
+
+    /**
+     * Resolves the given path against this path's {@link #getParent parent}
+     * path. This is useful where a file name needs to be <i>replaced</i> with
+     * another file name. For example, suppose that the name separator is
+     * "{@code /}" and a path represents "{@code dir1/dir2/foo}", then invoking
+     * this method with the {@code Path} "{@code bar}" will result in the {@code
+     * Path} "{@code dir1/dir2/bar}". If this path does not have a parent path,
+     * or {@code other} is {@link #isAbsolute() absolute}, then this method
+     * returns {@code other}. If {@code other} is an empty path then this method
+     * returns this path's parent, or where this path doesn't have a parent, the
+     * empty path.
+     *
+     * @param   other
+     *          the path to resolve against this path's parent
+     *
+     * @return  the resulting path
+     *
+     * @see #resolve(Path)
+     */
+    Path resolveSibling(Path other);
+
+    /**
+     * Converts a given path string to a {@code Path} and resolves it against
+     * this path's {@link #getParent parent} path in exactly the manner
+     * specified by the {@link #resolveSibling(Path) resolveSibling} method.
+     *
+     * @param   other
+     *          the path string to resolve against this path's parent
+     *
+     * @return  the resulting path
+     *
+     * @throws  InvalidPathException
+     *          if the path string cannot be converted to a Path.
+     *
+     * @see FileSystem#getPath
+     */
+    Path resolveSibling(String other);
 
     /**
      * Constructs a relative path between this path and a given path.
@@ -395,17 +420,17 @@
      * constructed if only one of the paths have a root component. Where both
      * paths have a root component then it is implementation dependent if a
      * relative path can be constructed. If this path and the given path are
-     * {@link #equals equal} then {@code null} is returned.
+     * {@link #equals equal} then an <i>empty path</i> is returned.
      *
-     * <p> For any two paths <i>p</i> and <i>q</i>, where <i>q</i> does not have
-     * a root component,
+     * <p> For any two {@link #normalize normalized} paths <i>p</i> and
+     * <i>q</i>, where <i>q</i> does not have a root component,
      * <blockquote>
      *   <i>p</i><tt>.relativize(</tt><i>p</i><tt>.resolve(</tt><i>q</i><tt>)).equals(</tt><i>q</i><tt>)</tt>
      * </blockquote>
      *
      * <p> When symbolic links are supported, then whether the resulting path,
      * when resolved against this path, yields a path that can be used to locate
-     * the {@link #isSameFile same} file as {@code other} is implementation
+     * the {@link Files#isSameFile same} file as {@code other} is implementation
      * dependent. For example, if this path is  {@code "/a/b"} and the given
      * path is {@code "/a/x"} then the resulting relative path may be {@code
      * "../x"}. If {@code "b"} is a symbolic link then is implementation
@@ -414,185 +439,14 @@
      * @param   other
      *          the path to relativize against this path
      *
-     * @return  the resulting relative path, or {@code null} if both paths are
+     * @return  the resulting relative path, or an empty path if both paths are
      *          equal
      *
      * @throws  IllegalArgumentException
      *          if {@code other} is not a {@code Path} that can be relativized
      *          against this path
      */
-    public abstract Path relativize(Path other);
-
-    // -- file operations --
-
-    /**
-     * Deletes the file located by this path.
-     *
-     * <p> An implementation may require to examine the file to determine if the
-     * file is a directory. Consequently this method may not be atomic with respect
-     * to other file system operations.  If the file is a symbolic link then the
-     * symbolic link itself, not the final target of the link, is deleted.
-     *
-     * <p> If the file is a directory then the directory must be empty. In some
-     * implementations a directory has entries for special files or links that
-     * are created when the directory is created. In such implementations a
-     * directory is considered empty when only the special entries exist.
-     *
-     * <p> On some operating systems it may not be possible to remove a file when
-     * it is open and in use by this Java virtual machine or other programs.
-     *
-     * @throws  NoSuchFileException
-     *          if the file does not exist <i>(optional specific exception)</i>
-     * @throws  DirectoryNotEmptyException
-     *          if the file is a directory and could not otherwise be deleted
-     *          because the directory is not empty <i>(optional specific
-     *          exception)</i>
-     * @throws  IOException
-     *          if an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, the {@link SecurityManager#checkDelete(String)} method
-     *          is invoked to check delete access to the file
-     */
-    public abstract void delete() throws IOException;
-
-    /**
-     * Deletes the file located by this path, if it exists.
-     *
-     * <p> As with the {@link #delete delete()} method, an implementation may
-     * need to examine the file to determine if the file is a directory.
-     * Consequently this method may not be atomic with respect to other file
-     * system operations.  If the file is a symbolic link, then the symbolic
-     * link itself, not the final target of the link, is deleted.
-     *
-     * <p> If the file is a directory then the directory must be empty. In some
-     * implementations a directory has entries for special files or links that
-     * are created when the directory is created. In such implementations a
-     * directory is considered empty when only the special entries exist.
-     *
-     * <p> On some operating systems it may not be possible to remove a file when
-     * it is open and in use by this Java virtual machine or other programs.
-     *
-     * @throws  DirectoryNotEmptyException
-     *          if the file is a directory and could not otherwise be deleted
-     *          because the directory is not empty <i>(optional specific
-     *          exception)</i>
-     * @throws  IOException
-     *          if an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, the {@link SecurityManager#checkDelete(String)} method
-     *          is invoked to check delete access to the file.
-     */
-    public abstract void deleteIfExists() throws IOException;
-
-    /**
-     * Creates a symbolic link to a target <i>(optional operation)</i>.
-     *
-     * <p> The {@code target} parameter is the target of the link. It may be an
-     * {@link Path#isAbsolute absolute} or relative path and may not exist. When
-     * the target is a relative path then file system operations on the resulting
-     * link are relative to the path of the link.
-     *
-     * <p> The {@code attrs} parameter is an optional array of {@link FileAttribute
-     * attributes} to set atomically when creating the link. Each attribute is
-     * identified by its {@link FileAttribute#name name}. If more than one attribute
-     * of the same name is included in the array then all but the last occurrence
-     * is ignored.
-     *
-     * <p> Where symbolic links are supported, but the underlying {@link FileStore}
-     * does not support symbolic links, then this may fail with an {@link
-     * IOException}. Additionally, some operating systems may require that the
-     * Java virtual machine be started with implementation specific privileges to
-     * create symbolic links, in which case this method may throw {@code IOException}.
-     *
-     * @param   target
-     *          the target of the symbolic link
-     * @param   attrs
-     *          the array of attributes to set atomically when creating the
-     *          symbolic link
-     *
-     * @return  this path
-     *
-     * @throws  UnsupportedOperationException
-     *          if the implementation does not support symbolic links or the
-     *          array contains an attribute that cannot be set atomically when
-     *          creating the symbolic link
-     * @throws  FileAlreadyExistsException
-     *          if a file with the name already exists <i>(optional specific
-     *          exception)</i>
-     * @throws  IOException
-     *          if an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager
-     *          is installed, it denies {@link LinkPermission}<tt>("symbolic")</tt>
-     *          or its {@link SecurityManager#checkWrite(String) checkWrite}
-     *          method denies write access to the path of the symbolic link.
-     */
-    public abstract Path createSymbolicLink(Path target, FileAttribute<?>... attrs)
-        throws IOException;
-
-    /**
-     * Creates a new link (directory entry) for an existing file <i>(optional
-     * operation)</i>.
-     *
-     * <p> This path locates the directory entry to create. The {@code existing}
-     * parameter is the path to an existing file. This method creates a new
-     * directory entry for the file so that it can be accessed using this path.
-     * On some file systems this is known as creating a "hard link". Whether the
-     * file attributes are maintained for the file or for each directory entry
-     * is file system specific and therefore not specified. Typically, a file
-     * system requires that all links (directory entries) for a file be on the
-     * same file system. Furthermore, on some platforms, the Java virtual machine
-     * may require to be started with implementation specific privileges to
-     * create hard links or to create links to directories.
-     *
-     * @param   existing
-     *          a reference to an existing file
-     *
-     * @return  this path
-     *
-     * @throws  UnsupportedOperationException
-     *          if the implementation does not support adding an existing file
-     *          to a directory
-     * @throws  FileAlreadyExistsException
-     *          if the entry could not otherwise be created because a file of
-     *          that name already exists <i>(optional specific exception)</i>
-     * @throws  IOException
-     *          if an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager
-     *          is installed, it denies {@link LinkPermission}<tt>("hard")</tt>
-     *          or its {@link SecurityManager#checkWrite(String) checkWrite}
-     *          method denies write access to both this path and the path of the
-     *          existing file.
-     */
-    public abstract Path createLink(Path existing) throws IOException;
-
-    /**
-     * Reads the target of a symbolic link <i>(optional operation)</i>.
-     *
-     * <p> If the file system supports <a href="package-summary.html#links">symbolic
-     * links</a> then this method is used to read the target of the link, failing
-     * if the file is not a symbolic link. The target of the link need not exist.
-     * The returned {@code Path} object will be associated with the same file
-     * system as this {@code Path}.
-     *
-     * @return  a {@code Path} object representing the target of the link
-     *
-     * @throws  UnsupportedOperationException
-     *          if the implementation does not support symbolic links
-     * @throws  NotLinkException
-     *          if the target could otherwise not be read because the file
-     *          is not a symbolic link <i>(optional specific exception)</i>
-     * @throws  IOException
-     *          if an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager
-     *          is installed, it checks that {@code FilePermission} has been
-     *          granted with the "{@code readlink}" action to read the link.
-     */
-    public abstract Path readSymbolicLink() throws IOException;
+    Path relativize(Path other);
 
     /**
      * Returns a URI to represent this path.
@@ -647,7 +501,7 @@
      *          is installed, the {@link #toAbsolutePath toAbsolutePath} method
      *          throws a security exception.
      */
-    public abstract URI toUri();
+    URI toUri();
 
     /**
      * Returns a {@code Path} object representing the absolute path of this
@@ -670,14 +524,14 @@
      *          checkPropertyAccess} method is invoked to check access to the
      *          system property {@code user.dir}
      */
-    public abstract Path toAbsolutePath();
+    Path toAbsolutePath();
 
     /**
      * Returns the <em>real</em> path of an existing file.
      *
      * <p> The precise definition of this method is implementation dependent but
      * in general it derives from this path, an {@link #isAbsolute absolute}
-     * path that locates the {@link #isSameFile same} file as this path, but
+     * path that locates the {@link Files#isSameFile same} file as this path, but
      * with name elements that represent the actual name of the directories
      * and the file. For example, where filename comparisons on a file system
      * are case insensitive then the name elements represent the names in their
@@ -713,756 +567,25 @@
      *          checkPropertyAccess} method is invoked to check access to the
      *          system property {@code user.dir}
      */
-    public abstract Path toRealPath(boolean resolveLinks) throws IOException;
-
-    /**
-     * Copy the file located by this path to a target location.
-     *
-     * <p> This method copies the file located by this {@code Path} to the
-     * target location with the {@code options} parameter specifying how the
-     * copy is performed. By default, the copy fails if the target file already
-     * exists, except if the source and target are the {@link #isSameFile same}
-     * file, in which case this method has no effect. File attributes are not
-     * required to be copied to the target file. If symbolic links are supported,
-     * and the file is a symbolic link, then the final target of the link is copied.
-     * If the file is a directory then it creates an empty directory in the target
-     * location (entries in the directory are not copied). This method can be
-     * used with the {@link Files#walkFileTree Files.walkFileTree} utility
-     * method to copy a directory and all entries in the directory, or an entire
-     * <i>file-tree</i> where required.
-     *
-     * <p> The {@code options} parameter is an array of options and may contain
-     * any of the following:
-     *
-     * <table border=1 cellpadding=5 summary="">
-     * <tr> <th>Option</th> <th>Description</th> </tr>
-     * <tr>
-     *   <td> {@link StandardCopyOption#REPLACE_EXISTING REPLACE_EXISTING} </td>
-     *   <td> If the target file exists, then the target file is replaced if it
-     *     is not a non-empty directory. If the target file exists and is a
-     *     symbolic link, then the symbolic link itself, not the target of
-     *     the link, is replaced. </td>
-     * </tr>
-     * <tr>
-     *   <td> {@link StandardCopyOption#COPY_ATTRIBUTES COPY_ATTRIBUTES} </td>
-     *   <td> Attempts to copy the file attributes associated with this file to
-     *     the target file. The exact file attributes that are copied is platform
-     *     and file system dependent and therefore unspecified. Minimally, the
-     *     {@link BasicFileAttributes#lastModifiedTime last-modified-time} is
-     *     copied to the target file if supported by both the source and target
-     *     file store. Copying of file timestamps may result in precision
-     *     loss. </td>
-     * </tr>
-     * <tr>
-     *   <td> {@link LinkOption#NOFOLLOW_LINKS NOFOLLOW_LINKS} </td>
-     *   <td> Symbolic links are not followed. If the file, located by this path,
-     *     is a symbolic link, then the symbolic link itself, not the target of
-     *     the link, is copied. It is implementation specific if file attributes
-     *     can be copied to the new link. In other words, the {@code
-     *     COPY_ATTRIBUTES} option may be ignored when copying a symbolic link. </td>
-     * </tr>
-     * </table>
-     *
-     * <p> An implementation of this interface may support additional
-     * implementation specific options.
-     *
-     * <p> Copying a file is not an atomic operation. If an {@link IOException}
-     * is thrown then it possible that the target file is incomplete or some of
-     * its file attributes have not been copied from the source file. When the
-     * {@code REPLACE_EXISTING} option is specified and the target file exists,
-     * then the target file is replaced. The check for the existence of the file
-     * and the creation of the new file may not be atomic with respect to other
-     * file system activities.
-     *
-     * @param   target
-     *          the target location
-     * @param   options
-     *          options specifying how the copy should be done
-     *
-     * @return  the target
-     *
-     * @throws  UnsupportedOperationException
-     *          if the array contains a copy option that is not supported
-     * @throws  FileAlreadyExistsException
-     *          if the target file exists and cannot be replaced because the
-     *          {@code REPLACE_EXISTING} option is not specified, or the target
-     *          file is a non-empty directory <i>(optional specific exception)</i>
-     * @throws  IOException
-     *          if an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
-     *          method is invoked to check read access to the source file, the
-     *          {@link SecurityManager#checkWrite(String) checkWrite} is invoked
-     *          to check write access to the target file. If a symbolic link is
-     *          copied the security manager is invoked to check {@link
-     *          LinkPermission}{@code ("symbolic")}.
-     */
-    public abstract Path copyTo(Path target, CopyOption... options)
-        throws IOException;
-
-    /**
-     * Move or rename the file located by this path to a target location.
-     *
-     * <p> By default, this method attempts to move the file to the target
-     * location, failing if the target file exists except if the source and
-     * target are the {@link #isSameFile same} file, in which case this method
-     * has no effect. If the file is a symbolic link then the symbolic link
-     * itself, not the target of the link, is moved. This method may be
-     * invoked to move an empty directory. In some implementations a directory
-     * has entries for special files or links that are created when the
-     * directory is created. In such implementations a directory is considered
-     * empty when only the special entries exist. When invoked to move a
-     * directory that is not empty then the directory is moved if it does not
-     * require moving the entries in the directory.  For example, renaming a
-     * directory on the same {@link FileStore} will usually not require moving
-     * the entries in the directory. When moving a directory requires that its
-     * entries be moved then this method fails (by throwing an {@code
-     * IOException}). To move a <i>file tree</i> may involve copying rather
-     * than moving directories and this can be done using the {@link
-     * #copyTo copyTo} method in conjunction with the {@link
-     * Files#walkFileTree Files.walkFileTree} utility method.
-     *
-     * <p> The {@code options} parameter is an array of options and may contain
-     * any of the following:
-     *
-     * <table border=1 cellpadding=5 summary="">
-     * <tr> <th>Option</th> <th>Description</th> </tr>
-     * <tr>
-     *   <td> {@link StandardCopyOption#REPLACE_EXISTING REPLACE_EXISTING} </td>
-     *   <td> If the target file exists, then the target file is replaced if it
-     *     is not a non-empty directory. If the target file exists and is a
-     *     symbolic link, then the symbolic link itself, not the target of
-     *     the link, is replaced. </td>
-     * </tr>
-     * <tr>
-     *   <td> {@link StandardCopyOption#ATOMIC_MOVE ATOMIC_MOVE} </td>
-     *   <td> The move is performed as an atomic file system operation and all
-     *     other options are ignored. If the target file exists then it is
-     *     implementation specific if the existing file is replaced or this method
-     *     fails by throwing an {@link IOException}. If the move cannot be
-     *     performed as an atomic file system operation then {@link
-     *     AtomicMoveNotSupportedException} is thrown. This can arise, for
-     *     example, when the target location is on a different {@code FileStore}
-     *     and would require that the file be copied, or target location is
-     *     associated with a different provider to this object. </td>
-     * </table>
-     *
-     * <p> An implementation of this interface may support additional
-     * implementation specific options.
-     *
-     * <p> Where the move requires that the file be copied then the {@link
-     * BasicFileAttributes#lastModifiedTime last-modified-time} is copied to the
-     * new file. An implementation may also attempt to copy other file
-     * attributes but is not required to fail if the file attributes cannot be
-     * copied. When the move is performed as a non-atomic operation, and a {@code
-     * IOException} is thrown, then the state of the files is not defined. The
-     * original file and the target file may both exist, the target file may be
-     * incomplete or some of its file attributes may not been copied from the
-     * original file.
-     *
-     * @param   target
-     *          the target location
-     * @param   options
-     *          options specifying how the move should be done
-     *
-     * @return  the target
-     *
-     * @throws  UnsupportedOperationException
-     *          if the array contains a copy option that is not supported
-     * @throws  FileAlreadyExistsException
-     *          if the target file exists and cannot be replaced because the
-     *          {@code REPLACE_EXISTING} option is not specified, or the target
-     *          file is a non-empty directory
-     * @throws  AtomicMoveNotSupportedException
-     *          if the options array contains the {@code ATOMIC_MOVE} option but
-     *          the file cannot be moved as an atomic file system operation.
-     * @throws  IOException
-     *          if an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, the {@link SecurityManager#checkWrite(String) checkWrite}
-     *          method is invoked to check write access to both the source and
-     *          target file.
-     */
-    public abstract Path moveTo(Path target, CopyOption... options)
-        throws IOException;
+    Path toRealPath(boolean resolveLinks) throws IOException;
 
     /**
-     * Opens the directory referenced by this object, returning a {@code
-     * DirectoryStream} to iterate over all entries in the directory. The
-     * elements returned by the directory stream's {@link DirectoryStream#iterator
-     * iterator} are of type {@code Path}, each one representing an entry in the
-     * directory. The {@code Path} objects are obtained as if by {@link
-     * #resolve(Path) resolving} the name of the directory entry against this
-     * path.
-     *
-     * <p> The directory stream's {@code close} method should be invoked after
-     * iteration is completed so as to free any resources held for the open
-     * directory.
-     *
-     * <p> When an implementation supports operations on entries in the
-     * directory that execute in a race-free manner then the returned directory
-     * stream is a {@link SecureDirectoryStream}.
-     *
-     * @return  a new and open {@code DirectoryStream} object
-     *
-     * @throws  NotDirectoryException
-     *          if the file could not otherwise be opened because it is not
-     *          a directory <i>(optional specific exception)</i>
-     * @throws  IOException
-     *          if an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
-     *          method is invoked to check read access to the directory.
-     */
-    public abstract DirectoryStream<Path> newDirectoryStream()
-        throws IOException;
-
-    /**
-     * Opens the directory referenced by this object, returning a {@code
-     * DirectoryStream} to iterate over the entries in the directory. The
-     * elements returned by the directory stream's {@link DirectoryStream#iterator
-     * iterator} are of type {@code Path}, each one representing an entry in the
-     * directory. The {@code Path} objects are obtained as if by {@link
-     * #resolve(Path) resolving} the name of the directory entry against this
-     * path. The entries returned by the iterator are filtered by matching the
-     * {@code String} representation of their file names against the given
-     * <em>globbing</em> pattern.
-     *
-     * <p> For example, suppose we want to iterate over the files ending with
-     * ".java" in a directory:
-     * <pre>
-     *     Path dir = ...
-     *     DirectoryStream&lt;Path&gt; stream = dir.newDirectoryStream("*.java");
-     * </pre>
-     *
-     * <p> The globbing pattern is specified by the {@link
-     * FileSystem#getPathMatcher getPathMatcher} method.
-     *
-     * <p> The directory stream's {@code close} method should be invoked after
-     * iteration is completed so as to free any resources held for the open
-     * directory.
-     *
-     * <p> When an implementation supports operations on entries in the
-     * directory that execute in a race-free manner then the returned directory
-     * stream is a {@link SecureDirectoryStream}.
-     *
-     * @param   glob
-     *          the glob pattern
-     *
-     * @return  a new and open {@code DirectoryStream} object
-     *
-     * @throws  java.util.regex.PatternSyntaxException
-     *          if the pattern is invalid
-     * @throws  NotDirectoryException
-     *          if the file could not otherwise be opened because it is not
-     *          a directory <i>(optional specific exception)</i>
-     * @throws  IOException
-     *          if an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
-     *          method is invoked to check read access to the directory.
-     */
-    public abstract DirectoryStream<Path> newDirectoryStream(String glob)
-        throws IOException;
-
-    /**
-     * Opens the directory referenced by this object, returning a {@code
-     * DirectoryStream} to iterate over the entries in the directory. The
-     * elements returned by the directory stream's {@link DirectoryStream#iterator
-     * iterator} are of type {@code Path}, each one representing an entry in the
-     * directory. The {@code Path} objects are obtained as if by {@link
-     * #resolve(Path) resolving} the name of the directory entry against this
-     * path. The entries returned by the iterator are filtered by the given
-     * {@link DirectoryStream.Filter filter}.
-     *
-     * <p> The directory stream's {@code close} method should be invoked after
-     * iteration is completed so as to free any resources held for the open
-     * directory.
+     * Returns a {@link File} object representing this path. Where this {@code
+     * Path} is associated with the default provider, then this method is
+     * equivalent to returning a {@code File} object constructed with the
+     * {@code String} representation of this path.
      *
-     * <p> Where the filter terminates due to an uncaught error or runtime
-     * exception then it is propagated to the {@link Iterator#hasNext()
-     * hasNext} or {@link Iterator#next() next} method. Where an {@code
-     * IOException} is thrown, it results in the {@code hasNext} or {@code
-     * next} method throwing a {@link DirectoryIteratorException} with the
-     * {@code IOException} as the cause.
-     *
-     * <p> When an implementation supports operations on entries in the
-     * directory that execute in a race-free manner then the returned directory
-     * stream is a {@link SecureDirectoryStream}.
-     *
-     * <p> <b>Usage Example:</b>
-     * Suppose we want to iterate over the files in a directory that are
-     * larger than 8K.
-     * <pre>
-     *     DirectoryStream.Filter&lt;Path&gt; filter = new DirectoryStream.Filter&lt;Path&gt;() {
-     *         public boolean accept(Path file) throws IOException {
-     *             long size = Attributes.readBasicFileAttributes(file).size();
-     *             return (size > 8192L);
-     *         }
-     *     };
-     *     Path dir = ...
-     *     DirectoryStream&lt;Path&gt; stream = dir.newDirectoryStream(filter);
-     * </pre>
-     * @param   filter
-     *          the directory stream filter
-     *
-     * @return  a new and open {@code DirectoryStream} object
-     *
-     * @throws  NotDirectoryException
-     *          if the file could not otherwise be opened because it is not
-     *          a directory <i>(optional specific exception)</i>
-     * @throws  IOException
-     *          if an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
-     *          method is invoked to check read access to the directory.
-     */
-    public abstract DirectoryStream<Path> newDirectoryStream(DirectoryStream.Filter<? super Path> filter)
-        throws IOException;
-
-    /**
-     * Creates a new and empty file, failing if the file already exists.
+     * <p> If this path was created by invoking the {@code File} {@link
+     * File#toPath toPath} method then there is no guarantee that the {@code
+     * File} object returned by this method is {@link #equals equal} to the
+     * original {@code File}.
      *
-     * <p> This {@code Path} locates the file to create. The check for the
-     * existence of the file and the creation of the new file if it does not
-     * exist are a single operation that is atomic with respect to all other
-     * filesystem activities that might affect the directory.
-     *
-     * <p> The {@code attrs} parameter is an optional array of {@link FileAttribute
-     * file-attributes} to set atomically when creating the file. Each attribute
-     * is identified by its {@link FileAttribute#name name}. If more than one
-     * attribute of the same name is included in the array then all but the last
-     * occurrence is ignored.
-     *
-     * @param   attrs
-     *          an optional list of file attributes to set atomically when
-     *          creating the file
-     *
-     * @return  this path
-     *
-     * @throws  UnsupportedOperationException
-     *          if the array contains an attribute that cannot be set atomically
-     *          when creating the file
-     * @throws  FileAlreadyExistsException
-     *          if a file of that name already exists
-     *          <i>(optional specific exception)</i>
-     * @throws  IOException
-     *          if an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, the {@link SecurityManager#checkWrite(String) checkWrite}
-     *          method is invoked to check write access to the new file.
-     */
-    public abstract Path createFile(FileAttribute<?>... attrs) throws IOException;
-
-    /**
-     * Creates a new directory.
-     *
-     * <p> This {@code Path} locates the directory to create. The check for the
-     * existence of the file and the creation of the directory if it does not
-     * exist are a single operation that is atomic with respect to all other
-     * filesystem activities that might affect the directory.
-     *
-     * <p> The {@code attrs} parameter is an optional array of {@link FileAttribute
-     * file-attributes} to set atomically when creating the directory. Each
-     * file attribute is identified by its {@link FileAttribute#name name}. If
-     * more than one attribute of the same name is included in the array then all
-     * but the last occurrence is ignored.
-     *
-     * @param   attrs
-     *          an optional list of file attributes to set atomically when
-     *          creating the directory
-     *
-     * @return  this path
+     * @return  a {@code File} object representing this path
      *
      * @throws  UnsupportedOperationException
-     *          if the array contains an attribute that cannot be set atomically
-     *          when creating the directory
-     * @throws  FileAlreadyExistsException
-     *          if a directory could not otherwise be created because a file of
-     *          that name already exists <i>(optional specific exception)</i>
-     * @throws  IOException
-     *          if an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, the {@link SecurityManager#checkWrite(String) checkWrite}
-     *          method is invoked to check write access to the new directory.
-     *
-     * @see Files#createDirectories
-     */
-    public abstract Path createDirectory(FileAttribute<?>... attrs)
-        throws IOException;
-
-    /**
-     * Opens or creates a file, returning a seekable byte channel to access the
-     * file.
-     *
-     * <p> The {@code options} parameter determines how the file is opened.
-     * The {@link StandardOpenOption#READ READ} and {@link StandardOpenOption#WRITE WRITE}
-     * options determine if the file should be opened for reading and/or writing.
-     * If neither option (or the {@link StandardOpenOption#APPEND APPEND}
-     * option) is contained in the array then the file is opened for reading.
-     * By default reading or writing commences at the beginning of the file.
-     *
-     * <p> In the addition to {@code READ} and {@code WRITE}, the following
-     * options may be present:
-     *
-     * <table border=1 cellpadding=5 summary="">
-     * <tr> <th>Option</th> <th>Description</th> </tr>
-     * <tr>
-     *   <td> {@link StandardOpenOption#APPEND APPEND} </td>
-     *   <td> If this option is present then the file is opened for writing and
-     *     each invocation of the channel's {@code write} method first advances
-     *     the position to the end of the file and then writes the requested
-     *     data. Whether the advancement of the position and the writing of the
-     *     data are done in a single atomic operation is system-dependent and
-     *     therefore unspecified. This option may not be used in conjunction
-     *     with the {@code READ} or {@code TRUNCATE_EXISTING} options. </td>
-     * </tr>
-     * <tr>
-     *   <td> {@link StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING} </td>
-     *   <td> If this option is present then the existing file is truncated to
-     *   a size of 0 bytes. This option is ignored when the file is opened only
-     *   for reading. </td>
-     * </tr>
-     * <tr>
-     *   <td> {@link StandardOpenOption#CREATE_NEW CREATE_NEW} </td>
-     *   <td> If this option is present then a new file is created, failing if
-     *   the file already exists or is a symbolic link. When creating a file the
-     *   check for the existence of the file and the creation of the file if it
-     *   does not exist is atomic with respect to other file system operations.
-     *   This option is ignored when the file is opened only for reading. </td>
-     * </tr>
-     * <tr>
-     *   <td > {@link StandardOpenOption#CREATE CREATE} </td>
-     *   <td> If this option is present then an existing file is opened if it
-     *   exists, otherwise a new file is created. This option is ignored if the
-     *   {@code CREATE_NEW} option is also present or the file is opened only
-     *   for reading. </td>
-     * </tr>
-     * <tr>
-     *   <td > {@link StandardOpenOption#DELETE_ON_CLOSE DELETE_ON_CLOSE} </td>
-     *   <td> When this option is present then the implementation makes a
-     *   <em>best effort</em> attempt to delete the file when closed by the
-     *   {@link SeekableByteChannel#close close} method. If the {@code close}
-     *   method is not invoked then a <em>best effort</em> attempt is made to
-     *   delete the file when the Java virtual machine terminates. </td>
-     * </tr>
-     * <tr>
-     *   <td>{@link StandardOpenOption#SPARSE SPARSE} </td>
-     *   <td> When creating a new file this option is a <em>hint</em> that the
-     *   new file will be sparse. This option is ignored when not creating
-     *   a new file. </td>
-     * </tr>
-     * <tr>
-     *   <td> {@link StandardOpenOption#SYNC SYNC} </td>
-     *   <td> Requires that every update to the file's content or metadata be
-     *   written synchronously to the underlying storage device. (see <a
-     *   href="package-summary.html#integrity"> Synchronized I/O file
-     *   integrity</a>). </td>
-     * <tr>
-     * <tr>
-     *   <td> {@link StandardOpenOption#DSYNC DSYNC} </td>
-     *   <td> Requires that every update to the file's content be written
-     *   synchronously to the underlying storage device. (see <a
-     *   href="package-summary.html#integrity"> Synchronized I/O file
-     *   integrity</a>). </td>
-     * </tr>
-     * </table>
-     *
-     * <p> An implementation may also support additional implementation specific
-     * options.
-     *
-     * <p> The {@code attrs} parameter is an optional array of file {@link
-     * FileAttribute file-attributes} to set atomically when a new file is created.
-     *
-     * <p> In the case of the default provider, the returned seekable byte channel
-     * is a {@link java.nio.channels.FileChannel}.
-     *
-     * <p> <b>Usage Examples:</b>
-     * <pre>
-     *     Path file = ...
-     *
-     *     // open file for reading
-     *     ReadableByteChannel rbc = file.newByteChannel(EnumSet.of(READ)));
-     *
-     *     // open file for writing to the end of an existing file, creating
-     *     // the file if it doesn't already exist
-     *     WritableByteChannel wbc = file.newByteChannel(EnumSet.of(CREATE,APPEND));
-     *
-     *     // create file with initial permissions, opening it for both reading and writing
-     *     FileAttribute&lt;Set&lt;PosixFilePermission&gt;&gt; perms = ...
-     *     SeekableByteChannel sbc = file.newByteChannel(EnumSet.of(CREATE_NEW,READ,WRITE), perms);
-     * </pre>
-     *
-     * @param   options
-     *          Options specifying how the file is opened
-     * @param   attrs
-     *          An optional list of file attributes to set atomically when
-     *          creating the file
-     *
-     * @return  a new seekable byte channel
-     *
-     * @throws  IllegalArgumentException
-     *          if the set contains an invalid combination of options
-     * @throws  UnsupportedOperationException
-     *          if an unsupported open option is specified or the array contains
-     *          attributes that cannot be set atomically when creating the file
-     * @throws  FileAlreadyExistsException
-     *          if a file of that name already exists and the {@link
-     *          StandardOpenOption#CREATE_NEW CREATE_NEW} option is specified
-     *          <i>(optional specific exception)</i>
-     * @throws  IOException
-     *          if an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
-     *          method is invoked to check read access to the path if the file is
-     *          opened for reading. The {@link SecurityManager#checkWrite(String)
-     *          checkWrite} method is invoked to check write access to the path
-     *          if the file is opened for writing.
-     */
-    public abstract SeekableByteChannel newByteChannel(Set<? extends OpenOption> options,
-                                                       FileAttribute<?>... attrs)
-        throws IOException;
-
-    /**
-     * Opens or creates a file, returning a seekable byte channel to access the
-     * file.
-     *
-     * <p> This method opens or creates a file in exactly the manner specified
-     * by the {@link Path#newByteChannel(Set,FileAttribute[]) newByteChannel}
-     * method.
-     *
-     * @param   options
-     *          options specifying how the file is opened
-     *
-     * @return  a new seekable byte channel
-     *
-     * @throws  IllegalArgumentException
-     *          if the set contains an invalid combination of options
-     * @throws  UnsupportedOperationException
-     *          if an unsupported open option is specified
-     * @throws  FileAlreadyExistsException
-     *          if a file of that name already exists and the {@link
-     *          StandardOpenOption#CREATE_NEW CREATE_NEW} option is specified
-     *          <i>(optional specific exception)</i>
-     * @throws  IOException
-     *          if an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
-     *          method is invoked to check read access to the path if the file is
-     *          opened for reading. The {@link SecurityManager#checkWrite(String)
-     *          checkWrite} method is invoked to check write access to the path
-     *          if the file is opened for writing.
+     *          if this {@code Path} is not associated with the default provider
      */
-    public abstract SeekableByteChannel newByteChannel(OpenOption... options)
-        throws IOException;
-
-    /**
-     * Opens or creates the file located by this object for writing, returning
-     * an output stream to write bytes to the file.
-     *
-     * <p> This method opens or creates a file in exactly the manner specified
-     * by the {@link Path#newByteChannel(Set,FileAttribute[]) newByteChannel}
-     * method except that the {@link StandardOpenOption#READ READ} option may not
-     * be present in the array of open options.
-     *
-     * @param   options
-     *          options specifying how the file is opened
-     *
-     * @return  a new output stream
-     *
-     * @throws  IllegalArgumentException            {@inheritDoc}
-     * @throws  UnsupportedOperationException       {@inheritDoc}
-     * @throws  IOException                         {@inheritDoc}
-     * @throws  SecurityException                   {@inheritDoc}
-     */
-    @Override
-    public abstract OutputStream newOutputStream(OpenOption... options)
-        throws IOException;
-
-    /**
-     * Tells whether or not the file located by this object is considered
-     * <em>hidden</em>. The exact definition of hidden is platform or provider
-     * dependent. On UNIX for example a file is considered to be hidden if its
-     * name begins with a period character ('.'). On Windows a file is
-     * considered hidden if it isn't a directory and the DOS {@link
-     * DosFileAttributes#isHidden hidden} attribute is set.
-     *
-     * <p> Depending on the implementation this method may require to access
-     * the file system to determine if the file is considered hidden.
-     *
-     * @return  {@code true} if the file is considered hidden
-     *
-     * @throws  IOException
-     *          if an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
-     *          method is invoked to check read access to the file.
-     */
-    public abstract boolean isHidden() throws IOException;
-
-    /**
-     * Checks the existence and optionally the accessibility of the file
-     * located by this path.
-     *
-     * <p> This method checks the existence of a file and that this Java virtual
-     * machine has appropriate privileges that would allow it access the file
-     * according to all of access modes specified in the {@code modes} parameter
-     * as follows:
-     *
-     * <table border=1 cellpadding=5 summary="">
-     * <tr> <th>Value</th> <th>Description</th> </tr>
-     * <tr>
-     *   <td> {@link AccessMode#READ READ} </td>
-     *   <td> Checks that the file exists and that the Java virtual machine has
-     *     permission to read the file. </td>
-     * </tr>
-     * <tr>
-     *   <td> {@link AccessMode#WRITE WRITE} </td>
-     *   <td> Checks that the file exists and that the Java virtual machine has
-     *     permission to write to the file, </td>
-     * </tr>
-     * <tr>
-     *   <td> {@link AccessMode#EXECUTE EXECUTE} </td>
-     *   <td> Checks that the file exists and that the Java virtual machine has
-     *     permission to {@link Runtime#exec execute} the file. The semantics
-     *     may differ when checking access to a directory. For example, on UNIX
-     *     systems, checking for {@code EXECUTE} access checks that the Java
-     *     virtual machine has permission to search the directory in order to
-     *     access file or subdirectories. </td>
-     * </tr>
-     * </table>
-     *
-     * <p> If the {@code modes} parameter is of length zero, then the existence
-     * of the file is checked.
-     *
-     * <p> This method follows symbolic links if the file referenced by this
-     * object is a symbolic link. Depending on the implementation, this method
-     * may require to read file permissions, access control lists, or other
-     * file attributes in order to check the effective access to the file. To
-     * determine the effective access to a file may require access to several
-     * attributes and so in some implementations this method may not be atomic
-     * with respect to other file system operations. Furthermore, as the result
-     * of this method is immediately outdated, there is no guarantee that a
-     * subsequence access will succeed (or even that it will access the same
-     * file). Care should be taken when using this method in security sensitive
-     * applications.
-     *
-     * @param   modes
-     *          The access modes to check; may have zero elements
-     *
-     * @throws  UnsupportedOperationException
-     *          an implementation is required to support checking for
-     *          {@code READ}, {@code WRITE}, and {@code EXECUTE} access. This
-     *          exception is specified to allow for the {@code Access} enum to
-     *          be extended in future releases.
-     * @throws  NoSuchFileException
-     *          if a file does not exist <i>(optional specific exception)</i>
-     * @throws  AccessDeniedException
-     *          the requested access would be denied or the access cannot be
-     *          determined because the Java virtual machine has insufficient
-     *          privileges or other reasons. <i>(optional specific exception)</i>
-     * @throws  IOException
-     *          if an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
-     *          is invoked when checking read access to the file or only the
-     *          existence of the file, the {@link SecurityManager#checkWrite(String)
-     *          checkWrite} is invoked when checking write access to the file,
-     *          and {@link SecurityManager#checkExec(String) checkExec} is invoked
-     *          when checking execute access.
-     */
-    public abstract void checkAccess(AccessMode... modes) throws IOException;
-
-    /**
-     * Tests whether the file located by this path exists.
-     *
-     * <p> This convenience method is intended for cases where it is required to
-     * take action when it can be confirmed that a file exists. This method simply
-     * invokes the {@link #checkAccess checkAccess} method to check if the file
-     * exists. If the {@code checkAccess} method succeeds then this method returns
-     * {@code true}, otherwise if an {@code IOException} is thrown (because the
-     * file doesn't exist or cannot be accessed by this Java virtual machine)
-     * then {@code false} is returned.
-     *
-     * <p> Note that the result of this method is immediately outdated. If this
-     * method indicates the file exists then there is no guarantee that a
-     * subsequence access will succeed. Care should be taken when using this
-     * method in security sensitive applications.
-     *
-     * @return  {@code true} if the file exists; {@code false} if the file does
-     *          not exist or its existence cannot be determined.
-     *
-     * @throws  SecurityException
-     *          In the case of the default provider, the {@link
-     *          SecurityManager#checkRead(String)} is invoked to check
-     *          read access to the file.
-     *
-     * @see #notExists
-     */
-    public abstract boolean exists();
-
-    /**
-     * Tests whether the file located by this path does not exist.
-     *
-     * <p> This convenience method is intended for cases where it is required to
-     * take action when it can be confirmed that a file does not exist. This
-     * method invokes the {@link #checkAccess checkAccess} method to check if the
-     * file exists. If the file does not exist then {@code true} is returned,
-     * otherwise the file exists or cannot be accessed by this Java virtual
-     * machine and {@code false} is returned.
-     *
-     * <p> Note that this method is not the complement of the {@link #exists
-     * exists} method. Where it is not possible to determine if a file exists
-     * or not then both methods return {@code false}. As with the {@code exists}
-     * method, the result of this method is immediately outdated. If this
-     * method indicates the file does exist then there is no guarantee that a
-     * subsequence attempt to create the file will succeed. Care should be taken
-     * when using this method in security sensitive applications.
-     *
-     * @return  {@code true} if the file does not exist; {@code false} if the
-     *          file exists or its existence cannot be determined.
-     *
-     * @throws  SecurityException
-     *          In the case of the default provider, the {@link
-     *          SecurityManager#checkRead(String)} is invoked to check
-     *          read access to the file.
-     */
-    public abstract boolean notExists();
-
-    /**
-     * Returns the {@link FileStore} representing the file store where an
-     * existing file, located by this path, is stored.
-     *
-     * <p> Once a reference to the {@code FileStore} is obtained it is
-     * implementation specific if operations on the returned {@code FileStore},
-     * or {@link FileStoreAttributeView} objects obtained from it, continue
-     * to depend on the existence of the file. In particular the behavior is not
-     * defined for the case that the file is deleted or moved to a different
-     * file store.
-     *
-     * @return  the file store where the file is stored
-     *
-     * @throws  IOException
-     *          if an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
-     *          method is invoked to check read access to the file, and in
-     *          addition it checks {@link RuntimePermission}<tt>
-     *          ("getFileStoreAttributes")</tt>
-     */
-    public abstract FileStore getFileStore() throws IOException;
+    File toFile();
 
     // -- watchable --
 
@@ -1471,8 +594,8 @@
      *
      * <p> In this release, this path locates a directory that exists. The
      * directory is registered with the watch service so that entries in the
-     * directory can be watched. The {@code events} parameter is an array of
-     * events to register and may contain the following events:
+     * directory can be watched. The {@code events} parameter is the events to
+     * register and may contain the following events:
      * <ul>
      *   <li>{@link StandardWatchEventKind#ENTRY_CREATE ENTRY_CREATE} -
      *       entry created or moved into the directory</li>
@@ -1489,10 +612,10 @@
      * <p> The set of events may include additional implementation specific
      * event that are not defined by the enum {@link StandardWatchEventKind}
      *
-     * <p> The {@code modifiers} parameter is an array of <em>modifiers</em>
-     * that qualify how the directory is registered. This release does not
-     * define any <em>standard</em> modifiers. The array may contain
-     * implementation specific modifiers.
+     * <p> The {@code modifiers} parameter specifies <em>modifiers</em> that
+     * qualify how the directory is registered. This release does not define any
+     * <em>standard</em> modifiers. It may contain implementation specific
+     * modifiers.
      *
      * <p> Where a file is registered with a watch service by means of a symbolic
      * link then it is implementation specific if the watch continues to depend
@@ -1525,9 +648,9 @@
      *          method is invoked to check read access to the file.
      */
     @Override
-    public abstract WatchKey register(WatchService watcher,
-                                      WatchEvent.Kind<?>[] events,
-                                      WatchEvent.Modifier... modifiers)
+    WatchKey register(WatchService watcher,
+                      WatchEvent.Kind<?>[] events,
+                      WatchEvent.Modifier... modifiers)
         throws IOException;
 
     /**
@@ -1573,8 +696,8 @@
      *          method is invoked to check read access to the file.
      */
     @Override
-    public abstract WatchKey register(WatchService watcher,
-                                      WatchEvent.Kind<?>... events)
+    WatchKey register(WatchService watcher,
+                      WatchEvent.Kind<?>... events)
         throws IOException;
 
     // -- Iterable --
@@ -1591,7 +714,7 @@
      * @return  an iterator over the name elements of this path.
      */
     @Override
-    public abstract Iterator<Path> iterator();
+    Iterator<Path> iterator();
 
     // -- compareTo/equals/hashCode --
 
@@ -1609,50 +732,7 @@
      *          lexicographically greater than the argument
      */
     @Override
-    public abstract int compareTo(Path other);
-
-    /**
-     * Tests if the file referenced by this object is the same file referenced
-     * by another object.
-     *
-     * <p> If this {@code Path} and the given {@code Path} are {@link
-     * #equals(Object) equal} then this method returns {@code true} without checking
-     * if the file exists. If the {@code Path} and the given {@code Path}
-     * are associated with different providers, or the given {@code Path} is
-     * {@code null} then this method returns {@code false}. Otherwise, this method
-     * checks if both {@code Paths} locate the same file, and depending on the
-     * implementation, may require to open or access both files.
-     *
-     * <p> If the file system and files remain static, then this method implements
-     * an equivalence relation for non-null {@code Paths}.
-     * <ul>
-     * <li>It is <i>reflexive</i>: for a non-null {@code Path} {@code f},
-     *     {@code f.isSameFile(f)} should return {@code true}.
-     * <li>It is <i>symmetric</i>: for two non-null {@code Path}
-     *     {@code f} and {@code g}, {@code f.isSameFile(g)} will equal
-     *     {@code g.isSameFile(f)}.
-     * <li>It is <i>transitive</i>: for three {@code Paths}
-     *     {@code f}, {@code g}, and {@code h}, if {@code f.isSameFile(g)} returns
-     *     {@code true} and {@code g.isSameFile(h)} returns {@code true}, then
-     *     {@code f.isSameFile(h)} will return return {@code true}.
-     * </ul>
-     *
-     * @param   other
-     *          the other file reference
-     *
-     * @return  {@code true} if, and only if, this object and the given object
-     *          locate the same file
-     *
-     * @throws  IOException
-     *          if an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
-     *          method is invoked to check read access to both files.
-     *
-     * @see java.nio.file.attribute.BasicFileAttributes#fileKey
-     */
-    public abstract boolean isSameFile(Path other) throws IOException;
+    int compareTo(Path other);
 
     /**
      * Tests this path for equality with the given object.
@@ -1663,7 +743,9 @@
      * <p> Whether or not two path are equal depends on the file system
      * implementation. In some cases the paths are compared without regard
      * to case, and others are case sensitive. This method does not access the
-     * file system and the file is not required to exist.
+     * file system and the file is not required to exist. Where required, the
+     * {@link Files#isSameFile isSameFile} method may be used to check if two
+     * paths locate the same file.
      *
      * <p> This method satisfies the general contract of the {@link
      * java.lang.Object#equals(Object) Object.equals} method. </p>
@@ -1674,8 +756,7 @@
      * @return  {@code true} if, and only if, the given object is a {@code Path}
      *          that is identical to this {@code Path}
      */
-    @Override
-    public abstract boolean equals(Object other);
+    boolean equals(Object other);
 
     /**
      * Computes a hash code for this path.
@@ -1686,8 +767,7 @@
      *
      * @return  the hash-code value for this path
      */
-    @Override
-    public abstract int hashCode();
+    int hashCode();
 
     /**
      * Returns the string representation of this path.
@@ -1701,6 +781,5 @@
      *
      * @return  the string representation of this path
      */
-    @Override
-    public abstract String toString();
+    String toString();
 }
--- a/jdk/src/share/classes/java/nio/file/PathMatcher.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/PathMatcher.java	Wed Jul 05 17:35:13 2017 +0200
@@ -32,7 +32,7 @@
  * @since 1.7
  *
  * @see FileSystem#getPathMatcher
- * @see Path#newDirectoryStream(String)
+ * @see Files#newDirectoryStream(Path,String)
  */
 
 public interface PathMatcher {
--- a/jdk/src/share/classes/java/nio/file/Paths.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/Paths.java	Wed Jul 05 17:35:13 2017 +0200
@@ -39,14 +39,27 @@
     private Paths() { }
 
     /**
-     * Constructs a {@code Path} by converting the given path string.
+     * Converts a path string, or a sequence of strings that when joined form
+     * a path string, to a {@code Path}. If {@code more} does not specify any
+     * elements then the value of the {@code first} parameter is the path string
+     * to convert. If {@code more} specifies one or more elements then each
+     * non-empty string, including {@code first}, is considered to be a sequence
+     * of name elements (see {@link Path}) and is joined to form a path string.
+     * The details as to how the Strings are joined is provider specific but
+     * typically they will be joined using the {@link FileSystem#getSeparator
+     * name-separator} as the separator. For example, if the name separator is
+     * "{@code /}" and {@code getPath("/foo","bar","gus")} is invoked, then the
+     * path string {@code "/foo/bar/gus"} is converted to a {@code Path}.
+     * A {@code Path} representing an empty path is returned if {@code first}
+     * is the empty string and {@code more} does not contain any non-empty
+     * strings.
      *
      * <p> The {@code Path} is obtained by invoking the {@link FileSystem#getPath
      * getPath} method of the {@link FileSystems#getDefault default} {@link
      * FileSystem}.
      *
-     * <p> Note that while this method is very convenient, using it will
-     * imply an assumed reference to the default FileSystem and limit the
+     * <p> Note that while this method is very convenient, using it will imply
+     * an assumed reference to the default {@code FileSystem} and limit the
      * utility of the calling code. Hence it should not be used in library code
      * intended for flexible reuse. A more flexible alternative is to use an
      * existing {@code Path} instance as an anchor, such as:
@@ -55,8 +68,10 @@
      *     Path path = dir.resolve("file");
      * </pre>
      *
-     * @param   path
-     *          the path string to convert
+     * @param   first
+     *          the path string or initial part of the path string
+     * @param   more
+     *          additional strings to be joined to form the path string
      *
      * @return  the resulting {@code Path}
      *
@@ -65,8 +80,8 @@
      *
      * @see FileSystem#getPath
      */
-    public static Path get(String path) {
-        return FileSystems.getDefault().getPath(path);
+    public static Path get(String first, String... more) {
+        return FileSystems.getDefault().getPath(first, more);
     }
 
     /**
--- a/jdk/src/share/classes/java/nio/file/SecureDirectoryStream.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/SecureDirectoryStream.java	Wed Jul 05 17:35:13 2017 +0200
@@ -43,7 +43,7 @@
  *
  * <p> A {@code SecureDirectoryStream} requires corresponding support from the
  * underlying operating system. Where an implementation supports this features
- * then the {@code DirectoryStream} returned by the {@link Path#newDirectoryStream
+ * then the {@code DirectoryStream} returned by the {@link Files#newDirectoryStream
  * newDirectoryStream} method will be a {@code SecureDirectoryStream} and must
  * be cast to that type in order to invoke the methods defined by this interface.
  *
@@ -56,20 +56,15 @@
  * @since   1.7
  */
 
-public abstract class SecureDirectoryStream<T>
-    implements DirectoryStream<T>
+public interface SecureDirectoryStream<T>
+    extends DirectoryStream<T>
 {
     /**
-     * Initialize a new instance of this class.
-     */
-    protected SecureDirectoryStream() { }
-
-    /**
      * Opens the directory identified by the given path, returning a {@code
      * SecureDirectoryStream} to iterate over the entries in the directory.
      *
      * <p> This method works in exactly the manner specified by the {@link
-     * Path#newDirectoryStream() newDirectoryStream} method for the case that
+     * Files#newDirectoryStream(Path) newDirectoryStream} method for the case that
      * the {@code path} parameter is an {@link Path#isAbsolute absolute} path.
      * When the parameter is a relative path then the directory to open is
      * relative to this open directory. The {@link
@@ -99,8 +94,7 @@
      *          installed, the {@link SecurityManager#checkRead(String) checkRead}
      *          method is invoked to check read access to the directory.
      */
-    public abstract SecureDirectoryStream<T> newDirectoryStream(T path,
-                                                                LinkOption... options)
+    SecureDirectoryStream<T> newDirectoryStream(T path, LinkOption... options)
         throws IOException;
 
     /**
@@ -108,11 +102,11 @@
      * channel to access the file.
      *
      * <p> This method works in exactly the manner specified by the {@link
-     * Path#newByteChannel Path.newByteChannel} method for the
+     * Files#newByteChannel Files.newByteChannel} method for the
      * case that the {@code path} parameter is an {@link Path#isAbsolute absolute}
      * path. When the parameter is a relative path then the file to open or
      * create is relative to this open directory. In addition to the options
-     * defined by the {@code Path.newByteChannel} method, the {@link
+     * defined by the {@code Files.newByteChannel} method, the {@link
      * LinkOption#NOFOLLOW_LINKS NOFOLLOW_LINKS} option may be used to
      * ensure that this method fails if the file is a symbolic link.
      *
@@ -149,15 +143,15 @@
      *          checkWrite} method is invoked to check write access to the path
      *          if the file is opened for writing.
      */
-    public abstract SeekableByteChannel newByteChannel(T path,
-                                                       Set<? extends OpenOption> options,
-                                                       FileAttribute<?>... attrs)
+    SeekableByteChannel newByteChannel(T path,
+                                       Set<? extends OpenOption> options,
+                                       FileAttribute<?>... attrs)
         throws IOException;
 
     /**
      * Deletes a file.
      *
-     * <p> Unlike the {@link Path#delete delete()} method, this method does
+     * <p> Unlike the {@link Files#delete delete()} method, this method does
      * not first examine the file to determine if the file is a directory.
      * Whether a directory is deleted by this method is system dependent and
      * therefore not specified. If the file is a symbolic link, then the link
@@ -179,12 +173,12 @@
      *          installed, the {@link SecurityManager#checkDelete(String) checkDelete}
      *          method is invoked to check delete access to the file
      */
-    public abstract void deleteFile(T path) throws IOException;
+    void deleteFile(T path) throws IOException;
 
     /**
      * Deletes a directory.
      *
-     * <p> Unlike the {@link Path#delete delete()} method, this method
+     * <p> Unlike the {@link Files#delete delete()} method, this method
      * does not first examine the file to determine if the file is a directory.
      * Whether non-directories are deleted by this method is system dependent and
      * therefore not specified. When the parameter is a relative path then the
@@ -207,12 +201,12 @@
      *          installed, the {@link SecurityManager#checkDelete(String) checkDelete}
      *          method is invoked to check delete access to the directory
      */
-    public abstract void deleteDirectory(T path) throws IOException;
+    void deleteDirectory(T path) throws IOException;
 
     /**
      * Move a file from this directory to another directory.
      *
-     * <p> This method works in a similar manner to {@link Path#moveTo moveTo}
+     * <p> This method works in a similar manner to {@link Files#move move}
      * method when the {@link StandardCopyOption#ATOMIC_MOVE ATOMIC_MOVE} option
      * is specified. That is, this method moves a file as an atomic file system
      * operation. If the {@code srcpath} parameter is an {@link Path#isAbsolute
@@ -247,7 +241,7 @@
      *          method is invoked to check write access to both the source and
      *          target file.
      */
-    public abstract void move(T srcpath, SecureDirectoryStream<T> targetdir, T targetpath)
+    void move(T srcpath, SecureDirectoryStream<T> targetdir, T targetpath)
         throws IOException;
 
     /**
@@ -273,7 +267,7 @@
      *          this directory stream, or {@code null} if the attribute view
      *          type is not available
      */
-    public abstract <V extends FileAttributeView> V getFileAttributeView(Class<V> type);
+    <V extends FileAttributeView> V getFileAttributeView(Class<V> type);
 
     /**
      * Returns a new file attribute view to access the file attributes of a file
@@ -306,7 +300,7 @@
      *          type is not available
      *
      */
-    public abstract <V extends FileAttributeView> V getFileAttributeView(T path,
-                                                                         Class<V> type,
-                                                                         LinkOption... options);
+    <V extends FileAttributeView> V getFileAttributeView(T path,
+                                                         Class<V> type,
+                                                         LinkOption... options);
 }
--- a/jdk/src/share/classes/java/nio/file/SimpleFileVisitor.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/SimpleFileVisitor.java	Wed Jul 05 17:35:13 2017 +0200
@@ -57,8 +57,8 @@
     public FileVisitResult preVisitDirectory(T dir, BasicFileAttributes attrs)
         throws IOException
     {
-        Objects.nonNull(dir);
-        Objects.nonNull(attrs);
+        Objects.requireNonNull(dir);
+        Objects.requireNonNull(attrs);
         return FileVisitResult.CONTINUE;
     }
 
@@ -72,8 +72,8 @@
     public FileVisitResult visitFile(T file, BasicFileAttributes attrs)
         throws IOException
     {
-        Objects.nonNull(file);
-        Objects.nonNull(attrs);
+        Objects.requireNonNull(file);
+        Objects.requireNonNull(attrs);
         return FileVisitResult.CONTINUE;
     }
 
@@ -87,7 +87,7 @@
     public FileVisitResult visitFileFailed(T file, IOException exc)
         throws IOException
     {
-        Objects.nonNull(file);
+        Objects.requireNonNull(file);
         throw exc;
     }
 
@@ -104,7 +104,7 @@
     public FileVisitResult postVisitDirectory(T dir, IOException exc)
         throws IOException
     {
-        Objects.nonNull(dir);
+        Objects.requireNonNull(dir);
         if (exc != null)
             throw exc;
         return FileVisitResult.CONTINUE;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/java/nio/file/TempFileHelper.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,175 @@
+/*
+ * Copyright (c) 2009, 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 java.nio.file;
+
+import java.util.Set;
+import java.util.EnumSet;
+import java.security.SecureRandom;
+import static java.security.AccessController.*;
+import java.io.IOException;
+import java.nio.file.attribute.FileAttribute;
+import java.nio.file.attribute.PosixFilePermission;
+import java.nio.file.attribute.PosixFilePermissions;
+import static java.nio.file.attribute.PosixFilePermission.*;
+import sun.security.action.GetPropertyAction;
+
+
+/**
+ * Helper class to support creation of temporary files and directories with
+ * initial attributes.
+ */
+
+class TempFileHelper {
+    private TempFileHelper() { }
+
+    // temporary directory location
+    private static final Path tmpdir =
+        Paths.get(doPrivileged(new GetPropertyAction("java.io.tmpdir")));
+
+    private static final boolean isPosix =
+        FileSystems.getDefault().supportedFileAttributeViews().contains("posix");
+
+    // file name generation, same as java.io.File for now
+    private static final SecureRandom random = new SecureRandom();
+    private static Path generatePath(String prefix, String suffix, Path dir) {
+        long n = random.nextLong();
+        n = (n == Long.MIN_VALUE) ? 0 : Math.abs(n);
+        Path name = dir.getFileSystem().getPath(prefix + Long.toString(n) + suffix);
+        // the generated name should be a simple file name
+        if (name.getParent() != null)
+            throw new IllegalArgumentException("Invalid prefix or suffix");
+        return dir.resolve(name);
+    }
+
+    // default file and directory permissions (lazily initialized)
+    private static class PosixPermissions {
+        static final FileAttribute<Set<PosixFilePermission>> filePermissions =
+            PosixFilePermissions.asFileAttribute(EnumSet.of(OWNER_READ, OWNER_WRITE));
+        static final FileAttribute<Set<PosixFilePermission>> dirPermissions =
+            PosixFilePermissions.asFileAttribute(EnumSet
+                .of(OWNER_READ, OWNER_WRITE, OWNER_EXECUTE));
+    }
+
+    /**
+     * Creates a file or directory in in the given given directory (or in the
+     * temporary directory if dir is {@code null}).
+     */
+    private static Path create(Path dir,
+                               String prefix,
+                               String suffix,
+                               boolean createDirectory,
+                               FileAttribute[] attrs)
+        throws IOException
+    {
+        if (prefix == null)
+            prefix = "";
+        if (suffix == null)
+            suffix = (createDirectory) ? "" : ".tmp";
+        if (dir == null)
+            dir = tmpdir;
+
+        // in POSIX environments use default file and directory permissions
+        // if initial permissions not given by caller.
+        if (isPosix && (dir.getFileSystem() == FileSystems.getDefault())) {
+            if (attrs.length == 0) {
+                // no attributes so use default permissions
+                attrs = new FileAttribute<?>[1];
+                attrs[0] = (createDirectory) ? PosixPermissions.dirPermissions :
+                                               PosixPermissions.filePermissions;
+            } else {
+                // check if posix permissions given; if not use default
+                boolean hasPermissions = false;
+                for (int i=0; i<attrs.length; i++) {
+                    if (attrs[i].name().equals("posix:permissions")) {
+                        hasPermissions = true;
+                        break;
+                    }
+                }
+                if (!hasPermissions) {
+                    FileAttribute<?>[] copy = new FileAttribute<?>[attrs.length+1];
+                    System.arraycopy(attrs, 0, copy, 0, attrs.length);
+                    attrs = copy;
+                    attrs[attrs.length-1] = (createDirectory) ?
+                        PosixPermissions.dirPermissions :
+                        PosixPermissions.filePermissions;
+                }
+            }
+        }
+
+        // loop generating random names until file or directory can be created
+        SecurityManager sm = System.getSecurityManager();
+        for (;;) {
+            Path f;
+            try {
+                f = generatePath(prefix, suffix, dir);
+            } catch (InvalidPathException e) {
+                // don't reveal temporary directory location
+                if (sm != null)
+                    throw new IllegalArgumentException("Invalid prefix or suffix");
+                throw e;
+            }
+            try {
+                if (createDirectory) {
+                    return Files.createDirectory(f, attrs);
+                } else {
+                    return Files.createFile(f, attrs);
+                }
+            } catch (SecurityException e) {
+                // don't reveal temporary directory location
+                if (dir == tmpdir && sm != null)
+                    throw new SecurityException("Unable to create temporary file or directory");
+                throw e;
+            } catch (FileAlreadyExistsException e) {
+                // ignore
+            }
+        }
+    }
+
+    /**
+     * Creates a temporary file in the given directory, or in in the
+     * temporary directory if dir is {@code null}.
+     */
+    static Path createTempFile(Path dir,
+                               String prefix,
+                               String suffix,
+                               FileAttribute[] attrs)
+        throws IOException
+    {
+        return create(dir, prefix, suffix, false, attrs);
+    }
+
+    /**
+     * Creates a temporary directory in the given directory, or in in the
+     * temporary directory if dir is {@code null}.
+     */
+    static Path createTempDirectory(Path dir,
+                                    String prefix,
+                                    FileAttribute[] attrs)
+        throws IOException
+    {
+        return create(dir, prefix, null, true, attrs);
+    }
+}
--- a/jdk/src/share/classes/java/nio/file/WatchEvent.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/WatchEvent.java	Wed Jul 05 17:35:13 2017 +0200
@@ -44,7 +44,7 @@
  * @since 1.7
  */
 
-public abstract class WatchEvent<T> {
+public interface WatchEvent<T> {
 
     /**
      * An event kind, for the purposes of identification.
@@ -65,11 +65,6 @@
     }
 
     /**
-     * Initializes a new instance of this class.
-     */
-    protected WatchEvent() { }
-
-    /**
      * An event modifier that qualifies how a {@link Watchable} is registered
      * with a {@link WatchService}.
      *
@@ -90,7 +85,7 @@
      *
      * @return  the event kind
      */
-    public abstract Kind<T> kind();
+    Kind<T> kind();
 
     /**
      * Returns the event count. If the event count is greater than {@code 1}
@@ -98,7 +93,7 @@
      *
      * @return  the event count
      */
-    public abstract int count();
+    int count();
 
     /**
      * Returns the context for the event.
@@ -112,5 +107,5 @@
      *
      * @return  the event context; may be {@code null}
      */
-    public abstract T context();
+    T context();
 }
--- a/jdk/src/share/classes/java/nio/file/WatchKey.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/WatchKey.java	Wed Jul 05 17:35:13 2017 +0200
@@ -81,11 +81,7 @@
  * @since 1.7
  */
 
-public abstract class WatchKey {
-    /**
-     * Initializes a new instance of this class.
-     */
-    protected WatchKey() { }
+public interface WatchKey {
 
     /**
      * Tells whether or not this watch key is valid.
@@ -95,7 +91,7 @@
      *
      * @return  {@code true} if, and only if, this watch key is valid
      */
-    public abstract boolean isValid();
+    boolean isValid();
 
     /**
      * Retrieves and removes all pending events for this watch key, returning
@@ -105,7 +101,7 @@
      *
      * @return  the list of the events retrieved; may be empty
      */
-    public abstract List<WatchEvent<?>> pollEvents();
+    List<WatchEvent<?>> pollEvents();
 
     /**
      * Resets this watch key.
@@ -121,7 +117,7 @@
      *          {@code false} if the watch key could not be reset because it is
      *          no longer {@link #isValid valid}
      */
-    public abstract boolean reset();
+    boolean reset();
 
     /**
      * Cancels the registration with the watch service. Upon return the watch key
@@ -134,5 +130,21 @@
      * <p> If this watch key has already been cancelled then invoking this
      * method has no effect.  Once cancelled, a watch key remains forever invalid.
      */
-    public abstract void cancel();
+    void cancel();
+
+    /**
+     * Returns the object for which this watch key was created. This method will
+     * continue to return the object even after the key is cancelled.
+     *
+     * <p> As the {@code WatchService} is intended to map directly on to the
+     * native file event notification facility (where available) then many of
+     * details on how registered objects are watched is highly implementation
+     * specific. When watching a directory for changes for example, and the
+     * directory is moved or renamed in the file system, there is no guarantee
+     * that the watch key will be cancelled and so the object returned by this
+     * method may no longer be a valid path to the directory.
+     *
+     * @return the object for which this watch key was created
+     */
+    //T watchable();
 }
--- a/jdk/src/share/classes/java/nio/file/WatchService.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/WatchService.java	Wed Jul 05 17:35:13 2017 +0200
@@ -103,13 +103,9 @@
  * @see FileSystem#newWatchService
  */
 
-public abstract class WatchService
-    implements Closeable
+public interface WatchService
+    extends Closeable
 {
-    /**
-     * Initializes a new instance of this class.
-     */
-    protected WatchService() { }
 
     /**
      * Closes this watch service.
@@ -129,7 +125,7 @@
      *          if an I/O error occurs
      */
     @Override
-    public abstract void close() throws IOException;
+    void close() throws IOException;
 
     /**
      * Retrieves and removes the next watch key, or {@code null} if none are
@@ -140,7 +136,7 @@
      * @throws  ClosedWatchServiceException
      *          if this watch service is closed
      */
-    public abstract WatchKey poll();
+    WatchKey poll();
 
     /**
      * Retrieves and removes the next watch key, waiting if necessary up to the
@@ -160,7 +156,7 @@
      * @throws  InterruptedException
      *          if interrupted while waiting
      */
-    public abstract WatchKey poll(long timeout, TimeUnit unit)
+    WatchKey poll(long timeout, TimeUnit unit)
         throws InterruptedException;
 
     /**
@@ -174,5 +170,5 @@
      * @throws  InterruptedException
      *          if interrupted while waiting
      */
-    public abstract WatchKey take() throws InterruptedException;
+    WatchKey take() throws InterruptedException;
 }
--- a/jdk/src/share/classes/java/nio/file/attribute/AclEntry.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/attribute/AclEntry.java	Wed Jul 05 17:35:13 2017 +0200
@@ -176,7 +176,7 @@
          */
         public Builder setPermissions(Set<AclEntryPermission> perms) {
             // copy and check for erroneous elements
-            perms = new HashSet<AclEntryPermission>(perms);
+            perms = EnumSet.copyOf(perms);
             checkSet(perms, AclEntryPermission.class);
             this.perms = perms;
             return this;
@@ -190,8 +190,7 @@
          * @return  this builder
          */
         public Builder setPermissions(AclEntryPermission... perms) {
-            Set<AclEntryPermission> set =
-                new HashSet<AclEntryPermission>(perms.length);
+            Set<AclEntryPermission> set = EnumSet.noneOf(AclEntryPermission.class);
             // copy and check for null elements
             for (AclEntryPermission p: perms) {
                 if (p == null)
@@ -214,7 +213,7 @@
          */
         public Builder setFlags(Set<AclEntryFlag> flags) {
             // copy and check for erroneous elements
-            flags = new HashSet<AclEntryFlag>(flags);
+            flags = EnumSet.copyOf(flags);
             checkSet(flags, AclEntryFlag.class);
             this.flags = flags;
             return this;
@@ -228,7 +227,7 @@
          * @return  this builder
          */
         public Builder setFlags(AclEntryFlag... flags) {
-            Set<AclEntryFlag> set = new HashSet<AclEntryFlag>(flags.length);
+            Set<AclEntryFlag> set = EnumSet.noneOf(AclEntryFlag.class);
             // copy and check for null elements
             for (AclEntryFlag f: flags) {
                 if (f == null)
--- a/jdk/src/share/classes/java/nio/file/attribute/AclFileAttributeView.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/attribute/AclFileAttributeView.java	Wed Jul 05 17:35:13 2017 +0200
@@ -65,7 +65,7 @@
  * UserPrincipalLookupService} may be used to obtain a {@link UserPrincipal}
  * to represent these special identities by invoking the {@link
  * UserPrincipalLookupService#lookupPrincipalByName lookupPrincipalByName}
- * method.
+ * method. </p>
  *
  * <p> <b>Usage Example:</b>
  * Suppose we wish to add an entry to an existing ACL to grant "joe" access:
@@ -75,7 +75,7 @@
  *         .lookupPrincipalByName("joe");
  *
  *     // get view
- *     AclFileAttributeView view = file.getFileAttributeView(AclFileAttributeView.class);
+ *     AclFileAttributeView view = Files.getFileAttributeView(file, AclFileAttributeView.class);
  *
  *     // create ACE to give "joe" read access
  *     AclEntry entry = AclEntry.newBuilder()
@@ -110,11 +110,11 @@
  * </table>
  * </blockquote>
  *
- * <p> The {@link FileRef#getAttribute getAttribute} method may be used to read
+ * <p> The {@link Files#getAttribute getAttribute} method may be used to read
  * the ACL or owner attributes as if by invoking the {@link #getAcl getAcl} or
  * {@link #getOwner getOwner} methods.
  *
- * <p> The {@link FileRef#setAttribute setAttribute} method may be used to
+ * <p> The {@link Files#setAttribute setAttribute} method may be used to
  * update the ACL or owner attributes as if by invoking the {@link #setAcl setAcl}
  * or {@link #setOwner setOwner} methods.
  *
@@ -122,8 +122,8 @@
  *
  * <p> Implementations supporting this attribute view may also support setting
  * the initial ACL when creating a file or directory. The initial ACL
- * may be provided to methods such as {@link Path#createFile createFile} or {@link
- * Path#createDirectory createDirectory} as an {@link FileAttribute} with {@link
+ * may be provided to methods such as {@link Files#createFile createFile} or {@link
+ * Files#createDirectory createDirectory} as an {@link FileAttribute} with {@link
  * FileAttribute#name name} {@code "acl:acl"} and a {@link FileAttribute#value
  * value} that is the list of {@code AclEntry} objects.
  *
@@ -135,8 +135,6 @@
  * translation.
  *
  * @since 1.7
- * @see Attributes#getAcl
- * @see Attributes#setAcl
  */
 
 public interface AclFileAttributeView
--- a/jdk/src/share/classes/java/nio/file/attribute/Attributes.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,460 +0,0 @@
-/*
- * Copyright (c) 2007, 2009, 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 java.nio.file.attribute;
-
-import java.nio.file.*;
-import java.io.IOException;
-import java.util.*;
-
-/**
- * This class consists exclusively of static methods that operate on or return
- * the attributes of files or file stores. These methods provide for convenient
- * use of the {@link AttributeView attribute-views} defined in this package.
- *
- * @since 1.7
- */
-
-public final class Attributes {
-    private Attributes() { }
-
-    /**
-     * Reads the basic file attributes of a file.
-     *
-     * <p> The {@code options} array may be used to indicate how symbolic links
-     * are handled for the case that the file is a symbolic link. By default,
-     * symbolic links are followed and the file attributes of the final target
-     * of the link are read. If the option {@link LinkOption#NOFOLLOW_LINKS
-     * NOFOLLOW_LINKS} is present then symbolic links are not followed and so
-     * the method returns the file attributes of the symbolic link itself.
-     * This option should be used where there is a need to determine if a
-     * file is a symbolic link:
-     * <pre>
-     *    boolean isSymbolicLink = Attributes.readBasicFileAttributes(file, NOFOLLOW_LINKS).isSymbolicLink();
-     * </pre>
-     *
-     * <p> It is implementation specific if all file attributes are read as an
-     * atomic operation with respect to other file system operations.
-     *
-     * @param   file
-     *          A file reference that locates the file
-     * @param   options
-     *          Options indicating how symbolic links are handled
-     *
-     * @return  The basic file attributes
-     *
-     * @throws  IOException
-     *          If an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, the security manager's {@link
-     *          SecurityManager#checkRead(String) checkRead} method is invoked
-     *          to check read access to file
-     *
-     * @see BasicFileAttributeView#readAttributes
-     */
-    public static BasicFileAttributes readBasicFileAttributes(FileRef file,
-                                                              LinkOption... options)
-        throws IOException
-    {
-        return file.getFileAttributeView(BasicFileAttributeView.class, options)
-            .readAttributes();
-    }
-
-    /**
-     * Reads the POSIX file attributes of a file.
-     *
-     * <p> The {@code file} parameter locates a file that supports the {@link
-     * PosixFileAttributeView}. This file attribute view provides access to a
-     * subset of the file attributes commonly associated with files on file
-     * systems used by operating systems that implement the Portable Operating
-     * System Interface (POSIX) family of standards. It is implementation
-     * specific if all file attributes are read as an atomic operation with
-     * respect to other file system operations.
-     *
-     * <p> The {@code options} array may be used to indicate how symbolic links
-     * are handled for the case that the file is a symbolic link. By default,
-     * symbolic links are followed and the file attributes of the final target
-     * of the link are read. If the option {@link LinkOption#NOFOLLOW_LINKS
-     * NOFOLLOW_LINKS} is present then symbolic links are not followed and so
-     * the method returns the file attributes of the symbolic link itself.
-     *
-     * @param   file
-     *          A file reference that locates the file
-     * @param   options
-     *          Options indicating how symbolic links are handled
-     *
-     * @return  The POSIX file attributes
-     *
-     * @throws  UnsupportedOperationException
-     *          If the {@code PosixFileAttributeView} is not available
-     * @throws  IOException
-     *          If an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, it denies {@link RuntimePermission}<tt>("accessUserInformation")</tt>
-     *          or its {@link SecurityManager#checkRead(String) checkRead} method
-     *          denies read access to the file.
-     *
-     * @see PosixFileAttributeView#readAttributes
-     */
-    public static PosixFileAttributes readPosixFileAttributes(FileRef file,
-                                                              LinkOption... options)
-        throws IOException
-    {
-        PosixFileAttributeView view =
-            file.getFileAttributeView(PosixFileAttributeView.class, options);
-        if (view == null)
-            throw new UnsupportedOperationException();
-        return view.readAttributes();
-    }
-
-    /**
-     * Reads the DOS file attributes of a file.
-     *
-     * <p> The {@code file} parameter locates a file that supports the {@link
-     * DosFileAttributeView}. This file attribute view provides access to
-     * legacy "DOS" attributes supported by the file systems such as File
-     * Allocation Table (FAT), commonly used in <em>consumer devices</em>. It is
-     * implementation specific if all file attributes are read as an atomic
-     * operation with respect to other file system operations.
-     *
-     * <p> The {@code options} array may be used to indicate how symbolic links
-     * are handled for the case that the file is a symbolic link. By default,
-     * symbolic links are followed and the file attributes of the final target
-     * of the link are read. If the option {@link LinkOption#NOFOLLOW_LINKS
-     * NOFOLLOW_LINKS} is present then symbolic links are not followed and so
-     * the method returns the file attributes of the symbolic link itself.
-     *
-     * @param   file
-     *          A file reference that locates the file
-     * @param   options
-     *          Options indicating how symbolic links are handled
-     *
-     * @return  The DOS file attributes
-     *
-     * @throws  UnsupportedOperationException
-     *          If the {@code DosFileAttributeView} is not available
-     * @throws  IOException
-     *          If an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, the security manager's {@link
-     *          SecurityManager#checkRead(String) checkRead} method is invoked
-     *          to check read access to file
-     *
-     * @see DosFileAttributeView#readAttributes
-     */
-    public static DosFileAttributes readDosFileAttributes(FileRef file,
-                                                          LinkOption... options)
-        throws IOException
-    {
-        DosFileAttributeView view =
-            file.getFileAttributeView(DosFileAttributeView.class, options);
-        if (view == null)
-            throw new UnsupportedOperationException();
-        return view.readAttributes();
-    }
-
-    /**
-     * Returns the owner of a file.
-     *
-     * <p> The {@code file} parameter locates a file that supports the {@link
-     * FileOwnerAttributeView}. This file attribute view provides access to
-     * a file attribute that is the owner of the file.
-     *
-     * @param   file
-     *          A file reference that locates the file
-     *
-     * @return  A user principal representing the owner of the file
-     *
-     * @throws  UnsupportedOperationException
-     *          If the {@code FileOwnerAttributeView} is not available
-     * @throws  IOException
-     *          If an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, it denies {@link RuntimePermission}<tt>("accessUserInformation")</tt>
-     *          or its {@link SecurityManager#checkRead(String) checkRead} method
-     *          denies read access to the file.
-     *
-     * @see FileOwnerAttributeView#getOwner
-     */
-    public static UserPrincipal getOwner(FileRef file) throws IOException {
-        FileOwnerAttributeView view =
-            file.getFileAttributeView(FileOwnerAttributeView.class);
-        if (view == null)
-            throw new UnsupportedOperationException();
-        return view.getOwner();
-    }
-
-    /**
-     * Updates the file owner.
-     *
-     * <p> The {@code file} parameter locates a file that supports the {@link
-     * FileOwnerAttributeView}. This file attribute view provides access to
-     * a file attribute that is the owner of the file.
-     *
-     * @param   file
-     *          A file reference that locates the file
-     * @param   owner
-     *          The new file owner
-     *
-     * @throws  UnsupportedOperationException
-     *          If the {@code FileOwnerAttributeView} is not available
-     * @throws  IOException
-     *          If an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, it denies {@link RuntimePermission}<tt>("accessUserInformation")</tt>
-     *          or its {@link SecurityManager#checkWrite(String) checkWrite}
-     *          method denies write access to the file.
-     *
-     * @see FileOwnerAttributeView#setOwner
-     */
-    public static void setOwner(FileRef file, UserPrincipal owner)
-            throws IOException
-    {
-        FileOwnerAttributeView view =
-            file.getFileAttributeView(FileOwnerAttributeView.class);
-        if (view == null)
-            throw new UnsupportedOperationException();
-        view.setOwner(owner);
-    }
-
-    /**
-     * Reads a file's Access Control List (ACL).
-     *
-     * <p> The {@code file} parameter locates a file that supports the {@link
-     * AclFileAttributeView}. This file attribute view provides access to ACLs
-     * based on the ACL model specified in
-     *  <a href="http://www.ietf.org/rfc/rfc3530.txt"><i>RFC&nbsp;3530</i></a>.
-     *
-     * @param   file
-     *          A file reference that locates the file
-     *
-     * @return  An ordered list of {@link AclEntry entries} representing the
-     *          ACL. The returned list is modifiable.
-     *
-     * @throws  UnsupportedOperationException
-     *          If the {@code AclAttributeView} is not available
-     * @throws  IOException
-     *          If an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, it denies {@link RuntimePermission}<tt>("accessUserInformation")</tt>
-     *          or its {@link SecurityManager#checkRead(String) checkRead} method
-     *          denies read access to the file.
-     *
-     * @see AclFileAttributeView#getAcl
-     */
-    public static List<AclEntry> getAcl(FileRef file) throws IOException {
-        AclFileAttributeView view =
-            file.getFileAttributeView(AclFileAttributeView.class);
-        if (view == null)
-            throw new UnsupportedOperationException();
-        return view.getAcl();
-    }
-
-    /**
-     * Updates a file's Access Control List (ACL).
-     *
-     * <p> The {@code file} parameter locates a file that supports the {@link
-     * AclFileAttributeView}. This file attribute view provides access to ACLs
-     * based on the ACL model specified in
-     *  <a href="http://www.ietf.org/rfc/rfc3530.txt"><i>RFC&nbsp;3530</i></a>.
-     *
-     * @param   file
-     *          A file reference that locates the file
-     * @param   acl
-     *          The new file ACL
-     *
-     * @throws  UnsupportedOperationException
-     *          If the {@code AclFileAttributeView} is not available
-     * @throws  IOException
-     *          If an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, it denies {@link RuntimePermission}<tt>("accessUserInformation")</tt>
-     *          or its {@link SecurityManager#checkWrite(String) checkWrite}
-     *          method denies write access to the file.
-     *
-     * @see AclFileAttributeView#setAcl
-     */
-    public static void setAcl(FileRef file, List<AclEntry> acl)
-        throws IOException
-    {
-        AclFileAttributeView view =
-            file.getFileAttributeView(AclFileAttributeView.class);
-        if (view == null)
-            throw new UnsupportedOperationException();
-        view.setAcl(acl);
-    }
-
-    /**
-     * Updates a file's last modified time attribute. The file time is converted
-     * to the epoch and precision supported by the file system. Converting from
-     * finer to coarser granularities result in precision loss. The behavior of
-     * this method when attempting to set a timestamp to a value that is outside
-     * the range supported by the underlying file store is not defined. It may
-     * or not fail by throwing an {@code IOException}.
-     *
-     * <p> If the file system does not support a last modified time attribute
-     * then this method has no effect.
-     *
-     * <p> <b>Usage Example:</b>
-     * Suppose we want to set the last modified time to the current time:
-     * <pre>
-     *    FileTime now = FileTime.fromMillis(System.currentTimeMillis());
-     *    Attributes.setLastModifiedTime(file, now);
-     * </pre>
-     *
-     * @param   file
-     *          A file reference that locates the file
-     * @param   lastModifiedTime
-     *          The new last modified time
-     *
-     * @throws  IOException
-     *          If an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, the security manager's {@link
-     *          SecurityManager#checkWrite(String) checkWrite} method is invoked
-     *          to check write access to file
-     *
-     * @see BasicFileAttributeView#setTimes
-     */
-    public static void setLastModifiedTime(FileRef file,
-                                           FileTime lastModifiedTime)
-        throws IOException
-    {
-        if (lastModifiedTime == null)
-            throw new NullPointerException("'lastModifiedTime' is null");
-        file.getFileAttributeView(BasicFileAttributeView.class)
-            .setTimes(lastModifiedTime, null, null);
-    }
-
-    /**
-     * Updates a file's last access time attribute. The file time is converted
-     * to the epoch and precision supported by the file system. Converting from
-     * finer to coarser granularities result in precision loss. The behavior of
-     * this method when attempting to set a timestamp to a value that is outside
-     * the range supported by the underlying file store is not defined. It may
-     * or not fail by throwing an {@code IOException}.
-     *
-     * <p> If the file system does not support a last access time attribute then
-     * this method has no effect.
-     *
-     * @param   file
-     *          A file reference that locates the file
-     * @param   lastAccessTime
-     *          The new last access time
-     *
-     * @throws  IOException
-     *          If an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, the security manager's {@link
-     *          SecurityManager#checkWrite(String) checkWrite} method is invoked
-     *          to check write access to file
-     *
-     * @see BasicFileAttributeView#setTimes
-     */
-    public static void setLastAccessTime(FileRef file,
-                                         FileTime lastAccessTime)
-        throws IOException
-    {
-        if (lastAccessTime == null)
-            throw new NullPointerException("'lastAccessTime' is null");
-        file.getFileAttributeView(BasicFileAttributeView.class)
-            .setTimes(null, lastAccessTime, null);
-    }
-
-    /**
-     * Sets a file's POSIX permissions.
-     *
-     * <p> The {@code file} parameter is a reference to an existing file. It
-     * supports the {@link PosixFileAttributeView} that provides access to file
-     * attributes commonly associated with files on file systems used by
-     * operating systems that implement the Portable Operating System Interface
-     * (POSIX) family of standards.
-     *
-     * @param   file
-     *          A file reference that locates the file
-     * @param   perms
-     *          The new set of permissions
-     *
-     * @throws  UnsupportedOperationException
-     *          If {@code PosixFileAttributeView} is not available
-     * @throws  ClassCastException
-     *          If the sets contains elements that are not of type {@code
-     *          PosixFilePermission}
-     * @throws  IOException
-     *          If an I/O error occurs
-     * @throws  SecurityException
-     *          In the case of the default provider, and a security manager is
-     *          installed, it denies {@link RuntimePermission}<tt>("accessUserInformation")</tt>
-     *          or its {@link SecurityManager#checkWrite(String) checkWrite}
-     *          method denies write access to the file.
-     *
-     * @see PosixFileAttributeView#setPermissions
-     */
-    public static void setPosixFilePermissions(FileRef file,
-                                               Set<PosixFilePermission> perms)
-        throws IOException
-    {
-        PosixFileAttributeView view =
-            file.getFileAttributeView(PosixFileAttributeView.class);
-        if (view == null)
-            throw new UnsupportedOperationException();
-        view.setPermissions(perms);
-    }
-
-    /**
-     * Reads the space attributes of a file store.
-     *
-     * <p> The {@code store} parameter is a file store that supports the
-     * {@link FileStoreSpaceAttributeView} providing access to the space related
-     * attributes of the file store. It is implementation specific if all attributes
-     * are read as an atomic operation with respect to other file system operations.
-     *
-     * @param   store
-     *          The file store
-     *
-     * @return  The file store space attributes
-     *
-     * @throws  UnsupportedOperationException
-     *          If the file store space attribute view is not supported
-     * @throws  IOException
-     *          If an I/O error occurs
-     *
-     * @see FileStoreSpaceAttributeView#readAttributes()
-     */
-    public static FileStoreSpaceAttributes readFileStoreSpaceAttributes(FileStore store)
-        throws IOException
-    {
-        FileStoreSpaceAttributeView view =
-            store.getFileStoreAttributeView(FileStoreSpaceAttributeView.class);
-        if (view == null)
-            throw new UnsupportedOperationException();
-        return view.readAttributes();
-    }
-}
--- a/jdk/src/share/classes/java/nio/file/attribute/BasicFileAttributeView.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/attribute/BasicFileAttributeView.java	Wed Jul 05 17:35:13 2017 +0200
@@ -85,16 +85,15 @@
  * </table>
  * </blockquote>
  *
- * <p> The {@link java.nio.file.FileRef#getAttribute getAttribute} method may be
+ * <p> The {@link java.nio.file.Files#getAttribute getAttribute} method may be
  * used to read any of these attributes as if by invoking the {@link
  * #readAttributes() readAttributes()} method.
  *
- * <p> The {@link java.nio.file.FileRef#setAttribute setAttribute} method may be
+ * <p> The {@link java.nio.file.Files#setAttribute setAttribute} method may be
  * used to update the file's last modified time, last access time or create time
  * attributes as if by invoking the {@link #setTimes setTimes} method.
  *
  * @since 1.7
- * @see Attributes
  */
 
 public interface BasicFileAttributeView
@@ -131,9 +130,10 @@
      * <p> This method updates the file's timestamp attributes. The values are
      * converted to the epoch and precision supported by the file system.
      * Converting from finer to coarser granularities result in precision loss.
-     * The behavior of this method when attempting to set a timestamp to a value
-     * that is outside the range supported by the underlying file store is not
-     * defined. It may or not fail by throwing an {@code IOException}.
+     * The behavior of this method when attempting to set a timestamp that is
+     * not supported or to a value that is outside the range supported by the
+     * underlying file store is not defined. It may or not fail by throwing an
+     * {@code IOException}.
      *
      * <p> If any of the {@code lastModifiedTime}, {@code lastAccessTime},
      * or {@code createTime} parameters has the value {@code null} then the
@@ -146,6 +146,14 @@
      * lastAccessTime} and {@code createTime} parameters are {@code null} then
      * this method has no effect.
      *
+     * <p> <b>Usage Example:</b>
+     * Suppose we want to change a file's creation time.
+     * <pre>
+     *    Path path = ...
+     *    FileTime time = ...
+     *    Files.getFileAttributeView(path, BasicFileAttributeView.class).setTimes(null, null, time);
+     * </pre>
+     *
      * @param   lastModifiedTime
      *          the new last modified time, or {@code null} to not change the
      *          value
@@ -160,6 +168,8 @@
      *          In the case of the default provider, a security manager is
      *          installed, its  {@link SecurityManager#checkWrite(String) checkWrite}
      *          method is invoked to check write access to the file
+     *
+     * @see java.nio.file.Files#setLastModifiedTime
      */
     void setTimes(FileTime lastModifiedTime,
                   FileTime lastAccessTime,
--- a/jdk/src/share/classes/java/nio/file/attribute/BasicFileAttributes.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/attribute/BasicFileAttributes.java	Wed Jul 05 17:35:13 2017 +0200
@@ -34,8 +34,8 @@
  *
  * <p> <b>Usage Example:</b>
  * <pre>
- *    FileRef file = ...
- *    BasicFileAttributes attrs = Attributes.readBasicFileAttributes(file);
+ *    Path file = ...
+ *    BasicFileAttributes attrs = Files.readAttributes(file, BasicFileAttributes.class);
  * </pre>
  *
  * @since 1.7
@@ -48,25 +48,40 @@
     /**
      * Returns the time of last modification.
      *
+     * <p> If the file system implementation does not support a time stamp
+     * to indicate the time of last modification then this method returns an
+     * implementation specific default value, typically a {@code FileTime}
+     * representing the epoch (1970-01-01T00:00:00Z).
+     *
      * @return  a {@code FileTime} representing the time the file was last
-     *          modified or {@code null} if the attribute is not supported.
+     *          modified
      */
     FileTime lastModifiedTime();
 
     /**
-     * Returns the time of last access if supported.
+     * Returns the time of last access.
      *
-     * @return  a {@code FileTime} representing the time of last access or
-     *          {@code null} if the attribute is not supported.
+     * <p> If the file system implementation does not support a time stamp
+     * to indicate the time of last access then this method returns
+     * an implementation specific default value, typically the {@link
+     * #lastModifiedTime() last-modified-time} or a {@code FileTime}
+     * representing the epoch (1970-01-01T00:00:00Z).
+     *
+     * @return  a {@code FileTime} representing the time of last access
      */
     FileTime lastAccessTime();
 
     /**
-     * Returns the creation time if supported. The creation time is the time
-     * that the file was created.
+     * Returns the creation time. The creation time is the time that the file
+     * was created.
      *
-     * @return   a {@code FileTime} representing the time  the file was created
-     *           or {@code null} if the attribute is not supported.
+     * <p> If the file system implementation does not support a time stamp
+     * to indicate the time when the file was created then this method returns
+     * an implementation specific default value, typically the {@link
+     * #lastModifiedTime() last-modified-time} or a {@code FileTime}
+     * representing the epoch (1970-01-01T00:00:00Z).
+     *
+     * @return   a {@code FileTime} representing the time the file was created
      */
     FileTime creationTime();
 
@@ -120,7 +135,7 @@
      *
      * <p> File keys returned by this method can be compared for equality and are
      * suitable for use in collections. If the file system and files remain static,
-     * and two files are the {@link java.nio.file.Path#isSameFile same} with
+     * and two files are the {@link java.nio.file.Files#isSameFile same} with
      * non-{@code null} file keys, then their file keys are equal.
      *
      * @see java.nio.file.Files#walkFileTree
--- a/jdk/src/share/classes/java/nio/file/attribute/DosFileAttributeView.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/attribute/DosFileAttributeView.java	Wed Jul 05 17:35:13 2017 +0200
@@ -65,12 +65,12 @@
  * </table>
  * </blockquote>
  *
- * <p> The {@link java.nio.file.FileRef#getAttribute getAttribute} method may
+ * <p> The {@link java.nio.file.Files#getAttribute getAttribute} method may
  * be used to read any of these attributes, or any of the attributes defined by
  * {@link BasicFileAttributeView} as if by invoking the {@link #readAttributes
  * readAttributes()} method.
  *
- * <p> The {@link java.nio.file.FileRef#setAttribute setAttribute} method may
+ * <p> The {@link java.nio.file.Files#setAttribute setAttribute} method may
  * be used to update the file's last modified time, last access time or create
  * time attributes as defined by {@link BasicFileAttributeView}. It may also be
  * used to update the DOS attributes as if by invoking the {@link #setReadOnly
--- a/jdk/src/share/classes/java/nio/file/attribute/DosFileAttributes.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/attribute/DosFileAttributes.java	Wed Jul 05 17:35:13 2017 +0200
@@ -29,13 +29,13 @@
  * File attributes associated with a file in a file system that supports
  * legacy "DOS" attributes.
  *
- * <p> The DOS attributes of a file are retrieved using a {@link
- * DosFileAttributeView} by invoking its {@link DosFileAttributeView#readAttributes
- * readAttributes} method.
+ * <p> <b>Usage Example:</b>
+ * <pre>
+ *    Path file = ...
+ *    DosFileAttributes attrs = Files.readAttributes(file, DosFileAttributes.class);
+ * </pre>
  *
  * @since 1.7
- *
- * @see Attributes#readDosFileAttributes
  */
 
 public interface DosFileAttributes
--- a/jdk/src/share/classes/java/nio/file/attribute/FileAttribute.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/attribute/FileAttribute.java	Wed Jul 05 17:35:13 2017 +0200
@@ -28,8 +28,8 @@
 /**
  * An object that encapsulates the value of a file attribute that can be set
  * atomically when creating a new file or directory by invoking the {@link
- * java.nio.file.Path#createFile createFile} or {@link
- * java.nio.file.Path#createDirectory createDirectory} methods.
+ * java.nio.file.Files#createFile createFile} or {@link
+ * java.nio.file.Files#createDirectory createDirectory} methods.
  *
  * @param <T> The type of the file attribute value
  *
--- a/jdk/src/share/classes/java/nio/file/attribute/FileAttributeView.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/attribute/FileAttributeView.java	Wed Jul 05 17:35:13 2017 +0200
@@ -33,7 +33,7 @@
  *
  * @since 1.7
  *
- * @see java.nio.file.FileRef#getFileAttributeView(Class,java.nio.file.LinkOption[])
+ * @see java.nio.file.Files#getFileAttributeView(Path,Class,java.nio.file.LinkOption[])
  */
 
 public interface FileAttributeView
--- a/jdk/src/share/classes/java/nio/file/attribute/FileOwnerAttributeView.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/attribute/FileOwnerAttributeView.java	Wed Jul 05 17:35:13 2017 +0200
@@ -37,8 +37,8 @@
  * <p> The {@link #getOwner getOwner} or {@link #setOwner setOwner} methods may
  * be used to read or update the owner of the file.
  *
- * <p> The {@link java.nio.file.FileRef#getAttribute getAttribute} and
- * {@link java.nio.file.FileRef#setAttribute setAttribute} methods may also be
+ * <p> The {@link java.nio.file.Files#getAttribute getAttribute} and
+ * {@link java.nio.file.Files#setAttribute setAttribute} methods may also be
  * used to read or update the owner. In that case, the owner attribute is
  * identified by the name {@code "owner"}, and the value of the attribute is
  * a {@link UserPrincipal}.
--- a/jdk/src/share/classes/java/nio/file/attribute/FileStoreSpaceAttributeView.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-/*
- * Copyright (c) 2007, 2009, 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 java.nio.file.attribute;
-
-import java.io.IOException;
-
-/**
- * A file store attribute view that supports reading of space attributes.
- *
- * <p> Where dynamic access to file attributes is required, the attributes
- * supported by this attribute view have the following names and types:
- * <blockquote>
- * <table border="1" cellpadding="8">
- *   <tr>
- *     <th> Name </th>
- *     <th> Type </th>
- *   </tr>
- *  <tr>
- *     <td> "totalSpace" </td>
- *     <td> {@link Long} </td>
- *   </tr>
- *  <tr>
- *     <td> "usableSpace" </td>
- *     <td> {@link Long} </td>
- *   </tr>
- *  <tr>
- *     <td> "unallocatedSpace" </td>
- *     <td> {@link Long} </td>
- *   </tr>
- * </table>
- * </blockquote>
- * <p> The {@link java.nio.file.FileStore#getAttribute getAttribute} method may
- * be used to read any of these attributes.
- *
- * @since 1.7
- */
-
-public interface FileStoreSpaceAttributeView
-    extends FileStoreAttributeView
-{
-    /**
-     * Returns the name of the attribute view. Attribute views of this type
-     * have the name {@code "space"}.
-     */
-    @Override
-    String name();
-
-    /**
-     * Reads the disk space attributes as a bulk operation.
-     *
-     * <p> It is file system specific if all attributes are read as an
-     * atomic operation with respect to other file system operations.
-     *
-     * @return  The disk space attributes
-     *
-     * @throws  IOException
-     *          If an I/O error occurs
-     */
-    FileStoreSpaceAttributes readAttributes() throws IOException;
-}
--- a/jdk/src/share/classes/java/nio/file/attribute/FileStoreSpaceAttributes.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2007, 2009, 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 java.nio.file.attribute;
-
-/**
- * Space related attributes of a file store.
- *
- * @since 1.7
- *
- * @see Attributes#readFileStoreSpaceAttributes
- */
-
-public interface FileStoreSpaceAttributes {
-    /**
-     * Returns the size, in bytes, of the file store.
-     */
-    long totalSpace();
-
-    /**
-     * Returns the number of bytes available to this Java virtual machine on the
-     * file store.
-     *
-     * <p> The returned number of available bytes is a hint, but not a
-     * guarantee, that it is possible to use most or any of these bytes.  The
-     * number of usable bytes is most likely to be accurate immediately
-     * after the space attributes are obtained. It is likely to be made inaccurate
-     * by any external I/O operations including those made on the system outside
-     * of this Java virtual machine.
-     */
-    long usableSpace();
-
-    /**
-     * Returns the number of unallocated bytes in the file store.
-     *
-     * <p> The returned number of unallocated bytes is a hint, but not a
-     * guarantee, that it is possible to use most or any of these bytes.  The
-     * number of unallocated bytes is most likely to be accurate immediately
-     * after the space attributes are obtained. It is likely to be
-     * made inaccurate by any external I/O operations including those made on
-     * the system outside of this virtual machine.
-     */
-    long unallocatedSpace();
-}
--- a/jdk/src/share/classes/java/nio/file/attribute/FileTime.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/attribute/FileTime.java	Wed Jul 05 17:35:13 2017 +0200
@@ -35,20 +35,53 @@
 
 /**
  * Represents the value of a file's time stamp attribute. For example, it may
- * represent the time that the file was last modified, accessed, or created.
+ * represent the time that the file was last
+ * {@link BasicFileAttributes#lastModifiedTime() modified},
+ * {@link BasicFileAttributes#lastAccessTime() accessed},
+ * or {@link BasicFileAttributes#creationTime() created}.
  *
  * <p> Instances of this class are immutable.
  *
  * @since 1.7
- * @see BasicFileAttributes
- * @see Attributes#setLastModifiedTime
+ * @see java.nio.file.Files#setLastModifiedTime
+ * @see java.nio.file.Files#getLastModifiedTime
  */
 
-public final class FileTime implements Comparable<FileTime> {
+public final class FileTime
+    implements Comparable<FileTime>
+{
+    /**
+     * The value since the epoch; can be negative.
+     */
     private final long value;
+
+    /**
+     * The unit of granularity to interpret the value.
+     */
     private final TimeUnit unit;
-    private String valueAsString;  // created lazily
+
+    /**
+     * The value return by toString (created lazily)
+     */
+    private String valueAsString;
+
+    /**
+     * The value in days and excess nanos (created lazily)
+     */
+    private DaysAndNanos daysAndNanos;
 
+    /**
+     * Returns a DaysAndNanos object representing the value.
+     */
+    private DaysAndNanos asDaysAndNanos() {
+        if (daysAndNanos == null)
+            daysAndNanos = new DaysAndNanos(value, unit);
+        return daysAndNanos;
+    }
+
+    /**
+     * Initializes a new instance of this class.
+     */
     private FileTime(long value, TimeUnit unit) {
         if (unit == null)
             throw new NullPointerException();
@@ -143,9 +176,8 @@
      */
     @Override
     public int hashCode() {
-        // hash value for fixed granularity to satisfy contract with equals
-        long ms = toMillis();
-        return (int)(ms ^ (ms >>> 32));
+        // hashcode of days/nanos representation to satisfy contract with equals
+        return asDaysAndNanos().hashCode();
     }
 
     /**
@@ -162,46 +194,12 @@
     @Override
     public int compareTo(FileTime other) {
         // same granularity
-        if (unit == other.unit)
+        if (unit == other.unit) {
             return (value < other.value) ? -1 : (value == other.value ? 0 : 1);
-
-        // compare in days
-        long thisValueInDays = unit.toDays(value);
-        long otherValueInDays = other.unit.toDays(other.value);
-        if (thisValueInDays != otherValueInDays)
-            return (thisValueInDays < otherValueInDays) ? -1 : 1;
-
-        // compare remainder in nanoseconds
-        long thisRemainder = remainderInNanos(thisValueInDays);
-        long otherRemainder = other.remainderInNanos(otherValueInDays);
-        return (thisRemainder < otherRemainder) ? -1 :
-            (thisRemainder == otherRemainder) ? 0 : 1;
-    }
-
-    private long remainderInNanos(long days) {
-        // constants for conversion
-        final long C0 = 1L;
-        final long C1 = C0 * 24L;
-        final long C2 = C1 * 60L;
-        final long C3 = C2 * 60L;
-        final long C4 = C3 * 1000L;
-        final long C5 = C4 * 1000L;
-        final long C6 = C5 * 1000L;
-
-        long scale;
-        switch (unit) {
-            case DAYS         : scale = C0; break;
-            case HOURS        : scale = C1; break;
-            case MINUTES      : scale = C2; break;
-            case SECONDS      : scale = C3; break;
-            case MILLISECONDS : scale = C4; break;
-            case MICROSECONDS : scale = C5; break;
-            case NANOSECONDS  : scale = C6; break;
-            default:
-                throw new AssertionError("Unit not handled");
+        } else {
+            // compare using days/nanos representation when unit differs
+            return asDaysAndNanos().compareTo(other.asDaysAndNanos());
         }
-        long rem = value - (days * scale);
-        return unit.toNanos(rem);
     }
 
     /**
@@ -239,26 +237,12 @@
             // nothing to do when seconds/minutes/hours/days
             String fractionAsString = "";
             if (unit.compareTo(TimeUnit.SECONDS) < 0) {
-                // constants for conversion
-                final long C0 = 1L;
-                final long C1 = C0 * 1000L;
-                final long C2 = C1 * 1000L;
-                final long C3 = C2 * 1000L;
-
-                long scale;
-                int width;
-                switch (unit) {
-                    case MILLISECONDS : scale = C1; width = 3; break;
-                    case MICROSECONDS : scale = C2; width = 6; break;
-                    case NANOSECONDS  : scale = C3; width = 9; break;
-                    default:
-                        throw new AssertionError("Unit not handled");
-                }
-                long fraction = value % scale;
+                long fraction = asDaysAndNanos().fractionOfSecondInNanos();
                 if (fraction != 0L) {
                     // fraction must be positive
                     if (fraction < 0L) {
-                        fraction += scale;
+                        final long MAX_FRACTION_PLUS_1 = 1000L * 1000L * 1000L;
+                        fraction += MAX_FRACTION_PLUS_1;
                         if (ms != Long.MIN_VALUE) ms--;
                     }
 
@@ -266,7 +250,7 @@
                     // stripping any trailing zeros
                     String s = Long.toString(fraction);
                     int len = s.length();
-                    width -= len;
+                    int width = 9 - len;
                     StringBuilder sb = new StringBuilder(".");
                     while (width-- > 0) {
                         sb.append('0');
@@ -302,4 +286,76 @@
         }
         return v;
     }
+
+    /**
+     * Represents a FileTime's value as two longs: the number of days since
+     * the epoch, and the excess (in nanoseconds). This is used for comparing
+     * values with different units of granularity.
+     */
+    private static class DaysAndNanos implements Comparable<DaysAndNanos> {
+        // constants for conversion
+        private static final long C0 = 1L;
+        private static final long C1 = C0 * 24L;
+        private static final long C2 = C1 * 60L;
+        private static final long C3 = C2 * 60L;
+        private static final long C4 = C3 * 1000L;
+        private static final long C5 = C4 * 1000L;
+        private static final long C6 = C5 * 1000L;
+
+        /**
+         * The value (in days) since the epoch; can be negative.
+         */
+        private final long days;
+
+        /**
+         * The excess (in nanoseconds); can be negative if days <= 0.
+         */
+        private final long excessNanos;
+
+        /**
+         * Initializes a new instance of this class.
+         */
+        DaysAndNanos(long value, TimeUnit unit) {
+            long scale;
+            switch (unit) {
+                case DAYS         : scale = C0; break;
+                case HOURS        : scale = C1; break;
+                case MINUTES      : scale = C2; break;
+                case SECONDS      : scale = C3; break;
+                case MILLISECONDS : scale = C4; break;
+                case MICROSECONDS : scale = C5; break;
+                case NANOSECONDS  : scale = C6; break;
+                default : throw new AssertionError("Unit not handled");
+            }
+            this.days = unit.toDays(value);
+            this.excessNanos = unit.toNanos(value - (this.days * scale));
+        }
+
+        /**
+         * Returns the fraction of a second, in nanoseconds.
+         */
+        long fractionOfSecondInNanos() {
+            return excessNanos % (1000L * 1000L * 1000L);
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            return (obj instanceof DaysAndNanos) ?
+                compareTo((DaysAndNanos)obj) == 0 : false;
+        }
+
+        @Override
+        public int hashCode() {
+            return (int)(days ^ (days >>> 32) ^
+                         excessNanos ^ (excessNanos >>> 32));
+        }
+
+        @Override
+        public int compareTo(DaysAndNanos other) {
+            if (this.days != other.days)
+                return (this.days < other.days) ? -1 : 1;
+            return (this.excessNanos < other.excessNanos) ? -1 :
+                   (this.excessNanos == other.excessNanos) ? 0 : 1;
+        }
+    }
 }
--- a/jdk/src/share/classes/java/nio/file/attribute/PosixFileAttributeView.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/attribute/PosixFileAttributeView.java	Wed Jul 05 17:35:13 2017 +0200
@@ -60,8 +60,8 @@
  * <p> <b>Usage Example:</b>
  * Suppose we need to print out the owner and access permissions of a file:
  * <pre>
- *     FileRef file = ...
- *     PosixFileAttributes attrs = file.getFileAttributeView(PosixFileAttributeView.class)
+ *     Path file = ...
+ *     PosixFileAttributes attrs = Files.getFileAttributeView(file, PosixFileAttributeView.class)
  *         .readAttributes();
  *     System.out.format("%s %s%n",
  *         attrs.owner().getName(),
@@ -90,12 +90,12 @@
  * </table>
  * </blockquote>
  *
- * <p> The {@link FileRef#getAttribute getAttribute} method may be used to read
+ * <p> The {@link Files#getAttribute getAttribute} method may be used to read
  * any of these attributes, or any of the attributes defined by {@link
  * BasicFileAttributeView} as if by invoking the {@link #readAttributes
  * readAttributes()} method.
  *
- * <p> The {@link FileRef#setAttribute setAttribute} method may be used to update
+ * <p> The {@link Files#setAttribute setAttribute} method may be used to update
  * the file's last modified time, last access time or create time attributes as
  * defined by {@link BasicFileAttributeView}. It may also be used to update
  * the permissions, owner, or group-owner as if by invoking the {@link
@@ -105,8 +105,8 @@
  * <h4> Setting Initial Permissions </h4>
  * <p> Implementations supporting this attribute view may also support setting
  * the initial permissions when creating a file or directory. The
- * initial permissions are provided to the  {@link Path#createFile createFile}
- * or {@link Path#createDirectory createDirectory} methods as a {@link
+ * initial permissions are provided to the {@link Files#createFile createFile}
+ * or {@link Files#createDirectory createDirectory} methods as a {@link
  * FileAttribute} with {@link FileAttribute#name name} {@code "posix:permissions"}
  * and a {@link FileAttribute#value value} that is the set of permissions. The
  * following example uses the {@link PosixFilePermissions#asFileAttribute
@@ -117,7 +117,7 @@
  *     Path path = ...
  *     Set&lt;PosixFilePermission&gt; perms =
  *         EnumSet.of(OWNER_READ, OWNER_WRITE, OWNER_EXECUTE, GROUP_READ);
- *     path.createFile(PosixFilePermissions.asFileAttribute(perms));
+ *     Files.createFile(path, PosixFilePermissions.asFileAttribute(perms));
  * </pre>
  *
  * <p> When the access permissions are set at file creation time then the actual
@@ -128,13 +128,11 @@
  * the access permissions, and the underlying file system supports access
  * permissions, then it is required that the value of the actual access
  * permissions will be equal or less than the value of the attribute
- * provided to the {@link java.nio.file.Path#createFile createFile} or
- * {@link java.nio.file.Path#createDirectory createDirectory} methods. In
- * other words, the file may be more secure than requested.
+ * provided to the {@link Files#createFile createFile} or {@link
+ * Files#createDirectory createDirectory} methods. In other words, the file may
+ * be more secure than requested.
  *
  * @since 1.7
- *
- * @see Attributes#readPosixFileAttributes
  */
 
 public interface PosixFileAttributeView
--- a/jdk/src/share/classes/java/nio/file/attribute/PosixFileAttributes.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/attribute/PosixFileAttributes.java	Wed Jul 05 17:35:13 2017 +0200
@@ -37,8 +37,6 @@
  * PosixFileAttributeView#readAttributes readAttributes} method.
  *
  * @since 1.7
- *
- * @see Attributes#readPosixFileAttributes
  */
 
 public interface PosixFileAttributes
--- a/jdk/src/share/classes/java/nio/file/attribute/PosixFilePermission.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/attribute/PosixFilePermission.java	Wed Jul 05 17:35:13 2017 +0200
@@ -25,14 +25,12 @@
 
 package java.nio.file.attribute;
 
-import java.util.*;
-
 /**
  * Defines the bits for use with the {@link PosixFileAttributes#permissions()
  * permissions} attribute.
  *
- * <p> The {@link PosixFileAttributes} class defines method methods for
- * manipulating {@link Set sets} of permissions.
+ * <p> The {@link PosixFilePermissions} class defines methods for manipulating
+ * set of permissions.
  *
  * @since 1.7
  */
--- a/jdk/src/share/classes/java/nio/file/attribute/PosixFilePermissions.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/attribute/PosixFilePermissions.java	Wed Jul 05 17:35:13 2017 +0200
@@ -126,7 +126,7 @@
     public static Set<PosixFilePermission> fromString(String perms) {
         if (perms.length() != 9)
             throw new IllegalArgumentException("Invalid mode");
-        Set<PosixFilePermission> result = new HashSet<PosixFilePermission>();
+        Set<PosixFilePermission> result = EnumSet.noneOf(PosixFilePermission.class);
         if (isR(perms.charAt(0))) result.add(OWNER_READ);
         if (isW(perms.charAt(1))) result.add(OWNER_WRITE);
         if (isX(perms.charAt(2))) result.add(OWNER_EXECUTE);
@@ -141,8 +141,8 @@
 
     /**
      * Creates a {@link FileAttribute}, encapsulating a copy of the given file
-     * permissions, suitable for passing to the {@link java.nio.file.Path#createFile
-     * createFile} or {@link java.nio.file.Path#createDirectory createDirectory}
+     * permissions, suitable for passing to the {@link java.nio.file.Files#createFile
+     * createFile} or {@link java.nio.file.Files#createDirectory createDirectory}
      * methods.
      *
      * @param   perms
--- a/jdk/src/share/classes/java/nio/file/attribute/UserDefinedFileAttributeView.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/attribute/UserDefinedFileAttributeView.java	Wed Jul 05 17:35:13 2017 +0200
@@ -59,9 +59,9 @@
  * attributes.
  *
  * <p> Where dynamic access to file attributes is required, the {@link
- * java.nio.file.FileRef#getAttribute getAttribute} method may be used to read
+ * java.nio.file.Files#getAttribute getAttribute} method may be used to read
  * the attribute value. The attribute value is returned as a byte array (byte[]).
- * The {@link java.nio.file.FileRef#setAttribute setAttribute} method may be used
+ * The {@link java.nio.file.Files#setAttribute setAttribute} method may be used
  * to write the value of a user-defined attribute from a buffer (as if by
  * invoking the {@link #write write} method), or byte array (byte[]).
  *
@@ -132,8 +132,8 @@
      * Suppose we want to read a file's MIME type that is stored as a user-defined
      * attribute with the name "{@code user.mimetype}".
      * <pre>
-     *    UserDefinedFileAttributeView view = file
-     *        .getFileAttributeView(UserDefinedFileAttributeView.class);
+     *    UserDefinedFileAttributeView view =
+     *        Files.getFileAttributeView(path, UserDefinedFileAttributeView.class);
      *    String name = "user.mimetype";
      *    ByteBuffer buf = ByteBuffer.allocate(view.size(name));
      *    view.read(name, buf);
@@ -189,8 +189,8 @@
      * <p> <b>Usage Example:</b>
      * Suppose we want to write a file's MIME type as a user-defined attribute:
      * <pre>
-     *    UserDefinedFileAttributeView view = file
-     *        .getFileAttributeView(UserDefinedFileAttributeView.class);
+     *    UserDefinedFileAttributeView view =
+     *        FIles.getFileAttributeView(path, UserDefinedFileAttributeView.class);
      *    view.write("user.mimetype", Charset.defaultCharset().encode("text/html"));
      * </pre>
      *
--- a/jdk/src/share/classes/java/nio/file/attribute/package-info.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/attribute/package-info.java	Wed Jul 05 17:35:13 2017 +0200
@@ -46,8 +46,6 @@
  *     <td>Can read or update user-defined file attributes</td></tr>
  * <tr><td valign=top><tt>&nbsp;&nbsp;<i>{@link java.nio.file.attribute.FileStoreAttributeView}</i></tt></td>
  *     <td>Can read or update file system attributes</td></tr>
- * <tr><td valign=top><tt>&nbsp;&nbsp;&nbsp;&nbsp;<i>{@link java.nio.file.attribute.FileStoreSpaceAttributeView}&nbsp;&nbsp;</i></tt></td>
- *     <td>Can read file system <em>space usage</em> related attributes</td></tr>
  * </table></blockquote>
  *
  * <p> An attribute view provides a read-only or updatable view of the non-opaque
@@ -55,7 +53,7 @@
  * The {@link java.nio.file.attribute.FileAttributeView} interface is
  * extended by several other interfaces that that views to specific sets of file
  * attributes. {@code FileAttributeViews} are selected by invoking the {@link
- * java.nio.file.FileRef#getFileAttributeView} method with a
+ * java.nio.file.Files#getFileAttributeView} method with a
  * <em>type-token</em> to identify the required view. Views can also be identified
  * by name. The {@link java.nio.file.attribute.FileStoreAttributeView} interface
  * provides access to file store attributes. A {@code FileStoreAttributeView} of
@@ -83,13 +81,6 @@
  * on the model defined by <a href="http://www.ietf.org/rfc/rfc3530.txt">
  * <i>RFC&nbsp;3530: Network File System (NFS) version 4 Protocol</i></a>.
  *
- * <p> The {@link java.nio.file.attribute.FileStoreSpaceAttributeView} class
- * defines methods to read file system space usage related attributes of a file system.
- *
- * <p> The {@link java.nio.file.attribute.Attributes} utility class defines
- * static methods to access file or file system attribute using the above
- * attribute views.
- *
  * <p> In addition to attribute views, this package also defines classes and
  * interfaces that are used when accessing attributes:
  *
--- a/jdk/src/share/classes/java/nio/file/package-info.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/package-info.java	Wed Jul 05 17:35:13 2017 +0200
@@ -31,7 +31,7 @@
  * systems. The API to access file and file system attributes is defined in the
  * {@link java.nio.file.attribute} package. The {@link java.nio.file.spi}
  * package is used by service provider implementors wishing to extend the
- * platform default provider, or to construct other provider implementations.
+ * platform default provider, or to construct other provider implementations. </p>
  *
  * <a name="links"><h3>Symbolic Links</h3></a>
  * Many operating systems and file systems support for <em>symbolic links</em>.
@@ -43,7 +43,7 @@
  * target of the link. This package includes support for symbolic links where
  * implementations provide these semantics. File systems may support other types
  * that are semantically close but support for these other types of links is
- * not included in this package.
+ * not included in this package. </p>
  *
  * <a name="interop"><h3>Interoperability</h3></a>
  * The {@link java.io.File} class defines the {@link java.io.File#toPath
@@ -52,7 +52,7 @@
  * {@code Path} can be used to operate on the same file as the {@code File}
  * object. The {@code Path} specification provides further information
  * on the <a href="Path.html#interop">interoperability</a> between {@code Path}
- * and {@code java.io.File} objects.
+ * and {@code java.io.File} objects. </p>
  *
  * <h3>Visibility</h3>
  * The view of the files and file system provided by classes in this package are
@@ -63,7 +63,7 @@
  * network-filesystem protocols. This is true regardless of the language in which
  * these other programs are written, and whether they are running on the same machine
  * or on some other machine.  The exact nature of any such inconsistencies are
- * system-dependent and are therefore unspecified.
+ * system-dependent and are therefore unspecified. </p>
  *
  * <a name="integrity"><h3>Synchronized I/O File Integrity</h3></a>
  * The {@link java.nio.file.StandardOpenOption#SYNC SYNC} and {@link
@@ -80,14 +80,14 @@
  * crash. If the file does not reside on a local device then no such guarantee
  * is made. Whether this guarantee is possible with other {@link
  * java.nio.file.spi.FileSystemProvider provider} implementations is provider
- * specific.
+ * specific. </p>
  *
  * <h3>General Exceptions</h3>
  * Unless otherwise noted, passing a {@code null} argument to a constructor
  * or method of any class or interface in this package will cause a {@link
  * java.lang.NullPointerException NullPointerException} to be thrown. Additionally,
  * invoking a method with a collection containing a {@code null} element will
- * cause a {@code NullPointerException}, unless otherwise specified.
+ * cause a {@code NullPointerException}, unless otherwise specified. </p>
  *
  * <p> Unless otherwise noted, methods that attempt to access the file system
  * will throw {@link java.nio.file.ClosedFileSystemException} when invoked on
@@ -95,12 +95,13 @@
  * {@link java.nio.file.FileSystem#close closed}. Additionally, any methods
  * that attempt write access to a file system will throw {@link
  * java.nio.file.ReadOnlyFileSystemException} when invoked on an object associated
- * with a {@link java.nio.file.FileSystem} that only provides read-only access.
+ * with a {@link java.nio.file.FileSystem} that only provides read-only
+ * access. </p>
  *
  * <p> Unless otherwise noted, invoking a method of any class or interface in
  * this package created by one {@link java.nio.file.spi.FileSystemProvider
  * provider} with a parameter that is an object created by another provider,
- * will throw {@link java.nio.file.ProviderMismatchException}.
+ * will throw {@link java.nio.file.ProviderMismatchException}. </p>
  *
  * <h3>Optional Specific Exceptions</h3>
  * Most of the methods defined by classes in this package that access the
--- a/jdk/src/share/classes/java/nio/file/spi/FileSystemProvider.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/spi/FileSystemProvider.java	Wed Jul 05 17:35:13 2017 +0200
@@ -26,17 +26,21 @@
 package java.nio.file.spi;
 
 import java.nio.file.*;
-import java.nio.file.attribute.FileAttribute;
+import java.nio.file.attribute.*;
 import java.nio.channels.*;
 import java.net.URI;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.IOException;
 import java.util.*;
 import java.util.concurrent.ExecutorService;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
-import java.io.IOException;
 
 /**
- * Service-provider class for file systems.
+ * Service-provider class for file systems. The methods defined by the {@link
+ * java.nio.file.Files} class will typically delegate to an instance of this
+ * class.
  *
  * <p> A file system provider is a concrete implementation of this class that
  * implements the abstract methods defined by this class. A provider is
@@ -64,13 +68,6 @@
  * the {@code newFileSystem} method is invoked. In the case of the default
  * provider, the {@code FileSystem} is created when the provider is initialized.
  *
- * <p> In addition to file systems, a provider is also a factory for {@link
- * FileChannel} and {@link AsynchronousFileChannel} channels. The {@link
- * #newFileChannel newFileChannel} and {@link #newAsynchronousFileChannel
- * AsynchronousFileChannel} methods are defined to open or create files, returning
- * a channel to access the file. These methods are invoked by static factory
- * methods defined in the {@link java.nio.channels} package.
- *
  * <p> All of the methods in this class are safe for use by multiple concurrent
  * threads.
  *
@@ -202,9 +199,10 @@
      *
      * <p> This method throws {@link FileSystemAlreadyExistsException} if the
      * file system already exists because it was previously created by an
-     * invocation of this method. Once a file system is {@link FileSystem#close
-     * closed} it is provider-dependent if the provider allows a new file system
-     * to be created with the same URI as a file system it previously created.
+     * invocation of this method. Once a file system is {@link
+     * java.nio.file.FileSystem#close closed} it is provider-dependent if the
+     * provider allows a new file system to be created with the same URI as a
+     * file system it previously created.
      *
      * @param   uri
      *          URI reference
@@ -234,20 +232,21 @@
      *
      * <p> This method returns a reference to a {@code FileSystem} that was
      * created by invoking the {@link #newFileSystem(URI,Map) newFileSystem(URI,Map)}
-     * method. File systems created the {@link #newFileSystem(FileRef,Map)
-     * newFileSystem(FileRef,Map)} method are not returned by this method.
+     * method. File systems created the {@link #newFileSystem(Path,Map)
+     * newFileSystem(Path,Map)} method are not returned by this method.
      * The file system is identified by its {@code URI}. Its exact form
      * is highly provider dependent. In the case of the default provider the URI's
      * path component is {@code "/"} and the authority, query and fragment components
      * are undefined (Undefined components are represented by {@code null}).
      *
-     * <p> Once a file system created by this provider is {@link FileSystem#close
-     * closed} it is provider-dependent if this method returns a reference to
-     * the closed file system or throws {@link FileSystemNotFoundException}.
-     * If the provider allows a new file system to be created with the same URI
-     * as a file system it previously created then this method throws the
-     * exception if invoked after the file system is closed (and before a new
-     * instance is created by the {@link #newFileSystem newFileSystem} method).
+     * <p> Once a file system created by this provider is {@link
+     * java.nio.file.FileSystem#close closed} it is provider-dependent if this
+     * method returns a reference to the closed file system or throws {@link
+     * FileSystemNotFoundException}. If the provider allows a new file system to
+     * be created with the same URI as a file system it previously created then
+     * this method throws the exception if invoked after the file system is
+     * closed (and before a new instance is created by the {@link #newFileSystem
+     * newFileSystem} method).
      *
      * <p> If a security manager is installed then a provider implementation
      * may require to check a permission before returning a reference to an
@@ -306,17 +305,16 @@
      *
      * <p> This method is intended for specialized providers of pseudo file
      * systems where the contents of one or more files is treated as a file
-     * system. The {@code file} parameter is a reference to an existing file
-     * and the {@code env} parameter is a map of provider specific properties to
-     * configure the file system.
+     * system. The {@code env} parameter is a map of provider specific properties
+     * to configure the file system.
      *
      * <p> If this provider does not support the creation of such file systems
      * or if the provider does not recognize the file type of the given file then
      * it throws {@code UnsupportedOperationException}. The default implementation
      * of this method throws {@code UnsupportedOperationException}.
      *
-     * @param   file
-     *          The file
+     * @param   path
+     *          The path to the file
      * @param   env
      *          A map of provider specific properties to configure the file system;
      *          may be empty
@@ -336,32 +334,121 @@
      *          If a security manager is installed and it denies an unspecified
      *          permission.
      */
-    public FileSystem newFileSystem(FileRef file, Map<String,?> env)
+    public FileSystem newFileSystem(Path path, Map<String,?> env)
         throws IOException
     {
         throw new UnsupportedOperationException();
     }
 
     /**
-     * Opens or creates a file for reading and/or writing, returning a file
-     * channel to access the file.
+     * Opens a file, returning an input stream to read from the file. This
+     * method works in exactly the manner specified by the {@link
+     * Files#newInputStream} method.
+     *
+     * <p> The default implementation of this method opens a channel to the file
+     * as if by invoking the {@link #newByteChannel} method and constructs a
+     * stream that reads bytes from the channel. This method should be overridden
+     * where appropriate.
+     *
+     * @param   path
+     *          the path to the file to open
+     * @param   options
+     *          options specifying how the file is opened
+     *
+     * @return  a new input stream
      *
-     * <p> This method is invoked by the {@link FileChannel#open(Path,Set,FileAttribute[])
-     * FileChannel.open} method to open a file channel. A provider that does not
-     * support all the features required to construct a file channel throws
-     * {@code UnsupportedOperationException}. The default provider is required
-     * to support the creation of file channels. When not overridden, the
-     * default implementation throws {@code UnsupportedOperationException}.
+     * @throws  IllegalArgumentException
+     *          if an invalid combination of options is specified
+     * @throws  UnsupportedOperationException
+     *          if an unsupported option is specified
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
+     *          method is invoked to check read access to the file.
+     */
+    public InputStream newInputStream(Path path, OpenOption... options)
+        throws IOException
+    {
+        if (options.length > 0) {
+            for (OpenOption opt: options) {
+                if (opt != StandardOpenOption.READ)
+                    throw new UnsupportedOperationException("'" + opt + "' not allowed");
+            }
+        }
+        return Channels.newInputStream(Files.newByteChannel(path));
+    }
+
+    /**
+     * Opens or creates a file, returning an output stream that may be used to
+     * write bytes to the file. This method works in exactly the manner
+     * specified by the {@link Files#newOutputStream} method.
+     *
+     * <p> The default implementation of this method opens a channel to the file
+     * as if by invoking the {@link #newByteChannel} method and constructs a
+     * stream that writes bytes to the channel. This method should be overridden
+     * where appropriate.
      *
      * @param   path
-     *          The path of the file to open or create
+     *          the path to the file to open or create
      * @param   options
-     *          Options specifying how the file is opened
+     *          options specifying how the file is opened
+     *
+     * @return  a new output stream
+     *
+     * @throws  IllegalArgumentException
+     *          if {@code options} contains an invalid combination of options
+     * @throws  UnsupportedOperationException
+     *          if an unsupported option is specified
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkWrite(String) checkWrite}
+     *          method is invoked to check write access to the file. The {@link
+     *          SecurityManager#checkDelete(String) checkDelete} method is
+     *          invoked to check delete access if the file is opened with the
+     *          {@code DELETE_ON_CLOSE} option.
+     */
+    public OutputStream newOutputStream(Path path, OpenOption... options)
+        throws IOException
+    {
+        int len = options.length;
+        Set<OpenOption> opts = new HashSet<OpenOption>(len + 3);
+        if (len == 0) {
+            opts.add(StandardOpenOption.CREATE);
+            opts.add(StandardOpenOption.TRUNCATE_EXISTING);
+        } else {
+            for (OpenOption opt: options) {
+                if (opt == StandardOpenOption.READ)
+                    throw new IllegalArgumentException("READ not allowed");
+                opts.add(opt);
+            }
+        }
+        opts.add(StandardOpenOption.WRITE);
+        return Channels.newOutputStream(newByteChannel(path, opts));
+    }
+
+    /**
+     * Opens or creates a file for reading and/or writing, returning a file
+     * channel to access the file. This method works in exactly the manner
+     * specified by the {@link FileChannel#open(Path,Set,FileAttribute[])
+     * FileChannel.open} method. A provider that does not support all the
+     * features required to construct a file channel throws {@code
+     * UnsupportedOperationException}. The default provider is required to
+     * support the creation of file channels. When not overridden, the default
+     * implementation throws {@code UnsupportedOperationException}.
+     *
+     * @param   path
+     *          the path of the file to open or create
+     * @param   options
+     *          options specifying how the file is opened
      * @param   attrs
-     *          An optional list of file attributes to set atomically when
+     *          an optional list of file attributes to set atomically when
      *          creating the file
      *
-     * @return  A new file channel
+     * @return  a new file channel
      *
      * @throws  IllegalArgumentException
      *          If the set contains an invalid combination of options
@@ -387,11 +474,10 @@
 
     /**
      * Opens or creates a file for reading and/or writing, returning an
-     * asynchronous file channel to access the file.
-     *
-     * <p> This method is invoked by the {@link
+     * asynchronous file channel to access the file. This method works in
+     * exactly the manner specified by the {@link
      * AsynchronousFileChannel#open(Path,Set,ExecutorService,FileAttribute[])
-     * AsynchronousFileChannel.open} method to open an asynchronous file channel.
+     * AsynchronousFileChannel.open} method.
      * A provider that does not support all the features required to construct
      * an asynchronous file channel throws {@code UnsupportedOperationException}.
      * The default provider is required to support the creation of asynchronous
@@ -399,17 +485,17 @@
      * method throws {@code UnsupportedOperationException}.
      *
      * @param   path
-     *          The path of the file to open or create
+     *          the path of the file to open or create
      * @param   options
-     *          Options specifying how the file is opened
+     *          options specifying how the file is opened
      * @param   executor
-     *          The thread pool or {@code null} to associate the channel with
+     *          the thread pool or {@code null} to associate the channel with
      *          the default thread pool
      * @param   attrs
-     *          An optional list of file attributes to set atomically when
+     *          an optional list of file attributes to set atomically when
      *          creating the file
      *
-     * @return  A new asynchronous file channel
+     * @return  a new asynchronous file channel
      *
      * @throws  IllegalArgumentException
      *          If the set contains an invalid combination of options
@@ -434,4 +520,569 @@
     {
         throw new UnsupportedOperationException();
     }
+
+    /**
+     * Opens or creates a file, returning a seekable byte channel to access the
+     * file. This method works in exactly the manner specified by the {@link
+     * Files#newByteChannel(Path,Set,FileAttribute[])} method.
+     *
+     * @param   path
+     *          the path to the file to open or create
+     * @param   options
+     *          options specifying how the file is opened
+     * @param   attrs
+     *          an optional list of file attributes to set atomically when
+     *          creating the file
+     *
+     * @return  a new seekable byte channel
+     *
+     * @throws  IllegalArgumentException
+     *          if the set contains an invalid combination of options
+     * @throws  UnsupportedOperationException
+     *          if an unsupported open option is specified or the array contains
+     *          attributes that cannot be set atomically when creating the file
+     * @throws  FileAlreadyExistsException
+     *          if a file of that name already exists and the {@link
+     *          StandardOpenOption#CREATE_NEW CREATE_NEW} option is specified
+     *          <i>(optional specific exception)</i>
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
+     *          method is invoked to check read access to the path if the file is
+     *          opened for reading. The {@link SecurityManager#checkWrite(String)
+     *          checkWrite} method is invoked to check write access to the path
+     *          if the file is opened for writing. The {@link
+     *          SecurityManager#checkDelete(String) checkDelete} method is
+     *          invoked to check delete access if the file is opened with the
+     *          {@code DELETE_ON_CLOSE} option.
+     */
+    public abstract SeekableByteChannel newByteChannel(Path path,
+        Set<? extends OpenOption> options, FileAttribute<?>... attrs) throws IOException;
+
+    /**
+     * Opens a directory, returning a {@code DirectoryStream} to iterate over
+     * the entries in the directory. This method works in exactly the manner
+     * specified by the {@link
+     * Files#newDirectoryStream(java.nio.file.Path, java.nio.file.DirectoryStream.Filter)}
+     * method.
+     *
+     * @param   dir
+     *          the path to the directory
+     * @param   filter
+     *          the directory stream filter
+     *
+     * @return  a new and open {@code DirectoryStream} object
+     *
+     * @throws  NotDirectoryException
+     *          if the file could not otherwise be opened because it is not
+     *          a directory <i>(optional specific exception)</i>
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
+     *          method is invoked to check read access to the directory.
+     */
+    public abstract DirectoryStream<Path> newDirectoryStream(Path dir,
+         DirectoryStream.Filter<? super Path> filter) throws IOException;
+
+    /**
+     * Creates a new directory. This method works in exactly the manner
+     * specified by the {@link Files#createDirectory} method.
+     *
+     * @param   dir
+     *          the directory to create
+     * @param   attrs
+     *          an optional list of file attributes to set atomically when
+     *          creating the directory
+     *
+     * @throws  UnsupportedOperationException
+     *          if the array contains an attribute that cannot be set atomically
+     *          when creating the directory
+     * @throws  FileAlreadyExistsException
+     *          if a directory could not otherwise be created because a file of
+     *          that name already exists <i>(optional specific exception)</i>
+     * @throws  IOException
+     *          if an I/O error occurs or the parent directory does not exist
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkWrite(String) checkWrite}
+     *          method is invoked to check write access to the new directory.
+     */
+    public abstract void createDirectory(Path dir, FileAttribute<?>... attrs)
+        throws IOException;
+
+    /**
+     * Creates a symbolic link to a target. This method works in exactly the
+     * manner specified by the {@link Files#createSymbolicLink} method.
+     *
+     * <p> The default implementation of this method throws {@code
+     * UnsupportedOperationException}.
+     *
+     * @param   link
+     *          the path of the symbolic link to create
+     * @param   target
+     *          the target of the symbolic link
+     * @param   attrs
+     *          the array of attributes to set atomically when creating the
+     *          symbolic link
+     *
+     * @throws  UnsupportedOperationException
+     *          if the implementation does not support symbolic links or the
+     *          array contains an attribute that cannot be set atomically when
+     *          creating the symbolic link
+     * @throws  FileAlreadyExistsException
+     *          if a file with the name already exists <i>(optional specific
+     *          exception)</i>
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager
+     *          is installed, it denies {@link LinkPermission}<tt>("symbolic")</tt>
+     *          or its {@link SecurityManager#checkWrite(String) checkWrite}
+     *          method denies write access to the path of the symbolic link.
+     */
+    public void createSymbolicLink(Path link, Path target, FileAttribute<?>... attrs)
+        throws IOException
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Creates a new link (directory entry) for an existing file. This method
+     * works in exactly the manner specified by the {@link Files#createLink}
+     * method.
+     *
+     * <p> The default implementation of this method throws {@code
+     * UnsupportedOperationException}.
+     *
+     * @param   link
+     *          the link (directory entry) to create
+     * @param   existing
+     *          a path to an existing file
+     *
+     * @throws  UnsupportedOperationException
+     *          if the implementation does not support adding an existing file
+     *          to a directory
+     * @throws  FileAlreadyExistsException
+     *          if the entry could not otherwise be created because a file of
+     *          that name already exists <i>(optional specific exception)</i>
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager
+     *          is installed, it denies {@link LinkPermission}<tt>("hard")</tt>
+     *          or its {@link SecurityManager#checkWrite(String) checkWrite}
+     *          method denies write access to either the  link or the
+     *          existing file.
+     */
+    public void createLink(Path link, Path existing) throws IOException {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Deletes a file. This method works in exactly the  manner specified by the
+     * {@link Files#delete} method.
+     *
+     * @param   path
+     *          the path to the file to delete
+     *
+     * @throws  NoSuchFileException
+     *          if the file does not exist <i>(optional specific exception)</i>
+     * @throws  DirectoryNotEmptyException
+     *          if the file is a directory and could not otherwise be deleted
+     *          because the directory is not empty <i>(optional specific
+     *          exception)</i>
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkDelete(String)} method
+     *          is invoked to check delete access to the file
+     */
+    public abstract void delete(Path path) throws IOException;
+
+    /**
+     * Deletes a file if it exists. This method works in exactly the manner
+     * specified by the {@link Files#deleteIfExists} method.
+     *
+     * <p> The default implementation of this method simply invokes {@link
+     * #delete} ignoring the {@code NoSuchFileException} when the file does not
+     * exist. It may be overridden where appropriate.
+     *
+     * @param   path
+     *          the path to the file to delete
+     *
+     * @return  {@code true} if the file was deleted by this method; {@code
+     *          false} if the file could not be deleted because it did not
+     *          exist
+     *
+     * @throws  DirectoryNotEmptyException
+     *          if the file is a directory and could not otherwise be deleted
+     *          because the directory is not empty <i>(optional specific
+     *          exception)</i>
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkDelete(String)} method
+     *          is invoked to check delete access to the file
+     */
+    public boolean deleteIfExists(Path path) throws IOException {
+        try {
+            delete(path);
+            return true;
+        } catch (NoSuchFileException ignore) {
+            return false;
+        }
+    }
+
+    /**
+     * Reads the target of a symbolic link. This method works in exactly the
+     * manner specified by the {@link Files#readSymbolicLink} method.
+     *
+     * <p> The default implementation of this method throws {@code
+     * UnsupportedOperationException}.
+     *
+     * @param   link
+     *          the path to the symbolic link
+     *
+     * @throws  UnsupportedOperationException
+     *          if the implementation does not support symbolic links
+     * @throws  NotLinkException
+     *          if the target could otherwise not be read because the file
+     *          is not a symbolic link <i>(optional specific exception)</i>
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager
+     *          is installed, it checks that {@code FilePermission} has been
+     *          granted with the "{@code readlink}" action to read the link.
+     */
+    public Path readSymbolicLink(Path link) throws IOException {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Copy a file to a target file. This method works in exactly the manner
+     * specified by the {@link Files#copy(Path,Path,CopyOption[])} method
+     * except that both the source and target paths must be associated with
+     * this provider.
+     *
+     * @param   source
+     *          the path to the file to copy
+     * @param   target
+     *          the path to the target file
+     * @param   options
+     *          options specifying how the copy should be done
+     *
+     * @throws  UnsupportedOperationException
+     *          if the array contains a copy option that is not supported
+     * @throws  FileAlreadyExistsException
+     *          if the target file exists but cannot be replaced because the
+     *          {@code REPLACE_EXISTING} option is not specified <i>(optional
+     *          specific exception)</i>
+     * @throws  DirectoryNotEmptyException
+     *          the {@code REPLACE_EXISTING} option is specified but the file
+     *          cannot be replaced because it is a non-empty directory
+     *          <i>(optional specific exception)</i>
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
+     *          method is invoked to check read access to the source file, the
+     *          {@link SecurityManager#checkWrite(String) checkWrite} is invoked
+     *          to check write access to the target file. If a symbolic link is
+     *          copied the security manager is invoked to check {@link
+     *          LinkPermission}{@code ("symbolic")}.
+     */
+    public abstract void copy(Path source, Path target, CopyOption... options)
+        throws IOException;
+
+    /**
+     * Move or rename a file to a target file. This method works in exactly the
+     * manner specified by the {@link Files#move} method except that both the
+     * source and target paths must be associated with this provider.
+     *
+     * @param   source
+     *          the path to the file to move
+     * @param   target
+     *          the path to the target file
+     * @param   options
+     *          options specifying how the move should be done
+     *
+     * @throws  UnsupportedOperationException
+     *          if the array contains a copy option that is not supported
+     * @throws  FileAlreadyExistsException
+     *          if the target file exists but cannot be replaced because the
+     *          {@code REPLACE_EXISTING} option is not specified <i>(optional
+     *          specific exception)</i>
+     * @throws  DirectoryNotEmptyException
+     *          the {@code REPLACE_EXISTING} option is specified but the file
+     *          cannot be replaced because it is a non-empty directory
+     *          <i>(optional specific exception)</i>
+     * @throws  AtomicMoveNotSupportedException
+     *          if the options array contains the {@code ATOMIC_MOVE} option but
+     *          the file cannot be moved as an atomic file system operation.
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkWrite(String) checkWrite}
+     *          method is invoked to check write access to both the source and
+     *          target file.
+     */
+    public abstract void move(Path source, Path target, CopyOption... options)
+        throws IOException;
+
+    /**
+     * Tests if two paths locate the same file. This method works in exactly the
+     * manner specified by the {@link Files#isSameFile} method.
+     *
+     * @param   path
+     *          one path to the file
+     * @param   path2
+     *          the other path
+     *
+     * @return  {@code true} if, and only if, the two paths locate the same file
+     *
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
+     *          method is invoked to check read access to both files.
+     */
+    public abstract boolean isSameFile(Path path, Path path2)
+        throws IOException;
+
+    /**
+     * Tells whether or not a file is considered <em>hidden</em>. This method
+     * works in exactly the manner specified by the {@link Files#isHidden}
+     * method.
+     *
+     * <p> This method is invoked by the {@link Files#isHidden isHidden} method.
+     *
+     * @param   path
+     *          the path to the file to test
+     *
+     * @return  {@code true} if the file is considered hidden
+     *
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
+     *          method is invoked to check read access to the file.
+     */
+    public abstract boolean isHidden(Path path) throws IOException;
+
+    /**
+     * Returns the {@link FileStore} representing the file store where a file
+     * is located. This method works in exactly the manner specified by the
+     * {@link Files#getFileStore} method.
+     *
+     * @param   path
+     *          the path to the file
+     *
+     * @return  the file store where the file is stored
+     *
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
+     *          method is invoked to check read access to the file, and in
+     *          addition it checks {@link RuntimePermission}<tt>
+     *          ("getFileStoreAttributes")</tt>
+     */
+    public abstract FileStore getFileStore(Path path) throws IOException;
+
+    /**
+     * Checks the existence, and optionally the accessibility, of a file.
+     *
+     * <p> This method may be used by the {@link Files#isReadable isReadable},
+     * {@link Files#isWritable isWritable} and {@link Files#isExecutable
+     * isExecutable} methods to check the accessibility of a file.
+     *
+     * <p> This method checks the existence of a file and that this Java virtual
+     * machine has appropriate privileges that would allow it access the file
+     * according to all of access modes specified in the {@code modes} parameter
+     * as follows:
+     *
+     * <table border=1 cellpadding=5 summary="">
+     * <tr> <th>Value</th> <th>Description</th> </tr>
+     * <tr>
+     *   <td> {@link AccessMode#READ READ} </td>
+     *   <td> Checks that the file exists and that the Java virtual machine has
+     *     permission to read the file. </td>
+     * </tr>
+     * <tr>
+     *   <td> {@link AccessMode#WRITE WRITE} </td>
+     *   <td> Checks that the file exists and that the Java virtual machine has
+     *     permission to write to the file, </td>
+     * </tr>
+     * <tr>
+     *   <td> {@link AccessMode#EXECUTE EXECUTE} </td>
+     *   <td> Checks that the file exists and that the Java virtual machine has
+     *     permission to {@link Runtime#exec execute} the file. The semantics
+     *     may differ when checking access to a directory. For example, on UNIX
+     *     systems, checking for {@code EXECUTE} access checks that the Java
+     *     virtual machine has permission to search the directory in order to
+     *     access file or subdirectories. </td>
+     * </tr>
+     * </table>
+     *
+     * <p> If the {@code modes} parameter is of length zero, then the existence
+     * of the file is checked.
+     *
+     * <p> This method follows symbolic links if the file referenced by this
+     * object is a symbolic link. Depending on the implementation, this method
+     * may require to read file permissions, access control lists, or other
+     * file attributes in order to check the effective access to the file. To
+     * determine the effective access to a file may require access to several
+     * attributes and so in some implementations this method may not be atomic
+     * with respect to other file system operations.
+     *
+     * @param   path
+     *          the path to the file to check
+     * @param   modes
+     *          The access modes to check; may have zero elements
+     *
+     * @throws  UnsupportedOperationException
+     *          an implementation is required to support checking for
+     *          {@code READ}, {@code WRITE}, and {@code EXECUTE} access. This
+     *          exception is specified to allow for the {@code Access} enum to
+     *          be extended in future releases.
+     * @throws  NoSuchFileException
+     *          if a file does not exist <i>(optional specific exception)</i>
+     * @throws  AccessDeniedException
+     *          the requested access would be denied or the access cannot be
+     *          determined because the Java virtual machine has insufficient
+     *          privileges or other reasons. <i>(optional specific exception)</i>
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, the {@link SecurityManager#checkRead(String) checkRead}
+     *          is invoked when checking read access to the file or only the
+     *          existence of the file, the {@link SecurityManager#checkWrite(String)
+     *          checkWrite} is invoked when checking write access to the file,
+     *          and {@link SecurityManager#checkExec(String) checkExec} is invoked
+     *          when checking execute access.
+     */
+    public abstract void checkAccess(Path path, AccessMode... modes)
+        throws IOException;
+
+    /**
+     * Returns a file attribute view of a given type. This method works in
+     * exactly the manner specified by the {@link Files#getFileAttributeView}
+     * method.
+     *
+     * @param   path
+     *          the path to the file
+     * @param   type
+     *          the {@code Class} object corresponding to the file attribute view
+     * @param   options
+     *          options indicating how symbolic links are handled
+     *
+     * @return  a file attribute view of the specified type, or {@code null} if
+     *          the attribute view type is not available
+     */
+    public abstract <V extends FileAttributeView> V
+        getFileAttributeView(Path path, Class<V> type, LinkOption... options);
+
+    /**
+     * Reads a file's attributes as a bulk operation. This method works in
+     * exactly the manner specified by the {@link
+     * Files#readAttributes(Path,Class,LinkOption[])} method.
+     *
+     * @param   path
+     *          the path to the file
+     * @param   type
+     *          the {@code Class} of the file attributes required
+     *          to read
+     * @param   options
+     *          options indicating how symbolic links are handled
+     *
+     * @return  the file attributes
+     *
+     * @throws  UnsupportedOperationException
+     *          if an attributes of the given type are not supported
+     * @throws  IOException
+     *          if an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, a security manager is
+     *          installed, its {@link SecurityManager#checkRead(String) checkRead}
+     *          method is invoked to check read access to the file
+     */
+    public abstract <A extends BasicFileAttributes> A
+        readAttributes(Path path, Class<A> type, LinkOption... options) throws IOException;
+
+    /**
+     * Reads a set of file attributes as a bulk operation. This method works in
+     * exactly the manner specified by the {@link
+     * Files#readAttributes(Path,String,LinkOption[])} method.
+     *
+     * @param   path
+     *          the path to the file
+     * @param   attributes
+     *          the attributes to read
+     * @param   options
+     *          options indicating how symbolic links are handled
+     *
+     * @return  a map of the attributes returned; may be empty. The map's keys
+     *          are the attribute names, its values are the attribute values
+     *
+     * @throws  IOException
+     *          If an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, its {@link SecurityManager#checkRead(String) checkRead}
+     *          method denies read access to the file. If this method is invoked
+     *          to read security sensitive attributes then the security manager
+     *          may be invoke to check for additional permissions.
+     */
+    public abstract Map<String,Object> readAttributes(Path path, String attributes,
+                                                      LinkOption... options)
+        throws IOException;
+
+    /**
+     * Sets the value of a file attribute. This method works in exactly the
+     * manner specified by the {@link Files#setAttribute} method.
+     *
+     * @param   path
+     *          the path to the file
+     * @param   attribute
+     *          the attribute to set
+     * @param   value
+     *          the attribute value
+     * @param   options
+     *          options indicating how symbolic links are handled
+     *
+     * @throws  UnsupportedOperationException
+     *          if the attribute view is not available or it does not support
+     *          updating the attribute
+     * @throws  IllegalArgumentException
+     *          if the attribute value is of the correct type but has an
+     *          inappropriate value
+     * @throws  ClassCastException
+     *          If the attribute value is not of the expected type or is a
+     *          collection containing elements that are not of the expected
+     *          type
+     * @throws  IOException
+     *          If an I/O error occurs
+     * @throws  SecurityException
+     *          In the case of the default provider, and a security manager is
+     *          installed, its {@link SecurityManager#checkWrite(String) checkWrite}
+     *          method denies write access to the file. If this method is invoked
+     *          to set security sensitive attributes then the security manager
+     *          may be invoked to check for additional permissions.
+     */
+    public abstract void setAttribute(Path path, String attribute,
+                                      Object value, LinkOption... options)
+        throws IOException;
 }
--- a/jdk/src/share/classes/java/nio/file/spi/FileTypeDetector.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/nio/file/spi/FileTypeDetector.java	Wed Jul 05 17:35:13 2017 +0200
@@ -25,7 +25,7 @@
 
 package java.nio.file.spi;
 
-import java.nio.file.FileRef;
+import java.nio.file.Path;
 import java.io.IOException;
 
 /**
@@ -42,7 +42,7 @@
  * href="../attribute/package-summary.html"> attribute</a> or the bytes in a
  * file may be examined to guess its file type.
  *
- * @see java.nio.file.Files#probeContentType(FileRef)
+ * @see java.nio.file.Files#probeContentType(Path)
  *
  * @since 1.7
  */
@@ -83,8 +83,8 @@
      * Message Bodies</i></a>. The string must be parsable according to the
      * grammar in the RFC 2045.
      *
-     * @param   file
-     *          The file to probe
+     * @param   path
+     *          the path to the file to probe
      *
      * @return  The content type or {@code null} if the file type is not
      *          recognized
@@ -101,6 +101,6 @@
      *
      * @see java.nio.file.Files#probeContentType
      */
-    public abstract String probeContentType(FileRef file)
+    public abstract String probeContentType(Path path)
         throws IOException;
 }
--- a/jdk/src/share/classes/java/security/AlgorithmParameterGenerator.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/security/AlgorithmParameterGenerator.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, 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
@@ -66,6 +66,20 @@
  * default modulus prime size of 1024 bits for the generation of DSA
  * parameters.
  *
+ * <p> Every implementation of the Java platform is required to support the
+ * following standard <code>AlgorithmParameterGenerator</code> algorithms and
+ * keysizes in parentheses:
+ * <ul>
+ * <li><tt>DiffieHellman</tt> (1024)</li>
+ * <li><tt>DSA</tt> (1024)</li>
+ * </ul>
+ * These algorithms are described in the <a href=
+ * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameterGenerator">
+ * AlgorithmParameterGenerator section</a> of the
+ * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Consult the release documentation for your implementation to see if any
+ * other algorithms are supported.
+ *
  * @author Jan Luehe
  *
  *
@@ -126,9 +140,9 @@
      *
      * @param algorithm the name of the algorithm this
      * parameter generator is associated with.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the AlgorithmParameterGenerator section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameterGenerator">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @return the new AlgorithmParameterGenerator object.
@@ -168,9 +182,9 @@
      *
      * @param algorithm the name of the algorithm this
      * parameter generator is associated with.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the AlgorithmParameterGenerator section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameterGenerator">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @param provider the string name of the Provider.
@@ -214,9 +228,9 @@
      *
      * @param algorithm the string name of the algorithm this
      * parameter generator is associated with.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the AlgorithmParameterGenerator section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameterGenerator">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @param provider the Provider object.
--- a/jdk/src/share/classes/java/security/AlgorithmParameters.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/security/AlgorithmParameters.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, 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
@@ -46,6 +46,22 @@
  * <code>getParameterSpec</code>, and a byte encoding of the parameters is
  * obtained via a call to <code>getEncoded</code>.
  *
+ * <p> Every implementation of the Java platform is required to support the
+ * following standard <code>AlgorithmParameters</code> algorithms:
+ * <ul>
+ * <li><tt>AES</tt></li>
+ * <li><tt>DES</tt></li>
+ * <li><tt>DESede</tt></li>
+ * <li><tt>DiffieHellman</tt></li>
+ * <li><tt>DSA</tt></li>
+ * </ul>
+ * These algorithms are described in the <a href=
+ * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameters">
+ * AlgorithmParameters section</a> of the
+ * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Consult the release documentation for your implementation to see if any
+ * other algorithms are supported.
+ *
  * @author Jan Luehe
  *
  *
@@ -111,9 +127,9 @@
      * parameter encoding.
      *
      * @param algorithm the name of the algorithm requested.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the AlgorithmParameters section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameters">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @return the new parameter object.
@@ -153,9 +169,9 @@
      * parameter encoding.
      *
      * @param algorithm the name of the algorithm requested.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the AlgorithmParameters section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameters">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @param provider the name of the provider.
@@ -200,9 +216,9 @@
      * parameter encoding.
      *
      * @param algorithm the name of the algorithm requested.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the AlgorithmParameters section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameters">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @param provider the name of the provider.
--- a/jdk/src/share/classes/java/security/KeyFactory.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/security/KeyFactory.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, 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
@@ -67,9 +67,22 @@
  * sig.verify(signature);
  * </pre>
  *
+ * <p> Every implementation of the Java platform is required to support the
+ * following standard <code>KeyFactory</code> algorithms:
+ * <ul>
+ * <li><tt>DiffieHellman</tt></li>
+ * <li><tt>DSA</tt></li>
+ * <li><tt>RSA</tt></li>
+ * </ul>
+ * These algorithms are described in the <a href=
+ * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyFactory">
+ * KeyFactory section</a> of the
+ * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Consult the release documentation for your implementation to see if any
+ * other algorithms are supported.
+ *
  * @author Jan Luehe
  *
- *
  * @see Key
  * @see PublicKey
  * @see PrivateKey
@@ -141,9 +154,9 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * @param algorithm the name of the requested key algorithm.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the KeyFactory section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyFactory">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @return the new KeyFactory object.
@@ -172,9 +185,9 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * @param algorithm the name of the requested key algorithm.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the KeyFactory section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyFactory">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @param provider the name of the provider.
@@ -211,9 +224,9 @@
      * does not have to be registered in the provider list.
      *
      * @param algorithm the name of the requested key algorithm.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the KeyFactory section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyFactory">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @param provider the provider.
--- a/jdk/src/share/classes/java/security/KeyPairGenerator.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/security/KeyPairGenerator.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, 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
@@ -105,9 +105,23 @@
  * the superclass are intended for cryptographic service providers who wish to
  * supply their own implementations of key pair generators.
  *
+ * <p> Every implementation of the Java platform is required to support the
+ * following standard <code>KeyPairGenerator</code> algorithms and keysizes in
+ * parentheses:
+ * <ul>
+ * <li><tt>DiffieHellman</tt> (1024)</li>
+ * <li><tt>DSA</tt> (1024)</li>
+ * <li><tt>RSA</tt> (1024, 2048)</li>
+ * </ul>
+ * These algorithms are described in the <a href=
+ * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyPairGenerator">
+ * KeyPairGenerator section</a> of the
+ * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Consult the release documentation for your implementation to see if any
+ * other algorithms are supported.
+ *
  * @author Benjamin Renaud
  *
- *
  * @see java.security.spec.AlgorithmParameterSpec
  */
 
@@ -122,9 +136,9 @@
      * Creates a KeyPairGenerator object for the specified algorithm.
      *
      * @param algorithm the standard string name of the algorithm.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the KeyPairGenerator section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyPairGenerator">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      */
     protected KeyPairGenerator(String algorithm) {
@@ -133,9 +147,9 @@
 
     /**
      * Returns the standard name of the algorithm for this key pair generator.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the KeyPairGenerator section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyPairGenerator">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @return the standard string name of the algorithm.
@@ -171,9 +185,9 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * @param algorithm the standard string name of the algorithm.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the KeyPairGenerator section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyPairGenerator">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @return the new KeyPairGenerator object.
@@ -227,9 +241,9 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * @param algorithm the standard string name of the algorithm.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the KeyPairGenerator section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyPairGenerator">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @param provider the string name of the provider.
@@ -266,9 +280,9 @@
      * does not have to be registered in the provider list.
      *
      * @param algorithm the standard string name of the algorithm.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the KeyPairGenerator section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyPairGenerator">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @param provider the provider.
--- a/jdk/src/share/classes/java/security/KeyStore.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/security/KeyStore.java	Wed Jul 05 17:35:13 2017 +0200
@@ -164,9 +164,20 @@
  * different passwords or other protection parameters
  * may also be used.
  *
+ * <p> Every implementation of the Java platform is required to support
+ * the following standard <code>KeyStore</code> type:
+ * <ul>
+ * <li><tt>PKCS12</tt></li>
+ * </ul>
+ * This type is described in the <a href=
+ * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyStore">
+ * KeyStore section</a> of the
+ * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Consult the release documentation for your implementation to see if any
+ * other types are supported.
+ *
  * @author Jan Luehe
  *
- *
  * @see java.security.PrivateKey
  * @see javax.crypto.SecretKey
  * @see java.security.cert.Certificate
@@ -582,9 +593,9 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * @param type the type of keystore.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the KeyStore section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyStore">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard keystore types.
      *
      * @return a keystore object of the specified type.
@@ -620,9 +631,9 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * @param type the type of keystore.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the KeyStore section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyStore">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard keystore types.
      *
      * @param provider the name of the provider.
@@ -663,9 +674,9 @@
      * does not have to be registered in the provider list.
      *
      * @param type the type of keystore.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the KeyStore section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyStore">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard keystore types.
      *
      * @param provider the provider.
--- a/jdk/src/share/classes/java/security/MessageDigest.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/security/MessageDigest.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2010, 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
@@ -37,7 +37,7 @@
 
 /**
  * This MessageDigest class provides applications the functionality of a
- * message digest algorithm, such as MD5 or SHA.
+ * message digest algorithm, such as SHA-1 or SHA-256.
  * Message digests are secure one-way hash functions that take arbitrary-sized
  * data and output a fixed-length hash value.
  *
@@ -81,9 +81,22 @@
  * the superclass are intended for cryptographic service providers who wish to
  * supply their own implementations of message digest algorithms.
  *
+ * <p> Every implementation of the Java platform is required to support
+ * the following standard <code>MessageDigest</code> algorithms:
+ * <ul>
+ * <li><tt>MD5</tt></li>
+ * <li><tt>SHA-1</tt></li>
+ * <li><tt>SHA-256</tt></li>
+ * </ul>
+ * These algorithms are described in the <a href=
+ * "{@docRoot}/../technotes/guides/security/StandardNames.html#MessageDigest">
+ * MessageDigest section</a> of the
+ * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Consult the release documentation for your implementation to see if any
+ * other algorithms are supported.
+ *
  * @author Benjamin Renaud
  *
- *
  * @see DigestInputStream
  * @see DigestOutputStream
  */
@@ -104,9 +117,9 @@
      * Creates a message digest with the specified algorithm name.
      *
      * @param algorithm the standard name of the digest algorithm.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the MessageDigest section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#MessageDigest">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      */
     protected MessageDigest(String algorithm) {
@@ -127,9 +140,9 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * @param algorithm the name of the algorithm requested.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the MessageDigest section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#MessageDigest">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @return a Message Digest object that implements the specified algorithm.
@@ -173,9 +186,9 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * @param algorithm the name of the algorithm requested.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the MessageDigest section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#MessageDigest">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @param provider the name of the provider.
@@ -222,9 +235,9 @@
      * does not have to be registered in the provider list.
      *
      * @param algorithm the name of the algorithm requested.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the MessageDigest section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#MessageDigest">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @param provider the provider.
@@ -439,9 +452,9 @@
      * Returns a string that identifies the algorithm, independent of
      * implementation details. The name should be a standard
      * Java Security name (such as "SHA", "MD5", and so on).
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the MessageDigest section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#MessageDigest">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @return the name of the algorithm
--- a/jdk/src/share/classes/java/security/Policy.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/security/Policy.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, 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
@@ -67,9 +67,6 @@
  * implementation.  In addition, an instance of a Policy object can be
  * constructed by invoking one of the <code>getInstance</code> factory methods
  * with a standard type.  The default policy type is "JavaPolicy".
- * See Appendix A in the <a href="../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
- * Java Cryptography Architecture API Specification &amp; Reference </a>
- * for a list of standard Policy types.
  *
  * <p> Once a Policy instance has been installed (either by default, or by
  * calling <code>setPolicy</code>),
@@ -133,7 +130,7 @@
      * This method first calls
      * <code>SecurityManager.checkPermission</code> with a
      * <code>SecurityPermission("getPolicy")</code> permission
-     * to ensure it's ok to get the Policy object..
+     * to ensure it's ok to get the Policy object.
      *
      * @return the installed Policy.
      *
@@ -340,9 +337,10 @@
      * <p> Note that the list of registered providers may be retrieved via
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
-     * @param type the specified Policy type.  See Appendix A in the
-     *    <a href="../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     *    Java Cryptography Architecture API Specification &amp; Reference </a>
+     * @param type the specified Policy type.  See the Policy section in the
+     *    <a href=
+     *    "{@docRoot}/../technotes/guides/security/StandardNames.html#Policy">
+     *    Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      *    for a list of standard Policy types.
      *
      * @param params parameters for the Policy, which may be null.
@@ -393,9 +391,10 @@
      * <p> Note that the list of registered providers may be retrieved via
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
-     * @param type the specified Policy type.  See Appendix A in the
-     *    <a href="../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     *    Java Cryptography Architecture API Specification &amp; Reference </a>
+     * @param type the specified Policy type.  See the Policy section in the
+     *    <a href=
+     *    "{@docRoot}/../technotes/guides/security/StandardNames.html#Policy">
+     *    Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      *    for a list of standard Policy types.
      *
      * @param params parameters for the Policy, which may be null.
@@ -456,9 +455,10 @@
      * object is returned.  Note that the specified Provider object
      * does not have to be registered in the provider list.
      *
-     * @param type the specified Policy type.  See Appendix A in the
-     *    <a href="../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     *    Java Cryptography Architecture API Specification &amp; Reference </a>
+     * @param type the specified Policy type.  See the Policy section in the
+     *    <a href=
+     *    "{@docRoot}/../technotes/guides/security/StandardNames.html#Policy">
+     *    Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      *    for a list of standard Policy types.
      *
      * @param params parameters for the Policy, which may be null.
--- a/jdk/src/share/classes/java/security/SecureRandom.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/security/SecureRandom.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2010, 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
@@ -133,9 +133,9 @@
      * <p> Note that the list of registered providers may be retrieved via
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
-     * <p> See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * <p> See the SecureRandom section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecureRandom">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard RNG algorithm names.
      *
      * <p> The returned SecureRandom object has not been seeded.  To seed the
@@ -171,9 +171,9 @@
      * <p> Note that the list of registered providers may be retrieved via
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
-     * <p> See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * <p> See the SecureRandom section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecureRandom">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard RNG algorithm names.
      *
      * @param seed the seed.
@@ -256,9 +256,9 @@
      * previously called.
      *
      * @param algorithm the name of the RNG algorithm.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the SecureRandom section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecureRandom">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard RNG algorithm names.
      *
      * @return the new SecureRandom object.
@@ -299,9 +299,9 @@
      * previously called.
      *
      * @param algorithm the name of the RNG algorithm.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the SecureRandom section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecureRandom">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard RNG algorithm names.
      *
      * @param provider the name of the provider.
@@ -347,9 +347,9 @@
      * previously called.
      *
      * @param algorithm the name of the RNG algorithm.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the SecureRandom section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecureRandom">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard RNG algorithm names.
      *
      * @param provider the provider.
--- a/jdk/src/share/classes/java/security/Security.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/security/Security.java	Wed Jul 05 17:35:13 2017 +0200
@@ -277,10 +277,11 @@
 
     /**
      * Gets a specified property for an algorithm. The algorithm name
-     * should be a standard name. See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * should be a standard name. See the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
+     *
      * One possible use is by specialized algorithm parsers, which may map
      * classes to algorithms which they understand (much like Key parsers
      * do).
@@ -513,9 +514,9 @@
      *
      * </ul>
      *
-     * <p> See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * <p> See the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard cryptographic service names, standard
      * algorithm names and standard attribute names.
      *
@@ -581,9 +582,9 @@
      * constraint expressed by the specified attribute name/value pair.
      * </ul>
      *
-     * <p> See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * <p> See the <a href=
+     * "../../../technotes/guides/security/StandardNames.html">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard cryptographic service names, standard
      * algorithm names and standard attribute names.
      *
--- a/jdk/src/share/classes/java/security/Signature.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/security/Signature.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2010, 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
@@ -47,7 +47,7 @@
 import sun.security.jca.GetInstance.Instance;
 
 /**
- * This Signature class is used to provide applications the functionality
+ * The Signature class is used to provide applications the functionality
  * of a digital signature algorithm. Digital signatures are used for
  * authentication and integrity assurance of digital data.
  *
@@ -98,6 +98,20 @@
  * the superclass are intended for cryptographic service providers who wish to
  * supply their own implementations of digital signature algorithms.
  *
+ * <p> Every implementation of the Java platform is required to support the
+ * following standard <code>Signature</code> algorithms:
+ * <ul>
+ * <li><tt>SHA1withDSA</tt></li>
+ * <li><tt>SHA1withRSA</tt></li>
+ * <li><tt>SHA256withRSA</tt></li>
+ * </ul>
+ * These algorithms are described in the <a href=
+ * "{@docRoot}/../technotes/guides/security/StandardNames.html#Signature">
+ * Signature section</a> of the
+ * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Consult the release documentation for your implementation to see if any
+ * other algorithms are supported.
+ *
  * @author Benjamin Renaud
  *
  */
@@ -144,9 +158,9 @@
      * Creates a Signature object for the specified algorithm.
      *
      * @param algorithm the standard string name of the algorithm.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the Signature section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#Signature">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      */
     protected Signature(String algorithm) {
@@ -184,9 +198,9 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * @param algorithm the standard name of the algorithm requested.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the Signature section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#Signature">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @return the new Signature object.
@@ -303,9 +317,9 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * @param algorithm the name of the algorithm requested.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the Signature section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#Signature">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @param provider the name of the provider.
@@ -353,9 +367,9 @@
      * does not have to be registered in the provider list.
      *
      * @param algorithm the name of the algorithm requested.
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the Signature section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#Signature">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @param provider the provider.
--- a/jdk/src/share/classes/java/security/cert/CertPath.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/security/cert/CertPath.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, 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
@@ -83,6 +83,19 @@
  * may not follow these conventions. PKIX <code>CertPathValidator</code>s will
  * detect any departure from these conventions that cause the certification
  * path to be invalid and throw a <code>CertPathValidatorException</code>.
+ *
+ * <p> Every implementation of the Java platform is required to support the
+ * following standard <code>CertPath</code> encodings:
+ * <ul>
+ * <li><tt>PKCS7</tt></li>
+ * <li><tt>PkiPath</tt></li>
+ * </ul>
+ * These encodings are described in the <a href=
+ * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathEncodings">
+ * CertPath Encodings section</a> of the
+ * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Consult the release documentation for your implementation to see if any
+ * other encodings are supported.
  * <p>
  * <b>Concurrent Access</b>
  * <p>
--- a/jdk/src/share/classes/java/security/cert/CertPathBuilder.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/security/cert/CertPathBuilder.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, 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
@@ -52,6 +52,19 @@
  * result (including the <code>CertPath</code> that was built) is returned
  * in an object that implements the <code>CertPathBuilderResult</code>
  * interface.
+ *
+ * <p> Every implementation of the Java platform is required to support the
+ * following standard <code>CertPathBuilder</code> algorithm:
+ * <ul>
+ * <li><tt>PKIX</tt></li>
+ * </ul>
+ * This algorithm is described in the <a href=
+ * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathBuilder">
+ * CertPathBuilder section</a> of the
+ * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Consult the release documentation for your implementation to see if any
+ * other algorithms are supported.
+ *
  * <p>
  * <b>Concurrent Access</b>
  * <p>
@@ -118,10 +131,10 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * @param algorithm the name of the requested <code>CertPathBuilder</code>
-     *  algorithm.  See Appendix A in the <a href=
-     *  "../../../../technotes/guides/security/certpath/CertPathProgGuide.html#AppA">
-     *  Java Certification Path API Programmer's Guide </a>
-     *  for information about standard algorithm names.
+     *  algorithm.  See the CertPathBuilder section in the <a href=
+     *  "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathBuilder">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * for information about standard algorithm names.
      *
      * @return a <code>CertPathBuilder</code> object that implements the
      *          specified algorithm.
@@ -153,10 +166,10 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * @param algorithm the name of the requested <code>CertPathBuilder</code>
-     *  algorithm.  See Appendix A in the <a href=
-     *  "../../../../technotes/guides/security/certpath/CertPathProgGuide.html#AppA">
-     *  Java Certification Path API Programmer's Guide </a>
-     *  for information about standard algorithm names.
+     *  algorithm.  See the CertPathBuilder section in the <a href=
+     *  "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathBuilder">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * for information about standard algorithm names.
      *
      * @param provider the name of the provider.
      *
@@ -193,10 +206,10 @@
      * does not have to be registered in the provider list.
      *
      * @param algorithm the name of the requested <code>CertPathBuilder</code>
-     *  algorithm.  See Appendix A in the <a href=
-     *  "../../../../technotes/guides/security/certpath/CertPathProgGuide.html#AppA">
-     *  Java Certification Path API Programmer's Guide </a>
-     *  for information about standard algorithm names.
+     *  algorithm.  See the CertPathBuilder section in the <a href=
+     *  "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathBuilder">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * for information about standard algorithm names.
      *
      * @param provider the provider.
      *
--- a/jdk/src/share/classes/java/security/cert/CertPathValidator.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/security/cert/CertPathValidator.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, 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
@@ -53,6 +53,19 @@
  * and an algorithm-specific set of parameters. If successful, the result is
  * returned in an object that implements the
  * <code>CertPathValidatorResult</code> interface.
+ *
+ * <p> Every implementation of the Java platform is required to support the
+ * following standard <code>CertPathValidator</code> algorithm:
+ * <ul>
+ * <li><tt>PKIX</tt></li>
+ * </ul>
+ * This algorithm is described in the <a href=
+ * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathValidator">
+ * CertPathValidator section</a> of the
+ * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Consult the release documentation for your implementation to see if any
+ * other algorithms are supported.
+ *
  * <p>
  * <b>Concurrent Access</b>
  * <p>
@@ -118,10 +131,10 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * @param algorithm the name of the requested <code>CertPathValidator</code>
-     *  algorithm.  See Appendix A in the <a href=
-     *  "../../../../technotes/guides/security/certpath/CertPathProgGuide.html#AppA">
-     *  Java Certification Path API Programmer's Guide </a>
-     *  for information about standard algorithm names.
+     *  algorithm. See the CertPathValidator section in the <a href=
+     *  "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathValidator">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * for information about standard algorithm names.
      *
      * @return a <code>CertPathValidator</code> object that implements the
      *          specified algorithm.
@@ -153,10 +166,10 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * @param algorithm the name of the requested <code>CertPathValidator</code>
-     *  algorithm.  See Appendix A in the <a href=
-     *  "../../../../technotes/guides/security/certpath/CertPathProgGuide.html#AppA">
-     *  Java Certification Path API Programmer's Guide </a>
-     *  for information about standard algorithm names.
+     *  algorithm. See the CertPathValidator section in the <a href=
+     *  "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathValidator">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * for information about standard algorithm names.
      *
      * @param provider the name of the provider.
      *
@@ -193,12 +206,11 @@
      * object is returned.  Note that the specified Provider object
      * does not have to be registered in the provider list.
      *
-     * @param algorithm the name of the requested
-     *  <code>CertPathValidator</code> algorithm.
-     *  See Appendix A in the <a href=
-     *  "../../../../technotes/guides/security/certpath/CertPathProgGuide.html#AppA">
-     *  Java Certification Path API Programmer's Guide </a>
-     *  for information about standard algorithm names.
+     * @param algorithm the name of the requested <code>CertPathValidator</code>
+     * algorithm. See the CertPathValidator section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathValidator">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * for information about standard algorithm names.
      *
      * @param provider the provider.
      *
--- a/jdk/src/share/classes/java/security/cert/CertPathValidatorException.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/security/cert/CertPathValidatorException.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -286,6 +286,11 @@
         /**
          * The signature is invalid.
          */
-        INVALID_SIGNATURE
+        INVALID_SIGNATURE,
+
+        /**
+         * The public key or the signature algorithm has been constrained.
+         */
+        ALGORITHM_CONSTRAINED
     }
 }
--- a/jdk/src/share/classes/java/security/cert/CertStore.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/security/cert/CertStore.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, 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
@@ -58,10 +58,20 @@
  * vast repository of untrusted certificates and CRLs. For example, an LDAP
  * implementation of <code>CertStore</code> provides access to certificates
  * and CRLs stored in one or more directories using the LDAP protocol and the
- * schema as defined in the RFC service attribute. See Appendix A in the
- * <a href= "../../../../technotes/guides/security/certpath/CertPathProgGuide.html#AppA">
- * Java Certification Path API Programmer's Guide</a> for more information about
- * standard <code>CertStore</code> types.
+ * schema as defined in the RFC service attribute.
+ *
+ * <p> Every implementation of the Java platform is required to support the
+ * following standard <code>CertStore</code> type:
+ * <ul>
+ * <li><tt>Collection</tt></li>
+ * </ul>
+ * This type is described in the <a href=
+ * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertStore">
+ * CertStore section</a> of the
+ * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Consult the release documentation for your implementation to see if any
+ * other types are supported.
+ *
  * <p>
  * <b>Concurrent Access</b>
  * <p>
@@ -192,10 +202,10 @@
      * cloned.
      *
      * @param type the name of the requested <code>CertStore</code> type.
-     *  See Appendix A in the <a href=
-     *  "../../../../technotes/guides/security/certpath/CertPathProgGuide.html#AppA">
-     *  Java Certification Path API Programmer's Guide </a>
-     *  for information about standard types.
+     * See the CertStore section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertStore">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * for information about standard types.
      *
      * @param params the initialization parameters (may be <code>null</code>).
      *
@@ -252,10 +262,10 @@
      * cloned.
      *
      * @param type the requested <code>CertStore</code> type.
-     *  See Appendix A in the <a href=
-     *  "../../../../technotes/guides/security/certpath/CertPathProgGuide.html#AppA">
-     *  Java Certification Path API Programmer's Guide </a>
-     *  for information about standard types.
+     * See the CertStore section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertStore">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * for information about standard types.
      *
      * @param params the initialization parameters (may be <code>null</code>).
      *
@@ -310,10 +320,10 @@
      * cloned.
      *
      * @param type the requested <code>CertStore</code> type.
-     *  See Appendix A in the <a href=
-     *  "../../../../technotes/guides/security/certpath/CertPathProgGuide.html#AppA">
-     *  Java Certification Path API Programmer's Guide </a>
-     *  for information about standard types.
+     * See the CertStore section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertStore">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * for information about standard types.
      *
      * @param params the initialization parameters (may be <code>null</code>).
      *
--- a/jdk/src/share/classes/java/security/cert/Certificate.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/security/cert/Certificate.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, 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
@@ -69,9 +69,9 @@
      * Creates a certificate of the specified type.
      *
      * @param type the standard name of the certificate type.
-     * See Appendix A in the <a href=
-     * "../../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the CertificateFactory section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertificateFactory">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard certificate types.
      */
     protected Certificate(String type) {
--- a/jdk/src/share/classes/java/security/cert/CertificateFactory.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/security/cert/CertificateFactory.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2010, 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
@@ -91,11 +91,29 @@
  * }
  * </pre>
  *
+ * <p> Every implementation of the Java platform is required to support the
+ * following standard <code>CertificateFactory</code> type:
+ * <ul>
+ * <li><tt>X.509</tt></li>
+ * </ul>
+ * and the following standard <code>CertPath</code> encodings:
+ * <ul>
+ * <li><tt>PKCS7</tt></li>
+ * <li><tt>PkiPath</tt></li>
+ * </ul>
+ * The type and encodings are described in the <a href=
+ * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertificateFactory">
+ * CertificateFactory section</a> and the <a href=
+ * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathEncodings">
+ * CertPath Encodings section</a> of the
+ * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Consult the release documentation for your implementation to see if any
+ * other types or encodings are supported.
+ *
  * @author Hemma Prafullchandra
  * @author Jan Luehe
  * @author Sean Mullan
  *
- *
  * @see Certificate
  * @see X509Certificate
  * @see CertPath
@@ -146,9 +164,9 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * @param type the name of the requested certificate type.
-     * See Appendix A in the <a href=
-     * "../../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the CertificateFactory section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertificateFactory">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard certificate types.
      *
      * @return a certificate factory object for the specified type.
@@ -184,9 +202,9 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * @param type the certificate type.
-     * See Appendix A in the <a href=
-     * "../../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the CertificateFactory section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertificateFactory">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard certificate types.
      *
      * @param provider the name of the provider.
@@ -228,11 +246,10 @@
      * does not have to be registered in the provider list.
      *
      * @param type the certificate type.
-     * See Appendix A in the <a href=
-     * "../../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
+     * See the CertificateFactory section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertificateFactory">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard certificate types.
-
      * @param provider the provider.
      *
      * @return a certificate factory object for the specified type.
@@ -325,10 +342,10 @@
     /**
      * Returns an iteration of the <code>CertPath</code> encodings supported
      * by this certificate factory, with the default encoding first. See
-     * Appendix A in the
-     * <a href="../../../../technotes/guides/security/certpath/CertPathProgGuide.html#AppA">
-     * Java Certification Path API Programmer's Guide</a> for information about
-     * standard encoding names and their formats.
+     * the CertPath Encodings section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathEncodings">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * for information about standard encoding names and their formats.
      * <p>
      * Attempts to modify the returned <code>Iterator</code> via its
      * <code>remove</code> method result in an
@@ -364,9 +381,10 @@
     /**
      * Generates a <code>CertPath</code> object and initializes it with
      * the data read from the <code>InputStream</code> inStream. The data
-     * is assumed to be in the specified encoding. See Appendix A in the
-     * <a href="../../../../technotes/guides/security/certpath/CertPathProgGuide.html#AppA">
-     * Java Certification Path API Programmer's Guide</a>
+     * is assumed to be in the specified encoding. See
+     * the CertPath Encodings section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathEncodings">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard encoding names and their formats.
      *
      * @param inStream an <code>InputStream</code> containing the data
--- a/jdk/src/share/classes/java/security/cert/CertificateFactorySpi.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/security/cert/CertificateFactorySpi.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2010, 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
@@ -182,9 +182,9 @@
     /**
      * Returns an iteration of the <code>CertPath</code> encodings supported
      * by this certificate factory, with the default encoding first. See
-     * Appendix A in the
-     * <a href="../../../../technotes/guides/security/certpath/CertPathProgGuide.html#AppA">
-     * Java Certification Path API Programmer's Guide</a>
+     * the CertPath Encodings section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathEncodings">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard encoding names.
      * <p>
      * Attempts to modify the returned <code>Iterator</code> via its
--- a/jdk/src/share/classes/java/security/cert/package.html	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/security/cert/package.html	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 1998, 2010, 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
@@ -35,9 +35,15 @@
 <h2>Package Specification</h2>
 
 <ul>
-  <li><a href="../../../../technotes/guides/security/crypto/CryptoSpec.html"><b>Cryptography
-   Architecture</b></a>
-  <li>RFC 3280: Internet X.509 Public Key Infrastructure Certificate and CRL Profile
+  <li><a href="{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html">
+    <b>Java<FONT SIZE=-2><SUP>TM</SUP></FONT>
+    Cryptography Architecture (JCA) Reference Guide</b></a>
+  <li>RFC 3280: Internet X.509 Public Key Infrastructure Certificate and 
+    Certificate Revocation List (CRL) Profile
+  <li><a href="{@docRoot}/../technotes/guides/security/StandardNames.html">
+    <b>Java<FONT SIZE=-2><SUP>TM</SUP></FONT>
+    Cryptography Architecture Standard Algorithm Name
+    Documentation</b></a></li>
 </ul>
 
 <h2>Related Documentation</h2>
@@ -45,11 +51,13 @@
 For information about X.509 certificates and CRLs, please see:
 <ul>
   <li><a href="http://www.ietf.org/rfc/rfc3280.txt">
-http://www.ietf.org/rfc/rfc3280.txt</a>
-  <li><a href="../../../../technotes/guides/security/certpath/CertPathProgGuide.html">
-PKI API Programmer's Guide</a>
-  <li><a href="../../../../technotes/guides/security/cert3.html">
-X.509 Certificates and CRLs</a>
+    http://www.ietf.org/rfc/rfc3280.txt</a>
+  <li><a href=
+    "{@docRoot}/../technotes/guides/security/certpath/CertPathProgGuide.html">
+    <b>Java<FONT SIZE=-2><SUP>TM</SUP></FONT>
+    PKI Programmer's Guide</a>
+  <li><a href="{@docRoot}/../technotes/guides/security/cert3.html">
+    X.509 Certificates and Certificate Revocation Lists (CRLs)</a>
 </ul>
 
 @since 1.2
--- a/jdk/src/share/classes/java/security/package.html	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/security/package.html	Wed Jul 05 17:35:13 2017 +0200
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--
-Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+Copyright (c) 1998, 2010, 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
@@ -51,10 +51,17 @@
 <h2>Package Specification</h2>
 
 <ul>
-  <li><a href="{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html"><b>
-    Cryptography Architecture</b></a></li>
+  <li><a href="{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html">
+    <b>Java<FONT SIZE=-2><SUP>TM</SUP></FONT>
+    Cryptography Architecture (JCA) Reference Guide</b></a></li>
 
-  <li>PKCS8: Private-Key Information Standard, Version 1.2, November 1993</li>
+  <li>PKCS #8: Private-Key Information Syntax Standard, Version 1.2,
+    November 1993</li>
+
+  <li><a href="{@docRoot}/../technotes/guides/security/StandardNames.html">
+    <b>Java<FONT SIZE=-2><SUP>TM</SUP></FONT>
+    Cryptography Architecture Standard Algorithm Name 
+    Documentation</b></a></li>
 </ul>
 
 <h2>Related Documentation</h2>
@@ -62,13 +69,16 @@
 For further documentation, please see:
 <ul>
   <li><a href=
-    "{@docRoot}/../technotes/guides/security/spec/security-spec.doc.html"><b>
-    Security Architecture</b></a></li>
+    "{@docRoot}/../technotes/guides/security/spec/security-spec.doc.html">
+    <b>Java<FONT SIZE=-2><SUP>TM</SUP></FONT>
+    SE Platform Security Architecture</b></a></li>
 
   <li><a href=
-    "{@docRoot}/../technotes/guides/security/crypto/HowToImplAProvider.html"><b>
-    How to Implement a Provider for the Java Cryptography Architecture
+    "{@docRoot}/../technotes/guides/security/crypto/HowToImplAProvider.html">
+    <b>How to Implement a Provider in the
+    Java<FONT SIZE=-2><SUP>TM</SUP></FONT> Cryptography Architecture
     </b></a></li>
+
   <li><a href=
     "{@docRoot}/../technotes/guides/security/PolicyFiles.html"><b>
     Default Policy Implementation and Policy File Syntax
@@ -76,12 +86,14 @@
 
   <li><a href=
     "{@docRoot}/../technotes/guides/security/permissions.html"><b>
-    Policy Permissions
+    Permissions in the
+    Java<FONT SIZE=-2><SUP>TM</SUP></FONT> SE Development Kit (JDK)
     </b></a></li>
 
   <li><a href=
     "{@docRoot}/../technotes/guides/security/SecurityToolsSummary.html"><b>
-    Security Tools Summary
+    Summary of Tools for
+    Java<FONT SIZE=-2><SUP>TM</SUP></FONT> Platform Security
     </b></a></li>
 
   <li><b>keytool</b>
@@ -100,6 +112,6 @@
 
 </ul>
 
-@since JDK1.1
+@since 1.1
 </body>
 </html>
--- a/jdk/src/share/classes/java/sql/package.html	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/sql/package.html	Wed Jul 05 17:35:13 2017 +0200
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--
-Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 1998, 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
@@ -45,21 +45,22 @@
 use and update data from a spread sheet, flat file, or any other tabular 
 data source.
 <P>
-<h2>What the JDBC<sup><font size=-2>TM</font></sup> 4.0 API Includes</h2>
-The JDBC<sup><font size=-2>TM</font></sup> 4.0 API includes both
+<h2>What the JDBC<sup><font size=-2>TM</font></sup> 4.1 API Includes</h2>
+The JDBC<sup><font size=-2>TM</font></sup> 4.1 API includes both
 the <code>java.sql</code> package, referred to as the JDBC core API,
 and the <code>javax.sql</code> package, referred to as the JDBC Optional
 Package API. This complete JDBC API
 is included in the Java<sup><font size=-2>TM</font></sup>  
-Standard Edition (Java SE<sup><font size=-2>TM</font></sup>), version 6.  
+Standard Edition (Java SE<sup><font size=-2>TM</font></sup>), version 7.
 The <code>javax.sql</code> package extends the functionality of the JDBC API 
 from a client-side API to a server-side API, and it is an essential part
 of the Java<sup><font size=-2>TM</font></sup>  Enterprise Edition
 (Java EE<sup><font size=-2>TM</font></sup>) technology. 
 <P>
 <h2>Versions</h2>
-The JDBC 4.0 API incorporates all of the previous JDBC API versions:
+The JDBC 4.1 API incorporates all of the previous JDBC API versions:
 <UL>
+ <LI> The JDBC 4.0 API
  <LI> The JDBC 3.0 API
  <LI> The JDBC 2.1 core API
  <LI> The JDBC 2.0 Optional Package API<br>
@@ -75,7 +76,9 @@
 Javadoc<sup><font size=-2>TM</font></sup> comments for the JDBC API,
 they indicate the following:
 <UL>
- <LI>Since 1.6 -- new in the JDBC 4.0 API and part of the Java SE platform, 
+ <LI>Since 1.7 -- new in the JDBC 4.1 API and part of the Java SE platform,
+     version 7
+<LI>Since 1.6 -- new in the JDBC 4.0 API and part of the Java SE platform,
      version 6
  <LI>Since 1.4 -- new in the JDBC 3.0 API and part of the J2SE platform, 
      version 1.4
@@ -176,6 +179,25 @@
 	</UL>
 </UL>
 <P>
+    <h3><code>java.sql</code> and <code>javax.sql</code> Features Introduced in the JDBC 4.1 API</h3>
+<UL>
+    <LI>Allow <code>Connection</code>,
+        <code>ResultSet</code> and <code>Statement</code> objects to be
+        used with the try-with-resources statement</LI>
+    <LI>Supported added to <code>CallableStatement</code> and
+        <code>ResultSet</code> to specify the Java type to convert to via the
+        <code>getObject</code> method</LI>
+    <LI><code>DatabaseMetaData</code> methods to return PseudoColumns and if a
+        generated key is always returned</LI>
+    <LI>Added support to <code>Connection</code> to specify a database schema,
+    abort and timeout a physical connection.</LI>
+    <LI>Added support to close a <code>Statement</code> object when its dependent
+    objects have been closed</LI>
+    <LI>Support for obtaining the parent logger for a <code>Driver</code>,
+     <code>DataSource</code>, <code>ConnectionPoolDataSource</code> and
+     <code>XADataSource</code></LI>
+
+</UL>
 <h3><code>java.sql</code> and <code>javax.sql</code> Features Introduced in the JDBC 4.0 API</h3>
 <UL>
   <LI>auto java.sql.Driver discovery -- no longer need to load a 
@@ -190,7 +212,7 @@
  <li>Support added to allow a JDBC application to access an instance of a JDBC resource
  that has been wrapped by a vendor, usually in an application server or connection 
  pooling environment.
- <li>Availability to be notfied when a <code>PreparedStatement</code> that is associated
+ <li>Availability to be notified when a <code>PreparedStatement</code> that is associated
  with a <code>PooledConnection</code> has been closed or the driver determines is invalid
  
  
@@ -288,7 +310,7 @@
 <h2>Related Documentation</h2>
 
 <ul>
-  <li><a href="../../../guide/jdbc/getstart/GettingStartedTOC.fm.html">Getting Started</a>--overviews of the major interfaces
+  <li><a href="../../../technotes/guides/jdbc/getstart/GettingStartedTOC.fm.html">Getting Started</a>--overviews of the major interfaces
 <P>
   <li><a href="http://java.sun.com/docs/books/tutorial/jdbc">Chapters on the JDBC 
      API</a>--from the online version of <i>The Java Tutorial Continued</i>
--- a/jdk/src/share/classes/java/util/Arrays.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/util/Arrays.java	Wed Jul 05 17:35:13 2017 +0200
@@ -2823,6 +2823,7 @@
      * @param a the array by which the list will be backed
      * @return a list view of the specified array
      */
+    @SafeVarargs
     public static <T> List<T> asList(T... a) {
         return new ArrayList<>(a);
     }
--- a/jdk/src/share/classes/java/util/Collections.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/util/Collections.java	Wed Jul 05 17:35:13 2017 +0200
@@ -3827,6 +3827,7 @@
      * @see Collection#addAll(Collection)
      * @since 1.5
      */
+    @SafeVarargs
     public static <T> boolean addAll(Collection<? super T> c, T... elements) {
         boolean result = false;
         for (T element : elements)
--- a/jdk/src/share/classes/java/util/DualPivotQuicksort.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/util/DualPivotQuicksort.java	Wed Jul 05 17:35:13 2017 +0200
@@ -36,7 +36,7 @@
  * @author Jon Bentley
  * @author Josh Bloch
  *
- * @version 2010.10.13 m765.827.12i:5\7p
+ * @version 2011.02.11 m765.827.12i:5\7pm
  * @since 1.7
  */
 final class DualPivotQuicksort {
@@ -51,6 +51,22 @@
      */
 
     /**
+     * The maximum number of runs in merge sort.
+     */
+    private static final int MAX_RUN_COUNT = 67;
+
+    /**
+     * The maximum length of run in merge sort.
+     */
+    private static final int MAX_RUN_LENGTH = 33;
+
+    /**
+     * If the length of an array to be sorted is less than this
+     * constant, Quicksort is used in preference to merge sort.
+     */
+    private static final int QUICKSORT_THRESHOLD = 286;
+
+    /**
      * If the length of an array to be sorted is less than this
      * constant, insertion sort is used in preference to Quicksort.
      */
@@ -78,7 +94,7 @@
      * @param a the array to be sorted
      */
     public static void sort(int[] a) {
-        sort(a, 0, a.length - 1, true);
+        sort(a, 0, a.length - 1);
     }
 
     /**
@@ -89,7 +105,89 @@
      * @param right the index of the last element, inclusive, to be sorted
      */
     public static void sort(int[] a, int left, int right) {
-        sort(a, left, right, true);
+        // Use Quicksort on small arrays
+        if (right - left < QUICKSORT_THRESHOLD) {
+            sort(a, left, right, true);
+            return;
+        }
+
+        /*
+         * Index run[i] is the start of i-th run
+         * (ascending or descending sequence).
+         */
+        int[] run = new int[MAX_RUN_COUNT + 1];
+        int count = 0; run[0] = left;
+
+        // Check if the array is nearly sorted
+        for (int k = left; k < right; run[count] = k) {
+            if (a[k] < a[k + 1]) { // ascending
+                while (++k <= right && a[k - 1] <= a[k]);
+            } else if (a[k] > a[k + 1]) { // descending
+                while (++k <= right && a[k - 1] >= a[k]);
+                for (int lo = run[count] - 1, hi = k; ++lo < --hi; ) {
+                    int t = a[lo]; a[lo] = a[hi]; a[hi] = t;
+                }
+            } else { // equal
+                for (int m = MAX_RUN_LENGTH; ++k <= right && a[k - 1] == a[k]; ) {
+                    if (--m == 0) {
+                        sort(a, left, right, true);
+                        return;
+                    }
+                }
+            }
+
+            /*
+             * The array is not highly structured,
+             * use Quicksort instead of merge sort.
+             */
+            if (++count == MAX_RUN_COUNT) {
+                sort(a, left, right, true);
+                return;
+            }
+        }
+
+        // Check special cases
+        if (run[count] == right++) { // The last run contains one element
+            run[++count] = right;
+        } else if (count == 1) { // The array is already sorted
+            return;
+        }
+
+        /*
+         * Create temporary array, which is used for merging.
+         * Implementation note: variable "right" is increased by 1.
+         */
+        int[] b; byte odd = 0;
+        for (int n = 1; (n <<= 1) < count; odd ^= 1);
+
+        if (odd == 0) {
+            b = a; a = new int[b.length];
+            for (int i = left - 1; ++i < right; a[i] = b[i]);
+        } else {
+            b = new int[a.length];
+        }
+
+        // Merging
+        for (int last; count > 1; count = last) {
+            for (int k = (last = 0) + 2; k <= count; k += 2) {
+                int hi = run[k], mi = run[k - 1];
+                for (int i = run[k - 2], p = i, q = mi; i < hi; ++i) {
+                    if (q >= hi || p < mi && a[p] <= a[q]) {
+                        b[i] = a[p++];
+                    } else {
+                        b[i] = a[q++];
+                    }
+                }
+                run[++last] = hi;
+            }
+            if ((count & 1) != 0) {
+                for (int i = right, lo = run[count - 1]; --i >= lo;
+                    b[i] = a[i]
+                );
+                run[++last] = right;
+            }
+            int[] t = a; a = b; b = t;
+        }
     }
 
     /**
@@ -103,7 +201,7 @@
     private static void sort(int[] a, int left, int right, boolean leftmost) {
         int length = right - left + 1;
 
-        // Use insertion sort on small arrays
+        // Use insertion sort on tiny arrays
         if (length < INSERTION_SORT_THRESHOLD) {
             if (leftmost) {
                 /*
@@ -126,26 +224,24 @@
                  * Skip the longest ascending sequence.
                  */
                 do {
-                    if (left++ >= right) {
+                    if (left >= right) {
                         return;
                     }
-                } while (a[left - 1] <= a[left]);
+                } while (a[++left] >= a[left - 1]);
 
                 /*
                  * Every element from adjoining part plays the role
                  * of sentinel, therefore this allows us to avoid the
                  * left range check on each iteration. Moreover, we use
-                 * the best improved algorithm, so called pair insertion
-                 * sort, which is faster than traditional implementation
-                 * in the context of Dual-Pivot Quicksort.
+                 * the more optimized algorithm, so called pair insertion
+                 * sort, which is faster (in the context of Quicksort)
+                 * than traditional implementation of insertion sort.
                  */
-                for (int k = left--; (left += 2) <= right; ) {
-                    int a1, a2; k = left - 1;
+                for (int k = left; ++left <= right; k = ++left) {
+                    int a1 = a[k], a2 = a[left];
 
-                    if (a[k] < a[left]) {
-                        a2 = a[k]; a1 = a[left];
-                    } else {
-                        a1 = a[k]; a2 = a[left];
+                    if (a1 < a2) {
+                        a2 = a1; a1 = a[left];
                     }
                     while (a1 < a[--k]) {
                         a[k + 2] = a[k];
@@ -202,19 +298,19 @@
             }
         }
 
-        /*
-         * Use the second and fourth of the five sorted elements as pivots.
-         * These values are inexpensive approximations of the first and
-         * second terciles of the array. Note that pivot1 <= pivot2.
-         */
-        int pivot1 = a[e2];
-        int pivot2 = a[e4];
-
         // Pointers
         int less  = left;  // The index of the first element of center part
         int great = right; // The index before the first element of right part
 
-        if (pivot1 != pivot2) {
+        if (a[e1] != a[e2] && a[e2] != a[e3] && a[e3] != a[e4] && a[e4] != a[e5]) {
+            /*
+             * Use the second and fourth of the five sorted elements as pivots.
+             * These values are inexpensive approximations of the first and
+             * second terciles of the array. Note that pivot1 <= pivot2.
+             */
+            int pivot1 = a[e2];
+            int pivot2 = a[e4];
+
             /*
              * The first and the last elements to be sorted are moved to the
              * locations formerly occupied by the pivots. When partitioning
@@ -259,7 +355,7 @@
                      * of "a[i++] = b;" due to performance issue.
                      */
                     a[less] = ak;
-                    less++;
+                    ++less;
                 } else if (ak > pivot2) { // Move a[k] to right part
                     while (a[great] > pivot2) {
                         if (great-- == k) {
@@ -269,7 +365,7 @@
                     if (a[great] < pivot1) { // a[great] <= pivot2
                         a[k] = a[less];
                         a[less] = a[great];
-                        less++;
+                        ++less;
                     } else { // pivot1 <= a[great] <= pivot2
                         a[k] = a[great];
                     }
@@ -278,7 +374,7 @@
                      * of "a[i--] = b;" due to performance issue.
                      */
                     a[great] = ak;
-                    great--;
+                    --great;
                 }
             }
 
@@ -299,10 +395,11 @@
                  * Skip elements, which are equal to pivot values.
                  */
                 while (a[less] == pivot1) {
-                    less++;
+                    ++less;
                 }
+
                 while (a[great] == pivot2) {
-                    great--;
+                    --great;
                 }
 
                 /*
@@ -330,7 +427,7 @@
                     if (ak == pivot1) { // Move a[k] to left part
                         a[k] = a[less];
                         a[less] = ak;
-                        less++;
+                        ++less;
                     } else if (ak == pivot2) { // Move a[k] to right part
                         while (a[great] == pivot2) {
                             if (great-- == k) {
@@ -348,12 +445,12 @@
                              * accurate assignment a[less] = a[great].
                              */
                             a[less] = pivot1;
-                            less++;
+                            ++less;
                         } else { // pivot1 < a[great] < pivot2
                             a[k] = a[great];
                         }
                         a[great] = ak;
-                        great--;
+                        --great;
                     }
                 }
             }
@@ -361,7 +458,13 @@
             // Sort center part recursively
             sort(a, less, great, false);
 
-        } else { // Pivots are equal
+        } else { // Partitioning with one pivot
+            /*
+             * Use the third of the five sorted elements as pivot.
+             * This value is inexpensive approximation of the median.
+             */
+            int pivot = a[e3];
+
             /*
              * Partitioning degenerates to the traditional 3-way
              * (or "Dutch National Flag") schema:
@@ -383,35 +486,35 @@
              * Pointer k is the first index of ?-part.
              */
             for (int k = less; k <= great; ++k) {
-                if (a[k] == pivot1) {
+                if (a[k] == pivot) {
                     continue;
                 }
                 int ak = a[k];
-                if (ak < pivot1) { // Move a[k] to left part
+                if (ak < pivot) { // Move a[k] to left part
                     a[k] = a[less];
                     a[less] = ak;
-                    less++;
-                } else { // a[k] > pivot1 - Move a[k] to right part
-                    while (a[great] > pivot1) {
-                        great--;
+                    ++less;
+                } else { // a[k] > pivot - Move a[k] to right part
+                    while (a[great] > pivot) {
+                        --great;
                     }
-                    if (a[great] < pivot1) { // a[great] <= pivot1
+                    if (a[great] < pivot) { // a[great] <= pivot
                         a[k] = a[less];
                         a[less] = a[great];
-                        less++;
-                    } else { // a[great] == pivot1
+                        ++less;
+                    } else { // a[great] == pivot
                         /*
-                         * Even though a[great] equals to pivot1, the
-                         * assignment a[k] = pivot1 may be incorrect,
-                         * if a[great] and pivot1 are floating-point
+                         * Even though a[great] equals to pivot, the
+                         * assignment a[k] = pivot may be incorrect,
+                         * if a[great] and pivot are floating-point
                          * zeros of different signs. Therefore in float
                          * and double sorting methods we have to use
                          * more accurate assignment a[k] = a[great].
                          */
-                        a[k] = pivot1;
+                        a[k] = pivot;
                     }
                     a[great] = ak;
-                    great--;
+                    --great;
                 }
             }
 
@@ -431,7 +534,7 @@
      * @param a the array to be sorted
      */
     public static void sort(long[] a) {
-        sort(a, 0, a.length - 1, true);
+        sort(a, 0, a.length - 1);
     }
 
     /**
@@ -442,7 +545,89 @@
      * @param right the index of the last element, inclusive, to be sorted
      */
     public static void sort(long[] a, int left, int right) {
-        sort(a, left, right, true);
+        // Use Quicksort on small arrays
+        if (right - left < QUICKSORT_THRESHOLD) {
+            sort(a, left, right, true);
+            return;
+        }
+
+        /*
+         * Index run[i] is the start of i-th run
+         * (ascending or descending sequence).
+         */
+        int[] run = new int[MAX_RUN_COUNT + 1];
+        int count = 0; run[0] = left;
+
+        // Check if the array is nearly sorted
+        for (int k = left; k < right; run[count] = k) {
+            if (a[k] < a[k + 1]) { // ascending
+                while (++k <= right && a[k - 1] <= a[k]);
+            } else if (a[k] > a[k + 1]) { // descending
+                while (++k <= right && a[k - 1] >= a[k]);
+                for (int lo = run[count] - 1, hi = k; ++lo < --hi; ) {
+                    long t = a[lo]; a[lo] = a[hi]; a[hi] = t;
+                }
+            } else { // equal
+                for (int m = MAX_RUN_LENGTH; ++k <= right && a[k - 1] == a[k]; ) {
+                    if (--m == 0) {
+                        sort(a, left, right, true);
+                        return;
+                    }
+                }
+            }
+
+            /*
+             * The array is not highly structured,
+             * use Quicksort instead of merge sort.
+             */
+            if (++count == MAX_RUN_COUNT) {
+                sort(a, left, right, true);
+                return;
+            }
+        }
+
+        // Check special cases
+        if (run[count] == right++) { // The last run contains one element
+            run[++count] = right;
+        } else if (count == 1) { // The array is already sorted
+            return;
+        }
+
+        /*
+         * Create temporary array, which is used for merging.
+         * Implementation note: variable "right" is increased by 1.
+         */
+        long[] b; byte odd = 0;
+        for (int n = 1; (n <<= 1) < count; odd ^= 1);
+
+        if (odd == 0) {
+            b = a; a = new long[b.length];
+            for (int i = left - 1; ++i < right; a[i] = b[i]);
+        } else {
+            b = new long[a.length];
+        }
+
+        // Merging
+        for (int last; count > 1; count = last) {
+            for (int k = (last = 0) + 2; k <= count; k += 2) {
+                int hi = run[k], mi = run[k - 1];
+                for (int i = run[k - 2], p = i, q = mi; i < hi; ++i) {
+                    if (q >= hi || p < mi && a[p] <= a[q]) {
+                        b[i] = a[p++];
+                    } else {
+                        b[i] = a[q++];
+                    }
+                }
+                run[++last] = hi;
+            }
+            if ((count & 1) != 0) {
+                for (int i = right, lo = run[count - 1]; --i >= lo;
+                    b[i] = a[i]
+                );
+                run[++last] = right;
+            }
+            long[] t = a; a = b; b = t;
+        }
     }
 
     /**
@@ -456,7 +641,7 @@
     private static void sort(long[] a, int left, int right, boolean leftmost) {
         int length = right - left + 1;
 
-        // Use insertion sort on small arrays
+        // Use insertion sort on tiny arrays
         if (length < INSERTION_SORT_THRESHOLD) {
             if (leftmost) {
                 /*
@@ -479,26 +664,24 @@
                  * Skip the longest ascending sequence.
                  */
                 do {
-                    if (left++ >= right) {
+                    if (left >= right) {
                         return;
                     }
-                } while (a[left - 1] <= a[left]);
+                } while (a[++left] >= a[left - 1]);
 
                 /*
                  * Every element from adjoining part plays the role
                  * of sentinel, therefore this allows us to avoid the
                  * left range check on each iteration. Moreover, we use
-                 * the best improved algorithm, so called pair insertion
-                 * sort, which is faster than traditional implementation
-                 * in the context of Dual-Pivot Quicksort.
+                 * the more optimized algorithm, so called pair insertion
+                 * sort, which is faster (in the context of Quicksort)
+                 * than traditional implementation of insertion sort.
                  */
-                for (int k = left--; (left += 2) <= right; ) {
-                    long a1, a2; k = left - 1;
+                for (int k = left; ++left <= right; k = ++left) {
+                    long a1 = a[k], a2 = a[left];
 
-                    if (a[k] < a[left]) {
-                        a2 = a[k]; a1 = a[left];
-                    } else {
-                        a1 = a[k]; a2 = a[left];
+                    if (a1 < a2) {
+                        a2 = a1; a1 = a[left];
                     }
                     while (a1 < a[--k]) {
                         a[k + 2] = a[k];
@@ -555,19 +738,19 @@
             }
         }
 
-        /*
-         * Use the second and fourth of the five sorted elements as pivots.
-         * These values are inexpensive approximations of the first and
-         * second terciles of the array. Note that pivot1 <= pivot2.
-         */
-        long pivot1 = a[e2];
-        long pivot2 = a[e4];
-
         // Pointers
         int less  = left;  // The index of the first element of center part
         int great = right; // The index before the first element of right part
 
-        if (pivot1 != pivot2) {
+        if (a[e1] != a[e2] && a[e2] != a[e3] && a[e3] != a[e4] && a[e4] != a[e5]) {
+            /*
+             * Use the second and fourth of the five sorted elements as pivots.
+             * These values are inexpensive approximations of the first and
+             * second terciles of the array. Note that pivot1 <= pivot2.
+             */
+            long pivot1 = a[e2];
+            long pivot2 = a[e4];
+
             /*
              * The first and the last elements to be sorted are moved to the
              * locations formerly occupied by the pivots. When partitioning
@@ -612,7 +795,7 @@
                      * of "a[i++] = b;" due to performance issue.
                      */
                     a[less] = ak;
-                    less++;
+                    ++less;
                 } else if (ak > pivot2) { // Move a[k] to right part
                     while (a[great] > pivot2) {
                         if (great-- == k) {
@@ -622,7 +805,7 @@
                     if (a[great] < pivot1) { // a[great] <= pivot2
                         a[k] = a[less];
                         a[less] = a[great];
-                        less++;
+                        ++less;
                     } else { // pivot1 <= a[great] <= pivot2
                         a[k] = a[great];
                     }
@@ -631,7 +814,7 @@
                      * of "a[i--] = b;" due to performance issue.
                      */
                     a[great] = ak;
-                    great--;
+                    --great;
                 }
             }
 
@@ -652,10 +835,11 @@
                  * Skip elements, which are equal to pivot values.
                  */
                 while (a[less] == pivot1) {
-                    less++;
+                    ++less;
                 }
+
                 while (a[great] == pivot2) {
-                    great--;
+                    --great;
                 }
 
                 /*
@@ -683,7 +867,7 @@
                     if (ak == pivot1) { // Move a[k] to left part
                         a[k] = a[less];
                         a[less] = ak;
-                        less++;
+                        ++less;
                     } else if (ak == pivot2) { // Move a[k] to right part
                         while (a[great] == pivot2) {
                             if (great-- == k) {
@@ -701,12 +885,12 @@
                              * accurate assignment a[less] = a[great].
                              */
                             a[less] = pivot1;
-                            less++;
+                            ++less;
                         } else { // pivot1 < a[great] < pivot2
                             a[k] = a[great];
                         }
                         a[great] = ak;
-                        great--;
+                        --great;
                     }
                 }
             }
@@ -714,7 +898,13 @@
             // Sort center part recursively
             sort(a, less, great, false);
 
-        } else { // Pivots are equal
+        } else { // Partitioning with one pivot
+            /*
+             * Use the third of the five sorted elements as pivot.
+             * This value is inexpensive approximation of the median.
+             */
+            long pivot = a[e3];
+
             /*
              * Partitioning degenerates to the traditional 3-way
              * (or "Dutch National Flag") schema:
@@ -736,35 +926,35 @@
              * Pointer k is the first index of ?-part.
              */
             for (int k = less; k <= great; ++k) {
-                if (a[k] == pivot1) {
+                if (a[k] == pivot) {
                     continue;
                 }
                 long ak = a[k];
-                if (ak < pivot1) { // Move a[k] to left part
+                if (ak < pivot) { // Move a[k] to left part
                     a[k] = a[less];
                     a[less] = ak;
-                    less++;
-                } else { // a[k] > pivot1 - Move a[k] to right part
-                    while (a[great] > pivot1) {
-                        great--;
+                    ++less;
+                } else { // a[k] > pivot - Move a[k] to right part
+                    while (a[great] > pivot) {
+                        --great;
                     }
-                    if (a[great] < pivot1) { // a[great] <= pivot1
+                    if (a[great] < pivot) { // a[great] <= pivot
                         a[k] = a[less];
                         a[less] = a[great];
-                        less++;
-                    } else { // a[great] == pivot1
+                        ++less;
+                    } else { // a[great] == pivot
                         /*
-                         * Even though a[great] equals to pivot1, the
-                         * assignment a[k] = pivot1 may be incorrect,
-                         * if a[great] and pivot1 are floating-point
+                         * Even though a[great] equals to pivot, the
+                         * assignment a[k] = pivot may be incorrect,
+                         * if a[great] and pivot are floating-point
                          * zeros of different signs. Therefore in float
                          * and double sorting methods we have to use
                          * more accurate assignment a[k] = a[great].
                          */
-                        a[k] = pivot1;
+                        a[k] = pivot;
                     }
                     a[great] = ak;
-                    great--;
+                    --great;
                 }
             }
 
@@ -799,9 +989,9 @@
         if (right - left > COUNTING_SORT_THRESHOLD_FOR_SHORT_OR_CHAR) {
             int[] count = new int[NUM_SHORT_VALUES];
 
-            for (int i = left - 1; ++i <= right; ) {
-                count[a[i] - Short.MIN_VALUE]++;
-            }
+            for (int i = left - 1; ++i <= right;
+                count[a[i] - Short.MIN_VALUE]++
+            );
             for (int i = NUM_SHORT_VALUES, k = right + 1; k > left; ) {
                 while (count[--i] == 0);
                 short value = (short) (i + Short.MIN_VALUE);
@@ -812,7 +1002,7 @@
                 } while (--s > 0);
             }
         } else { // Use Dual-Pivot Quicksort on small arrays
-            sort(a, left, right, true);
+            doSort(a, left, right);
         }
     }
 
@@ -820,6 +1010,99 @@
     private static final int NUM_SHORT_VALUES = 1 << 16;
 
     /**
+     * Sorts the specified range of the array.
+     *
+     * @param a the array to be sorted
+     * @param left the index of the first element, inclusive, to be sorted
+     * @param right the index of the last element, inclusive, to be sorted
+     */
+    private static void doSort(short[] a, int left, int right) {
+        // Use Quicksort on small arrays
+        if (right - left < QUICKSORT_THRESHOLD) {
+            sort(a, left, right, true);
+            return;
+        }
+
+        /*
+         * Index run[i] is the start of i-th run
+         * (ascending or descending sequence).
+         */
+        int[] run = new int[MAX_RUN_COUNT + 1];
+        int count = 0; run[0] = left;
+
+        // Check if the array is nearly sorted
+        for (int k = left; k < right; run[count] = k) {
+            if (a[k] < a[k + 1]) { // ascending
+                while (++k <= right && a[k - 1] <= a[k]);
+            } else if (a[k] > a[k + 1]) { // descending
+                while (++k <= right && a[k - 1] >= a[k]);
+                for (int lo = run[count] - 1, hi = k; ++lo < --hi; ) {
+                    short t = a[lo]; a[lo] = a[hi]; a[hi] = t;
+                }
+            } else { // equal
+                for (int m = MAX_RUN_LENGTH; ++k <= right && a[k - 1] == a[k]; ) {
+                    if (--m == 0) {
+                        sort(a, left, right, true);
+                        return;
+                    }
+                }
+            }
+
+            /*
+             * The array is not highly structured,
+             * use Quicksort instead of merge sort.
+             */
+            if (++count == MAX_RUN_COUNT) {
+                sort(a, left, right, true);
+                return;
+            }
+        }
+
+        // Check special cases
+        if (run[count] == right++) { // The last run contains one element
+            run[++count] = right;
+        } else if (count == 1) { // The array is already sorted
+            return;
+        }
+
+        /*
+         * Create temporary array, which is used for merging.
+         * Implementation note: variable "right" is increased by 1.
+         */
+        short[] b; byte odd = 0;
+        for (int n = 1; (n <<= 1) < count; odd ^= 1);
+
+        if (odd == 0) {
+            b = a; a = new short[b.length];
+            for (int i = left - 1; ++i < right; a[i] = b[i]);
+        } else {
+            b = new short[a.length];
+        }
+
+        // Merging
+        for (int last; count > 1; count = last) {
+            for (int k = (last = 0) + 2; k <= count; k += 2) {
+                int hi = run[k], mi = run[k - 1];
+                for (int i = run[k - 2], p = i, q = mi; i < hi; ++i) {
+                    if (q >= hi || p < mi && a[p] <= a[q]) {
+                        b[i] = a[p++];
+                    } else {
+                        b[i] = a[q++];
+                    }
+                }
+                run[++last] = hi;
+            }
+            if ((count & 1) != 0) {
+                for (int i = right, lo = run[count - 1]; --i >= lo;
+                    b[i] = a[i]
+                );
+                run[++last] = right;
+            }
+            short[] t = a; a = b; b = t;
+        }
+    }
+
+    /**
      * Sorts the specified range of the array by Dual-Pivot Quicksort.
      *
      * @param a the array to be sorted
@@ -827,10 +1110,10 @@
      * @param right the index of the last element, inclusive, to be sorted
      * @param leftmost indicates if this part is the leftmost in the range
      */
-    private static void sort(short[] a, int left, int right,boolean leftmost) {
+    private static void sort(short[] a, int left, int right, boolean leftmost) {
         int length = right - left + 1;
 
-        // Use insertion sort on small arrays
+        // Use insertion sort on tiny arrays
         if (length < INSERTION_SORT_THRESHOLD) {
             if (leftmost) {
                 /*
@@ -853,26 +1136,24 @@
                  * Skip the longest ascending sequence.
                  */
                 do {
-                    if (left++ >= right) {
+                    if (left >= right) {
                         return;
                     }
-                } while (a[left - 1] <= a[left]);
+                } while (a[++left] >= a[left - 1]);
 
                 /*
                  * Every element from adjoining part plays the role
                  * of sentinel, therefore this allows us to avoid the
                  * left range check on each iteration. Moreover, we use
-                 * the best improved algorithm, so called pair insertion
-                 * sort, which is faster than traditional implementation
-                 * in the context of Dual-Pivot Quicksort.
+                 * the more optimized algorithm, so called pair insertion
+                 * sort, which is faster (in the context of Quicksort)
+                 * than traditional implementation of insertion sort.
                  */
-                for (int k = left--; (left += 2) <= right; ) {
-                    short a1, a2; k = left - 1;
+                for (int k = left; ++left <= right; k = ++left) {
+                    short a1 = a[k], a2 = a[left];
 
-                    if (a[k] < a[left]) {
-                        a2 = a[k]; a1 = a[left];
-                    } else {
-                        a1 = a[k]; a2 = a[left];
+                    if (a1 < a2) {
+                        a2 = a1; a1 = a[left];
                     }
                     while (a1 < a[--k]) {
                         a[k + 2] = a[k];
@@ -929,19 +1210,19 @@
             }
         }
 
-        /*
-         * Use the second and fourth of the five sorted elements as pivots.
-         * These values are inexpensive approximations of the first and
-         * second terciles of the array. Note that pivot1 <= pivot2.
-         */
-        short pivot1 = a[e2];
-        short pivot2 = a[e4];
-
         // Pointers
         int less  = left;  // The index of the first element of center part
         int great = right; // The index before the first element of right part
 
-        if (pivot1 != pivot2) {
+        if (a[e1] != a[e2] && a[e2] != a[e3] && a[e3] != a[e4] && a[e4] != a[e5]) {
+            /*
+             * Use the second and fourth of the five sorted elements as pivots.
+             * These values are inexpensive approximations of the first and
+             * second terciles of the array. Note that pivot1 <= pivot2.
+             */
+            short pivot1 = a[e2];
+            short pivot2 = a[e4];
+
             /*
              * The first and the last elements to be sorted are moved to the
              * locations formerly occupied by the pivots. When partitioning
@@ -986,7 +1267,7 @@
                      * of "a[i++] = b;" due to performance issue.
                      */
                     a[less] = ak;
-                    less++;
+                    ++less;
                 } else if (ak > pivot2) { // Move a[k] to right part
                     while (a[great] > pivot2) {
                         if (great-- == k) {
@@ -996,7 +1277,7 @@
                     if (a[great] < pivot1) { // a[great] <= pivot2
                         a[k] = a[less];
                         a[less] = a[great];
-                        less++;
+                        ++less;
                     } else { // pivot1 <= a[great] <= pivot2
                         a[k] = a[great];
                     }
@@ -1005,7 +1286,7 @@
                      * of "a[i--] = b;" due to performance issue.
                      */
                     a[great] = ak;
-                    great--;
+                    --great;
                 }
             }
 
@@ -1026,10 +1307,11 @@
                  * Skip elements, which are equal to pivot values.
                  */
                 while (a[less] == pivot1) {
-                    less++;
+                    ++less;
                 }
+
                 while (a[great] == pivot2) {
-                    great--;
+                    --great;
                 }
 
                 /*
@@ -1057,7 +1339,7 @@
                     if (ak == pivot1) { // Move a[k] to left part
                         a[k] = a[less];
                         a[less] = ak;
-                        less++;
+                        ++less;
                     } else if (ak == pivot2) { // Move a[k] to right part
                         while (a[great] == pivot2) {
                             if (great-- == k) {
@@ -1075,12 +1357,12 @@
                              * accurate assignment a[less] = a[great].
                              */
                             a[less] = pivot1;
-                            less++;
+                            ++less;
                         } else { // pivot1 < a[great] < pivot2
                             a[k] = a[great];
                         }
                         a[great] = ak;
-                        great--;
+                        --great;
                     }
                 }
             }
@@ -1088,7 +1370,13 @@
             // Sort center part recursively
             sort(a, less, great, false);
 
-        } else { // Pivots are equal
+        } else { // Partitioning with one pivot
+            /*
+             * Use the third of the five sorted elements as pivot.
+             * This value is inexpensive approximation of the median.
+             */
+            short pivot = a[e3];
+
             /*
              * Partitioning degenerates to the traditional 3-way
              * (or "Dutch National Flag") schema:
@@ -1110,35 +1398,35 @@
              * Pointer k is the first index of ?-part.
              */
             for (int k = less; k <= great; ++k) {
-                if (a[k] == pivot1) {
+                if (a[k] == pivot) {
                     continue;
                 }
                 short ak = a[k];
-                if (ak < pivot1) { // Move a[k] to left part
+                if (ak < pivot) { // Move a[k] to left part
                     a[k] = a[less];
                     a[less] = ak;
-                    less++;
-                } else { // a[k] > pivot1 - Move a[k] to right part
-                    while (a[great] > pivot1) {
-                        great--;
+                    ++less;
+                } else { // a[k] > pivot - Move a[k] to right part
+                    while (a[great] > pivot) {
+                        --great;
                     }
-                    if (a[great] < pivot1) { // a[great] <= pivot1
+                    if (a[great] < pivot) { // a[great] <= pivot
                         a[k] = a[less];
                         a[less] = a[great];
-                        less++;
-                    } else { // a[great] == pivot1
+                        ++less;
+                    } else { // a[great] == pivot
                         /*
-                         * Even though a[great] equals to pivot1, the
-                         * assignment a[k] = pivot1 may be incorrect,
-                         * if a[great] and pivot1 are floating-point
+                         * Even though a[great] equals to pivot, the
+                         * assignment a[k] = pivot may be incorrect,
+                         * if a[great] and pivot are floating-point
                          * zeros of different signs. Therefore in float
                          * and double sorting methods we have to use
                          * more accurate assignment a[k] = a[great].
                          */
-                        a[k] = pivot1;
+                        a[k] = pivot;
                     }
                     a[great] = ak;
-                    great--;
+                    --great;
                 }
             }
 
@@ -1173,9 +1461,9 @@
         if (right - left > COUNTING_SORT_THRESHOLD_FOR_SHORT_OR_CHAR) {
             int[] count = new int[NUM_CHAR_VALUES];
 
-            for (int i = left - 1; ++i <= right; ) {
-                count[a[i]]++;
-            }
+            for (int i = left - 1; ++i <= right;
+                count[a[i]]++
+            );
             for (int i = NUM_CHAR_VALUES, k = right + 1; k > left; ) {
                 while (count[--i] == 0);
                 char value = (char) i;
@@ -1186,7 +1474,7 @@
                 } while (--s > 0);
             }
         } else { // Use Dual-Pivot Quicksort on small arrays
-            sort(a, left, right, true);
+            doSort(a, left, right);
         }
     }
 
@@ -1194,6 +1482,99 @@
     private static final int NUM_CHAR_VALUES = 1 << 16;
 
     /**
+     * Sorts the specified range of the array.
+     *
+     * @param a the array to be sorted
+     * @param left the index of the first element, inclusive, to be sorted
+     * @param right the index of the last element, inclusive, to be sorted
+     */
+    private static void doSort(char[] a, int left, int right) {
+        // Use Quicksort on small arrays
+        if (right - left < QUICKSORT_THRESHOLD) {
+            sort(a, left, right, true);
+            return;
+        }
+
+        /*
+         * Index run[i] is the start of i-th run
+         * (ascending or descending sequence).
+         */
+        int[] run = new int[MAX_RUN_COUNT + 1];
+        int count = 0; run[0] = left;
+
+        // Check if the array is nearly sorted
+        for (int k = left; k < right; run[count] = k) {
+            if (a[k] < a[k + 1]) { // ascending
+                while (++k <= right && a[k - 1] <= a[k]);
+            } else if (a[k] > a[k + 1]) { // descending
+                while (++k <= right && a[k - 1] >= a[k]);
+                for (int lo = run[count] - 1, hi = k; ++lo < --hi; ) {
+                    char t = a[lo]; a[lo] = a[hi]; a[hi] = t;
+                }
+            } else { // equal
+                for (int m = MAX_RUN_LENGTH; ++k <= right && a[k - 1] == a[k]; ) {
+                    if (--m == 0) {
+                        sort(a, left, right, true);
+                        return;
+                    }
+                }
+            }
+
+            /*
+             * The array is not highly structured,
+             * use Quicksort instead of merge sort.
+             */
+            if (++count == MAX_RUN_COUNT) {
+                sort(a, left, right, true);
+                return;
+            }
+        }
+
+        // Check special cases
+        if (run[count] == right++) { // The last run contains one element
+            run[++count] = right;
+        } else if (count == 1) { // The array is already sorted
+            return;
+        }
+
+        /*
+         * Create temporary array, which is used for merging.
+         * Implementation note: variable "right" is increased by 1.
+         */
+        char[] b; byte odd = 0;
+        for (int n = 1; (n <<= 1) < count; odd ^= 1);
+
+        if (odd == 0) {
+            b = a; a = new char[b.length];
+            for (int i = left - 1; ++i < right; a[i] = b[i]);
+        } else {
+            b = new char[a.length];
+        }
+
+        // Merging
+        for (int last; count > 1; count = last) {
+            for (int k = (last = 0) + 2; k <= count; k += 2) {
+                int hi = run[k], mi = run[k - 1];
+                for (int i = run[k - 2], p = i, q = mi; i < hi; ++i) {
+                    if (q >= hi || p < mi && a[p] <= a[q]) {
+                        b[i] = a[p++];
+                    } else {
+                        b[i] = a[q++];
+                    }
+                }
+                run[++last] = hi;
+            }
+            if ((count & 1) != 0) {
+                for (int i = right, lo = run[count - 1]; --i >= lo;
+                    b[i] = a[i]
+                );
+                run[++last] = right;
+            }
+            char[] t = a; a = b; b = t;
+        }
+    }
+
+    /**
      * Sorts the specified range of the array by Dual-Pivot Quicksort.
      *
      * @param a the array to be sorted
@@ -1204,7 +1585,7 @@
     private static void sort(char[] a, int left, int right, boolean leftmost) {
         int length = right - left + 1;
 
-        // Use insertion sort on small arrays
+        // Use insertion sort on tiny arrays
         if (length < INSERTION_SORT_THRESHOLD) {
             if (leftmost) {
                 /*
@@ -1227,26 +1608,24 @@
                  * Skip the longest ascending sequence.
                  */
                 do {
-                    if (left++ >= right) {
+                    if (left >= right) {
                         return;
                     }
-                } while (a[left - 1] <= a[left]);
+                } while (a[++left] >= a[left - 1]);
 
                 /*
                  * Every element from adjoining part plays the role
                  * of sentinel, therefore this allows us to avoid the
                  * left range check on each iteration. Moreover, we use
-                 * the best improved algorithm, so called pair insertion
-                 * sort, which is faster than traditional implementation
-                 * in the context of Dual-Pivot Quicksort.
+                 * the more optimized algorithm, so called pair insertion
+                 * sort, which is faster (in the context of Quicksort)
+                 * than traditional implementation of insertion sort.
                  */
-                for (int k = left--; (left += 2) <= right; ) {
-                    char a1, a2; k = left - 1;
+                for (int k = left; ++left <= right; k = ++left) {
+                    char a1 = a[k], a2 = a[left];
 
-                    if (a[k] < a[left]) {
-                        a2 = a[k]; a1 = a[left];
-                    } else {
-                        a1 = a[k]; a2 = a[left];
+                    if (a1 < a2) {
+                        a2 = a1; a1 = a[left];
                     }
                     while (a1 < a[--k]) {
                         a[k + 2] = a[k];
@@ -1303,19 +1682,19 @@
             }
         }
 
-        /*
-         * Use the second and fourth of the five sorted elements as pivots.
-         * These values are inexpensive approximations of the first and
-         * second terciles of the array. Note that pivot1 <= pivot2.
-         */
-        char pivot1 = a[e2];
-        char pivot2 = a[e4];
-
         // Pointers
         int less  = left;  // The index of the first element of center part
         int great = right; // The index before the first element of right part
 
-        if (pivot1 != pivot2) {
+        if (a[e1] != a[e2] && a[e2] != a[e3] && a[e3] != a[e4] && a[e4] != a[e5]) {
+            /*
+             * Use the second and fourth of the five sorted elements as pivots.
+             * These values are inexpensive approximations of the first and
+             * second terciles of the array. Note that pivot1 <= pivot2.
+             */
+            char pivot1 = a[e2];
+            char pivot2 = a[e4];
+
             /*
              * The first and the last elements to be sorted are moved to the
              * locations formerly occupied by the pivots. When partitioning
@@ -1360,7 +1739,7 @@
                      * of "a[i++] = b;" due to performance issue.
                      */
                     a[less] = ak;
-                    less++;
+                    ++less;
                 } else if (ak > pivot2) { // Move a[k] to right part
                     while (a[great] > pivot2) {
                         if (great-- == k) {
@@ -1370,7 +1749,7 @@
                     if (a[great] < pivot1) { // a[great] <= pivot2
                         a[k] = a[less];
                         a[less] = a[great];
-                        less++;
+                        ++less;
                     } else { // pivot1 <= a[great] <= pivot2
                         a[k] = a[great];
                     }
@@ -1379,7 +1758,7 @@
                      * of "a[i--] = b;" due to performance issue.
                      */
                     a[great] = ak;
-                    great--;
+                    --great;
                 }
             }
 
@@ -1400,10 +1779,11 @@
                  * Skip elements, which are equal to pivot values.
                  */
                 while (a[less] == pivot1) {
-                    less++;
+                    ++less;
                 }
+
                 while (a[great] == pivot2) {
-                    great--;
+                    --great;
                 }
 
                 /*
@@ -1431,7 +1811,7 @@
                     if (ak == pivot1) { // Move a[k] to left part
                         a[k] = a[less];
                         a[less] = ak;
-                        less++;
+                        ++less;
                     } else if (ak == pivot2) { // Move a[k] to right part
                         while (a[great] == pivot2) {
                             if (great-- == k) {
@@ -1449,12 +1829,12 @@
                              * accurate assignment a[less] = a[great].
                              */
                             a[less] = pivot1;
-                            less++;
+                            ++less;
                         } else { // pivot1 < a[great] < pivot2
                             a[k] = a[great];
                         }
                         a[great] = ak;
-                        great--;
+                        --great;
                     }
                 }
             }
@@ -1462,7 +1842,13 @@
             // Sort center part recursively
             sort(a, less, great, false);
 
-        } else { // Pivots are equal
+        } else { // Partitioning with one pivot
+            /*
+             * Use the third of the five sorted elements as pivot.
+             * This value is inexpensive approximation of the median.
+             */
+            char pivot = a[e3];
+
             /*
              * Partitioning degenerates to the traditional 3-way
              * (or "Dutch National Flag") schema:
@@ -1484,35 +1870,35 @@
              * Pointer k is the first index of ?-part.
              */
             for (int k = less; k <= great; ++k) {
-                if (a[k] == pivot1) {
+                if (a[k] == pivot) {
                     continue;
                 }
                 char ak = a[k];
-                if (ak < pivot1) { // Move a[k] to left part
+                if (ak < pivot) { // Move a[k] to left part
                     a[k] = a[less];
                     a[less] = ak;
-                    less++;
-                } else { // a[k] > pivot1 - Move a[k] to right part
-                    while (a[great] > pivot1) {
-                        great--;
+                    ++less;
+                } else { // a[k] > pivot - Move a[k] to right part
+                    while (a[great] > pivot) {
+                        --great;
                     }
-                    if (a[great] < pivot1) { // a[great] <= pivot1
+                    if (a[great] < pivot) { // a[great] <= pivot
                         a[k] = a[less];
                         a[less] = a[great];
-                        less++;
-                    } else { // a[great] == pivot1
+                        ++less;
+                    } else { // a[great] == pivot
                         /*
-                         * Even though a[great] equals to pivot1, the
-                         * assignment a[k] = pivot1 may be incorrect,
-                         * if a[great] and pivot1 are floating-point
+                         * Even though a[great] equals to pivot, the
+                         * assignment a[k] = pivot may be incorrect,
+                         * if a[great] and pivot are floating-point
                          * zeros of different signs. Therefore in float
                          * and double sorting methods we have to use
                          * more accurate assignment a[k] = a[great].
                          */
-                        a[k] = pivot1;
+                        a[k] = pivot;
                     }
                     a[great] = ak;
-                    great--;
+                    --great;
                 }
             }
 
@@ -1550,9 +1936,9 @@
         if (right - left > COUNTING_SORT_THRESHOLD_FOR_BYTE) {
             int[] count = new int[NUM_BYTE_VALUES];
 
-            for (int i = left - 1; ++i <= right; ) {
-                count[a[i] - Byte.MIN_VALUE]++;
-            }
+            for (int i = left - 1; ++i <= right;
+                count[a[i] - Byte.MIN_VALUE]++
+            );
             for (int i = NUM_BYTE_VALUES, k = right + 1; k > left; ) {
                 while (count[--i] == 0);
                 byte value = (byte) (i + Byte.MIN_VALUE);
@@ -1597,21 +1983,21 @@
          * Phase 1: Move NaNs to the end of the array.
          */
         while (left <= right && Float.isNaN(a[right])) {
-            right--;
+            --right;
         }
         for (int k = right; --k >= left; ) {
             float ak = a[k];
             if (ak != ak) { // a[k] is NaN
                 a[k] = a[right];
                 a[right] = ak;
-                right--;
+                --right;
             }
         }
 
         /*
          * Phase 2: Sort everything except NaNs (which are already in place).
          */
-        sort(a, left, right, true);
+        doSort(a, left, right);
 
         /*
          * Phase 3: Place negative zeros before positive zeros.
@@ -1636,7 +2022,7 @@
          * Skip the last negative value (if any) or all leading negative zeros.
          */
         while (left <= right && Float.floatToRawIntBits(a[left]) < 0) {
-            left++;
+            ++left;
         }
 
         /*
@@ -1673,6 +2059,99 @@
     }
 
     /**
+     * Sorts the specified range of the array.
+     *
+     * @param a the array to be sorted
+     * @param left the index of the first element, inclusive, to be sorted
+     * @param right the index of the last element, inclusive, to be sorted
+     */
+    private static void doSort(float[] a, int left, int right) {
+        // Use Quicksort on small arrays
+        if (right - left < QUICKSORT_THRESHOLD) {
+            sort(a, left, right, true);
+            return;
+        }
+
+        /*
+         * Index run[i] is the start of i-th run
+         * (ascending or descending sequence).
+         */
+        int[] run = new int[MAX_RUN_COUNT + 1];
+        int count = 0; run[0] = left;
+
+        // Check if the array is nearly sorted
+        for (int k = left; k < right; run[count] = k) {
+            if (a[k] < a[k + 1]) { // ascending
+                while (++k <= right && a[k - 1] <= a[k]);
+            } else if (a[k] > a[k + 1]) { // descending
+                while (++k <= right && a[k - 1] >= a[k]);
+                for (int lo = run[count] - 1, hi = k; ++lo < --hi; ) {
+                    float t = a[lo]; a[lo] = a[hi]; a[hi] = t;
+                }
+            } else { // equal
+                for (int m = MAX_RUN_LENGTH; ++k <= right && a[k - 1] == a[k]; ) {
+                    if (--m == 0) {
+                        sort(a, left, right, true);
+                        return;
+                    }
+                }
+            }
+
+            /*
+             * The array is not highly structured,
+             * use Quicksort instead of merge sort.
+             */
+            if (++count == MAX_RUN_COUNT) {
+                sort(a, left, right, true);
+                return;
+            }
+        }
+
+        // Check special cases
+        if (run[count] == right++) { // The last run contains one element
+            run[++count] = right;
+        } else if (count == 1) { // The array is already sorted
+            return;
+        }
+
+        /*
+         * Create temporary array, which is used for merging.
+         * Implementation note: variable "right" is increased by 1.
+         */
+        float[] b; byte odd = 0;
+        for (int n = 1; (n <<= 1) < count; odd ^= 1);
+
+        if (odd == 0) {
+            b = a; a = new float[b.length];
+            for (int i = left - 1; ++i < right; a[i] = b[i]);
+        } else {
+            b = new float[a.length];
+        }
+
+        // Merging
+        for (int last; count > 1; count = last) {
+            for (int k = (last = 0) + 2; k <= count; k += 2) {
+                int hi = run[k], mi = run[k - 1];
+                for (int i = run[k - 2], p = i, q = mi; i < hi; ++i) {
+                    if (q >= hi || p < mi && a[p] <= a[q]) {
+                        b[i] = a[p++];
+                    } else {
+                        b[i] = a[q++];
+                    }
+                }
+                run[++last] = hi;
+            }
+            if ((count & 1) != 0) {
+                for (int i = right, lo = run[count - 1]; --i >= lo;
+                    b[i] = a[i]
+                );
+                run[++last] = right;
+            }
+            float[] t = a; a = b; b = t;
+        }
+    }
+
+    /**
      * Sorts the specified range of the array by Dual-Pivot Quicksort.
      *
      * @param a the array to be sorted
@@ -1680,10 +2159,10 @@
      * @param right the index of the last element, inclusive, to be sorted
      * @param leftmost indicates if this part is the leftmost in the range
      */
-    private static void sort(float[] a, int left, int right,boolean leftmost) {
+    private static void sort(float[] a, int left, int right, boolean leftmost) {
         int length = right - left + 1;
 
-        // Use insertion sort on small arrays
+        // Use insertion sort on tiny arrays
         if (length < INSERTION_SORT_THRESHOLD) {
             if (leftmost) {
                 /*
@@ -1706,26 +2185,24 @@
                  * Skip the longest ascending sequence.
                  */
                 do {
-                    if (left++ >= right) {
+                    if (left >= right) {
                         return;
                     }
-                } while (a[left - 1] <= a[left]);
+                } while (a[++left] >= a[left - 1]);
 
                 /*
                  * Every element from adjoining part plays the role
                  * of sentinel, therefore this allows us to avoid the
                  * left range check on each iteration. Moreover, we use
-                 * the best improved algorithm, so called pair insertion
-                 * sort, which is faster than traditional implementation
-                 * in the context of Dual-Pivot Quicksort.
+                 * the more optimized algorithm, so called pair insertion
+                 * sort, which is faster (in the context of Quicksort)
+                 * than traditional implementation of insertion sort.
                  */
-                for (int k = left--; (left += 2) <= right; ) {
-                    float a1, a2; k = left - 1;
+                for (int k = left; ++left <= right; k = ++left) {
+                    float a1 = a[k], a2 = a[left];
 
-                    if (a[k] < a[left]) {
-                        a2 = a[k]; a1 = a[left];
-                    } else {
-                        a1 = a[k]; a2 = a[left];
+                    if (a1 < a2) {
+                        a2 = a1; a1 = a[left];
                     }
                     while (a1 < a[--k]) {
                         a[k + 2] = a[k];
@@ -1782,19 +2259,19 @@
             }
         }
 
-        /*
-         * Use the second and fourth of the five sorted elements as pivots.
-         * These values are inexpensive approximations of the first and
-         * second terciles of the array. Note that pivot1 <= pivot2.
-         */
-        float pivot1 = a[e2];
-        float pivot2 = a[e4];
-
         // Pointers
         int less  = left;  // The index of the first element of center part
         int great = right; // The index before the first element of right part
 
-        if (pivot1 != pivot2) {
+        if (a[e1] != a[e2] && a[e2] != a[e3] && a[e3] != a[e4] && a[e4] != a[e5]) {
+            /*
+             * Use the second and fourth of the five sorted elements as pivots.
+             * These values are inexpensive approximations of the first and
+             * second terciles of the array. Note that pivot1 <= pivot2.
+             */
+            float pivot1 = a[e2];
+            float pivot2 = a[e4];
+
             /*
              * The first and the last elements to be sorted are moved to the
              * locations formerly occupied by the pivots. When partitioning
@@ -1839,7 +2316,7 @@
                      * of "a[i++] = b;" due to performance issue.
                      */
                     a[less] = ak;
-                    less++;
+                    ++less;
                 } else if (ak > pivot2) { // Move a[k] to right part
                     while (a[great] > pivot2) {
                         if (great-- == k) {
@@ -1849,7 +2326,7 @@
                     if (a[great] < pivot1) { // a[great] <= pivot2
                         a[k] = a[less];
                         a[less] = a[great];
-                        less++;
+                        ++less;
                     } else { // pivot1 <= a[great] <= pivot2
                         a[k] = a[great];
                     }
@@ -1858,7 +2335,7 @@
                      * of "a[i--] = b;" due to performance issue.
                      */
                     a[great] = ak;
-                    great--;
+                    --great;
                 }
             }
 
@@ -1879,10 +2356,11 @@
                  * Skip elements, which are equal to pivot values.
                  */
                 while (a[less] == pivot1) {
-                    less++;
+                    ++less;
                 }
+
                 while (a[great] == pivot2) {
-                    great--;
+                    --great;
                 }
 
                 /*
@@ -1910,7 +2388,7 @@
                     if (ak == pivot1) { // Move a[k] to left part
                         a[k] = a[less];
                         a[less] = ak;
-                        less++;
+                        ++less;
                     } else if (ak == pivot2) { // Move a[k] to right part
                         while (a[great] == pivot2) {
                             if (great-- == k) {
@@ -1928,12 +2406,12 @@
                              * accurate assignment a[less] = a[great].
                              */
                             a[less] = a[great];
-                            less++;
+                            ++less;
                         } else { // pivot1 < a[great] < pivot2
                             a[k] = a[great];
                         }
                         a[great] = ak;
-                        great--;
+                        --great;
                     }
                 }
             }
@@ -1941,7 +2419,13 @@
             // Sort center part recursively
             sort(a, less, great, false);
 
-        } else { // Pivots are equal
+        } else { // Partitioning with one pivot
+            /*
+             * Use the third of the five sorted elements as pivot.
+             * This value is inexpensive approximation of the median.
+             */
+            float pivot = a[e3];
+
             /*
              * Partitioning degenerates to the traditional 3-way
              * (or "Dutch National Flag") schema:
@@ -1963,27 +2447,27 @@
              * Pointer k is the first index of ?-part.
              */
             for (int k = less; k <= great; ++k) {
-                if (a[k] == pivot1) {
+                if (a[k] == pivot) {
                     continue;
                 }
                 float ak = a[k];
-                if (ak < pivot1) { // Move a[k] to left part
+                if (ak < pivot) { // Move a[k] to left part
                     a[k] = a[less];
                     a[less] = ak;
-                    less++;
-                } else { // a[k] > pivot1 - Move a[k] to right part
-                    while (a[great] > pivot1) {
-                        great--;
+                    ++less;
+                } else { // a[k] > pivot - Move a[k] to right part
+                    while (a[great] > pivot) {
+                        --great;
                     }
-                    if (a[great] < pivot1) { // a[great] <= pivot1
+                    if (a[great] < pivot) { // a[great] <= pivot
                         a[k] = a[less];
                         a[less] = a[great];
-                        less++;
-                    } else { // a[great] == pivot1
+                        ++less;
+                    } else { // a[great] == pivot
                         /*
-                         * Even though a[great] equals to pivot1, the
-                         * assignment a[k] = pivot1 may be incorrect,
-                         * if a[great] and pivot1 are floating-point
+                         * Even though a[great] equals to pivot, the
+                         * assignment a[k] = pivot may be incorrect,
+                         * if a[great] and pivot are floating-point
                          * zeros of different signs. Therefore in float
                          * and double sorting methods we have to use
                          * more accurate assignment a[k] = a[great].
@@ -1991,7 +2475,7 @@
                         a[k] = a[great];
                     }
                     a[great] = ak;
-                    great--;
+                    --great;
                 }
             }
 
@@ -2026,21 +2510,21 @@
          * Phase 1: Move NaNs to the end of the array.
          */
         while (left <= right && Double.isNaN(a[right])) {
-            right--;
+            --right;
         }
         for (int k = right; --k >= left; ) {
             double ak = a[k];
             if (ak != ak) { // a[k] is NaN
                 a[k] = a[right];
                 a[right] = ak;
-                right--;
+                --right;
             }
         }
 
         /*
          * Phase 2: Sort everything except NaNs (which are already in place).
          */
-        sort(a, left, right, true);
+        doSort(a, left, right);
 
         /*
          * Phase 3: Place negative zeros before positive zeros.
@@ -2065,7 +2549,7 @@
          * Skip the last negative value (if any) or all leading negative zeros.
          */
         while (left <= right && Double.doubleToRawLongBits(a[left]) < 0) {
-            left++;
+            ++left;
         }
 
         /*
@@ -2102,6 +2586,99 @@
     }
 
     /**
+     * Sorts the specified range of the array.
+     *
+     * @param a the array to be sorted
+     * @param left the index of the first element, inclusive, to be sorted
+     * @param right the index of the last element, inclusive, to be sorted
+     */
+    private static void doSort(double[] a, int left, int right) {
+        // Use Quicksort on small arrays
+        if (right - left < QUICKSORT_THRESHOLD) {
+            sort(a, left, right, true);
+            return;
+        }
+
+        /*
+         * Index run[i] is the start of i-th run
+         * (ascending or descending sequence).
+         */
+        int[] run = new int[MAX_RUN_COUNT + 1];
+        int count = 0; run[0] = left;
+
+        // Check if the array is nearly sorted
+        for (int k = left; k < right; run[count] = k) {
+            if (a[k] < a[k + 1]) { // ascending
+                while (++k <= right && a[k - 1] <= a[k]);
+            } else if (a[k] > a[k + 1]) { // descending
+                while (++k <= right && a[k - 1] >= a[k]);
+                for (int lo = run[count] - 1, hi = k; ++lo < --hi; ) {
+                    double t = a[lo]; a[lo] = a[hi]; a[hi] = t;
+                }
+            } else { // equal
+                for (int m = MAX_RUN_LENGTH; ++k <= right && a[k - 1] == a[k]; ) {
+                    if (--m == 0) {
+                        sort(a, left, right, true);
+                        return;
+                    }
+                }
+            }
+
+            /*
+             * The array is not highly structured,
+             * use Quicksort instead of merge sort.
+             */
+            if (++count == MAX_RUN_COUNT) {
+                sort(a, left, right, true);
+                return;
+            }
+        }
+
+        // Check special cases
+        if (run[count] == right++) { // The last run contains one element
+            run[++count] = right;
+        } else if (count == 1) { // The array is already sorted
+            return;
+        }
+
+        /*
+         * Create temporary array, which is used for merging.
+         * Implementation note: variable "right" is increased by 1.
+         */
+        double[] b; byte odd = 0;
+        for (int n = 1; (n <<= 1) < count; odd ^= 1);
+
+        if (odd == 0) {
+            b = a; a = new double[b.length];
+            for (int i = left - 1; ++i < right; a[i] = b[i]);
+        } else {
+            b = new double[a.length];
+        }
+
+        // Merging
+        for (int last; count > 1; count = last) {
+            for (int k = (last = 0) + 2; k <= count; k += 2) {
+                int hi = run[k], mi = run[k - 1];
+                for (int i = run[k - 2], p = i, q = mi; i < hi; ++i) {
+                    if (q >= hi || p < mi && a[p] <= a[q]) {
+                        b[i] = a[p++];
+                    } else {
+                        b[i] = a[q++];
+                    }
+                }
+                run[++last] = hi;
+            }
+            if ((count & 1) != 0) {
+                for (int i = right, lo = run[count - 1]; --i >= lo;
+                    b[i] = a[i]
+                );
+                run[++last] = right;
+            }
+            double[] t = a; a = b; b = t;
+        }
+    }
+
+    /**
      * Sorts the specified range of the array by Dual-Pivot Quicksort.
      *
      * @param a the array to be sorted
@@ -2109,10 +2686,10 @@
      * @param right the index of the last element, inclusive, to be sorted
      * @param leftmost indicates if this part is the leftmost in the range
      */
-    private static void sort(double[] a, int left,int right,boolean leftmost) {
+    private static void sort(double[] a, int left, int right, boolean leftmost) {
         int length = right - left + 1;
 
-        // Use insertion sort on small arrays
+        // Use insertion sort on tiny arrays
         if (length < INSERTION_SORT_THRESHOLD) {
             if (leftmost) {
                 /*
@@ -2135,26 +2712,24 @@
                  * Skip the longest ascending sequence.
                  */
                 do {
-                    if (left++ >= right) {
+                    if (left >= right) {
                         return;
                     }
-                } while (a[left - 1] <= a[left]);
+                } while (a[++left] >= a[left - 1]);
 
                 /*
                  * Every element from adjoining part plays the role
                  * of sentinel, therefore this allows us to avoid the
                  * left range check on each iteration. Moreover, we use
-                 * the best improved algorithm, so called pair insertion
-                 * sort, which is faster than traditional implementation
-                 * in the context of Dual-Pivot Quicksort.
+                 * the more optimized algorithm, so called pair insertion
+                 * sort, which is faster (in the context of Quicksort)
+                 * than traditional implementation of insertion sort.
                  */
-                for (int k = left--; (left += 2) <= right; ) {
-                    double a1, a2; k = left - 1;
+                for (int k = left; ++left <= right; k = ++left) {
+                    double a1 = a[k], a2 = a[left];
 
-                    if (a[k] < a[left]) {
-                        a2 = a[k]; a1 = a[left];
-                    } else {
-                        a1 = a[k]; a2 = a[left];
+                    if (a1 < a2) {
+                        a2 = a1; a1 = a[left];
                     }
                     while (a1 < a[--k]) {
                         a[k + 2] = a[k];
@@ -2211,19 +2786,19 @@
             }
         }
 
-        /*
-         * Use the second and fourth of the five sorted elements as pivots.
-         * These values are inexpensive approximations of the first and
-         * second terciles of the array. Note that pivot1 <= pivot2.
-         */
-        double pivot1 = a[e2];
-        double pivot2 = a[e4];
-
         // Pointers
         int less  = left;  // The index of the first element of center part
         int great = right; // The index before the first element of right part
 
-        if (pivot1 != pivot2) {
+        if (a[e1] != a[e2] && a[e2] != a[e3] && a[e3] != a[e4] && a[e4] != a[e5]) {
+            /*
+             * Use the second and fourth of the five sorted elements as pivots.
+             * These values are inexpensive approximations of the first and
+             * second terciles of the array. Note that pivot1 <= pivot2.
+             */
+            double pivot1 = a[e2];
+            double pivot2 = a[e4];
+
             /*
              * The first and the last elements to be sorted are moved to the
              * locations formerly occupied by the pivots. When partitioning
@@ -2268,7 +2843,7 @@
                      * of "a[i++] = b;" due to performance issue.
                      */
                     a[less] = ak;
-                    less++;
+                    ++less;
                 } else if (ak > pivot2) { // Move a[k] to right part
                     while (a[great] > pivot2) {
                         if (great-- == k) {
@@ -2278,7 +2853,7 @@
                     if (a[great] < pivot1) { // a[great] <= pivot2
                         a[k] = a[less];
                         a[less] = a[great];
-                        less++;
+                        ++less;
                     } else { // pivot1 <= a[great] <= pivot2
                         a[k] = a[great];
                     }
@@ -2287,7 +2862,7 @@
                      * of "a[i--] = b;" due to performance issue.
                      */
                     a[great] = ak;
-                    great--;
+                    --great;
                 }
             }
 
@@ -2308,10 +2883,11 @@
                  * Skip elements, which are equal to pivot values.
                  */
                 while (a[less] == pivot1) {
-                    less++;
+                    ++less;
                 }
+
                 while (a[great] == pivot2) {
-                    great--;
+                    --great;
                 }
 
                 /*
@@ -2339,7 +2915,7 @@
                     if (ak == pivot1) { // Move a[k] to left part
                         a[k] = a[less];
                         a[less] = ak;
-                        less++;
+                        ++less;
                     } else if (ak == pivot2) { // Move a[k] to right part
                         while (a[great] == pivot2) {
                             if (great-- == k) {
@@ -2357,12 +2933,12 @@
                              * accurate assignment a[less] = a[great].
                              */
                             a[less] = a[great];
-                            less++;
+                            ++less;
                         } else { // pivot1 < a[great] < pivot2
                             a[k] = a[great];
                         }
                         a[great] = ak;
-                        great--;
+                        --great;
                     }
                 }
             }
@@ -2370,7 +2946,13 @@
             // Sort center part recursively
             sort(a, less, great, false);
 
-        } else { // Pivots are equal
+        } else { // Partitioning with one pivot
+            /*
+             * Use the third of the five sorted elements as pivot.
+             * This value is inexpensive approximation of the median.
+             */
+            double pivot = a[e3];
+
             /*
              * Partitioning degenerates to the traditional 3-way
              * (or "Dutch National Flag") schema:
@@ -2392,27 +2974,27 @@
              * Pointer k is the first index of ?-part.
              */
             for (int k = less; k <= great; ++k) {
-                if (a[k] == pivot1) {
+                if (a[k] == pivot) {
                     continue;
                 }
                 double ak = a[k];
-                if (ak < pivot1) { // Move a[k] to left part
+                if (ak < pivot) { // Move a[k] to left part
                     a[k] = a[less];
                     a[less] = ak;
-                    less++;
-                } else { // a[k] > pivot1 - Move a[k] to right part
-                    while (a[great] > pivot1) {
-                        great--;
+                    ++less;
+                } else { // a[k] > pivot - Move a[k] to right part
+                    while (a[great] > pivot) {
+                        --great;
                     }
-                    if (a[great] < pivot1) { // a[great] <= pivot1
+                    if (a[great] < pivot) { // a[great] <= pivot
                         a[k] = a[less];
                         a[less] = a[great];
-                        less++;
-                    } else { // a[great] == pivot1
+                        ++less;
+                    } else { // a[great] == pivot
                         /*
-                         * Even though a[great] equals to pivot1, the
-                         * assignment a[k] = pivot1 may be incorrect,
-                         * if a[great] and pivot1 are floating-point
+                         * Even though a[great] equals to pivot, the
+                         * assignment a[k] = pivot may be incorrect,
+                         * if a[great] and pivot are floating-point
                          * zeros of different signs. Therefore in float
                          * and double sorting methods we have to use
                          * more accurate assignment a[k] = a[great].
@@ -2420,7 +3002,7 @@
                         a[k] = a[great];
                     }
                     a[great] = ak;
-                    great--;
+                    --great;
                 }
             }
 
--- a/jdk/src/share/classes/java/util/EnumSet.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/util/EnumSet.java	Wed Jul 05 17:35:13 2017 +0200
@@ -317,6 +317,7 @@
      *     or if <tt>rest</tt> is null
      * @return an enum set initially containing the specified elements
      */
+    @SafeVarargs
     public static <E extends Enum<E>> EnumSet<E> of(E first, E... rest) {
         EnumSet<E> result = noneOf(first.getDeclaringClass());
         result.add(first);
--- a/jdk/src/share/classes/java/util/Formatter.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/util/Formatter.java	Wed Jul 05 17:35:13 2017 +0200
@@ -47,9 +47,6 @@
 import java.text.DecimalFormat;
 import java.text.DecimalFormatSymbols;
 import java.text.NumberFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.Locale;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -1859,7 +1856,7 @@
     private static Charset toCharset(String csn)
         throws UnsupportedEncodingException
     {
-        Objects.nonNull(csn, "charsetName");
+        Objects.requireNonNull(csn, "charsetName");
         try {
             return Charset.forName(csn);
         } catch (IllegalCharsetNameException|UnsupportedCharsetException unused) {
@@ -2179,7 +2176,7 @@
      */
     public Formatter(PrintStream ps) {
         this(Locale.getDefault(Locale.Category.FORMAT),
-             (Appendable)Objects.nonNull(ps));
+             (Appendable)Objects.requireNonNull(ps));
     }
 
     /**
--- a/jdk/src/share/classes/java/util/Locale.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/util/Locale.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1265,7 +1265,9 @@
         StringBuilder buf = new StringBuilder();
 
         String subtag = tag.getLanguage();
-        buf.append(LanguageTag.canonicalizeLanguage(subtag));
+        if (subtag.length() > 0) {
+            buf.append(LanguageTag.canonicalizeLanguage(subtag));
+        }
 
         subtag = tag.getScript();
         if (subtag.length() > 0) {
@@ -1294,7 +1296,10 @@
 
         subtag = tag.getPrivateuse();
         if (subtag.length() > 0) {
-            buf.append(LanguageTag.SEP).append(LanguageTag.PRIVATEUSE).append(LanguageTag.SEP);
+            if (buf.length() > 0) {
+                buf.append(LanguageTag.SEP);
+            }
+            buf.append(LanguageTag.PRIVATEUSE).append(LanguageTag.SEP);
             // preserve casing
             buf.append(subtag);
         }
--- a/jdk/src/share/classes/java/util/Objects.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/util/Objects.java	Wed Jul 05 17:35:13 2017 +0200
@@ -187,7 +187,7 @@
      * and constructors, as demonstrated below:
      * <blockquote><pre>
      * public Foo(Bar bar) {
-     *     this.bar = Objects.nonNull(bar);
+     *     this.bar = Objects.requireNonNull(bar);
      * }
      * </pre></blockquote>
      *
@@ -196,7 +196,7 @@
      * @return {@code obj} if not {@code null}
      * @throws NullPointerException if {@code obj} is {@code null}
      */
-    public static <T> T nonNull(T obj) {
+    public static <T> T requireNonNull(T obj) {
         if (obj == null)
             throw new NullPointerException();
         return obj;
@@ -209,8 +209,8 @@
      * constructors with multiple parameters, as demonstrated below:
      * <blockquote><pre>
      * public Foo(Bar bar, Baz baz) {
-     *     this.bar = Objects.nonNull(bar, "bar must not be null");
-     *     this.baz = Objects.nonNull(baz, "baz must not be null");
+     *     this.bar = Objects.requireNonNull(bar, "bar must not be null");
+     *     this.baz = Objects.requireNonNull(baz, "baz must not be null");
      * }
      * </pre></blockquote>
      *
@@ -221,7 +221,7 @@
      * @return {@code obj} if not {@code null}
      * @throws NullPointerException if {@code obj} is {@code null}
      */
-    public static <T> T nonNull(T obj, String message) {
+    public static <T> T requireNonNull(T obj, String message) {
         if (obj == null)
             throw new NullPointerException(message);
         return obj;
--- a/jdk/src/share/classes/java/util/Scanner.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/util/Scanner.java	Wed Jul 05 17:35:13 2017 +0200
@@ -25,7 +25,8 @@
 
 package java.util;
 
-import java.nio.file.FileRef;
+import java.nio.file.Path;
+import java.nio.file.Files;
 import java.util.regex.*;
 import java.io.*;
 import java.math.*;
@@ -34,6 +35,7 @@
 import java.nio.charset.*;
 import java.text.*;
 import java.util.Locale;
+
 import sun.misc.LRUCache;
 
 /**
@@ -591,7 +593,7 @@
      *         interface
      */
     public Scanner(Readable source) {
-        this(Objects.nonNull(source, "source"), WHITESPACE_PATTERN);
+        this(Objects.requireNonNull(source, "source"), WHITESPACE_PATTERN);
     }
 
     /**
@@ -618,7 +620,7 @@
      *         does not exist
      */
     public Scanner(InputStream source, String charsetName) {
-        this(makeReadable(Objects.nonNull(source, "source"), toCharset(charsetName)),
+        this(makeReadable(Objects.requireNonNull(source, "source"), toCharset(charsetName)),
              WHITESPACE_PATTERN);
     }
 
@@ -628,7 +630,7 @@
      * @throws IllegalArgumentException      if the charset is not supported
      */
     private static Charset toCharset(String csn) {
-        Objects.nonNull(csn, "charsetName");
+        Objects.requireNonNull(csn, "charsetName");
         try {
             return Charset.forName(csn);
         } catch (IllegalCharsetNameException|UnsupportedCharsetException e) {
@@ -669,7 +671,7 @@
     public Scanner(File source, String charsetName)
         throws FileNotFoundException
     {
-        this(Objects.nonNull(source), toDecoder(charsetName));
+        this(Objects.requireNonNull(source), toDecoder(charsetName));
     }
 
     private Scanner(File source, CharsetDecoder dec)
@@ -679,7 +681,7 @@
     }
 
     private static CharsetDecoder toDecoder(String charsetName) {
-        Objects.nonNull(charsetName, "charsetName");
+        Objects.requireNonNull(charsetName, "charsetName");
         try {
             return Charset.forName(charsetName).newDecoder();
         } catch (IllegalCharsetNameException|UnsupportedCharsetException unused) {
@@ -699,16 +701,16 @@
      * {@linkplain java.nio.charset.Charset#defaultCharset() default charset}.
      *
      * @param   source
-     *          A file to be scanned
+     *          the path to the file to be scanned
      * @throws  IOException
      *          if an I/O error occurs opening source
      *
      * @since   1.7
      */
-    public Scanner(FileRef source)
+    public Scanner(Path source)
         throws IOException
     {
-        this(source.newInputStream());
+        this(Files.newInputStream(source));
     }
 
     /**
@@ -717,7 +719,7 @@
      * characters using the specified charset.
      *
      * @param   source
-     *          A file to be scanned
+     *          the path to the file to be scanned
      * @param   charsetName
      *          The encoding type used to convert bytes from the file
      *          into characters to be scanned
@@ -727,12 +729,12 @@
      *          if the specified encoding is not found
      * @since   1.7
      */
-    public Scanner(FileRef source, String charsetName) throws IOException {
-        this(Objects.nonNull(source), toCharset(charsetName));
+    public Scanner(Path source, String charsetName) throws IOException {
+        this(Objects.requireNonNull(source), toCharset(charsetName));
     }
 
-    private Scanner(FileRef source, Charset charset)  throws IOException {
-        this(makeReadable(source.newInputStream(), charset));
+    private Scanner(Path source, Charset charset)  throws IOException {
+        this(makeReadable(Files.newInputStream(source), charset));
     }
 
     /**
@@ -754,7 +756,7 @@
      * @param  source A channel to scan
      */
     public Scanner(ReadableByteChannel source) {
-        this(makeReadable(Objects.nonNull(source, "source")),
+        this(makeReadable(Objects.requireNonNull(source, "source")),
              WHITESPACE_PATTERN);
     }
 
@@ -774,7 +776,7 @@
      *         does not exist
      */
     public Scanner(ReadableByteChannel source, String charsetName) {
-        this(makeReadable(Objects.nonNull(source, "source"), toDecoder(charsetName)),
+        this(makeReadable(Objects.requireNonNull(source, "source"), toDecoder(charsetName)),
              WHITESPACE_PATTERN);
     }
 
--- a/jdk/src/share/classes/java/util/regex/Pattern.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/util/regex/Pattern.java	Wed Jul 05 17:35:13 2017 +0200
@@ -101,6 +101,11 @@
  *     <td headers="matches">The character with hexadecimal&nbsp;value&nbsp;<tt>0x</tt><i>hh</i></td></tr>
  * <tr><td valign="top" headers="construct characters"><tt>&#92;u</tt><i>hhhh</i></td>
  *     <td headers="matches">The character with hexadecimal&nbsp;value&nbsp;<tt>0x</tt><i>hhhh</i></td></tr>
+ * <tr><td valign="top" headers="construct characters"><tt>&#92;x</tt><i>{h...h}</i></td>
+ *     <td headers="matches">The character with hexadecimal&nbsp;value&nbsp;<tt>0x</tt><i>h...h</i>
+ *         ({@link java.lang.Character#MIN_CODE_POINT Character.MIN_CODE_POINT}
+ *         &nbsp;&lt;=&nbsp;<tt>0x</tt><i>h...h</i>&nbsp;&lt;=&nbsp
+ *          {@link java.lang.Character#MAX_CODE_POINT Character.MAX_CODE_POINT})</td></tr>
  * <tr><td valign="top" headers="matches"><tt>\t</tt></td>
  *     <td headers="matches">The tab character (<tt>'&#92;u0009'</tt>)</td></tr>
  * <tr><td valign="top" headers="construct characters"><tt>\n</tt></td>
@@ -529,6 +534,13 @@
  * while not equal, compile into the same pattern, which matches the character
  * with hexadecimal value <tt>0x2014</tt>.
  *
+ * <p> A Unicode character can also be represented in a regular-expression by
+ * using its hexadecimal code point value directly as described in construct
+ * <tt>&#92;x{...}</tt>, for example a supplementary character U+2011F
+ * can be specified as <tt>&#92;x{2011F}</tt>, instead of two consecutive
+ * Unicode escape sequences of the surrogate pair
+ * <tt>&#92;uD840</tt><tt>&#92;uDD1F</tt>.
+ *
  * <a name="ubc">
  * <p>Unicode scripts, blocks and categories are written with the <tt>\p</tt> and
  * <tt>\P</tt> constructs as in Perl. <tt>\p{</tt><i>prop</i><tt>}</tt> matches if
@@ -2993,6 +3005,16 @@
             if (ASCII.isHexDigit(m)) {
                 return ASCII.toDigit(n) * 16 + ASCII.toDigit(m);
             }
+        } else if (n == '{' && ASCII.isHexDigit(peek())) {
+            int ch = 0;
+            while (ASCII.isHexDigit(n = read())) {
+                ch = (ch << 4) + ASCII.toDigit(n);
+                if (ch > Character.MAX_CODE_POINT)
+                    throw error("Hexadecimal codepoint is too big");
+            }
+            if (n != '}')
+                throw error("Unclosed hexadecimal escape sequence");
+            return ch;
         }
         throw error("Illegal hexadecimal escape sequence");
     }
--- a/jdk/src/share/classes/java/util/spi/LocaleNameProvider.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/util/spi/LocaleNameProvider.java	Wed Jul 05 17:35:13 2017 +0200
@@ -77,7 +77,7 @@
      * is "Cyrl" and <code>locale</code> is fr_FR, getDisplayScript() will return "cyrillique".
      * If the name returned cannot be localized according to <code>locale</code>,
      * (say, the provider does not have a Japanese name for Cyrillic),
-     * this method returns null.
+     * this method returns null. The default implementation returns null.
      * @param scriptCode the four letter script code string in the form of title-case
      *     letters (the first letter is upper-case character between 'A' (U+0041) and
      *     'Z' (U+005A) followed by three lower-case character between 'a' (U+0061)
--- a/jdk/src/share/classes/java/util/zip/ZipEntry.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/java/util/zip/ZipEntry.java	Wed Jul 05 17:35:13 2017 +0200
@@ -110,19 +110,7 @@
      * @see #getTime()
      */
     public void setTime(long time) {
-        // Same value as defined in sun.jkernel.DownloadManager.KERNEL_STATIC_MODTIME
-        // to avoid direct reference to DownoadManager class.  Need to revisit
-        // if this is needed any more (see comment in the DownloadManager class)
-        final int KERNEL_STATIC_MODTIME = 10000000;
-        BootClassLoaderHook hook = BootClassLoaderHook.getHook();
-        if (hook != null && hook.isCurrentThreadPrefetching()) {
-            // fix for bug 6625963: we bypass time calculations while Kernel is
-            // downloading bundles, since they aren't necessary and would cause
-            // the Kernel core to depend upon the (very large) time zone data
-            this.time = KERNEL_STATIC_MODTIME;
-        } else {
-            this.time = javaToDosTime(time);
-        }
+        this.time = javaToDosTime(time);
     }
 
     /**
--- a/jdk/src/share/classes/javax/crypto/Cipher.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/javax/crypto/Cipher.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, 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
@@ -78,7 +78,7 @@
  *     Cipher c = Cipher.getInstance("<i>DES/CBC/PKCS5Padding</i>");
  * </pre>
  *
- * Using modes such as <code>CFB</code> and <code>OFB<code>, block
+ * Using modes such as <code>CFB</code> and <code>OFB</code>, block
  * ciphers can encrypt data in units smaller than the cipher's actual
  * block size.  When requesting such a mode, you may optionally specify
  * the number of bits to be processed at a time by appending this number
@@ -89,6 +89,33 @@
  * Thus, block ciphers can be turned into byte-oriented stream ciphers by
  * using an 8 bit mode such as CFB8 or OFB8.
  *
+ * <p> Every implementation of the Java platform is required to support
+ * the following standard <code>Cipher</code> transformations with the keysizes
+ * in parentheses:
+ * <ul>
+ * <li><tt>AES/CBC/NoPadding</tt> (128)</li>
+ * <li><tt>AES/CBC/PKCS5Padding</tt> (128)</li>
+ * <li><tt>AES/ECB/NoPadding</tt> (128)</li>
+ * <li><tt>AES/ECB/PKCS5Padding</tt> (128)</li>
+ * <li><tt>DES/CBC/NoPadding</tt> (56)</li>
+ * <li><tt>DES/CBC/PKCS5Padding</tt> (56)</li>
+ * <li><tt>DES/ECB/NoPadding</tt> (56)</li>
+ * <li><tt>DES/ECB/PKCS5Padding</tt> (56)</li>
+ * <li><tt>DESede/CBC/NoPadding</tt> (168)</li>
+ * <li><tt>DESede/CBC/PKCS5Padding</tt> (168)</li>
+ * <li><tt>DESede/ECB/NoPadding</tt> (168)</li>
+ * <li><tt>DESede/ECB/PKCS5Padding</tt> (168)</li>
+ * <li><tt>RSA/ECB/PKCS1Padding</tt> (1024, 2048)</li>
+ * <li><tt>RSA/ECB/OAEPWithSHA-1AndMGF1Padding</tt> (1024, 2048)</li>
+ * <li><tt>RSA/ECB/OAEPWithSHA-256AndMGF1Padding</tt> (1024, 2048)</li>
+ * </ul>
+ * These transformations are described in the
+ * <a href="{@docRoot}/../technotes/guides/security/StandardNames.html#Cipher">
+ * Cipher section</a> of the
+ * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Consult the release documentation for your implementation to see if any
+ * other transformations are supported.
+ *
  * @author Jan Luehe
  * @see KeyGenerator
  * @see SecretKey
@@ -408,10 +435,9 @@
      *
      * @param transformation the name of the transformation, e.g.,
      * <i>DES/CBC/PKCS5Padding</i>.
-     * See Appendix A in the
-     * <a href=
-     *   "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture Reference Guide</a>
+     * See the Cipher section in the <a href=
+     *   "{@docRoot}/../technotes/guides/security/StandardNames.html#Cipher">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard transformation names.
      *
      * @return a cipher that implements the requested transformation.
@@ -485,10 +511,9 @@
      *
      * @param transformation the name of the transformation,
      * e.g., <i>DES/CBC/PKCS5Padding</i>.
-     * See Appendix A in the
-     * <a href=
-     *   "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture Reference Guide</a>
+     * See the Cipher section in the <a href=
+     *   "{@docRoot}/../technotes/guides/security/StandardNames.html#Cipher">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard transformation names.
      *
      * @param provider the name of the provider.
@@ -538,10 +563,9 @@
      *
      * @param transformation the name of the transformation,
      * e.g., <i>DES/CBC/PKCS5Padding</i>.
-     * See Appendix A in the
-     * <a href=
-     *   "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture Reference Guide</a>
+     * See the Cipher section in the <a href=
+     *   "{@docRoot}/../technotes/guides/security/StandardNames.html#Cipher">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard transformation names.
      *
      * @param provider the provider.
--- a/jdk/src/share/classes/javax/crypto/ExemptionMechanism.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/javax/crypto/ExemptionMechanism.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2010, 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
@@ -114,10 +114,10 @@
      *
      * @param algorithm the standard name of the requested exemption
      * mechanism.
-     * See Appendix A in the
+     * See the ExemptionMechanism section in the
      * <a href=
-     *   "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture Reference Guide</a>
+     *   "{docRoot}/../technotes/guides/security/StandardNames.html#Exemption">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard exemption mechanism names.
      *
      * @return the new <code>ExemptionMechanism</code> object.
@@ -153,10 +153,10 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
 
      * @param algorithm the standard name of the requested exemption mechanism.
-     * See Appendix A in the
+     * See the ExemptionMechanism section in the
      * <a href=
-     *   "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture Reference Guide</a>
+     *   "{docRoot}/../technotes/guides/security/StandardNames.html#Exemption">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard exemption mechanism names.
      *
      * @param provider the name of the provider.
@@ -197,10 +197,10 @@
      * does not have to be registered in the provider list.
      *
      * @param algorithm the standard name of the requested exemption mechanism.
-     * See Appendix A in the
+     * See the ExemptionMechanism section in the
      * <a href=
-     *   "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture Reference Guide</a>
+     *   "{docRoot}/../technotes/guides/security/StandardNames.html#Exemption">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard exemption mechanism names.
      *
      * @param provider the provider.
--- a/jdk/src/share/classes/javax/crypto/KeyAgreement.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/javax/crypto/KeyAgreement.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, 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
@@ -54,6 +54,18 @@
  * <code>false</code>, and the second time setting it to <code>true</code>.
  * There may be any number of parties involved in a key exchange.
  *
+ * <p> Every implementation of the Java platform is required to support the
+ * following standard <code>KeyAgreement</code> algorithm:
+ * <ul>
+ * <li><tt>DiffieHellman</tt></li>
+ * </ul>
+ * This algorithm is described in the <a href=
+ * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyAgreement">
+ * KeyAgreement section</a> of the
+ * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Consult the release documentation for your implementation to see if any
+ * other algorithms are supported.
+ *
  * @author Jan Luehe
  *
  * @see KeyGenerator
@@ -135,10 +147,9 @@
      *
      * @param algorithm the standard name of the requested key agreement
      * algorithm.
-     * See Appendix A in the
-     * <a href=
-     *   "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture Reference Guide</a>
+     * See the KeyAgreement section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyAgreement">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation
      * for information about standard algorithm names.
      *
      * @return the new <code>KeyAgreement</code> object.
@@ -182,10 +193,9 @@
      *
      * @param algorithm the standard name of the requested key agreement
      * algorithm.
-     * See Appendix A in the
-     * <a href=
-     *   "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture Reference Guide</a>
+     * See the KeyAgreement section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyAgreement">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation
      * for information about standard algorithm names.
      *
      * @param provider the name of the provider.
@@ -227,10 +237,9 @@
      *
      * @param algorithm the standard name of the requested key agreement
      * algorithm.
-     * See Appendix A in the
-     * <a href=
-     *   "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture Reference Guide</a>
+     * See the KeyAgreement section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyAgreement">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation
      * for information about standard algorithm names.
      *
      * @param provider the provider.
--- a/jdk/src/share/classes/javax/crypto/KeyGenerator.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/javax/crypto/KeyGenerator.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, 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
@@ -84,6 +84,23 @@
  * (via a call to an <code>init</code> method), each provider must
  * supply (and document) a default initialization.
  *
+ * <p> Every implementation of the Java platform is required to support the
+ * following standard <code>KeyGenerator</code> algorithms with the keysizes in
+ * parentheses:
+ * <ul>
+ * <li><tt>AES</tt> (128)</li>
+ * <li><tt>DES</tt> (56)</li>
+ * <li><tt>DESede</tt> (168)</li>
+ * <li><tt>HmacSHA1</tt></li>
+ * <li><tt>HmacSHA256</tt></li>
+ * </ul>
+ * These algorithms are described in the <a href=
+ * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyGenerator">
+ * KeyGenerator section</a> of the
+ * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Consult the release documentation for your implementation to see if any
+ * other algorithms are supported.
+ *
  * @author Jan Luehe
  *
  * @see SecretKey
@@ -170,10 +187,9 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * @param algorithm the standard name of the requested key algorithm.
-     * See Appendix A in the
-     * <a href=
-     *   "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture Reference Guide</a>
+     * See the KeyGenerator section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyGenerator">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @return the new <code>KeyGenerator</code> object.
@@ -204,10 +220,9 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * @param algorithm the standard name of the requested key algorithm.
-     * See Appendix A in the
-     * <a href=
-     *   "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture Reference Guide</a>
+     * See the KeyGenerator section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyGenerator">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @param provider the name of the provider.
@@ -247,10 +262,9 @@
      * does not have to be registered in the provider list.
      *
      * @param algorithm the standard name of the requested key algorithm.
-     * See Appendix A in the
-     * <a href=
-     *   "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture Reference Guide</a>
+     * See the KeyGenerator section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyGenerator">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @param provider the provider.
--- a/jdk/src/share/classes/javax/crypto/Mac.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/javax/crypto/Mac.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2010, 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
@@ -53,6 +53,20 @@
  * e.g., MD5 or SHA-1, in combination with a secret shared key. HMAC is
  * specified in RFC 2104.
  *
+ * <p> Every implementation of the Java platform is required to support
+ * the following standard <code>Mac</code> algorithms:
+ * <ul>
+ * <li><tt>HmacMD5</tt></li>
+ * <li><tt>HmacSHA1</tt></li>
+ * <li><tt>HmacSHA256</tt></li>
+ * </ul>
+ * These algorithms are described in the
+ * <a href="{@docRoot}/../technotes/guides/security/StandardNames.html#Mac">
+ * Mac section</a> of the
+ * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Consult the release documentation for your implementation to see if any
+ * other algorithms are supported.
+ *
  * @author Jan Luehe
  *
  * @since 1.4
@@ -134,9 +148,9 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * @param algorithm the standard name of the requested MAC algorithm.
-     * See Appendix A in the <a href=
-     *   "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture Reference Guide</a>
+     * See the Mac section in the <a href=
+     *   "{@docRoot}/../technotes/guides/security/StandardNames.html#Mac">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @return the new <code>Mac</code> object.
@@ -176,9 +190,9 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * @param algorithm the standard name of the requested MAC algorithm.
-     * See Appendix A in the <a href=
-     *   "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture Reference Guide</a>
+     * See the Mac section in the <a href=
+     *   "{@docRoot}/../technotes/guides/security/StandardNames.html#Mac">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @param provider the name of the provider.
@@ -214,9 +228,9 @@
      * does not have to be registered in the provider list.
      *
      * @param algorithm the standard name of the requested MAC algorithm.
-     * See Appendix A in the <a href=
-     *   "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture Reference Guide</a>
+     * See the Mac section in the <a href=
+     *   "{@docRoot}/../technotes/guides/security/StandardNames.html#Mac">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @param provider the provider.
--- a/jdk/src/share/classes/javax/crypto/SecretKeyFactory.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/javax/crypto/SecretKeyFactory.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, 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
@@ -58,6 +58,20 @@
  * <code>DESedeKeySpec</code> as a transparent representation of Triple DES
  * keys.
  *
+ * <p> Every implementation of the Java platform is required to support the
+ * following standard <code>SecretKeyFactory</code> algorithms:
+ * <ul>
+ * <li><tt>AES</tt></li>
+ * <li><tt>DES</tt></li>
+ * <li><tt>DESede</tt></li>
+ * </ul>
+ * These algorithms are described in the <a href=
+ * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecretKeyFactory">
+ * SecretKeyFactory section</a> of the
+ * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Consult the release documentation for your implementation to see if any
+ * other algorithms are supported.
+ *
  * @author Jan Luehe
  *
  * @see SecretKey
@@ -125,9 +139,9 @@
      *
      * @param algorithm the standard name of the requested secret-key
      * algorithm.
-     * See Appendix A in the <a href=
-     *   "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture Reference Guide</a>
+     * See the SecretKeyFactory section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecretKeyFactory">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @return the new <code>SecretKeyFactory</code> object.
@@ -160,9 +174,9 @@
      *
      * @param algorithm the standard name of the requested secret-key
      * algorithm.
-     * See Appendix A in the <a href=
-     *   "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture Reference Guide</a>
+     * See the SecretKeyFactory section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecretKeyFactory">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @param provider the name of the provider.
@@ -204,9 +218,9 @@
      *
      * @param algorithm the standard name of the requested secret-key
      * algorithm.
-     * See Appendix A in the <a href=
-     *   "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture Reference Guide</a>
+     * See the SecretKeyFactory section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecretKeyFactory">
+     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      *
      * @param provider the provider.
--- a/jdk/src/share/classes/javax/crypto/package.html	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/javax/crypto/package.html	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
-Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+Copyright (c) 1999, 2010, 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
@@ -44,6 +44,15 @@
 Therefore application developers may take advantage of any number of
 provider-based implementations without having to add or rewrite code.
 
+<h2>Package Specification</h2>
+
+<ul>
+  <li><a href="{@docRoot}/../technotes/guides/security/StandardNames.html"><b>
+    <b>Java<FONT SIZE=-2><SUP>TM</SUP></FONT>
+    Cryptography Architecture Standard Algorithm Name
+    Documentation</b></a></li>
+</ul>
+
 <h2>Related Documentation</h2>
 
 For further documentation, please see:
@@ -52,12 +61,12 @@
     <a href=
       "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html">
       <b>Java<FONT SIZE=-2><SUP>TM</SUP></FONT>
-       Cryptography Architecture API Specification and Reference
+       Cryptography Architecture (JCA) Reference Guide
       </b></a></li>
   <li>
     <a href=
       "{@docRoot}/../technotes/guides/security/crypto/HowToImplAProvider.html">
-      <b>How to Implement a Provider for the
+      <b>How to Implement a Provider in the
       Java<FONT SIZE=-2><SUP>TM</SUP></FONT> Cryptography Architecture
       </b></a></li>
 </ul>
--- a/jdk/src/share/classes/javax/net/ssl/SSLContext.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/javax/net/ssl/SSLContext.java	Wed Jul 05 17:35:13 2017 +0200
@@ -37,6 +37,18 @@
  * with an optional set of key and trust managers and source of
  * secure random bytes.
  *
+ * <p> Every implementation of the Java platform is required to support the
+ * following standard <code>SSLContext</code> protocol:
+ * <ul>
+ * <li><tt>TLSv1</tt></li>
+ * </ul>
+ * This protocol is described in the <a href=
+ * "{@docRoot}/../technotes/guides/security/StandardNames.html#SSLContext">
+ * SSLContext section</a> of the
+ * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Consult the release documentation for your implementation to see if any
+ * other algorithms are supported.
+ *
  * @since 1.4
  */
 public class SSLContext {
@@ -124,9 +136,10 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * @param protocol the standard name of the requested protocol.
-     *          See Appendix A in the <a href=
-     *  "{@docRoot}/../technotes/guides/security/jsse/JSSERefGuide.html#AppA">
-     *          Java Secure Socket Extension Reference Guide </a>
+     *          See the SSLContext section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#SSLContext">
+     *          Java Cryptography Architecture Standard Algorithm Name
+     *          Documentation</a>
      *          for information about standard protocol names.
      *
      * @return the new <code>SSLContext</code> object.
@@ -159,9 +172,10 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * @param protocol the standard name of the requested protocol.
-     *          See Appendix A in the <a href=
-     *  "{@docRoot}/../technotes/guides/security/jsse/JSSERefGuide.html#AppA">
-     *          Java Secure Socket Extension Reference Guide </a>
+     *          See the SSLContext section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#SSLContext">
+     *          Java Cryptography Architecture Standard Algorithm Name
+     *          Documentation</a>
      *          for information about standard protocol names.
      *
      * @param provider the name of the provider.
@@ -198,9 +212,10 @@
      * does not have to be registered in the provider list.
      *
      * @param protocol the standard name of the requested protocol.
-     *          See Appendix A in the <a href=
-     *  "{@docRoot}/../technotes/guides/security/jsse/JSSERefGuide.html#AppA">
-     *          Java Secure Socket Extension Reference Guide </a>
+     *          See the SSLContext section in the <a href=
+     * "{@docRoot}/../technotes/guides/security/StandardNames.html#SSLContext">
+     *          Java Cryptography Architecture Standard Algorithm Name
+     *          Documentation</a>
      *          for information about standard protocol names.
      *
      * @param provider an instance of the provider.
--- a/jdk/src/share/classes/javax/net/ssl/package.html	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/javax/net/ssl/package.html	Wed Jul 05 17:35:13 2017 +0200
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--
-Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+Copyright (c) 1999, 2010, 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
@@ -33,14 +33,17 @@
 classes, you can communicate using SSL or a related security protocol
 to reliably detect any errors introduced into the network byte stream
 and to optionally encrypt the data and/or authenticate the communicating peers.
-<!--
+
 <h2>Package Specification</h2>
 
-##### FILL IN ANY SPECS NEEDED BY JAVA COMPATIBILITY KIT #####
 <ul>
-  <li><a href="">##### REFER TO ANY FRAMEMAKER SPECIFICATION HERE #####</a>
+  <li><a href="{@docRoot}/../technotes/guides/security/StandardNames.html">
+    <b>Java<FONT SIZE=-2><SUP>TM</SUP></FONT>
+    Cryptography Architecture Standard Algorithm Name
+    Documentation</b></a></li>
 </ul>
 
+<!--
 <h2>Related Documentation</h2>
 
 For overviews, tutorials, examples, guides, and tool documentation, please see:
--- a/jdk/src/share/classes/javax/security/auth/login/Configuration.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/javax/security/auth/login/Configuration.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2010, 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
@@ -184,9 +184,9 @@
  * implementation.  In addition, an instance of a Configuration object can be
  * constructed by invoking one of the <code>getInstance</code> factory methods
  * with a standard type.  The default policy type is "JavaLoginConfig".
- * See Appendix A in the
- * <a href="../../../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
- * Java Cryptography Architecture API Specification &amp; Reference </a>
+ * See the Configuration section in the <a href=
+ * "{@docRoot}/../technotes/guides/security/StandardNames.html#Configuration">
+ * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
  * for a list of standard Configuration types.
  *
  * @see javax.security.auth.login.LoginContext
@@ -319,10 +319,11 @@
      * <p> Note that the list of registered providers may be retrieved via
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
-     * @param type the specified Configuration type.  See Appendix A in the
-     *    <a href="../../../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     *    Java Cryptography Architecture API Specification &amp; Reference </a>
-     *    for a list of standard Configuration types.
+     * @param type the specified Configuration type.  See the Configuration
+     *    section in the <a href=
+     *    "{@docRoot}/../technotes/guides/security/StandardNames.html#Configuration">
+     *    Java Cryptography Architecture Standard Algorithm Name
+     *    Documentation</a> for a list of standard Configuration types.
      *
      * @param params parameters for the Configuration, which may be null.
      *
@@ -374,10 +375,11 @@
      * <p> Note that the list of registered providers may be retrieved via
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
-     * @param type the specified Configuration type.  See Appendix A in the
-     *    <a href="../../../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     *    Java Cryptography Architecture API Specification &amp; Reference </a>
-     *    for a list of standard Configuration types.
+     * @param type the specified Configuration type.  See the Configuration
+     *    section in the <a href=
+     *    "{@docRoot}/../technotes/guides/security/StandardNames.html#Configuration">
+     *    Java Cryptography Architecture Standard Algorithm Name
+     *    Documentation</a> for a list of standard Configuration types.
      *
      * @param params parameters for the Configuration, which may be null.
      *
@@ -439,10 +441,11 @@
      * object is returned.  Note that the specified Provider object
      * does not have to be registered in the provider list.
      *
-     * @param type the specified Configuration type.  See Appendix A in the
-     *    <a href="../../../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     *    Java Cryptography Architecture API Specification &amp; Reference </a>
-     *    for a list of standard Configuration types.
+     * @param type the specified Configuration type.  See the Configuration
+     *    section in the <a href=
+     *    "{@docRoot}/../technotes/guides/security/StandardNames.html#Configuration">
+     *    Java Cryptography Architecture Standard Algorithm Name
+     *    Documentation</a> for a list of standard Configuration types.
      *
      * @param params parameters for the Configuration, which may be null.
      *
--- a/jdk/src/share/classes/javax/security/auth/login/package.html	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/javax/security/auth/login/package.html	Wed Jul 05 17:35:13 2017 +0200
@@ -2,7 +2,7 @@
 <html>
 <head>
 <!--
-Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved.
+Copyright (c) 2000, 2010, 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
@@ -30,14 +30,16 @@
 <body bgcolor="white">
 
 	This package provides a pluggable authentication framework.
-<!--
 <h2>Package Specification</h2>
 
-##### FILL IN ANY SPECS NEEDED BY JAVA COMPATIBILITY KIT #####
 <ul>
-  <li><a href="">##### REFER TO ANY FRAMEMAKER SPECIFICATION HERE #####</a>
+  <li><a href="{@docRoot}/../technotes/guides/security/StandardNames.html">
+    <b>Java<FONT SIZE=-2><SUP>TM</SUP></FONT>
+    Cryptography Architecture Standard Algorithm Name
+    Documentation</b></a></li>
 </ul>
 
+<!--
 <h2>Related Documentation</h2>
 
 For overviews, tutorials, examples, guides, and tool documentation, please see:
@@ -47,6 +49,6 @@
 
 -->
 
-@since JDK1.4
+@since 1.4
 </body>
 </html>
--- a/jdk/src/share/classes/javax/swing/BorderFactory.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/javax/swing/BorderFactory.java	Wed Jul 05 17:35:13 2017 +0200
@@ -159,9 +159,6 @@
      * Creates a beveled border of the specified type, using
      * the specified colors for the inner and outer highlight
      * and shadow areas.
-     * <p>
-     * Note: The shadow inner and outer colors are
-     * switched for a lowered bevel border.
      *
      * @param type  an integer specifying either
      *          <code>BevelBorder.LOWERED</code> or
--- a/jdk/src/share/classes/javax/swing/BufferStrategyPaintManager.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/javax/swing/BufferStrategyPaintManager.java	Wed Jul 05 17:35:13 2017 +0200
@@ -209,7 +209,7 @@
                 synchronized(BufferStrategyPaintManager.this) {
                     while (showing) {
                         try {
-                            wait();
+                            BufferStrategyPaintManager.this.wait();
                         } catch (InterruptedException ie) {
                         }
                     }
--- a/jdk/src/share/classes/javax/swing/JComponent.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/javax/swing/JComponent.java	Wed Jul 05 17:35:13 2017 +0200
@@ -4911,7 +4911,7 @@
      * painting to originate from this Component, or one of its ancestors.
      * <p/>
      * Calling {@link JComponent#repaint} on a Swing component will be delegated to
-     * the first ancestor which {@code isPaintingOrigin()} returns {@true},
+     * the first ancestor which {@code isPaintingOrigin()} returns {@code true},
      * if there are any.
      * <p/>
      * {@code JComponent} subclasses that need to be repainted when any of their
--- a/jdk/src/share/classes/javax/swing/SwingWorker.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/javax/swing/SwingWorker.java	Wed Jul 05 17:35:13 2017 +0200
@@ -404,6 +404,7 @@
      * @see #process
      *
      */
+    @SafeVarargs
     protected final void publish(V... chunks) {
         synchronized (this) {
             if (doProcess == null) {
--- a/jdk/src/share/classes/javax/swing/ToolTipManager.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/javax/swing/ToolTipManager.java	Wed Jul 05 17:35:13 2017 +0200
@@ -75,6 +75,9 @@
     private MouseMotionListener moveBeforeEnterListener = null;
     private KeyListener accessibilityKeyListener = null;
 
+    private KeyStroke postTip;
+    private KeyStroke hideTip;
+
     // PENDING(ges)
     protected boolean lightWeightPopupEnabled = true;
     protected boolean heavyWeightPopupEnabled = false;
@@ -89,6 +92,9 @@
 
         moveBeforeEnterListener = new MoveBeforeEnterListener();
         accessibilityKeyListener = new AccessibilityKeyListener();
+
+        postTip = KeyStroke.getKeyStroke(KeyEvent.VK_F1, InputEvent.CTRL_MASK);
+        hideTip =  KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
     }
 
     /**
@@ -805,13 +811,13 @@
         public void keyPressed(KeyEvent e) {
             if (!e.isConsumed()) {
                 JComponent source = (JComponent) e.getComponent();
-                if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
+                KeyStroke keyStrokeForEvent = KeyStroke.getKeyStrokeForEvent(e);
+                if (hideTip.equals(keyStrokeForEvent)) {
                     if (tipWindow != null) {
                         hide(source);
                         e.consume();
                     }
-                } else if (e.getKeyCode() == KeyEvent.VK_F1
-                        && e.getModifiers() == Event.CTRL_MASK) {
+                } else if (postTip.equals(keyStrokeForEvent)) {
                     // Shown tooltip will be hidden
                     ToolTipManager.this.show(source);
                     e.consume();
--- a/jdk/src/share/classes/javax/swing/border/BevelBorder.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/javax/swing/border/BevelBorder.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, 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
@@ -26,7 +26,6 @@
 
 import java.awt.Graphics;
 import java.awt.Insets;
-import java.awt.Rectangle;
 import java.awt.Color;
 import java.awt.Component;
 import java.beans.ConstructorProperties;
@@ -82,9 +81,6 @@
     /**
      * Creates a bevel border with the specified type, highlight and
      * shadow colors.
-     * <p>
-     * Note: The shadow inner and outer colors are
-     * switched for a lowered bevel border.
      *
      * @param bevelType the type of bevel for the border
      * @param highlightOuterColor the color to use for the bevel outer highlight
--- a/jdk/src/share/classes/javax/swing/border/StrokeBorder.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/javax/swing/border/StrokeBorder.java	Wed Jul 05 17:35:13 2017 +0200
@@ -88,6 +88,10 @@
     /**
      * Paints the border for the specified component
      * with the specified position and size.
+     * If the border was not specified with a {@link Paint} object,
+     * the component's foreground color will be used to render the border.
+     * If the component's foreground color is not available,
+     * the default color of the {@link Graphics} object will be used.
      *
      * @param c       the component for which this border is being painted
      * @param g       the paint graphics
@@ -96,7 +100,7 @@
      * @param width   the width of the painted border
      * @param height  the height of the painted border
      *
-     * @throws NullPointerException if the specified {@code c} or {@code g} are {@code null}
+     * @throws NullPointerException if the specified {@code g} is {@code null}
      */
     @Override
     public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
@@ -106,7 +110,7 @@
             if (g instanceof Graphics2D) {
                 Graphics2D g2d = (Graphics2D) g;
                 g2d.setStroke(this.stroke);
-                g2d.setPaint(this.paint != null ? this.paint : c.getForeground());
+                g2d.setPaint(this.paint != null ? this.paint : c == null ? null : c.getForeground());
                 g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                                      RenderingHints.VALUE_ANTIALIAS_ON);
                 g2d.draw(new Rectangle2D.Float(x + size / 2, y + size / 2, width - size, height - size));
@@ -118,13 +122,17 @@
     /**
      * Reinitializes the {@code insets} parameter
      * with this border's current insets.
-     * All insets are equal to the line width of the stroke.
+     * Every inset is the smallest (closest to negative infinity) integer value
+     * that is greater than or equal to the line width of the stroke
+     * that is used to paint the border.
      *
      * @param c       the component for which this border insets value applies
      * @param insets  the {@code Insets} object to be reinitialized
      * @return the reinitialized {@code insets} parameter
      *
      * @throws NullPointerException if the specified {@code insets} is {@code null}
+     *
+     * @see Math#ceil
      */
     @Override
     public Insets getBorderInsets(Component c, Insets insets) {
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1721,6 +1721,7 @@
                         editor.setFont( comboBox.getFont() );
                     }
                     isMinimumSizeDirty = true;
+                    isDisplaySizeDirty = true;
                     comboBox.validate();
                 }
                 else if ( propertyName == JComponent.TOOL_TIP_TEXT_KEY ) {
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java	Wed Jul 05 17:35:13 2017 +0200
@@ -342,12 +342,10 @@
 
         setOrientation(splitPane.getOrientation());
 
-        // This plus 2 here is to provide backwards consistancy. Previously,
-        // the old size did not include the 2 pixel border around the divider,
-        // it now does.
-        Integer dividerSize = (Integer)UIManager.get("SplitPane.dividerSize");
-        if (divider == null) dividerSize = 10;
-        LookAndFeel.installProperty(splitPane, "dividerSize", dividerSize);
+        // note: don't rename this temp variable to dividerSize
+        // since it will conflict with "this.dividerSize" field
+        Integer temp = (Integer)UIManager.get("SplitPane.dividerSize");
+        LookAndFeel.installProperty(splitPane, "dividerSize", temp == null? 10: temp);
 
         divider.setDividerSize(splitPane.getDividerSize());
         dividerSize = divider.getDividerSize();
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextPaneUI.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTextPaneUI.java	Wed Jul 05 17:35:13 2017 +0200
@@ -92,7 +92,7 @@
      * </ol>
      *
      * @param c the editor component
-     * @see BasicTextUI#installUI
+     * @see javax.swing.plaf.basic.BasicTextUI#installUI
      * @see ComponentUI#installUI
      */
     @Override
--- a/jdk/src/share/classes/javax/swing/text/JTextComponent.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/javax/swing/text/JTextComponent.java	Wed Jul 05 17:35:13 2017 +0200
@@ -4822,6 +4822,7 @@
      * @return  {@code true} if the composed text exists and is saved,
      *          {@code false} otherwise
      * @see #restoreComposedText
+     * @since 1.7
      */
     protected boolean saveComposedText(int pos) {
         if (composedTextExists()) {
@@ -4845,6 +4846,7 @@
      * should be invoked only if {@code saveComposedText} returns {@code true}.
      *
      * @see #saveComposedText
+     * @since 1.7
      */
     protected void restoreComposedText() {
         Document doc = getDocument();
--- a/jdk/src/share/classes/javax/swing/text/Keymap.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/javax/swing/text/Keymap.java	Wed Jul 05 17:35:13 2017 +0200
@@ -137,6 +137,8 @@
     /**
      * Sets the parent keymap, which will be used to
      * resolve key-bindings.
+     * The behavior is unspecified if a {@code Keymap} has itself
+     * as one of its resolve parents.
      *
      * @param parent the parent keymap
      */
--- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_de.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_de.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2010, 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
@@ -29,173 +29,175 @@
 public class MsgAppletViewer_de extends ListResourceBundle {
 
     public Object[][] getContents() {
-        return new Object[][] {
-            {"textframe.button.dismiss", "Ignorieren"},
-            {"appletviewer.tool.title", "Applet-Ansicht: {0}"},
+        Object[][] temp = new Object[][] {
+            {"textframe.button.dismiss", "Verwerfen"},
+            {"appletviewer.tool.title", "Applet Viewer: {0}"},
             {"appletviewer.menu.applet", "Applet"},
             {"appletviewer.menuitem.restart", "Neu starten"},
             {"appletviewer.menuitem.reload", "Neu laden"},
-            {"appletviewer.menuitem.stop", "Abbrechen"},
+            {"appletviewer.menuitem.stop", "Stoppen"},
             {"appletviewer.menuitem.save", "Speichern..."},
-            {"appletviewer.menuitem.start", "Starten"},
-            {"appletviewer.menuitem.clone", "Klonen..."},
-            {"appletviewer.menuitem.tag", "Markieren..."},
-            {"appletviewer.menuitem.info", "Info..."},
+            {"appletviewer.menuitem.start", "Starten..."},
+            {"appletviewer.menuitem.clone", "Clonen..."},
+            {"appletviewer.menuitem.tag", "Tag..."},
+            {"appletviewer.menuitem.info", "Informationen..."},
             {"appletviewer.menuitem.edit", "Bearbeiten"},
             {"appletviewer.menuitem.encoding", "Zeichencodierung"},
             {"appletviewer.menuitem.print", "Drucken..."},
             {"appletviewer.menuitem.props", "Eigenschaften..."},
-            {"appletviewer.menuitem.close", "Schlie\u00dfen"},
+            {"appletviewer.menuitem.close", "Schlie\u00DFen"},
             {"appletviewer.menuitem.quit", "Beenden"},
-            {"appletviewer.label.hello", "Willkommen..."},
-            {"appletviewer.status.start", "Starte Applet..."},
+            {"appletviewer.label.hello", "Hallo..."},
+            {"appletviewer.status.start", "Applet wird gestartet..."},
             {"appletviewer.appletsave.filedialogtitle","Applet in Datei serialisieren"},
-            {"appletviewer.appletsave.err1", "Serialisiere {0} zu {1}"},
-            {"appletviewer.appletsave.err2", "In appletSave: {0}"},
-            {"appletviewer.applettag", "Angezeigte Marke"},
-            {"appletviewer.applettag.textframe", "Applet-HTML-Marke"},
-            {"appletviewer.appletinfo.applet", "-- Keine Applet-Info --"},
-            {"appletviewer.appletinfo.param", "-- Keine Parameter-Info --"},
-            {"appletviewer.appletinfo.textframe", "Applet-Info"},
-            {"appletviewer.appletprint.fail", "Drucken fehlgeschlagen"},
-            {"appletviewer.appletprint.finish", "Drucken beendet"},
-            {"appletviewer.appletprint.cancel", "Drucken abgebrochen"},
+            {"appletviewer.appletsave.err1", "{0} in {1} serialisieren"},
+            {"appletviewer.appletsave.err2", "in appletSave: {0}"},
+            {"appletviewer.applettag", "Angezeigtes Tag"},
+            {"appletviewer.applettag.textframe", "Applet-HTML-Tag"},
+            {"appletviewer.appletinfo.applet", "-- keine Applet-Informationen --"},
+            {"appletviewer.appletinfo.param", "-- keine Parameterinformationen --"},
+            {"appletviewer.appletinfo.textframe", "Applet-Informationen"},
+            {"appletviewer.appletprint.fail", "Druck nicht erfolgreich."},
+            {"appletviewer.appletprint.finish", "Druck abgeschlossen."},
+            {"appletviewer.appletprint.cancel", "Druck abgebrochen."},
             {"appletviewer.appletencoding", "Zeichencodierung: {0}"},
-            {"appletviewer.parse.warning.requiresname", "Warnung: <param name=... value=...>-Marke erfordert Namensattribut."},
-            {"appletviewer.parse.warning.paramoutside", "Warnung: <param>-Marke au\u00dferhalb <applet> ... </applet>."},
-            {"appletviewer.parse.warning.applet.requirescode", "Warnung: <applet>-Marke erfordert Code-Attribut."},
-            {"appletviewer.parse.warning.applet.requiresheight", "Warnung: <applet>-Marke erfordert H\u00f6henattribut."},
-            {"appletviewer.parse.warning.applet.requireswidth", "Warnung: <applet>-Marke erfordert Breitenattribut."},
-            {"appletviewer.parse.warning.object.requirescode", "Warnung: <object>-Marke erfordert Code-Attribut."},
-            {"appletviewer.parse.warning.object.requiresheight", "Warnung: <object>-Marke erfordert H\u00f6henattribut."},
-            {"appletviewer.parse.warning.object.requireswidth", "Warnung: <object>-Marke erfordert Breitenattribut."},
-            {"appletviewer.parse.warning.embed.requirescode", "Warnung: <embed>-Marke erfordert Code-Attribut."},
-            {"appletviewer.parse.warning.embed.requiresheight", "Warnung: <embed>-Marke erfordert H\u00f6henattribut."},
-            {"appletviewer.parse.warning.embed.requireswidth", "Warnung: <embed>-Marke erfordert Breitenattribut."},
-            {"appletviewer.parse.warning.appnotLongersupported", "Warnung: <app>-Marke wird nicht mehr unterst\u00fctzt, verwenden Sie statt dessen <applet>:"},
-            {"appletviewer.usage", "Syntax: appletviewer <Optionen> url(s)\n\nwobei zu den <Optionen> geh\u00f6ren:\n  -debug                  Starten des Applet-Viewers im Java-Debugger\n  -encoding <Codierung>    Angabe der von HTML-Dateien verwendeten Zeichencodierung\n  -J<Laufzeit-Flag>        \u00dcbergeben des Arguments an den Java-Interpreter\n\nDie Option -J ist keine Standardoption und kann \u00c4nderungen unterliegen."},
-            {"appletviewer.main.err.unsupportedopt", "Nicht unterst\u00fctzte Option: {0}"},
-            {"appletviewer.main.err.unrecognizedarg", "Nicht erkanntes Argument: {0}"},
-            {"appletviewer.main.err.dupoption", "Doppelte Verwendung der Option: {0}"},
+            {"appletviewer.parse.warning.requiresname", "Warnung: F\u00FCr <param name=... value=...>-Tag ist ein \"name\"-Attribut erforderlich."},
+            {"appletviewer.parse.warning.paramoutside", "Warnung: <param>-Tag au\u00DFerhalb von <applet> ... </applet>."},
+            {"appletviewer.parse.warning.applet.requirescode", "Warnung: F\u00FCr <applet>-Tag ist ein \"code\"-Attribut erforderlich."},
+            {"appletviewer.parse.warning.applet.requiresheight", "Warnung: F\u00FCr <applet>-Tag ist ein \"height\"-Attribut erforderlich."},
+            {"appletviewer.parse.warning.applet.requireswidth", "Warnung: F\u00FCr <applet>-Tag ist ein \"width\"-Attribut erforderlich."},
+            {"appletviewer.parse.warning.object.requirescode", "Warnung: F\u00FCr <object>-Tag ist ein \"code\"-Attribut erforderlich."},
+            {"appletviewer.parse.warning.object.requiresheight", "Warnung: F\u00FCr <object>-Tag ist ein \"height\"-Attribut erforderlich."},
+            {"appletviewer.parse.warning.object.requireswidth", "Warnung: F\u00FCr <object>-Tag ist ein \"width\"-Attribut erforderlich."},
+            {"appletviewer.parse.warning.embed.requirescode", "Warnung: F\u00FCr <embed>-Tag ist ein \"code\"-Attribut erforderlich."},
+            {"appletviewer.parse.warning.embed.requiresheight", "Warnung: F\u00FCr <embed>-Tag ist ein \"height\"-Attribut erforderlich."},
+            {"appletviewer.parse.warning.embed.requireswidth", "Warnung: F\u00FCr <embed>-Tag ist ein \"width\"-Attribut erforderlich."},
+            {"appletviewer.parse.warning.appnotLongersupported", "Warnung: <app>-Tag wird nicht mehr unterst\u00FCtzt. Verwenden Sie stattdessen <applet>:"},
+            {"appletviewer.usage", "Verwendung: appletviewer <Optionen> url(s)\n\nwobei die <Optionen> Folgendes umfassen:\n  -debug                  Applet Viewer im Java-Debugger starten\n  -encoding <Codierung>    Zeichencodierung f\u00FCr HTML-Dateien angeben\n  -J <Laufzeitkennzeichen>        Argument an den Java-Interpreter \u00FCbergeben\n\nDie Option \"-J\" ist nicht standardm\u00E4\u00DFig und kann ohne vorherige Ank\u00FCndigung ge\u00E4ndert werden."},
+            {"appletviewer.main.err.unsupportedopt", "Nicht unterst\u00FCtzte Option: {0}"},
+            {"appletviewer.main.err.unrecognizedarg", "Unbekanntes Argument: {0}"},
+            {"appletviewer.main.err.dupoption", "Doppelte Verwendung von Option: {0}"},
             {"appletviewer.main.err.inputfile", "Keine Eingabedateien angegeben."},
-            {"appletviewer.main.err.badurl", "Fehlerhafte URL: {0} ( {1} )"},
-            {"appletviewer.main.err.io", "E/A-Ausnahme beim Lesen: {0}"},
+            {"appletviewer.main.err.badurl", "Ung\u00FCltige URL: {0} ( {1} )"},
+            {"appletviewer.main.err.io", "I/O-Ausnahme beim Lesen von: {0}"},
             {"appletviewer.main.err.readablefile", "Stellen Sie sicher, dass {0} eine lesbare Datei ist."},
             {"appletviewer.main.err.correcturl", "Ist {0} die richtige URL?"},
-            {"appletviewer.main.prop.store", "Benutzerspezifische Eigenschaften f\u00fcr AppletViewer"},
+            {"appletviewer.main.prop.store", "Benutzerspezifische Eigenschaften f\u00FCr AppletViewer"},
             {"appletviewer.main.err.prop.cantread", "Benutzereigenschaftendatei kann nicht gelesen werden: {0}"},
             {"appletviewer.main.err.prop.cantsave", "Benutzereigenschaftendatei kann nicht gespeichert werden: {0}"},
             {"appletviewer.main.warn.nosecmgr", "Warnung: Sicherheit wird deaktiviert."},
-            {"appletviewer.main.debug.cantfinddebug", "Der Debugger wurde nicht gefunden!"},
-            {"appletviewer.main.debug.cantfindmain", "Hauptmethode wurde nicht im Debugger gefunden!"},
-            {"appletviewer.main.debug.exceptionindebug", "Ausnahme im Debugger!"},
-            {"appletviewer.main.debug.cantaccess", "Zugriff auf den Debugger nicht m\u00f6glich!"},
-            {"appletviewer.main.nosecmgr", "Warnung: SecurityManager nicht installiert!"},
-            {"appletviewer.main.warning", "Warnung: Es wurden keine Applets gestartet. Stellen Sie sicher, dass die Eingabe eine <applet>-Marke enth\u00e4lt."},
-            {"appletviewer.main.warn.prop.overwrite", "Warnung: Auf Anforderung des Benutzers wird die Systemeigenschaft vor\u00fcbergehend \u00fcberschrieben: Schl\u00fcssel: {0} alter Wert: {1} neuer Wert: {2}"},
+            {"appletviewer.main.debug.cantfinddebug", "Debugger kann nicht gefunden werden."},
+            {"appletviewer.main.debug.cantfindmain", "Hauptmethode im Debugger kann nicht gefunden werden."},
+            {"appletviewer.main.debug.exceptionindebug", "Ausnahme im Debugger."},
+            {"appletviewer.main.debug.cantaccess", "Zugriff auf Debugger nicht m\u00F6glich."},
+            {"appletviewer.main.nosecmgr", "Warnung: SecurityManager nicht installiert."},
+            {"appletviewer.main.warning", "Warnung: Es wurden keine Applets gestartet. Stellen Sie sicher, dass die Eingabe ein <applet>-Tag enth\u00E4lt."},
+            {"appletviewer.main.warn.prop.overwrite", "Warnung: Systemeigenschaft wird tempor\u00E4r aufgrund von Benutzeranforderung \u00FCberschrieben: Schl\u00FCssel: {0} Alter Wert: {1} Neuer Wert: {2}"},
             {"appletviewer.main.warn.cantreadprops", "Warnung: AppletViewer-Eigenschaftendatei kann nicht gelesen werden: {0} Standardwerte werden verwendet."},
-            {"appletioexception.loadclass.throw.interrupted", "Laden von Klassen unterbrochen: {0}"},
+            {"appletioexception.loadclass.throw.interrupted", "Laden der Klasse unterbrochen: {0}"},
             {"appletioexception.loadclass.throw.notloaded", "Klasse nicht geladen: {0}"},
-            {"appletclassloader.loadcode.verbose", "\u00d6ffne Stream zu {0}, um {1} abzurufen."},
-            {"appletclassloader.filenotfound", "Datei beim Suchen nach {0} nicht gefunden"},
-            {"appletclassloader.fileformat", "Dateiformatausnahme beim Laden: {0}"},
-            {"appletclassloader.fileioexception", "E/A-Ausnahme beim Laden: {0}"},
-            {"appletclassloader.fileexception", "{0} Ausnahme beim Laden: {1}"},
-            {"appletclassloader.filedeath", "{0} gel\u00f6scht beim Laden: {1}"},
-            {"appletclassloader.fileerror", "{0} Fehler beim Laden: {1}"},
-            {"appletclassloader.findclass.verbose.findclass", "{0} sucht Klasse {1}"},
-            {"appletclassloader.findclass.verbose.openstream", "\u00d6ffne Stream zu {0}, um {1} abzurufen."},
-            {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource f\u00fcr Name: {0}"},
+            {"appletclassloader.loadcode.verbose", "\u00D6ffnen von Stream zu: {0}, um {1} abzurufen"},
+            {"appletclassloader.filenotfound", "Datei nicht gefunden beim Suchen nach: {0}"},
+            {"appletclassloader.fileformat", "Dateiformatausnahme beim Laden von: {0}"},
+            {"appletclassloader.fileioexception", "I/O-Ausnahme beim Laden von: {0}"},
+            {"appletclassloader.fileexception", "{0}-Ausnahme beim Laden von: {1}"},
+            {"appletclassloader.filedeath", "{0} abgebrochen beim Laden von: {1}"},
+            {"appletclassloader.fileerror", "{0}-Fehler beim Laden von: {1}"},
+            {"appletclassloader.findclass.verbose.findclass", "{0} Klasse {1} suchen"},
+            {"appletclassloader.findclass.verbose.openstream", "\u00D6ffnen von Stream zu: {0}, um {1} abzurufen"},
+            {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource f\u00FCr Name: {0}"},
             {"appletclassloader.getresource.verbose.found", "Ressource {0} als Systemressource gefunden"},
             {"appletclassloader.getresourceasstream.verbose", "Ressource {0} als Systemressource gefunden"},
-            {"appletpanel.runloader.err", "Entweder Objekt oder Code-Parameter!"},
+            {"appletpanel.runloader.err", "Objekt oder Codeparameter."},
             {"appletpanel.runloader.exception", "Ausnahme beim Deserialisieren von {0}"},
-            {"appletpanel.destroyed", "Applet vernichtet"},
-            {"appletpanel.loaded", "Applet geladen"},
-            {"appletpanel.started", "Applet gestartet"},
-            {"appletpanel.inited", "Applet initialisiert"},
-            {"appletpanel.stopped", "Applet gestoppt"},
-            {"appletpanel.disposed", "Applet abgelegt"},
-            {"appletpanel.nocode", "APPLET-Marke ohne CODE-Parameter"},
-            {"appletpanel.notfound", "Laden: Klasse {0} nicht gefunden"},
-            {"appletpanel.nocreate", "Laden: Instanz von {0} kann nicht erstellt werden."},
-            {"appletpanel.noconstruct", "Laden: {0} ist nicht \u00f6ffentlich oder hat keinen \u00f6ffentlichen Autor."},
-            {"appletpanel.death", "gel\u00f6scht"},
-            {"appletpanel.exception", "Ausnahme: {0}"},
-            {"appletpanel.exception2", "Ausnahme: {0}: {1}"},
-            {"appletpanel.error", "Fehler: {0}"},
-            {"appletpanel.error2", "Fehler: {0}: {1}"},
-            {"appletpanel.notloaded", "Initialisierung: Applet nicht geladen"},
-            {"appletpanel.notinited", "Start: Applet nicht initialisiert"},
-            {"appletpanel.notstarted", "Stopp: Applet nicht gestartet"},
-            {"appletpanel.notstopped", "Vernichten: Applet nicht gestoppt"},
-            {"appletpanel.notdestroyed", "Ablegen: Applet nicht vernichtet"},
-            {"appletpanel.notdisposed", "Laden: Applet nicht abgelegt"},
-            {"appletpanel.bail", "Unterbrochen: breche ab."},
-            {"appletpanel.filenotfound", "Datei beim Suchen nach {0} nicht gefunden"},
+            {"appletpanel.destroyed", "Applet endg\u00FCltig gel\u00F6scht."},
+            {"appletpanel.loaded", "Applet geladen."},
+            {"appletpanel.started", "Applet gestartet."},
+            {"appletpanel.inited", "Applet initialisiert."},
+            {"appletpanel.stopped", "Applet gestoppt."},
+            {"appletpanel.disposed", "Applet verworfen."},
+            {"appletpanel.nocode", "Bei APPLET-Tag fehlt CODE-Parameter."},
+            {"appletpanel.notfound", "Laden: Klasse {0} nicht gefunden."},
+            {"appletpanel.nocreate", "Laden: {0} kann nicht instanziiert werden."},
+            {"appletpanel.noconstruct", "Laden: {0} ist nicht \"public\" oder hat keinen \"public\"-Constructor."},
+            {"appletpanel.death", "abgebrochen"},
+            {"appletpanel.exception", "Ausnahme: {0}."},
+            {"appletpanel.exception2", "Ausnahme: {0}: {1}."},
+            {"appletpanel.error", "Fehler: {0}."},
+            {"appletpanel.error2", "Fehler: {0}: {1}."},
+            {"appletpanel.notloaded", "Init.: Applet nicht geladen."},
+            {"appletpanel.notinited", "Starten: Applet nicht initialisiert."},
+            {"appletpanel.notstarted", "Stoppen: Applet nicht gestartet."},
+            {"appletpanel.notstopped", "Endg\u00FCltig l\u00F6schen: Applet nicht gestoppt."},
+            {"appletpanel.notdestroyed", "Verwerfen: Applet nicht endg\u00FCltig gel\u00F6scht."},
+            {"appletpanel.notdisposed", "Laden: Applet nicht verworfen."},
+            {"appletpanel.bail", "Unterbrochen: Zur\u00FCckziehen."},
+            {"appletpanel.filenotfound", "Datei nicht gefunden beim Suchen nach: {0}"},
             {"appletpanel.fileformat", "Dateiformatausnahme beim Laden von: {0}"},
-            {"appletpanel.fileioexception", "E/A-Ausnahme beim Laden von: {0}"},
-            {"appletpanel.fileexception", "{0} Ausnahme beim Laden von: {1}"},
-            {"appletpanel.filedeath", "{0} gel\u00f6scht beim Laden von: {1}"},
-            {"appletpanel.fileerror", "{0} Fehler beim Laden von: {1}"},
-            {"appletpanel.badattribute.exception", "HTML-Parsing: fehlerhafter Wert bei Attribut f\u00fcr Breite/H\u00f6he"},
-            {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream erfordert Nicht-Null-Lader."},
+            {"appletpanel.fileioexception", "I/O-Ausnahme beim Laden von: {0}"},
+            {"appletpanel.fileexception", "{0}-Ausnahme beim Laden von: {1}"},
+            {"appletpanel.filedeath", "{0} abgebrochen beim Laden von: {1}"},
+            {"appletpanel.fileerror", "{0}-Fehler beim Laden von: {1}"},
+            {"appletpanel.badattribute.exception", "HTML-Parsing: Falscher Wert f\u00FCr \"width/height\"-Attribut"},
+            {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream erfordert Loader ungleich null"},
             {"appletprops.title", "AppletViewer-Eigenschaften"},
-            {"appletprops.label.http.server", "Http-Proxy-Server:"},
-            {"appletprops.label.http.proxy", "Http-Proxy-Port:"},
+            {"appletprops.label.http.server", "HTTP-Proxyserver:"},
+            {"appletprops.label.http.proxy", "HTTP-Proxyport:"},
             {"appletprops.label.network", "Netzwerkzugriff:"},
-            {"appletprops.choice.network.item.none", "Keiner"},
+            {"appletprops.choice.network.item.none", "Keine"},
             {"appletprops.choice.network.item.applethost", "Applet-Host"},
-            {"appletprops.choice.network.item.unrestricted", "Unbeschr\u00e4nkt"},
+            {"appletprops.choice.network.item.unrestricted", "Uneingeschr\u00E4nkt"},
             {"appletprops.label.class", "Klassenzugriff:"},
-            {"appletprops.choice.class.item.restricted", "Beschr\u00e4nkt"},
-            {"appletprops.choice.class.item.unrestricted", "Unbeschr\u00e4nkt"},
-            {"appletprops.label.unsignedapplet", "Unsignierte Applets zulassen:"},
+            {"appletprops.choice.class.item.restricted", "Eingeschr\u00E4nkt"},
+            {"appletprops.choice.class.item.unrestricted", "Uneingeschr\u00E4nkt"},
+            {"appletprops.label.unsignedapplet", "Nicht signierte Applets zulassen:"},
             {"appletprops.choice.unsignedapplet.no", "Nein"},
             {"appletprops.choice.unsignedapplet.yes", "Ja"},
             {"appletprops.button.apply", "Anwenden"},
             {"appletprops.button.cancel", "Abbrechen"},
-            {"appletprops.button.reset", "Zur\u00fccksetzen"},
-            {"appletprops.apply.exception", "Konnte Eigenschaften nicht speichern: {0}"},
+            {"appletprops.button.reset", "Zur\u00FCcksetzen"},
+            {"appletprops.apply.exception", "Eigenschaften konnten nicht gespeichert werden: {0}"},
             /* 4066432 */
-            {"appletprops.title.invalidproxy", "Ung\u00fcltiger Eintrag"},
-            {"appletprops.label.invalidproxy", "Proxy-Anschluss muss eine positive ganze Zahl sein."},
+            {"appletprops.title.invalidproxy", "Ung\u00FCltiger Eintrag"},
+            {"appletprops.label.invalidproxy", "Proxyport muss ein positiver Ganzzahlwert sein."},
             {"appletprops.button.ok", "OK"},
             /* end 4066432 */
-            {"appletprops.prop.store", "Benutzerspezifische Eigenschaften f\u00fcr AppletViewer"},
-            {"appletsecurityexception.checkcreateclassloader", "Sicherheitsausnahme: classloader"},
+            {"appletprops.prop.store", "Benutzerspezifische Eigenschaften f\u00FCr AppletViewer"},
+            {"appletsecurityexception.checkcreateclassloader", "Sicherheitsausnahme: Class Loader"},
             {"appletsecurityexception.checkaccess.thread", "Sicherheitsausnahme: Thread"},
-            {"appletsecurityexception.checkaccess.threadgroup", "Sicherheitsausnahme: Thread-Gruppe: {0}"},
-            {"appletsecurityexception.checkexit", "Sicherheitsausnahme: beenden: {0}"},
-            {"appletsecurityexception.checkexec", "Sicherheitsausnahme: ausf\u00fchren: {0}"},
-            {"appletsecurityexception.checklink", "Sicherheitsausnahme: verkn\u00fcpfen: {0}"},
+            {"appletsecurityexception.checkaccess.threadgroup", "Sicherheitsausnahme: Threadgruppe: {0}"},
+            {"appletsecurityexception.checkexit", "Sicherheitsausnahme: Beenden: {0}"},
+            {"appletsecurityexception.checkexec", "Sicherheitsausnahme: Ausf\u00FChrung: {0}"},
+            {"appletsecurityexception.checklink", "Sicherheitsausnahme: Link: {0}"},
             {"appletsecurityexception.checkpropsaccess", "Sicherheitsausnahme: Eigenschaften"},
-            {"appletsecurityexception.checkpropsaccess.key", "Sicherheitsausnahme: Eigenschaftenzugriff {0}"},
+            {"appletsecurityexception.checkpropsaccess.key", "Sicherheitsausnahme: Eigenschaftszugriff {0}"},
             {"appletsecurityexception.checkread.exception1", "Sicherheitsausnahme: {0}, {1}"},
-            {"appletsecurityexception.checkread.exception2", "Sicherheitsausnahme: Datei.lesen: {0}"},
-            {"appletsecurityexception.checkread", "Sicherheitsausnahme: Datei.lesen: {0} == {1}"},
+            {"appletsecurityexception.checkread.exception2", "Sicherheitsausnahme: file.read: {0}"},
+            {"appletsecurityexception.checkread", "Sicherheitsausnahme: file.read: {0} == {1}"},
             {"appletsecurityexception.checkwrite.exception", "Sicherheitsausnahme: {0}, {1}"},
-            {"appletsecurityexception.checkwrite", "Sicherheitsausnahme: Datei.schreiben: {0} == {1}"},
-            {"appletsecurityexception.checkread.fd", "Sicherheitsausnahme: fd.lesen"},
-            {"appletsecurityexception.checkwrite.fd", "Sicherheitsausnahme: fd.schreiben"},
-            {"appletsecurityexception.checklisten", "Sicherheitsausnahme: Socket.empfangen: {0}"},
-            {"appletsecurityexception.checkaccept", "Sicherheitsausnahme: Socket.best\u00e4tigen: {0}:{1}"},
-            {"appletsecurityexception.checkconnect.networknone", "Sicherheitsausnahme: Socket.verbinden: {0}->{1}"},
-            {"appletsecurityexception.checkconnect.networkhost1", "Sicherheitsausnahme: Konnte von {1} aus keine Verbindung mit {0} herstellen."},
-            {"appletsecurityexception.checkconnect.networkhost2", "Sicherheitsausnahme: Konnte IP f\u00fcr Host {0} oder {1} nicht aufl\u00f6sen."},
-            {"appletsecurityexception.checkconnect.networkhost3", "Sicherheitsausnahme: Konnte IP f\u00fcr Host {0} nicht aufl\u00f6sen. Siehe Eigenschaft trustProxy."},
-            {"appletsecurityexception.checkconnect", "Sicherheitsausnahme: verbinden: {0}->{1}"},
-            {"appletsecurityexception.checkpackageaccess", "Sicherheitsausnahme: Kann nicht auf Package zugreifen: {0}"},
-            {"appletsecurityexception.checkpackagedefinition", "Sicherheitsausnahme: Kann Package nicht definieren: {0}"},
-            {"appletsecurityexception.cannotsetfactory", "Sicherheitsausnahme: Kann Werkseinstellungen nicht setzen"},
-            {"appletsecurityexception.checkmemberaccess", "Sicherheitsausnahme: Mitgliedszugriff pr\u00fcfen"},
+            {"appletsecurityexception.checkwrite", "Sicherheitsausnahme: file.write: {0} == {1}"},
+            {"appletsecurityexception.checkread.fd", "Sicherheitsausnahme: fd.read"},
+            {"appletsecurityexception.checkwrite.fd", "Sicherheitsausnahme: fd.write"},
+            {"appletsecurityexception.checklisten", "Sicherheitsausnahme: socket.listen: {0}"},
+            {"appletsecurityexception.checkaccept", "Sicherheitsausnahme: socket.accept: {0}:{1}"},
+            {"appletsecurityexception.checkconnect.networknone", "Sicherheitsausnahme: socket.connect: {0}->{1}"},
+            {"appletsecurityexception.checkconnect.networkhost1", "Sicherheitsausnahme: Verbindung mit {0} mit Ursprung aus {1} konnte nicht hergestellt werden."},
+            {"appletsecurityexception.checkconnect.networkhost2", "Sicherheitsausnahme: IP f\u00FCr Host {0} oder f\u00FCr {1} konnte nicht aufgel\u00F6st werden. "},
+            {"appletsecurityexception.checkconnect.networkhost3", "Sicherheitsausnahme: IP f\u00FCr Host {0} konnte nicht aufgel\u00F6st werden. Siehe trustProxy-Eigenschaft."},
+            {"appletsecurityexception.checkconnect", "Sicherheitsausnahme: Verbinden: {0}->{1}"},
+            {"appletsecurityexception.checkpackageaccess", "Sicherheitsausnahme: Zugriff auf Package nicht m\u00F6glich: {0}"},
+            {"appletsecurityexception.checkpackagedefinition", "Sicherheitsausnahme: Package kann nicht definiert werden: {0}"},
+            {"appletsecurityexception.cannotsetfactory", "Sicherheitsausnahme: Factory kann nicht festgelegt werden"},
+            {"appletsecurityexception.checkmemberaccess", "Sicherheitsausnahme: Mitgliedszugriff pr\u00FCfen"},
             {"appletsecurityexception.checkgetprintjob", "Sicherheitsausnahme: getPrintJob"},
             {"appletsecurityexception.checksystemclipboardaccess", "Sicherheitsausnahme: getSystemClipboard"},
             {"appletsecurityexception.checkawteventqueueaccess", "Sicherheitsausnahme: getEventQueue"},
-            {"appletsecurityexception.checksecurityaccess", "Sicherheitsausnahme: Sicherheitsoperation: {0}"},
-            {"appletsecurityexception.getsecuritycontext.unknown", "Unbekannter Klassenladertyp. Konnte nicht auf getContext pr\u00fcfen."},
-            {"appletsecurityexception.checkread.unknown", "Unbekannter Klassenladertyp. Konnte \u00dcberpr\u00fcfen des Lesevorgangs {0} nicht pr\u00fcfen."},
-            {"appletsecurityexception.checkconnect.unknown", "Unbekannter Klassenladertyp. Konnte \u00dcberpr\u00fcfen der Verbindung nicht pr\u00fcfen."},
+            {"appletsecurityexception.checksecurityaccess", "Sicherheitsausnahme: Sicherheitsvorgang: {0}"},
+            {"appletsecurityexception.getsecuritycontext.unknown", "Unbekannter Class Loader-Typ. Pr\u00FCfen auf getContext nicht m\u00F6glich"},
+            {"appletsecurityexception.checkread.unknown", "Unbekannter Class Loader-Typ. Pr\u00FCfen auf checkRead {0} nicht m\u00F6glich"},
+            {"appletsecurityexception.checkconnect.unknown", "Unbekannter Class Loader-Typ. Pr\u00FCfen auf checkConnect nicht m\u00F6glich"},
         };
+
+        return temp;
     }
 }
--- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_es.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_es.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2010, 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
@@ -29,173 +29,175 @@
 public class MsgAppletViewer_es extends ListResourceBundle {
 
     public Object[][] getContents() {
-        return new Object[][] {
-            {"textframe.button.dismiss", "Rechazar"},
-            {"appletviewer.tool.title", "AppletViewer: {0}"},
-            {"appletviewer.menu.applet", "Subprograma"},
+        Object[][] temp = new Object[][] {
+            {"textframe.button.dismiss", "Descartar"},
+            {"appletviewer.tool.title", "Visor de Applet: {0}"},
+            {"appletviewer.menu.applet", "Applet"},
             {"appletviewer.menuitem.restart", "Reiniciar"},
-            {"appletviewer.menuitem.reload", "Volver a cargar"},
+            {"appletviewer.menuitem.reload", "Volver a Cargar"},
             {"appletviewer.menuitem.stop", "Parar"},
             {"appletviewer.menuitem.save", "Guardar..."},
             {"appletviewer.menuitem.start", "Iniciar"},
             {"appletviewer.menuitem.clone", "Clonar..."},
             {"appletviewer.menuitem.tag", "Etiqueta..."},
-            {"appletviewer.menuitem.info", "Informaci\u00f3n..."},
+            {"appletviewer.menuitem.info", "Informaci\u00F3n..."},
             {"appletviewer.menuitem.edit", "Editar"},
-            {"appletviewer.menuitem.encoding", "Codificaci\u00f3n de caracteres"},
+            {"appletviewer.menuitem.encoding", "Codificaci\u00F3n de Caracteres"},
             {"appletviewer.menuitem.print", "Imprimir..."},
             {"appletviewer.menuitem.props", "Propiedades..."},
             {"appletviewer.menuitem.close", "Cerrar"},
             {"appletviewer.menuitem.quit", "Salir"},
             {"appletviewer.label.hello", "Hola..."},
-            {"appletviewer.status.start", "iniciando subprograma..."},
-            {"appletviewer.appletsave.filedialogtitle","Serializar subprograma en archivo"},
-            {"appletviewer.appletsave.err1", "serializando {0} como {1}"},
+            {"appletviewer.status.start", "iniciando applet..."},
+            {"appletviewer.appletsave.filedialogtitle","Serializar Applet en Archivo"},
+            {"appletviewer.appletsave.err1", "serializando {0} en {1}"},
             {"appletviewer.appletsave.err2", "en appletSave: {0}"},
-            {"appletviewer.applettag", "Etiqueta mostrada"},
-            {"appletviewer.applettag.textframe", "Etiqueta HTML de subprograma"},
-            {"appletviewer.appletinfo.applet", "-- sin informaci\u00f3n de subprograma --"},
-            {"appletviewer.appletinfo.param", "-- sin informaci\u00f3n de par\u00e1metro --"},
-            {"appletviewer.appletinfo.textframe", "Informaci\u00f3n de subprograma"},
-            {"appletviewer.appletprint.fail", "Fallo en la impresi\u00f3n."},
-            {"appletviewer.appletprint.finish", "Impresi\u00f3n finalizada."},
-            {"appletviewer.appletprint.cancel", "Impresi\u00f3n cancelada."},
-            {"appletviewer.appletencoding", "Codificaci\u00f3n de caracteres: {0}"},
-            {"appletviewer.parse.warning.requiresname", "Advertencia: la etiqueta <param name=... value=...> requiere el atributo del nombre."},
-            {"appletviewer.parse.warning.paramoutside", "Advertencia: la etiqueta <param> est\u00e1 fuera de <applet> ... </applet>."},
-            {"appletviewer.parse.warning.applet.requirescode", "Advertencia: <applet> requiere el atributo de c\u00f3digo."},
-            {"appletviewer.parse.warning.applet.requiresheight", "Advertencia: <applet> requiere el atributo de altura."},
-            {"appletviewer.parse.warning.applet.requireswidth", "Advertencia: <applet> requiere el atributo de anchura."},
-            {"appletviewer.parse.warning.object.requirescode", "Advertencia: <object> requiere el atributo de c\u00f3digo."},
-            {"appletviewer.parse.warning.object.requiresheight", "Advertencia: <object> requiere el atributo de altura."},
-            {"appletviewer.parse.warning.object.requireswidth", "Advertencia: <object> requiere el atributo de anchura."},
-            {"appletviewer.parse.warning.embed.requirescode", "Advertencia: <embed> requiere el atributo de c\u00f3digo."},
-            {"appletviewer.parse.warning.embed.requiresheight", "Advertencia: <embed> requiere el atributo de altura."},
-            {"appletviewer.parse.warning.embed.requireswidth", "Advertencia: <embed> requiere el atributo de anchura."},
-            {"appletviewer.parse.warning.appnotLongersupported", "Advertencia: la etiqueta <app> ya no est\u00e1 soportada; utilice <applet> en su lugar:"},
-            {"appletviewer.usage", "Sintaxis: appletviewer <opciones> url(s)\n\ndonde <opciones> incluye:\n  -debug                  Iniciar el AppletViewer en el depurador de Java\n  -encoding <codificaci\u00f3n>    Especificar la codificaci\u00f3n de caracteres utilizada por los archivos HTML\n  -J<etiqueta de runtime>        Pasar argumento al int\u00e9rprete de Java\n\nLa opci\u00f3n -J no es est\u00e1ndar, y puede modificarse sin previo aviso."},
-            {"appletviewer.main.err.unsupportedopt", "Opci\u00f3n no admitida: {0}"},
+            {"appletviewer.applettag", "Etiqueta Mostrada"},
+            {"appletviewer.applettag.textframe", "Etiqueta HTML de Applet"},
+            {"appletviewer.appletinfo.applet", "-- ninguna informaci\u00F3n de applet --"},
+            {"appletviewer.appletinfo.param", "-- ninguna informaci\u00F3n de par\u00E1metros --"},
+            {"appletviewer.appletinfo.textframe", "Informaci\u00F3n del Applet"},
+            {"appletviewer.appletprint.fail", "Fallo de impresi\u00F3n."},
+            {"appletviewer.appletprint.finish", "Impresi\u00F3n terminada."},
+            {"appletviewer.appletprint.cancel", "Impresi\u00F3n cancelada."},
+            {"appletviewer.appletencoding", "Codificaci\u00F3n de Caracteres: {0}"},
+            {"appletviewer.parse.warning.requiresname", "Advertencia: la etiqueta <param name=... value=...> requiere un atributo name."},
+            {"appletviewer.parse.warning.paramoutside", "Advertencia: la etiqueta <param> est\u00E1 fuera de <applet> ... </applet>."},
+            {"appletviewer.parse.warning.applet.requirescode", "Advertencia: la etiqueta <applet> requiere el atributo code."},
+            {"appletviewer.parse.warning.applet.requiresheight", "Advertencia: la etiqueta <applet> requiere el atributo height."},
+            {"appletviewer.parse.warning.applet.requireswidth", "Advertencia: la etiqueta <applet> requiere el atributo width."},
+            {"appletviewer.parse.warning.object.requirescode", "Advertencia: la etiqueta <object> requiere el atributo code."},
+            {"appletviewer.parse.warning.object.requiresheight", "Advertencia: la etiqueta <object> requiere el atributo height."},
+            {"appletviewer.parse.warning.object.requireswidth", "Advertencia: la etiqueta <object> requiere el atributo width."},
+            {"appletviewer.parse.warning.embed.requirescode", "Advertencia: la etiqueta <embed> requiere el atributo code."},
+            {"appletviewer.parse.warning.embed.requiresheight", "Advertencia: la etiqueta <embed> requiere el atributo height."},
+            {"appletviewer.parse.warning.embed.requireswidth", "Advertencia: la etiqueta <embed> requiere el atributo width."},
+            {"appletviewer.parse.warning.appnotLongersupported", "Advertencia: la etiqueta <app> ya no est\u00E1 soportada, utilice <applet> en su lugar:"},
+            {"appletviewer.usage", "Sintaxis: appletviewer <opciones> url(s)\n\ndonde <opciones> incluye:\n  -debug                  Iniciar el visor de applet en el depurador Java\n  -encoding <codificaci\u00F3n>    Especificar la codificaci\u00F3n de caracteres utilizada por los archivos HTML\n  -J<indicador de tiempo de ejecuci\u00F3n>        Transferir argumento al int\u00E9rprete de Java\n\nLa opci\u00F3n -J es no est\u00E1ndar y est\u00E1 sujeta a cambios sin previo aviso."},
+            {"appletviewer.main.err.unsupportedopt", "Opci\u00F3n no soportada: {0}"},
             {"appletviewer.main.err.unrecognizedarg", "Argumento no reconocido: {0}"},
-            {"appletviewer.main.err.dupoption", "Uso duplicado de la opci\u00f3n: {0}"},
-            {"appletviewer.main.err.inputfile", "No se ha especificado ning\u00fan archivo de entrada."},
-            {"appletviewer.main.err.badurl", "URL err\u00f3neo: {0} ( {1} )"},
-            {"appletviewer.main.err.io", "Excepci\u00f3n de E/S durante la lectura: {0}"},
-            {"appletviewer.main.err.readablefile", "Aseg\u00farese de que {0} es un archivo y que puede leerse."},
-            {"appletviewer.main.err.correcturl", "\u00bfEs {0} el URL correcto?"},
-            {"appletviewer.main.prop.store", "Propiedades del AppletViewer espec\u00edficos del usuario"},
+            {"appletviewer.main.err.dupoption", "Uso duplicado de la opci\u00F3n: {0}"},
+            {"appletviewer.main.err.inputfile", "No se ha especificado ning\u00FAn archivo de entrada."},
+            {"appletviewer.main.err.badurl", "URL Err\u00F3nea: {0} ( {1} )"},
+            {"appletviewer.main.err.io", "Excepci\u00F3n de E/S durante la lectura: {0}"},
+            {"appletviewer.main.err.readablefile", "Aseg\u00FArese de que {0} es un archivo y que se puede leer."},
+            {"appletviewer.main.err.correcturl", "\u00BFEs {0} la URL correcta?"},
+            {"appletviewer.main.prop.store", "Propiedades Espec\u00EDficas del Usuario para AppletViewer"},
             {"appletviewer.main.err.prop.cantread", "No se puede leer el archivo de propiedades del usuario: {0}"},
             {"appletviewer.main.err.prop.cantsave", "No se puede guardar el archivo de propiedades del usuario: {0}"},
-            {"appletviewer.main.warn.nosecmgr", "Advertencia: inhabilitando seguridad."},
-            {"appletviewer.main.debug.cantfinddebug", "No se puede encontrar el depurador."},
-            {"appletviewer.main.debug.cantfindmain", "No se puede encontrar el m\u00e9todo principal en el depurador."},
-            {"appletviewer.main.debug.exceptionindebug", "Excepci\u00f3n en el depurador."},
+            {"appletviewer.main.warn.nosecmgr", "Advertencia: desactivando seguridad."},
+            {"appletviewer.main.debug.cantfinddebug", "No se ha encontrado el depurador."},
+            {"appletviewer.main.debug.cantfindmain", "No se ha encontrado el m\u00E9todo principal en el depurador."},
+            {"appletviewer.main.debug.exceptionindebug", "Excepci\u00F3n en el depurador."},
             {"appletviewer.main.debug.cantaccess", "No se puede acceder al depurador."},
-            {"appletviewer.main.nosecmgr", "Advertencia: SecurityManager no est\u00e1 instalado."},
-            {"appletviewer.main.warning", "Advertencia: No se ha iniciado ning\u00fan subprograma. Aseg\u00farese de que la entrada contiene una etiqueta <applet>."},
-            {"appletviewer.main.warn.prop.overwrite", "Advertencia: Sobrescribiendo temporalmente propiedad del sistema por solicitud del usuario: clave: {0} valor antiguo: {1} valor nuevo: {2}"},
-            {"appletviewer.main.warn.cantreadprops", "Advertencia: No se puede leer el archivo de propiedades del AppletViewer: {0} Utilizando valores predeterminados."},
+            {"appletviewer.main.nosecmgr", "Advertencia: no se ha instalado SecurityManager."},
+            {"appletviewer.main.warning", "Advertencia: no se ha iniciado ning\u00FAn applet. Aseg\u00FArese de que la entrada contiene una etiqueta <applet>."},
+            {"appletviewer.main.warn.prop.overwrite", "Advertencia: se sobrescribir\u00E1 temporalmente la propiedad del sistema cuando lo solicite el usuario: clave: {0} valor anterior: {1} nuevo valor: {2}"},
+            {"appletviewer.main.warn.cantreadprops", "Advertencia: no se puede leer el archivo de propiedades de AppletViewer: {0}. Utilizando valores por defecto."},
             {"appletioexception.loadclass.throw.interrupted", "carga de clase interrumpida: {0}"},
             {"appletioexception.loadclass.throw.notloaded", "clase no cargada: {0}"},
-            {"appletclassloader.loadcode.verbose", "Abriendo cadena de flujo: {0} para obtener {1}"},
-            {"appletclassloader.filenotfound", "Archivo no encontrado al buscar: {0}"},
-            {"appletclassloader.fileformat", "Excepci\u00f3n de formato de archivo al cargar: {0}"},
-            {"appletclassloader.fileioexception", "Excepci\u00f3n de E/S al cargar: {0}"},
-            {"appletclassloader.fileexception", "Excepci\u00f3n de {0} al cargar: {1}"},
-            {"appletclassloader.filedeath", "{0} eliminado al cargar: {1}"},
+            {"appletclassloader.loadcode.verbose", "Abriendo flujo a: {0} para obtener {1}"},
+            {"appletclassloader.filenotfound", "No se ha encontrado el archivo al buscar: {0}"},
+            {"appletclassloader.fileformat", "Excepci\u00F3n de formato de archivo al cargar: {0}"},
+            {"appletclassloader.fileioexception", "Excepci\u00F3n de E/S al cargar: {0}"},
+            {"appletclassloader.fileexception", "Excepci\u00F3n de {0} al cargar: {1}"},
+            {"appletclassloader.filedeath", "{0} interrumpido al cargar: {1}"},
             {"appletclassloader.fileerror", "error de {0} al cargar: {1}"},
-            {"appletclassloader.findclass.verbose.findclass", "{0} buscar clase {1}"},
-            {"appletclassloader.findclass.verbose.openstream", "Abriendo cadena de flujo: {0} para obtener {1}"},
-            {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource para el nombre: {0}"},
-            {"appletclassloader.getresource.verbose.found", "Recurso encontrado: {0} como recurso del sistema"},
-            {"appletclassloader.getresourceasstream.verbose", "Recurso encontrado: {0} como recurso del sistema"},
-            {"appletpanel.runloader.err", "Par\u00e1metro de objeto o c\u00f3digo"},
-            {"appletpanel.runloader.exception", "excepci\u00f3n al cancelar serializaci\u00f3n de {0}"},
-            {"appletpanel.destroyed", "subprograma destruido."},
-            {"appletpanel.loaded", "Subprograma cargado."},
-            {"appletpanel.started", "Subprograma iniciado."},
-            {"appletpanel.inited", "Subprograma inicializado."},
-            {"appletpanel.stopped", "Subprograma parado."},
-            {"appletpanel.disposed", "Subprograma desechado."},
-            {"appletpanel.nocode", "La etiqueta APPLET carece del par\u00e1metro CODE."},
+            {"appletclassloader.findclass.verbose.findclass", "{0} encontrar la clase {1}"},
+            {"appletclassloader.findclass.verbose.openstream", "Abriendo flujo a: {0} para obtener {1}"},
+            {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource para nombre: {0}"},
+            {"appletclassloader.getresource.verbose.found", "Recurso encontrado: {0} como un recurso de sistema"},
+            {"appletclassloader.getresourceasstream.verbose", "Recurso encontrado: {0} como un recurso de sistema"},
+            {"appletpanel.runloader.err", "Par\u00E1metro de c\u00F3digo u objeto."},
+            {"appletpanel.runloader.exception", "excepci\u00F3n al deserializar {0}"},
+            {"appletpanel.destroyed", "Applet destruido."},
+            {"appletpanel.loaded", "Applet cargado."},
+            {"appletpanel.started", "Applet iniciado."},
+            {"appletpanel.inited", "Applet inicializado."},
+            {"appletpanel.stopped", "Applet parado."},
+            {"appletpanel.disposed", "Applet desechado."},
+            {"appletpanel.nocode", "Falta el par\u00E1metro CODE en la etiqueta APPLET."},
             {"appletpanel.notfound", "cargar: clase {0} no encontrada."},
-            {"appletpanel.nocreate", "cargar: no se puede crear un caso de {0}."},
-            {"appletpanel.noconstruct", "cargar: {0} no es p\u00fablico o no tiene ning\u00fan constructor p\u00fablico."},
-            {"appletpanel.death", "eliminado"},
-            {"appletpanel.exception", "excepci\u00f3n: {0}."},
-            {"appletpanel.exception2", "excepci\u00f3n: {0}: {1}."},
+            {"appletpanel.nocreate", "cargar: {0} no se puede instanciar."},
+            {"appletpanel.noconstruct", "cargar: {0} no es p\u00FAblico o no tiene un constructor p\u00FAblico."},
+            {"appletpanel.death", "interrumpido"},
+            {"appletpanel.exception", "excepci\u00F3n: {0}."},
+            {"appletpanel.exception2", "excepci\u00F3n: {0}: {1}."},
             {"appletpanel.error", "error: {0}."},
             {"appletpanel.error2", "error: {0}: {1}."},
-            {"appletpanel.notloaded", "Inicializar: subprograma no cargado."},
-            {"appletpanel.notinited", "Iniciar: subprograma no inicializado."},
-            {"appletpanel.notstarted", "Parar: subprograma no iniciado."},
-            {"appletpanel.notstopped", "Destruir: subprograma no parado."},
-            {"appletpanel.notdestroyed", "Desechar: subprograma no destruido."},
-            {"appletpanel.notdisposed", "Cargar: subprograma no desechado."},
-            {"appletpanel.bail", "Interrupci\u00f3n: efectuando salida."},
-            {"appletpanel.filenotfound", "Archivo no encontrado al buscar: {0}"},
-            {"appletpanel.fileformat", "Excepci\u00f3n de formato de archivo al cargar: {0}"},
-            {"appletpanel.fileioexception", "Excepci\u00f3n de E/S al cargar: {0}"},
-            {"appletpanel.fileexception", "Excepci\u00f3n de {0} al cargar: {1}"},
-            {"appletpanel.filedeath", "{0} eliminado al cargar: {1}"},
-            {"appletpanel.fileerror", "Error de {0} al cargar: {1}"},
-            {"appletpanel.badattribute.exception", "An\u00e1lisis de HTML: valor incorrecto para el atributo ancho/alto"},
-            {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream requiere un cargador que no sea nulo (non-null)"},
+            {"appletpanel.notloaded", "Iniciaci\u00F3n: applet no cargado."},
+            {"appletpanel.notinited", "Iniciar: applet no inicializado."},
+            {"appletpanel.notstarted", "Parar: applet no iniciado."},
+            {"appletpanel.notstopped", "Destruir: applet no parado."},
+            {"appletpanel.notdestroyed", "Desechar: applet no destruido."},
+            {"appletpanel.notdisposed", "Cargar: applet no desechado."},
+            {"appletpanel.bail", "Interrumpido: rescatando."},
+            {"appletpanel.filenotfound", "No se ha encontrado el archivo al buscar: {0}"},
+            {"appletpanel.fileformat", "Excepci\u00F3n de formato de archivo al cargar: {0}"},
+            {"appletpanel.fileioexception", "Excepci\u00F3n de E/S al cargar: {0}"},
+            {"appletpanel.fileexception", "Excepci\u00F3n de {0} al cargar: {1}"},
+            {"appletpanel.filedeath", "{0} interrumpido al cargar: {1}"},
+            {"appletpanel.fileerror", "error de {0} al cargar: {1}"},
+            {"appletpanel.badattribute.exception", "An\u00E1lisis HTML: valor incorrecto para el atributo width/height."},
+            {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream requiere un cargador no nulo"},
             {"appletprops.title", "Propiedades de AppletViewer"},
-            {"appletprops.label.http.server", "Servidor proxy Http:"},
-            {"appletprops.label.http.proxy", "Puerto proxy Http:"},
-            {"appletprops.label.network", "Acceso a la red:"},
+            {"appletprops.label.http.server", "Servidor Proxy HTTP:"},
+            {"appletprops.label.http.proxy", "Puerto Proxy HTTP:"},
+            {"appletprops.label.network", "Acceso de Red:"},
             {"appletprops.choice.network.item.none", "Ninguno"},
-            {"appletprops.choice.network.item.applethost", "Sistema de subprogramas"},
-            {"appletprops.choice.network.item.unrestricted", "Sin restricciones"},
-            {"appletprops.label.class", "Acceso a clase:"},
+            {"appletprops.choice.network.item.applethost", "Host del Applet"},
+            {"appletprops.choice.network.item.unrestricted", "No Restringido"},
+            {"appletprops.label.class", "Acceso de Clase:"},
             {"appletprops.choice.class.item.restricted", "Restringido"},
-            {"appletprops.choice.class.item.unrestricted", "Sin restricciones"},
-            {"appletprops.label.unsignedapplet", "Permitir subprogramas sin firmar:"},
+            {"appletprops.choice.class.item.unrestricted", "No Restringido"},
+            {"appletprops.label.unsignedapplet", "Permitir Applets no Firmados:"},
             {"appletprops.choice.unsignedapplet.no", "No"},
-            {"appletprops.choice.unsignedapplet.yes", "S\u00ed"},
+            {"appletprops.choice.unsignedapplet.yes", "S\u00ED"},
             {"appletprops.button.apply", "Aplicar"},
             {"appletprops.button.cancel", "Cancelar"},
             {"appletprops.button.reset", "Restablecer"},
-            {"appletprops.apply.exception", "Fallo al guardar propiedades: {0}"},
+            {"appletprops.apply.exception", "Fallo al guardar las propiedades: {0}"},
             /* 4066432 */
-            {"appletprops.title.invalidproxy", "Entrada no v\u00e1lida"},
-            {"appletprops.label.invalidproxy", "El puerto del delegado debe ser un entero positivo"},
+            {"appletprops.title.invalidproxy", "Entrada no V\u00E1lida"},
+            {"appletprops.label.invalidproxy", "El puerto proxy debe ser un valor entero positivo."},
             {"appletprops.button.ok", "Aceptar"},
             /* end 4066432 */
-            {"appletprops.prop.store", "Propiedades del AppletViewer espec\u00edficos del usuario"},
-            {"appletsecurityexception.checkcreateclassloader", "Excepci\u00f3n de seguridad: classloader"},
-            {"appletsecurityexception.checkaccess.thread", "Excepci\u00f3n de seguridad: thread"},
-            {"appletsecurityexception.checkaccess.threadgroup", "Excepci\u00f3n de seguridad: threadgroup: {0}"},
-            {"appletsecurityexception.checkexit", "Excepci\u00f3n de seguridad: exit: {0}"},
-            {"appletsecurityexception.checkexec", "Excepci\u00f3n de seguridad: exec: {0}"},
-            {"appletsecurityexception.checklink", "Excepci\u00f3n de seguridad: link: {0}"},
-            {"appletsecurityexception.checkpropsaccess", "Excepci\u00f3n de seguridad: properties"},
-            {"appletsecurityexception.checkpropsaccess.key", "Excepci\u00f3n de seguridad: properties access {0}"},
-            {"appletsecurityexception.checkread.exception1", "Excepci\u00f3n de seguridad: {0}, {1}"},
-            {"appletsecurityexception.checkread.exception2", "Excepci\u00f3n de seguridad: file.read: {0}"},
-            {"appletsecurityexception.checkread", "Excepci\u00f3n de seguridad: file.read: {0} == {1}"},
-            {"appletsecurityexception.checkwrite.exception", "Excepci\u00f3n de seguridad: {0}, {1}"},
-            {"appletsecurityexception.checkwrite", "Excepci\u00f3n de seguridad: file.write: {0} == {1}"},
-            {"appletsecurityexception.checkread.fd", "Excepci\u00f3n de seguridad: fd.read"},
-            {"appletsecurityexception.checkwrite.fd", "Excepci\u00f3n de seguridad: fd.write"},
-            {"appletsecurityexception.checklisten", "Excepci\u00f3n de seguridad: socket.listen: {0}"},
-            {"appletsecurityexception.checkaccept", "Excepci\u00f3n de seguridad: socket.accept: {0}:{1}"},
-            {"appletsecurityexception.checkconnect.networknone", "Excepci\u00f3n de seguridad: socket.connect: {0}->{1}"},
-            {"appletsecurityexception.checkconnect.networkhost1", "Excepci\u00f3n de seguridad: No se puede conectar a {0} con un origen de {1}."},
-            {"appletsecurityexception.checkconnect.networkhost2", "Excepci\u00f3n de seguridad: No se puede resolver IP para el sistema {0} o para {1}. "},
-            {"appletsecurityexception.checkconnect.networkhost3", "Excepci\u00f3n de seguridad: No se puede resolver IP para el sistema {0}. V\u00e9ase la propiedad trustProxy."},
-            {"appletsecurityexception.checkconnect", "Excepci\u00f3n de seguridad: connect: {0}->{1}"},
-            {"appletsecurityexception.checkpackageaccess", "Excepci\u00f3n de seguridad: no se puede acceder al paquete: {0}"},
-            {"appletsecurityexception.checkpackagedefinition", "Excepci\u00f3n de seguridad: no se puede definir el paquete: {0}"},
-            {"appletsecurityexception.cannotsetfactory", "Excepci\u00f3n de seguridad: no se puede definir factory"},
-            {"appletsecurityexception.checkmemberaccess", "Excepci\u00f3n de seguridad: compruebe el acceso del miembro"},
-            {"appletsecurityexception.checkgetprintjob", "Excepci\u00f3n de seguridad: getPrintJob"},
-            {"appletsecurityexception.checksystemclipboardaccess", "Excepci\u00f3n de seguridad: getSystemClipboard"},
-            {"appletsecurityexception.checkawteventqueueaccess", "Excepci\u00f3n de seguridad: getEventQueue"},
-            {"appletsecurityexception.checksecurityaccess", "Excepci\u00f3n de seguridad: operaci\u00f3n de seguridad: {0}"},
-            {"appletsecurityexception.getsecuritycontext.unknown", "Tipo de cargador de clase desconocido. No es posible comprobar getContext"},
-            {"appletsecurityexception.checkread.unknown", "Tipo de cargador de clase desconocido. No es posible comprobar la verificaci\u00f3n de lectura {0}"},
-            {"appletsecurityexception.checkconnect.unknown", "Tipo de cargador de clase desconocido. No es posible comprobar la verificaci\u00f3n de conexi\u00f3n"},
+            {"appletprops.prop.store", "Propiedades espec\u00EDficas del usuario para AppletViewer"},
+            {"appletsecurityexception.checkcreateclassloader", "Excepci\u00F3n de Seguridad: classloader"},
+            {"appletsecurityexception.checkaccess.thread", "Excepci\u00F3n de Seguridad: thread"},
+            {"appletsecurityexception.checkaccess.threadgroup", "Excepci\u00F3n de Seguridad: threadgroup: {0}"},
+            {"appletsecurityexception.checkexit", "Excepci\u00F3n de Seguridad: salir: {0}"},
+            {"appletsecurityexception.checkexec", "Excepci\u00F3n de Seguridad: ejecutar: {0}"},
+            {"appletsecurityexception.checklink", "Excepci\u00F3n de Seguridad: enlace: {0}"},
+            {"appletsecurityexception.checkpropsaccess", "Excepci\u00F3n de Seguridad: propiedades"},
+            {"appletsecurityexception.checkpropsaccess.key", "Excepci\u00F3n de Seguridad: acceso a propiedades {0}"},
+            {"appletsecurityexception.checkread.exception1", "Excepci\u00F3n de Seguridad: {0}, {1}"},
+            {"appletsecurityexception.checkread.exception2", "Excepci\u00F3n de Seguridad: file.read: {0}"},
+            {"appletsecurityexception.checkread", "Excepci\u00F3n de Seguridad: file.read: {0} == {1}"},
+            {"appletsecurityexception.checkwrite.exception", "Excepci\u00F3n de Seguridad: {0}, {1}"},
+            {"appletsecurityexception.checkwrite", "Excepci\u00F3n de Seguridad: file.write: {0} == {1}"},
+            {"appletsecurityexception.checkread.fd", "Excepci\u00F3n de Seguridad: fd.read"},
+            {"appletsecurityexception.checkwrite.fd", "Excepci\u00F3n de Seguridad: fd.write"},
+            {"appletsecurityexception.checklisten", "Excepci\u00F3n de Seguridad: socket.listen: {0}"},
+            {"appletsecurityexception.checkaccept", "Excepci\u00F3n de Seguridad: socket.accept: {0}:{1}"},
+            {"appletsecurityexception.checkconnect.networknone", "Excepci\u00F3n de Seguridad: socket.connect: {0}->{1}"},
+            {"appletsecurityexception.checkconnect.networkhost1", "Excepci\u00F3n de Seguridad: no se puede conectar a {0} con origen de {1}."},
+            {"appletsecurityexception.checkconnect.networkhost2", "Excepci\u00F3n de Seguridad: no se puede resolver la IP para el host {0} o para {1}. "},
+            {"appletsecurityexception.checkconnect.networkhost3", "Excepci\u00F3n de Seguridad: no se puede resolver la IP para el host {0}. Consulte la propiedad trustProxy."},
+            {"appletsecurityexception.checkconnect", "Excepci\u00F3n de Seguridad: conexi\u00F3n: {0}->{1}"},
+            {"appletsecurityexception.checkpackageaccess", "Excepci\u00F3n de Seguridad: no se puede acceder al paquete: {0}"},
+            {"appletsecurityexception.checkpackagedefinition", "Excepci\u00F3n de Seguridad: no se puede definir el paquete: {0}"},
+            {"appletsecurityexception.cannotsetfactory", "Excepci\u00F3n de Seguridad: no se puede definir el valor de f\u00E1brica"},
+            {"appletsecurityexception.checkmemberaccess", "Excepci\u00F3n de Seguridad: comprobar el acceso de miembro"},
+            {"appletsecurityexception.checkgetprintjob", "Excepci\u00F3n de Seguridad: getPrintJob"},
+            {"appletsecurityexception.checksystemclipboardaccess", "Excepci\u00F3n de Seguridad: getSystemClipboard"},
+            {"appletsecurityexception.checkawteventqueueaccess", "Excepci\u00F3n de Seguridad: getEventQueue"},
+            {"appletsecurityexception.checksecurityaccess", "Excepci\u00F3n de Seguridad: operaci\u00F3n de seguridad: {0}"},
+            {"appletsecurityexception.getsecuritycontext.unknown", "tipo de cargador de clase desconocido. no se puede comprobar para getContext"},
+            {"appletsecurityexception.checkread.unknown", "tipo de cargador de clase desconocido. no se puede comprobar para lectura de comprobaci\u00F3n {0}"},
+            {"appletsecurityexception.checkconnect.unknown", "tipo de cargador de clase desconocido. no se puede comprobar para conexi\u00F3n de comprobaci\u00F3n"},
         };
+
+        return temp;
     }
 }
--- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_fr.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_fr.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2010, 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
@@ -29,173 +29,175 @@
 public class MsgAppletViewer_fr extends ListResourceBundle {
 
     public Object[][] getContents() {
-        return new Object[][] {
-            {"textframe.button.dismiss", "Annuler"},
-            {"appletviewer.tool.title", "AppletViewer : {0}"},
+        Object[][] temp = new Object[][] {
+            {"textframe.button.dismiss", "Abandonner"},
+            {"appletviewer.tool.title", "Visualiseur d''applets : {0}"},
             {"appletviewer.menu.applet", "Applet"},
-            {"appletviewer.menuitem.restart", "Red\u00e9marrer"},
+            {"appletviewer.menuitem.restart", "Red\u00E9marrer"},
             {"appletviewer.menuitem.reload", "Recharger"},
-            {"appletviewer.menuitem.stop", "Arr\u00eater"},
+            {"appletviewer.menuitem.stop", "Arr\u00EAter"},
             {"appletviewer.menuitem.save", "Enregistrer..."},
-            {"appletviewer.menuitem.start", "D\u00e9marrer"},
-            {"appletviewer.menuitem.clone", "Dupliquer..."},
-            {"appletviewer.menuitem.tag", "Marquer..."},
+            {"appletviewer.menuitem.start", "D\u00E9marrer"},
+            {"appletviewer.menuitem.clone", "Cloner..."},
+            {"appletviewer.menuitem.tag", "Baliser..."},
             {"appletviewer.menuitem.info", "Informations..."},
-            {"appletviewer.menuitem.edit", "Editer"},
-            {"appletviewer.menuitem.encoding", "Codage des caract\u00e8res"},
+            {"appletviewer.menuitem.edit", "Modifier"},
+            {"appletviewer.menuitem.encoding", "Encodage de caract\u00E8res"},
             {"appletviewer.menuitem.print", "Imprimer..."},
-            {"appletviewer.menuitem.props", "Propri\u00e9t\u00e9s..."},
+            {"appletviewer.menuitem.props", "Propri\u00E9t\u00E9s..."},
             {"appletviewer.menuitem.close", "Fermer"},
             {"appletviewer.menuitem.quit", "Quitter"},
             {"appletviewer.label.hello", "Bonjour..."},
-            {"appletviewer.status.start", "d\u00e9marrage de l'applet"},
-            {"appletviewer.appletsave.filedialogtitle","S\u00e9rialiser un applet en fichier"},
-            {"appletviewer.appletsave.err1", "num\u00e9rotation d''un {0} vers {1}"},
+            {"appletviewer.status.start", "d\u00E9marrage de l'applet..."},
+            {"appletviewer.appletsave.filedialogtitle","S\u00E9rialiser l'applet dans le fichier"},
+            {"appletviewer.appletsave.err1", "S\u00E9rialisation de {0} vers {1}"},
             {"appletviewer.appletsave.err2", "dans appletSave : {0}"},
-            {"appletviewer.applettag", "Etiquette affich\u00e9e"},
-            {"appletviewer.applettag.textframe", "Etiquette HTML applet"},
-            {"appletviewer.appletinfo.applet", "-- aucune information applet --"},
-            {"appletviewer.appletinfo.param", "-- aucune information de param\u00e8tre --"},
-            {"appletviewer.appletinfo.textframe", "Information applet"},
+            {"appletviewer.applettag", "Balise affich\u00E9e"},
+            {"appletviewer.applettag.textframe", "Balise HTML d'applet"},
+            {"appletviewer.appletinfo.applet", "-- aucune information d'applet --"},
+            {"appletviewer.appletinfo.param", "-- aucune information de param\u00E8tre --"},
+            {"appletviewer.appletinfo.textframe", "Informations d'applet"},
             {"appletviewer.appletprint.fail", "Echec de l'impression."},
-            {"appletviewer.appletprint.finish", "Impression achev\u00e9e."},
-            {"appletviewer.appletprint.cancel", "Impression annul\u00e9e."},
-            {"appletviewer.appletencoding", "Codage de caract\u00e8re : {0}"},
-            {"appletviewer.parse.warning.requiresname", "Avertissement : l'\u00e9tiquette <param name=... value=...> n\u00e9cessite un attribut name."},
-            {"appletviewer.parse.warning.paramoutside", "Avertissement : \u00e9tiquette <param> en dehors de <applet> ... </applet>."},
-            {"appletviewer.parse.warning.applet.requirescode", "Avertissement : l'\u00e9tiquette <applet> exige un attribut de code."},
-            {"appletviewer.parse.warning.applet.requiresheight", "Avertissement : l'\u00e9tiquette <applet> exige un attribut de hauteur."},
-            {"appletviewer.parse.warning.applet.requireswidth", "Avertissement : l'\u00e9tiquette <applet> exige un attribut de largeur."},
-            {"appletviewer.parse.warning.object.requirescode", "Avertissement : l'\u00e9tiquette <object> exige un attribut de code."},
-            {"appletviewer.parse.warning.object.requiresheight", "Avertissement : l'\u00e9tiquette <object> exige un attribut de hauteur."},
-            {"appletviewer.parse.warning.object.requireswidth", "Avertissement : l'\u00e9tiquette <object> exige un attribut de largeur."},
-            {"appletviewer.parse.warning.embed.requirescode", "Avertissement : l'\u00e9tiquette <embed> exige un attribut de code."},
-            {"appletviewer.parse.warning.embed.requiresheight", "Avertissement : l'\u00e9tiquette <embed> exige un attribut de hauteur."},
-            {"appletviewer.parse.warning.embed.requireswidth", "Avertissement : l'\u00e9tiquette <embed> exige un attribut de largeur."},
-            {"appletviewer.parse.warning.appnotLongersupported", "Avertissement : l'\u00e9tiquette <app> n'est plus prise en charge ; utilisez <applet> \u00e0 la place :"},
-            {"appletviewer.usage", "Syntaxe : appletviewer <options> url(s)\n\nO\u00f9 les <options> sont :\n  -debug                  Lancer le visualiseur d'applet dans le d\u00e9bogueur Java\n  -encoding <codage>    Sp\u00e9cifier le codage de caract\u00e8res utilis\u00e9 par les fichiers HTML\n  -J<indicateur d'ex\u00e9cution>        Transmettre l'argument \u00e0 l'interpr\u00e9teur Java\n\nL'option -J n'est pas standard et peut \u00eatre modifi\u00e9e sans pr\u00e9avis."},
+            {"appletviewer.appletprint.finish", "Impression termin\u00E9e."},
+            {"appletviewer.appletprint.cancel", "Impression annul\u00E9e."},
+            {"appletviewer.appletencoding", "Encodage de caract\u00E8res : {0}"},
+            {"appletviewer.parse.warning.requiresname", "Avertissement : la balise <param name=... value=...> requiert un attribut de nom."},
+            {"appletviewer.parse.warning.paramoutside", "Avertissement : la balise <param> est en dehors des balises <applet> ... </applet>."},
+            {"appletviewer.parse.warning.applet.requirescode", "Avertissement : la balise <applet> requiert un attribut de code."},
+            {"appletviewer.parse.warning.applet.requiresheight", "Avertissement : la balise <applet> requiert un attribut de hauteur."},
+            {"appletviewer.parse.warning.applet.requireswidth", "Avertissement : la balise <applet> requiert un attribut de largeur."},
+            {"appletviewer.parse.warning.object.requirescode", "Avertissement : la balise <object> requiert un attribut de code."},
+            {"appletviewer.parse.warning.object.requiresheight", "Avertissement : la balise <object> requiert un attribut de hauteur."},
+            {"appletviewer.parse.warning.object.requireswidth", "Avertissement : la balise <object> requiert un attribut de largeur."},
+            {"appletviewer.parse.warning.embed.requirescode", "Avertissement : la balise <embed> requiert un attribut de code."},
+            {"appletviewer.parse.warning.embed.requiresheight", "Avertissement : la balise <embed> requiert un attribut de hauteur."},
+            {"appletviewer.parse.warning.embed.requireswidth", "Avertissement : la balise <embed> requiert un attribut de largeur."},
+            {"appletviewer.parse.warning.appnotLongersupported", "Avertissement : la balise <app> n'est plus prise en charge, utilisez <applet> \u00E0 la place :"},
+            {"appletviewer.usage", "Syntaxe : appletviewer <options> url(s)\n\no\u00F9 <options> inclut :\n  -debug                  D\u00E9marrer le visualiseur d'applets dans le d\u00E9bogueur Java\n  -encoding <encoding>    Indiquer l'encodage de caract\u00E8res utilis\u00E9 par les fichiers HTML\n  -J<runtime flag>        Transmettre l'argument \u00E0 l'interpr\u00E9teur Java\n\nL'option -J n'est pas standard et elle peut \u00EAtre modifi\u00E9e sans pr\u00E9avis."},
             {"appletviewer.main.err.unsupportedopt", "Option non prise en charge : {0}"},
-            {"appletviewer.main.err.unrecognizedarg", "Argument inconnu : {0}"},
-            {"appletviewer.main.err.dupoption", "Option en double : {0}"},
-            {"appletviewer.main.err.inputfile", "Aucun fichier d'entr\u00e9e n'a \u00e9t\u00e9 sp\u00e9cifi\u00e9."},
-            {"appletviewer.main.err.badurl", "URL incorrect : {0} ( {1} )"},
-            {"appletviewer.main.err.io", "Exception d''E/S pendant la lecture de {0}"},
-            {"appletviewer.main.err.readablefile", "{0} doit \u00eatre un fichier accessible en lecture."},
-            {"appletviewer.main.err.correcturl", "{0} est-il l''URL correct ?"},
-            {"appletviewer.main.prop.store", "Propri\u00e9t\u00e9s AppletViewer propres \u00e0 l'utilisateur"},
-            {"appletviewer.main.err.prop.cantread", "Echec de lecture du fichier de propri\u00e9t\u00e9s des utilisateurs : {0}"},
-            {"appletviewer.main.err.prop.cantsave", "Echec de sauvegarde du fichier de propri\u00e9t\u00e9s des utilisateurs : {0}"},
-            {"appletviewer.main.warn.nosecmgr", "Avertissement : d\u00e9sactivation de la s\u00e9curit\u00e9."},
-            {"appletviewer.main.debug.cantfinddebug", "D\u00e9bogueur introuvable !"},
-            {"appletviewer.main.debug.cantfindmain", "M\u00e9thode principale introuvable dans le d\u00e9bogueur !"},
-            {"appletviewer.main.debug.exceptionindebug", "Exception dans le d\u00e9bogueur !"},
-            {"appletviewer.main.debug.cantaccess", "D\u00e9bogueur inaccessible !"},
-            {"appletviewer.main.nosecmgr", "Avertissement : SecurityManager n'est pas install\u00e9 !"},
-            {"appletviewer.main.warning", "Avertissement : aucun applet n'a \u00e9t\u00e9 d\u00e9marr\u00e9. Assurez-vous que l'entr\u00e9e contient une \u00e9tiquette <applet>."},
-            {"appletviewer.main.warn.prop.overwrite", "Avertissement : remplacement temporaire de propri\u00e9t\u00e9 de syst\u00e8me \u00e0 la demande de l''utilisateur : cl\u00e9 : {0} ancienne valeur : {1} nouvelle valeur : {2}"},
-            {"appletviewer.main.warn.cantreadprops", "Avertissement : \u00e9chec de lecture du fichier de propri\u00e9t\u00e9s AppletViewer : {0} Utilisation des valeurs par d\u00e9faut."},
+            {"appletviewer.main.err.unrecognizedarg", "Argument non reconnu : {0}"},
+            {"appletviewer.main.err.dupoption", "Utilisation en double de l''option : {0}"},
+            {"appletviewer.main.err.inputfile", "Aucun fichier d'entr\u00E9e indiqu\u00E9."},
+            {"appletviewer.main.err.badurl", "URL incorrecte : {0} ({1})"},
+            {"appletviewer.main.err.io", "Exception d''E/S lors de la lecture : {0}"},
+            {"appletviewer.main.err.readablefile", "Assurez-vous que {0} est un fichier accessible en lecture."},
+            {"appletviewer.main.err.correcturl", "L''\u00E9l\u00E9ment {0} est-il l''URL correcte ?"},
+            {"appletviewer.main.prop.store", "Propri\u00E9t\u00E9s utilisateur pour AppletViewer"},
+            {"appletviewer.main.err.prop.cantread", "Impossible de lire le fichier de propri\u00E9t\u00E9s utilisateur : {0}"},
+            {"appletviewer.main.err.prop.cantsave", "Impossible d''enregistrer le fichier de propri\u00E9t\u00E9s utilisateur : {0}"},
+            {"appletviewer.main.warn.nosecmgr", "Avertissement : d\u00E9sactivation de la s\u00E9curit\u00E9."},
+            {"appletviewer.main.debug.cantfinddebug", "D\u00E9bogueur introuvable."},
+            {"appletviewer.main.debug.cantfindmain", "La m\u00E9thode principale est introuvable dans le d\u00E9bogueur."},
+            {"appletviewer.main.debug.exceptionindebug", "Exception d\u00E9tect\u00E9e dans le d\u00E9bogueur."},
+            {"appletviewer.main.debug.cantaccess", "Impossible d'acc\u00E9der au d\u00E9bogueur."},
+            {"appletviewer.main.nosecmgr", "Avertissement : SecurityManager n'est pas install\u00E9."},
+            {"appletviewer.main.warning", "Avertissement : aucune applet n'a \u00E9t\u00E9 d\u00E9marr\u00E9e. Assurez-vous que l'entr\u00E9e contient une balise <applet>."},
+            {"appletviewer.main.warn.prop.overwrite", "Avertissement : remplacement temporaire de la propri\u00E9t\u00E9 syst\u00E8me \u00E0 la demande de l''utilisateur - Cl\u00E9 : {0}, ancienne valeur : {1}, nouvelle valeur : {2}"},
+            {"appletviewer.main.warn.cantreadprops", "Avertissement : impossible de lire le fichier de propri\u00E9t\u00E9s d''AppletViewer : {0} Utilisation des valeurs par d\u00E9faut."},
             {"appletioexception.loadclass.throw.interrupted", "chargement de classe interrompu : {0}"},
-            {"appletioexception.loadclass.throw.notloaded", "classe non charg\u00e9e : {0}"},
-            {"appletclassloader.loadcode.verbose", "Ouverture d''un flux vers {0} pour obtenir {1}"},
-            {"appletclassloader.filenotfound", "Fichier introuvable pendant la recherche de {0}"},
-            {"appletclassloader.fileformat", "Exception de format de fichier pendant le chargement de {0}"},
-            {"appletclassloader.fileioexception", "Exception d''E/S pendant le chargement de {0}"},
-            {"appletclassloader.fileexception", "exception {0} pendant le chargement de : {1}"},
-            {"appletclassloader.filedeath", "{0} \u00e9limin\u00e9 pendant le chargement de {1}"},
-            {"appletclassloader.fileerror", "erreur {0} pendant le chargement de {1}"},
-            {"appletclassloader.findclass.verbose.findclass", "{0} rechercher la classe {1}"},
-            {"appletclassloader.findclass.verbose.openstream", "Ouverture d''un flux vers {0} pour obtenir {1}"},
-            {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource pour le nom {0}"},
-            {"appletclassloader.getresource.verbose.found", "Ressource {0} trouv\u00e9e en tant que ressource syst\u00e8me"},
-            {"appletclassloader.getresourceasstream.verbose", "Ressource {0} trouv\u00e9e en tant que ressource syst\u00e8me"},
-            {"appletpanel.runloader.err", "Param\u00e8tre d'objet ou de code !"},
-            {"appletpanel.runloader.exception", "exception pendant la d\u00e9num\u00e9rotation de {0}"},
-            {"appletpanel.destroyed", "Applet d\u00e9truit."},
-            {"appletpanel.loaded", "Applet charg\u00e9."},
-            {"appletpanel.started", "Applet d\u00e9marr\u00e9."},
-            {"appletpanel.inited", "Applet initialis\u00e9."},
-            {"appletpanel.stopped", "Applet arr\u00eat\u00e9."},
-            {"appletpanel.disposed", "Applet jet\u00e9."},
-            {"appletpanel.nocode", "Param\u00e8tre CODE manquant dans une \u00e9tiquette APPLET."},
-            {"appletpanel.notfound", "charger : classe {0} introuvable."},
-            {"appletpanel.nocreate", "charger : {0} ne peut pas \u00eatre instanci\u00e9."},
-            {"appletpanel.noconstruct", "charger : {0} n''est pas public ou n''a pas de concepteur public."},
-            {"appletpanel.death", "\u00e9limin\u00e9"},
+            {"appletioexception.loadclass.throw.notloaded", "classe non charg\u00E9e : {0}"},
+            {"appletclassloader.loadcode.verbose", "Ouverture du flux de donn\u00E9es dans {0} pour obtenir {1}"},
+            {"appletclassloader.filenotfound", "Fichier introuvable lors de la recherche de {0}"},
+            {"appletclassloader.fileformat", "Exception de format de fichier d\u00E9tect\u00E9e lors du chargement de : {0}"},
+            {"appletclassloader.fileioexception", "Exception d''E/S lors du chargement de : {0}"},
+            {"appletclassloader.fileexception", "Exception {0} lors du chargement de : {1}"},
+            {"appletclassloader.filedeath", "Fermeture de {0} lors du chargement de : {1}"},
+            {"appletclassloader.fileerror", "Erreur {0} lors du chargement de : {1}"},
+            {"appletclassloader.findclass.verbose.findclass", "{0} : recherche de la classe {1}"},
+            {"appletclassloader.findclass.verbose.openstream", "Ouverture du flux de donn\u00E9es dans {0} pour obtenir {1}"},
+            {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource pour le nom : {0}"},
+            {"appletclassloader.getresource.verbose.found", "Ressource {0} trouv\u00E9e en tant que ressource syst\u00E8me"},
+            {"appletclassloader.getresourceasstream.verbose", "Ressource {0} trouv\u00E9e en tant que ressource syst\u00E8me"},
+            {"appletpanel.runloader.err", "Param\u00E8tre d'objet ou de code."},
+            {"appletpanel.runloader.exception", "exception lors de la d\u00E9s\u00E9rialisation de {0}"},
+            {"appletpanel.destroyed", "Applet d\u00E9truite."},
+            {"appletpanel.loaded", "Applet charg\u00E9e."},
+            {"appletpanel.started", "Applet d\u00E9marr\u00E9e."},
+            {"appletpanel.inited", "Applet initialis\u00E9e."},
+            {"appletpanel.stopped", "Applet arr\u00EAt\u00E9e."},
+            {"appletpanel.disposed", "Applet \u00E9limin\u00E9e."},
+            {"appletpanel.nocode", "Param\u00E8tre CODE manquant dans la balise APPLET."},
+            {"appletpanel.notfound", "Charger : la classe {0} est introuvable."},
+            {"appletpanel.nocreate", "Charger : impossible d''instantier {0}."},
+            {"appletpanel.noconstruct", "Charger : l''\u00E9l\u00E9ment {0} n''est pas public ou ne poss\u00E8de aucun constructeur public."},
+            {"appletpanel.death", "arr\u00EAt\u00E9"},
             {"appletpanel.exception", "exception : {0}."},
             {"appletpanel.exception2", "exception : {0} : {1}."},
             {"appletpanel.error", "erreur : {0}."},
             {"appletpanel.error2", "erreur : {0} : {1}."},
-            {"appletpanel.notloaded", "Initialiser : applet non charg\u00e9."},
-            {"appletpanel.notinited", "D\u00e9marrer : applet non initialis\u00e9."},
-            {"appletpanel.notstarted", "Arr\u00eater : applet non d\u00e9marr\u00e9."},
-            {"appletpanel.notstopped", "D\u00e9truire : applet non arr\u00eat\u00e9."},
-            {"appletpanel.notdestroyed", "Jeter : applet non d\u00e9truit."},
-            {"appletpanel.notdisposed", "Charger : applet non jet\u00e9."},
-            {"appletpanel.bail", "Interrompu : fin de bail."},
-            {"appletpanel.filenotfound", "Fichier introuvable pendant la recherche de {0}"},
-            {"appletpanel.fileformat", "Exception de format de fichier pendant le chargement de {0}"},
-            {"appletpanel.fileioexception", "Exception d''E/S pendant le chargement de {0}"},
-            {"appletpanel.fileexception", "exception {0} pendant le chargement de : {1}"},
-            {"appletpanel.filedeath", "{0} \u00e9limin\u00e9 pendant le chargement de {1}"},
-            {"appletpanel.fileerror", "erreur {0} pendant le chargement de {1}"},
-            {"appletpanel.badattribute.exception", "Analyse HTML\u00a0: valeur incorrecte pour l'attribut de largeur/hauteur"},
-            {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream n\u00e9cessite un chargeur 'non null'"},
-            {"appletprops.title", "Propri\u00e9t\u00e9s de AppletViewer"},
-            {"appletprops.label.http.server", "Serveur proxy http :"},
-            {"appletprops.label.http.proxy", "Port proxy http :"},
-            {"appletprops.label.network", "Acc\u00e8s r\u00e9seau :"},
+            {"appletpanel.notloaded", "Initialiser : applet non charg\u00E9e."},
+            {"appletpanel.notinited", "D\u00E9marrer : applet non initialis\u00E9e."},
+            {"appletpanel.notstarted", "Arr\u00EAter : applet non d\u00E9marr\u00E9e."},
+            {"appletpanel.notstopped", "D\u00E9truire : applet non arr\u00EAt\u00E9e."},
+            {"appletpanel.notdestroyed", "Eliminer : applet non d\u00E9truite."},
+            {"appletpanel.notdisposed", "Charger : applet non \u00E9limin\u00E9e."},
+            {"appletpanel.bail", "Interrompu : r\u00E9solution."},
+            {"appletpanel.filenotfound", "Fichier introuvable lors de la recherche de {0}"},
+            {"appletpanel.fileformat", "Exception de format de fichier d\u00E9tect\u00E9e lors du chargement de : {0}"},
+            {"appletpanel.fileioexception", "Exception d''E/S lors du chargement de : {0}"},
+            {"appletpanel.fileexception", "Exception {0} lors du chargement de : {1}"},
+            {"appletpanel.filedeath", "Fermeture de {0} lors du chargement de : {1}"},
+            {"appletpanel.fileerror", "Erreur {0} lors du chargement de : {1}"},
+            {"appletpanel.badattribute.exception", "Analyse HTML : valeur incorrecte pour l'attribut de largeur/hauteur"},
+            {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream requiert un chargeur non NULL"},
+            {"appletprops.title", "Propri\u00E9t\u00E9s d'AppletViewer"},
+            {"appletprops.label.http.server", "Serveur proxy HTTP :"},
+            {"appletprops.label.http.proxy", "Port proxy HTTP :"},
+            {"appletprops.label.network", "Acc\u00E8s au r\u00E9seau :"},
             {"appletprops.choice.network.item.none", "Aucun"},
-            {"appletprops.choice.network.item.applethost", "H\u00f4te applet"},
-            {"appletprops.choice.network.item.unrestricted", "Illimit\u00e9"},
-            {"appletprops.label.class", "Acc\u00e8s \u00e0 la classe :"},
-            {"appletprops.choice.class.item.restricted", "Limit\u00e9"},
-            {"appletprops.choice.class.item.unrestricted", "Illimit\u00e9"},
-            {"appletprops.label.unsignedapplet", "Autoriser les applets non sign\u00e9s"},
+            {"appletprops.choice.network.item.applethost", "H\u00F4te de l'applet"},
+            {"appletprops.choice.network.item.unrestricted", "Sans restriction"},
+            {"appletprops.label.class", "Acc\u00E8s \u00E0 la classe :"},
+            {"appletprops.choice.class.item.restricted", "Avec restriction"},
+            {"appletprops.choice.class.item.unrestricted", "Sans restriction"},
+            {"appletprops.label.unsignedapplet", "Autoriser les applets non sign\u00E9es :"},
             {"appletprops.choice.unsignedapplet.no", "Non"},
             {"appletprops.choice.unsignedapplet.yes", "Oui"},
             {"appletprops.button.apply", "Appliquer"},
             {"appletprops.button.cancel", "Annuler"},
-            {"appletprops.button.reset", "Restaurer"},
-            {"appletprops.apply.exception", "Echec de l''enregistrement des propri\u00e9t\u00e9s : {0}"},
+            {"appletprops.button.reset", "R\u00E9initialiser"},
+            {"appletprops.apply.exception", "Echec de l''enregistrement des propri\u00E9t\u00E9s : {0}"},
             /* 4066432 */
-            {"appletprops.title.invalidproxy", "Entr\u00e9e non valide"},
-            {"appletprops.label.invalidproxy", "Le num\u00e9ro de port du proxy doit \u00eatre un entier positif."},
+            {"appletprops.title.invalidproxy", "Entr\u00E9e non valide"},
+            {"appletprops.label.invalidproxy", "Le port proxy doit \u00EAtre un entier positif."},
             {"appletprops.button.ok", "OK"},
             /* end 4066432 */
-            {"appletprops.prop.store", "Propri\u00e9t\u00e9s AppletViewer propres \u00e0 l'utilisateur"},
-            {"appletsecurityexception.checkcreateclassloader", "Exception de s\u00e9curit\u00e9 : chargeur de classes"},
-            {"appletsecurityexception.checkaccess.thread", "Exception de s\u00e9curit\u00e9 : unit\u00e9 d'ex\u00e9cution"},
-            {"appletsecurityexception.checkaccess.threadgroup", "Exception de s\u00e9curit\u00e9 : groupe d''unit\u00e9s d''ex\u00e9cution : {0}"},
-            {"appletsecurityexception.checkexit", "Exception de s\u00e9curit\u00e9 : exit : {0}"},
-            {"appletsecurityexception.checkexec", "Exception de s\u00e9curit\u00e9 : exec : {0}"},
-            {"appletsecurityexception.checklink", "Exception de s\u00e9curit\u00e9 : link : {0}"},
-            {"appletsecurityexception.checkpropsaccess", "Exception de s\u00e9curit\u00e9 : propri\u00e9t\u00e9s"},
-            {"appletsecurityexception.checkpropsaccess.key", "Exception de s\u00e9curit\u00e9 : acc\u00e8s aux propri\u00e9t\u00e9s {0}"},
-            {"appletsecurityexception.checkread.exception1", "Exception de s\u00e9curit\u00e9 : {0}, {1}"},
-            {"appletsecurityexception.checkread.exception2", "Exception de s\u00e9curit\u00e9 : file.read : {0}"},
-            {"appletsecurityexception.checkread", "Exception de s\u00e9curit\u00e9 : file.read : {0} == {1}"},
-            {"appletsecurityexception.checkwrite.exception", "Exception de s\u00e9curit\u00e9 : {0}, {1}"},
-            {"appletsecurityexception.checkwrite", "Exception de s\u00e9curit\u00e9 : file.write : {0} == {1}"},
-            {"appletsecurityexception.checkread.fd", "Exception de s\u00e9curit\u00e9 : fd.read"},
-            {"appletsecurityexception.checkwrite.fd", "Exception de s\u00e9curit\u00e9 : fd.write"},
-            {"appletsecurityexception.checklisten", "Exception de s\u00e9curit\u00e9 : socket.listen : {0}"},
-            {"appletsecurityexception.checkaccept", "Exception de s\u00e9curit\u00e9 : socket.accept : {0}:{1}"},
-            {"appletsecurityexception.checkconnect.networknone", "Exception de s\u00e9curit\u00e9 : socket.connect : {0}->{1}"},
-            {"appletsecurityexception.checkconnect.networkhost1", "Exception de s\u00e9curit\u00e9 : \u00e9chec de la connexion \u00e0 {0} avec une origine de {1}."},
-            {"appletsecurityexception.checkconnect.networkhost2", "Exception de s\u00e9curit\u00e9 : impossible de r\u00e9soudre l''adresse IP pour l''h\u00f4te {0} ou pour {1}. "},
-            {"appletsecurityexception.checkconnect.networkhost3", "Exception de s\u00e9curit\u00e9 : impossible de r\u00e9soudre l''adresse IP pour l''h\u00f4te {0}. Voir la propri\u00e9t\u00e9 trustProxy."},
-            {"appletsecurityexception.checkconnect", "Exception de s\u00e9curit\u00e9 : connect : {0}->{1}"},
-            {"appletsecurityexception.checkpackageaccess", "Exception de s\u00e9curit\u00e9 : impossible d''acc\u00e9der au module : {0}"},
-            {"appletsecurityexception.checkpackagedefinition", "Exception de s\u00e9curit\u00e9 : impossible de d\u00e9finir le module : {0}"},
-            {"appletsecurityexception.cannotsetfactory", "Exception de s\u00e9curit\u00e9 : impossible de d\u00e9finir les param\u00e8tres d'usine"},
-            {"appletsecurityexception.checkmemberaccess", "Exception de s\u00e9curit\u00e9 : v\u00e9rifier l'acc\u00e8s des membres"},
-            {"appletsecurityexception.checkgetprintjob", "Exception de s\u00e9curit\u00e9 : getPrintJob"},
-            {"appletsecurityexception.checksystemclipboardaccess", "Exception de s\u00e9curit\u00e9 : getSystemClipboard"},
-            {"appletsecurityexception.checkawteventqueueaccess", "Exception de s\u00e9curit\u00e9 : getEventQueue"},
-            {"appletsecurityexception.checksecurityaccess", "Exception de s\u00e9curit\u00e9 : op\u00e9ration de s\u00e9curit\u00e9 : {0}"},
-            {"appletsecurityexception.getsecuritycontext.unknown", "type de chargeur de classe inconnu ; impossible de v\u00e9rifier getContext"},
-            {"appletsecurityexception.checkread.unknown", "type de chargeur de classe inconnu ; impossible de v\u00e9rifier la lecture de contr\u00f4le {0}"},
-            {"appletsecurityexception.checkconnect.unknown", "type de chargeur de classe inconnu ; impossible de v\u00e9rifier la connexion de contr\u00f4le {0}"},
+            {"appletprops.prop.store", "Propri\u00E9t\u00E9s utilisateur pour AppletViewer"},
+            {"appletsecurityexception.checkcreateclassloader", "Exception de s\u00E9curit\u00E9 : chargeur de classe"},
+            {"appletsecurityexception.checkaccess.thread", "Exception de s\u00E9curit\u00E9 : thread"},
+            {"appletsecurityexception.checkaccess.threadgroup", "Exception de s\u00E9curit\u00E9 : groupe de threads : {0}"},
+            {"appletsecurityexception.checkexit", "Exception de s\u00E9curit\u00E9 : sortie : {0}"},
+            {"appletsecurityexception.checkexec", "Exception de s\u00E9curit\u00E9 : ex\u00E9cution : {0}"},
+            {"appletsecurityexception.checklink", "Exception de s\u00E9curit\u00E9 : lien : {0}"},
+            {"appletsecurityexception.checkpropsaccess", "Exception de s\u00E9curit\u00E9 : propri\u00E9t\u00E9s"},
+            {"appletsecurityexception.checkpropsaccess.key", "Exception de s\u00E9curit\u00E9 : acc\u00E8s aux propri\u00E9t\u00E9s {0}"},
+            {"appletsecurityexception.checkread.exception1", "Exception de s\u00E9curit\u00E9 : {0}, {1}"},
+            {"appletsecurityexception.checkread.exception2", "Exception de s\u00E9curit\u00E9 : file.read : {0}"},
+            {"appletsecurityexception.checkread", "Exception de s\u00E9curit\u00E9 : file.read : {0} == {1}"},
+            {"appletsecurityexception.checkwrite.exception", "Exception de s\u00E9curit\u00E9 : {0}, {1}"},
+            {"appletsecurityexception.checkwrite", "Exception de s\u00E9curit\u00E9 : file.write : {0} == {1}"},
+            {"appletsecurityexception.checkread.fd", "Exception de s\u00E9curit\u00E9 : fd.read"},
+            {"appletsecurityexception.checkwrite.fd", "Exception de s\u00E9curit\u00E9 : fd.write"},
+            {"appletsecurityexception.checklisten", "Exception de s\u00E9curit\u00E9 : socket.listen : {0}"},
+            {"appletsecurityexception.checkaccept", "Exception de s\u00E9curit\u00E9 : socket.accept : {0} : {1}"},
+            {"appletsecurityexception.checkconnect.networknone", "Exception de s\u00E9curit\u00E9 : socket.connect : {0} -> {1}"},
+            {"appletsecurityexception.checkconnect.networkhost1", "Exception de s\u00E9curit\u00E9 : impossible de se connecter \u00E0 {0} dont l''origine est {1}."},
+            {"appletsecurityexception.checkconnect.networkhost2", "Exception de s\u00E9curit\u00E9 : impossible de r\u00E9soudre l''adresse IP pour l''h\u00F4te {0} ou pour {1}. "},
+            {"appletsecurityexception.checkconnect.networkhost3", "Exception de s\u00E9curit\u00E9 : impossible de r\u00E9soudre l''adresse IP pour l''h\u00F4te {0}. Voir la propri\u00E9t\u00E9 trustProxy."},
+            {"appletsecurityexception.checkconnect", "Exception de s\u00E9curit\u00E9 : connexion : {0} -> {1}"},
+            {"appletsecurityexception.checkpackageaccess", "Exception de s\u00E9curit\u00E9 : impossible d''acc\u00E9der au package : {0}"},
+            {"appletsecurityexception.checkpackagedefinition", "Exception de s\u00E9curit\u00E9 : impossible de d\u00E9finir le package : {0}"},
+            {"appletsecurityexception.cannotsetfactory", "Exception de s\u00E9curit\u00E9 : impossible de d\u00E9finir la fabrique"},
+            {"appletsecurityexception.checkmemberaccess", "Exception de s\u00E9curit\u00E9 : v\u00E9rifier l'acc\u00E8s des membres"},
+            {"appletsecurityexception.checkgetprintjob", "Exception de s\u00E9curit\u00E9 : getPrintJob"},
+            {"appletsecurityexception.checksystemclipboardaccess", "Exception de s\u00E9curit\u00E9 : getSystemClipboard"},
+            {"appletsecurityexception.checkawteventqueueaccess", "Exception de s\u00E9curit\u00E9 : getEventQueue"},
+            {"appletsecurityexception.checksecurityaccess", "Exception de s\u00E9curit\u00E9 : op\u00E9ration de s\u00E9curit\u00E9 : {0}"},
+            {"appletsecurityexception.getsecuritycontext.unknown", "type de chargeur de classe inconnu, impossible de rechercher getContext"},
+            {"appletsecurityexception.checkread.unknown", "type de chargeur de classe inconnu, impossible de rechercher la v\u00E9rification de lecture {0}"},
+            {"appletsecurityexception.checkconnect.unknown", "type de chargeur de classe inconnu, impossible de rechercher la v\u00E9rification de connexion"},
         };
+
+        return temp;
     }
 }
--- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_it.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_it.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2010, 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
@@ -29,173 +29,175 @@
 public class MsgAppletViewer_it extends ListResourceBundle {
 
     public Object[][] getContents() {
-        return new Object[][] {
-            {"textframe.button.dismiss", "Annulla"},
+        Object[][] temp = new Object[][] {
+            {"textframe.button.dismiss", "Chiudi"},
             {"appletviewer.tool.title", "Visualizzatore applet: {0}"},
             {"appletviewer.menu.applet", "Applet"},
             {"appletviewer.menuitem.restart", "Riavvia"},
             {"appletviewer.menuitem.reload", "Ricarica"},
             {"appletviewer.menuitem.stop", "Arresta"},
             {"appletviewer.menuitem.save", "Salva..."},
-            {"appletviewer.menuitem.start", "Avvio"},
-            {"appletviewer.menuitem.clone", "Clona..."},
+            {"appletviewer.menuitem.start", "Avvia"},
+            {"appletviewer.menuitem.clone", "Copia..."},
             {"appletviewer.menuitem.tag", "Tag..."},
             {"appletviewer.menuitem.info", "Informazioni..."},
             {"appletviewer.menuitem.edit", "Modifica"},
             {"appletviewer.menuitem.encoding", "Codifica caratteri"},
             {"appletviewer.menuitem.print", "Stampa..."},
-            {"appletviewer.menuitem.props", "Propriet\u00e0..."},
+            {"appletviewer.menuitem.props", "Propriet\u00E0..."},
             {"appletviewer.menuitem.close", "Chiudi"},
             {"appletviewer.menuitem.quit", "Esci"},
-            {"appletviewer.label.hello", "Ciao..."},
-            {"appletviewer.status.start", "avvio dell'applet in corso..."},
+            {"appletviewer.label.hello", "Benvenuti..."},
+            {"appletviewer.status.start", "avvio applet in corso..."},
             {"appletviewer.appletsave.filedialogtitle","Serializza applet in file"},
             {"appletviewer.appletsave.err1", "serializzazione di {0} in {1}"},
             {"appletviewer.appletsave.err2", "in appletSave: {0}"},
-            {"appletviewer.applettag", "Mostra tag"},
-            {"appletviewer.applettag.textframe", "Tag HTML dell'applet"},
+            {"appletviewer.applettag", "Tag visualizzata"},
+            {"appletviewer.applettag.textframe", "Applet tag HTML"},
             {"appletviewer.appletinfo.applet", "-- nessuna informazione sull'applet --"},
             {"appletviewer.appletinfo.param", "-- nessuna informazione sul parametro --"},
-            {"appletviewer.appletinfo.textframe", "Informazioni sull'applet"},
+            {"appletviewer.appletinfo.textframe", "Informazioni applet"},
             {"appletviewer.appletprint.fail", "Stampa non riuscita."},
-            {"appletviewer.appletprint.finish", "Operazione di stampa completata."},
+            {"appletviewer.appletprint.finish", "Stampa completata."},
             {"appletviewer.appletprint.cancel", "Stampa annullata."},
             {"appletviewer.appletencoding", "Codifica caratteri: {0}"},
-            {"appletviewer.parse.warning.requiresname", "Avviso: il tag <param name=... value=...> richiede un attributo per il nome."},
-            {"appletviewer.parse.warning.paramoutside", "Avviso: il tag <param> non \u00e8 racchiuso tra <applet> ... </applet>."},
-            {"appletviewer.parse.warning.applet.requirescode", "Avviso: <applet> il tag <applet> richiede un attributo di codice"},
-            {"appletviewer.parse.warning.applet.requiresheight", "Avviso: <applet> il tag <applet> richiede un attributo di altezza"},
-            {"appletviewer.parse.warning.applet.requireswidth", "Avviso: il tag <applet> richiede un attributo di larghezza"},
-            {"appletviewer.parse.warning.object.requirescode", "Avviso: il tag <object> richiede un attributo di codice"},
-            {"appletviewer.parse.warning.object.requiresheight", "Avviso: il tag <object> richiede un attributo di altezza"},
-            {"appletviewer.parse.warning.object.requireswidth", "Avviso: il tag <object> richiede un attributo di larghezza"},
-            {"appletviewer.parse.warning.embed.requirescode", "Avviso: il tag <embed> richiede un attributo di codice"},
-            {"appletviewer.parse.warning.embed.requiresheight", "Avviso: il tag <embed> richiede un attributo di altezza"},
-            {"appletviewer.parse.warning.embed.requireswidth", "Avviso: il tag <embed> richiede un attributo di larghezza"},
-            {"appletviewer.parse.warning.appnotLongersupported", "Avviso: il tag <app> non \u00e8 pi\u00f9 supportato, usare <applet> al suo posto:"},
-            {"appletviewer.usage", "Utilizzo: appletviewer <opzioni> url\n\ndove <opzioni> includono i valori:\n  -debug                  Avvia l'applet viewer nel debugger Java\n  -encoding <codifica>    Specifica la codifica dei caratteri utilizzata dai file HTML\n  -J<flag di runtime>        Passa l'argomento all'interprete java\n\nL'opzione -J \u00e8 non standard ed \u00e8 soggetta a cambiamenti senza preavviso."},
+            {"appletviewer.parse.warning.requiresname", "Avvertenza: la tag <param name=... value=...> richiede un attributo name."},
+            {"appletviewer.parse.warning.paramoutside", "Avvertenza: la tag <param> non rientra in <applet>... </applet>."},
+            {"appletviewer.parse.warning.applet.requirescode", "Avvertenza: la tag <applet> richiede un attributo code."},
+            {"appletviewer.parse.warning.applet.requiresheight", "Avvertenza: la tag <applet> richiede un attributo height."},
+            {"appletviewer.parse.warning.applet.requireswidth", "Avvertenza: la tag <applet> richiede un attributo width."},
+            {"appletviewer.parse.warning.object.requirescode", "Avvertenza: la tag <object> richiede un attributo code."},
+            {"appletviewer.parse.warning.object.requiresheight", "Avvertenza: la tag <object> richiede un attributo height."},
+            {"appletviewer.parse.warning.object.requireswidth", "Avvertenza: la tag <object> richiede un attributo width."},
+            {"appletviewer.parse.warning.embed.requirescode", "Avvertenza: la tag <embed> richiede un attributo code."},
+            {"appletviewer.parse.warning.embed.requiresheight", "Avvertenza: la tag <embed> richiede un attributo height."},
+            {"appletviewer.parse.warning.embed.requireswidth", "Avvertenza: la tag <embed> richiede un attributo width."},
+            {"appletviewer.parse.warning.appnotLongersupported", "Avvertenza: la tag <app> non \u00E8 pi\u00F9 supportata. Utilizzare <applet>:"},
+            {"appletviewer.usage", "Uso: appletviewer <opzioni> url(s)\n\ndove <opzioni> includono:\n  -debug                  Avvia il visualizzatore applet nel debugger Java\n  -encoding <codifica>    Specifica la codifica dei caratteri utilizzata dai file HTML\n  -J<flag runtime>        Passa l'argomento all'interpreter Java\n\nL'opzione -J non \u00E8 standard ed \u00E8 soggetta a modifica senza preavviso."},
             {"appletviewer.main.err.unsupportedopt", "Opzione non supportata: {0}"},
-            {"appletviewer.main.err.unrecognizedarg", "Argomento non riconosciuto {0}"},
-            {"appletviewer.main.err.dupoption", "Uso duplice dell''opzione: {0}"},
+            {"appletviewer.main.err.unrecognizedarg", "Argomento non riconosciuto: {0}"},
+            {"appletviewer.main.err.dupoption", "Uso duplicato dell''opzione: {0}"},
             {"appletviewer.main.err.inputfile", "Nessun file di input specificato."},
-            {"appletviewer.main.err.badurl", "URL errato: {0} ( {1} )"},
-            {"appletviewer.main.err.io", "Eccezione di I/O durante la lettura: {0}"},
-            {"appletviewer.main.err.readablefile", "Verificare che {0} sia un file leggibile."},
-            {"appletviewer.main.err.correcturl", "Verificare che {0} sia l''URL corretto"},
-            {"appletviewer.main.prop.store", "Propriet\u00e0 specifiche dell'utente per AppletViewer"},
-            {"appletviewer.main.err.prop.cantread", "Impossibile leggere il file di propriet\u00e0 dell''utente: {0}"},
-            {"appletviewer.main.err.prop.cantsave", "Impossibile salvare il file di propriet\u00e0 dell''utente: {0}"},
-            {"appletviewer.main.warn.nosecmgr", "Avviso: Disabilitazione sicurezza in corso."},
-            {"appletviewer.main.debug.cantfinddebug", "Impossibile trovare il debugger!"},
-            {"appletviewer.main.debug.cantfindmain", "Impossibile trovare il metodo principale del debugger"},
-            {"appletviewer.main.debug.exceptionindebug", "Eccezione nel debugger"},
-            {"appletviewer.main.debug.cantaccess", "Impossibile accedere al debugger"},
-            {"appletviewer.main.nosecmgr", "Avviso: SecurityManager non installato!"},
-            {"appletviewer.main.warning", "Avviso: nessun applet avviato. Verificare che i dati inseriti contengano un tag <applet>."},
-            {"appletviewer.main.warn.prop.overwrite", "Avviso: si sta temporaneamente sovrascrivendo le propriet\u00e0 del sistema come richiesto dell''utente: tasto: {0} valore precedente: {1} nuovo valore: {2}"},
-            {"appletviewer.main.warn.cantreadprops", "Avviso: Impossibile leggere il file di propriet\u00e0 di AppletViewer: {0} verranno utilizzati i valori di default."},
+            {"appletviewer.main.err.badurl", "URL non valido: {0} ( {1} )"},
+            {"appletviewer.main.err.io", "Eccezione I/O durante la lettura di {0}"},
+            {"appletviewer.main.err.readablefile", "Assicurarsi che {0} sia un file e che sia leggibile."},
+            {"appletviewer.main.err.correcturl", "{0} \u00E8 l''URL corretto?"},
+            {"appletviewer.main.prop.store", "Propriet\u00E0 specifiche dell'utente per AppletViewer"},
+            {"appletviewer.main.err.prop.cantread", "Impossibile leggere il file delle propriet\u00E0 utente: {0}"},
+            {"appletviewer.main.err.prop.cantsave", "Impossibile salvare il file delle propriet\u00E0 utente: {0}"},
+            {"appletviewer.main.warn.nosecmgr", "Avvertenza: la sicurezza verr\u00E0 disabilitata."},
+            {"appletviewer.main.debug.cantfinddebug", "Impossibile trovare il debugger."},
+            {"appletviewer.main.debug.cantfindmain", "Impossibile trovare il metodo principale nel debugger."},
+            {"appletviewer.main.debug.exceptionindebug", "Eccezione nel debugger."},
+            {"appletviewer.main.debug.cantaccess", "Impossibile accedere al debugger."},
+            {"appletviewer.main.nosecmgr", "Avvertenza: SecurityManager non installato."},
+            {"appletviewer.main.warning", "Avvertenza: nessuna applet avviata. Assicurarsi che l'input contenga una tag <applet>."},
+            {"appletviewer.main.warn.prop.overwrite", "Avvertenza: la propriet\u00E0 di sistema verr\u00E0 sovrascritta temporaneamente su richiesta dell''utente. Chiave {0}, valore precedente {1}, nuovo valore {2}."},
+            {"appletviewer.main.warn.cantreadprops", "Avvertenza: impossibile leggere il file delle propriet\u00E0 AppletViewer {0}. Verranno utilizzate le impostazioni predefinite."},
             {"appletioexception.loadclass.throw.interrupted", "caricamento della classe interrotto: {0}"},
             {"appletioexception.loadclass.throw.notloaded", "classe non caricata: {0}"},
-            {"appletclassloader.loadcode.verbose", "Apertura del flusso su: {0} per ottenere {1}"},
-            {"appletclassloader.filenotfound", "File non trovato durante la ricerca di: {0}"},
-            {"appletclassloader.fileformat", "Eccezione del formato di file durante il caricamento: {0}"},
-            {"appletclassloader.fileioexception", "Eccezione di I/O durante il caricamento: {0}"},
-            {"appletclassloader.fileexception", "Eccezione di {0} durante il caricamento: {1}"},
-            {"appletclassloader.filedeath", "{0} terminato durante il caricamento di: {1}"},
-            {"appletclassloader.fileerror", "Errore di {0} durante il caricamento: {1}"},
-            {"appletclassloader.findclass.verbose.findclass", "{0} individuazione classe {1}"},
-            {"appletclassloader.findclass.verbose.openstream", "Apertura del flusso su: {0} per ottenere {1}"},
+            {"appletclassloader.loadcode.verbose", "Apertura del flusso per {0} per recuperare {1}"},
+            {"appletclassloader.filenotfound", "File non trovato durante la ricerca di {0}"},
+            {"appletclassloader.fileformat", "Eccezione di formato file durante il caricamento di {0}"},
+            {"appletclassloader.fileioexception", "Eccezione I/O durante il caricamento di {0}"},
+            {"appletclassloader.fileexception", "Eccezione {0} durante il caricamento di {1}"},
+            {"appletclassloader.filedeath", "{0} terminato durante il caricamento di {1}"},
+            {"appletclassloader.fileerror", "Errore {0} durante il caricamento di {1}"},
+            {"appletclassloader.findclass.verbose.findclass", "{0} trova classe {1}"},
+            {"appletclassloader.findclass.verbose.openstream", "Apertura del flusso per {0} per recuperare {1}"},
             {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource per il nome: {0}"},
-            {"appletclassloader.getresource.verbose.found", "Risorsa {0} individuata come risorsa di sistema"},
-            {"appletclassloader.getresourceasstream.verbose", "Risorsa {0} individuata come risorsa di sistema"},
-            {"appletpanel.runloader.err", "Specificare un parametro per l'oggetto o per il codice"},
-            {"appletpanel.runloader.exception", "eccezione durante la deserializzazione {0}"},
-            {"appletpanel.destroyed", "Applet distrutto."},
-            {"appletpanel.loaded", "Applet caricato."},
-            {"appletpanel.started", "Applet avviato."},
-            {"appletpanel.inited", "Applet inizializzato."},
-            {"appletpanel.stopped", "Applet interrotto."},
-            {"appletpanel.disposed", "Applet eliminato."},
-            {"appletpanel.nocode", "Tag APPLET mancante dal parametro CODE."},
+            {"appletclassloader.getresource.verbose.found", "\u00C8 stata trovata la risorsa {0} come risorsa di sistema"},
+            {"appletclassloader.getresourceasstream.verbose", "\u00C8 stata trovata la risorsa {0} come risorsa di sistema"},
+            {"appletpanel.runloader.err", "Parametro di oggetto o di codice."},
+            {"appletpanel.runloader.exception", "eccezione durante la deserializzazione di {0}"},
+            {"appletpanel.destroyed", "Applet rimossa."},
+            {"appletpanel.loaded", "Applet caricata."},
+            {"appletpanel.started", "Applet avviata."},
+            {"appletpanel.inited", "Applet inizializzata."},
+            {"appletpanel.stopped", "Applet arrestata."},
+            {"appletpanel.disposed", "Applet eliminata."},
+            {"appletpanel.nocode", "Nella tag APPLET manca il parametro CODE."},
             {"appletpanel.notfound", "caricamento: classe {0} non trovata."},
-            {"appletpanel.nocreate", "caricamento: impossibile definire istanze per {0}."},
-            {"appletpanel.noconstruct", "caricamento: {0} non \u00e8 pubblico o non \u00e8 associato a un costruttore pubblico."},
+            {"appletpanel.nocreate", "caricamento: impossibile creare un''istanza di {0}."},
+            {"appletpanel.noconstruct", "caricamento: {0} non \u00E8 pubblico o non ha un costruttore pubblico."},
             {"appletpanel.death", "terminato"},
-            {"appletpanel.exception", "eccezione: {0}."},
+            {"appletpanel.exception", "eccezione: {0}"},
             {"appletpanel.exception2", "eccezione: {0}: {1}."},
             {"appletpanel.error", "errore: {0}."},
             {"appletpanel.error2", "errore: {0}: {1}."},
-            {"appletpanel.notloaded", "Inizializzazione: applet non caricato."},
-            {"appletpanel.notinited", "Avvio: applet non inizializzato."},
-            {"appletpanel.notstarted", "Arresto: applet non avviato."},
-            {"appletpanel.notstopped", "Distruzione: applet non arrestato."},
-            {"appletpanel.notdestroyed", "Eliminazione: applet non distrutto."},
-            {"appletpanel.notdisposed", "Caricamento: applet non eliminato."},
-            {"appletpanel.bail", "Interruzione: uscita in corso."},
-            {"appletpanel.filenotfound", "File non trovato durante la ricerca di: {0}"},
-            {"appletpanel.fileformat", "Eccezione del formato di file durante il caricamento: {0}"},
-            {"appletpanel.fileioexception", "Eccezione di I/O durante il caricamento: {0}"},
-            {"appletpanel.fileexception", "Eccezione di {0} durante il caricamento: {1}"},
-            {"appletpanel.filedeath", "{0} terminato durante il caricamento di: {1}"},
-            {"appletpanel.fileerror", "Errore di {0} durante il caricamento: {1}"},
-            {"appletpanel.badattribute.exception", "Analisi HTML: valore specificato per l'attributo larghezza/altezza non corretto"},
-            {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream richiede una funzione di caricamento non nulla"},
-            {"appletprops.title", "Propriet\u00e0 di AppletViewer"},
-            {"appletprops.label.http.server", "Server proxy Http:"},
-            {"appletprops.label.http.proxy", "Porta proxy Http:"},
+            {"appletpanel.notloaded", "Inizializzazione: applet non caricata."},
+            {"appletpanel.notinited", "Avvio: applet non inizializzata."},
+            {"appletpanel.notstarted", "Arresto: applet non avviata."},
+            {"appletpanel.notstopped", "Rimozione: applet non arrestata."},
+            {"appletpanel.notdestroyed", "Eliminazione: applet non rimossa."},
+            {"appletpanel.notdisposed", "Caricamento: applet non eliminata."},
+            {"appletpanel.bail", "Interrotto: chiusura."},
+            {"appletpanel.filenotfound", "File non trovato durante la ricerca di {0}"},
+            {"appletpanel.fileformat", "Eccezione di formato file durante il caricamento di {0}"},
+            {"appletpanel.fileioexception", "Eccezione I/O durante il caricamento di {0}"},
+            {"appletpanel.fileexception", "Eccezione {0} durante il caricamento di {1}"},
+            {"appletpanel.filedeath", "{0} terminato durante il caricamento di {1}"},
+            {"appletpanel.fileerror", "Errore {0} durante il caricamento di {1}"},
+            {"appletpanel.badattribute.exception", "Analisi HTML: valore errato per l'attributo width/height"},
+            {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream richiede un loader non nullo"},
+            {"appletprops.title", "Propriet\u00E0 AppletViewer"},
+            {"appletprops.label.http.server", "Server proxy http:"},
+            {"appletprops.label.http.proxy", "Porta proxy http:"},
             {"appletprops.label.network", "Accesso alla rete:"},
             {"appletprops.choice.network.item.none", "Nessuno"},
             {"appletprops.choice.network.item.applethost", "Host applet"},
-            {"appletprops.choice.network.item.unrestricted", "Illimitato"},
-            {"appletprops.label.class", "Accesso alle classi:"},
+            {"appletprops.choice.network.item.unrestricted", "Non limitato"},
+            {"appletprops.label.class", "Accesso alla classe:"},
             {"appletprops.choice.class.item.restricted", "Limitato"},
-            {"appletprops.choice.class.item.unrestricted", "Illimitato"},
-            {"appletprops.label.unsignedapplet", "Consenti applet non firmati:"},
+            {"appletprops.choice.class.item.unrestricted", "Non limitato"},
+            {"appletprops.label.unsignedapplet", "Consenti applet senza firma:"},
             {"appletprops.choice.unsignedapplet.no", "No"},
-            {"appletprops.choice.unsignedapplet.yes", "S\u00ec"},
+            {"appletprops.choice.unsignedapplet.yes", "S\u00EC"},
             {"appletprops.button.apply", "Applica"},
             {"appletprops.button.cancel", "Annulla"},
             {"appletprops.button.reset", "Reimposta"},
-            {"appletprops.apply.exception", "Salvataggio delle propriet\u00e0 non riuscito: {0}"},
+            {"appletprops.apply.exception", "Salvataggio delle propriet\u00E0 non riuscito: {0}"},
             /* 4066432 */
             {"appletprops.title.invalidproxy", "Voce non valida"},
-            {"appletprops.label.invalidproxy", "La porta Proxy deve essere un valore intero positivo"},
+            {"appletprops.label.invalidproxy", "La porta del proxy deve essere un valore intero positivo."},
             {"appletprops.button.ok", "OK"},
             /* end 4066432 */
-            {"appletprops.prop.store", "Propriet\u00e0 specifiche dell'utente per AppletViewer"},
-            {"appletsecurityexception.checkcreateclassloader", "Eccezione di protezione: classloader"},
-            {"appletsecurityexception.checkaccess.thread", "Eccezione di protezione: thread"},
-            {"appletsecurityexception.checkaccess.threadgroup", "Eccezione di protezione: threadgroup: {0}"},
-            {"appletsecurityexception.checkexit", "Eccezione di protezione: exit: {0}"},
-            {"appletsecurityexception.checkexec", "Eccezione di protezione: exec: {0}"},
-            {"appletsecurityexception.checklink", "Eccezione di protezione: link: {0}"},
-            {"appletsecurityexception.checkpropsaccess", "Eccezione di protezione: properties"},
-            {"appletsecurityexception.checkpropsaccess.key", "Eccezione di protezione: properties access {0}"},
-            {"appletsecurityexception.checkread.exception1", "Eccezione di protezione: {0}, {1}"},
-            {"appletsecurityexception.checkread.exception2", "Eccezione di protezione: file.read: {0}"},
-            {"appletsecurityexception.checkread", "Eccezione di protezione: file.read: {0} == {1}"},
-            {"appletsecurityexception.checkwrite.exception", "Eccezione di protezione: {0}, {1}"},
-            {"appletsecurityexception.checkwrite", "Eccezione di protezione: file.write: {0} == {1}"},
-            {"appletsecurityexception.checkread.fd", "Eccezione di protezione: fd.read"},
-            {"appletsecurityexception.checkwrite.fd", "Eccezione di protezione: fd.write"},
-            {"appletsecurityexception.checklisten", "Eccezione di protezione: socket.listen: {0}"},
-            {"appletsecurityexception.checkaccept", "Eccezione di protezione: socket.accept: {0}:{1}"},
-            {"appletsecurityexception.checkconnect.networknone", "Eccezione di protezione: socket.connect: {0}->{1}"},
-            {"appletsecurityexception.checkconnect.networkhost1", "Eccezione di protezione: impossibile connettersi a {0} con origine {1}."},
-            {"appletsecurityexception.checkconnect.networkhost2", "Eccezione di protezione: impossibile risolvere l''indirizzo IP per l''host {0} o per {1}. "},
-            {"appletsecurityexception.checkconnect.networkhost3", "Eccezione di protezione: impossibile risolvere l''indirizzo IP per l''host {0}. Vedere la propriet\u00e0 trustProxy."},
-            {"appletsecurityexception.checkconnect", "Eccezione di protezione: connessione: {0}->{1}"},
-            {"appletsecurityexception.checkpackageaccess", "Eccezione di protezione: impossibile accedere al package: {0}"},
-            {"appletsecurityexception.checkpackagedefinition", "Eccezione di protezione: impossibile definire il package: {0}"},
-            {"appletsecurityexception.cannotsetfactory", "Eccezione di protezione: impossibile impostare i valori predefiniti"},
-            {"appletsecurityexception.checkmemberaccess", "Eccezione di protezione: controllare l'accesso del membro"},
-            {"appletsecurityexception.checkgetprintjob", "Eccezione di protezione: getPrintJob"},
-            {"appletsecurityexception.checksystemclipboardaccess", "Eccezione di protezione: getSystemClipboard"},
-            {"appletsecurityexception.checkawteventqueueaccess", "Eccezione di protezione: getEventQueue"},
-            {"appletsecurityexception.checksecurityaccess", "Eccezione di protezione: operazione di protezione: {0}"},
-            {"appletsecurityexception.getsecuritycontext.unknown", "tipo di funzione di caricamento della classe sconosciuto, impossibile verificare la presenza di getContext"},
-            {"appletsecurityexception.checkread.unknown", "tipo di funzione di caricamento della classe sconosciuto, impossibile verificare la lettura di {0}"},
-            {"appletsecurityexception.checkconnect.unknown", "tipo di funzione di caricamento della classe sconosciuto, impossibile verificare la connessione"},
+            {"appletprops.prop.store", "Propriet\u00E0 specifiche dell'utente per AppletViewer"},
+            {"appletsecurityexception.checkcreateclassloader", "Eccezione di sicurezza: classloader"},
+            {"appletsecurityexception.checkaccess.thread", "Eccezione di sicurezza: thread"},
+            {"appletsecurityexception.checkaccess.threadgroup", "Eccezione di sicurezza: threadgroup: {0}"},
+            {"appletsecurityexception.checkexit", "Eccezione di sicurezza: exit: {0}"},
+            {"appletsecurityexception.checkexec", "Eccezione di sicurezza: exec: {0}"},
+            {"appletsecurityexception.checklink", "Eccezione di sicurezza: link: {0}"},
+            {"appletsecurityexception.checkpropsaccess", "Eccezione di sicurezza: properties"},
+            {"appletsecurityexception.checkpropsaccess.key", "Eccezione di sicurezza: properties access {0}"},
+            {"appletsecurityexception.checkread.exception1", "Eccezione di sicurezza: {0}, {1}"},
+            {"appletsecurityexception.checkread.exception2", "Eccezione di sicurezza: file.read: {0}"},
+            {"appletsecurityexception.checkread", "Eccezione di sicurezza: file.read: {0} == {1}"},
+            {"appletsecurityexception.checkwrite.exception", "Eccezione di sicurezza: {0}, {1}"},
+            {"appletsecurityexception.checkwrite", "Eccezione di sicurezza: file.write: {0} == {1}"},
+            {"appletsecurityexception.checkread.fd", "Eccezione di sicurezza: fd.read"},
+            {"appletsecurityexception.checkwrite.fd", "Eccezione di sicurezza: fd.write"},
+            {"appletsecurityexception.checklisten", "Eccezione di sicurezza: socket.listen: {0}"},
+            {"appletsecurityexception.checkaccept", "Eccezione di sicurezza: socket.accept: {0}:{1}"},
+            {"appletsecurityexception.checkconnect.networknone", "Eccezione di sicurezza: socket.connect: {0}->{1}"},
+            {"appletsecurityexception.checkconnect.networkhost1", "Eccezione di sicurezza: impossibile connettersi a {0} con origine da {1}."},
+            {"appletsecurityexception.checkconnect.networkhost2", "Eccezione di sicurezza: impossibile risolvere l''IP per l''host {0} o per {1}. "},
+            {"appletsecurityexception.checkconnect.networkhost3", "Eccezione di sicurezza: impossibile non risolvere l''IP per l''host {0}. Vedere la propriet\u00E0 trustProxy."},
+            {"appletsecurityexception.checkconnect", "Eccezione di sicurezza: connect: {0}->{1}"},
+            {"appletsecurityexception.checkpackageaccess", "Eccezione di sicurezza: impossibile accedere al package {0}"},
+            {"appletsecurityexception.checkpackagedefinition", "Eccezione di sicurezza: impossibile definire il package {0}"},
+            {"appletsecurityexception.cannotsetfactory", "Eccezione di sicurezza: impossibile impostare il factory"},
+            {"appletsecurityexception.checkmemberaccess", "Eccezione di sicurezza: controllare l'accesso dei membri"},
+            {"appletsecurityexception.checkgetprintjob", "Eccezione di sicurezza: getPrintJob"},
+            {"appletsecurityexception.checksystemclipboardaccess", "Eccezione di sicurezza: getSystemClipboard"},
+            {"appletsecurityexception.checkawteventqueueaccess", "Eccezione di sicurezza: getEventQueue"},
+            {"appletsecurityexception.checksecurityaccess", "Eccezione di sicurezza: operazione di sicurezza {0}"},
+            {"appletsecurityexception.getsecuritycontext.unknown", "tipo di loader della classe sconosciuto. Impossibile verificare la presenza di getContext."},
+            {"appletsecurityexception.checkread.unknown", "tipo di loader della classe sconosciuto. Impossibile verificare la presenza della lettura di controllo {0}."},
+            {"appletsecurityexception.checkconnect.unknown", "tipo di loader della classe sconosciuto. Impossibile verificare la presenza della connessione di controllo."},
         };
+
+        return temp;
     }
 }
--- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_ja.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_ja.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2010, 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
@@ -29,173 +29,175 @@
 public class MsgAppletViewer_ja extends ListResourceBundle {
 
     public Object[][] getContents() {
-        return new Object[][] {
-            {"textframe.button.dismiss", "\u9589\u3058\u308b"},
-            {"appletviewer.tool.title", "\u30a2\u30d7\u30ec\u30c3\u30c8\u30d3\u30e5\u30fc\u30a2: {0}"},
-            {"appletviewer.menu.applet", "\u30a2\u30d7\u30ec\u30c3\u30c8"},
-            {"appletviewer.menuitem.restart", "\u518d\u8d77\u52d5"},
-            {"appletviewer.menuitem.reload", "\u518d\u8aad\u8fbc\u307f"},
-            {"appletviewer.menuitem.stop", "\u4e2d\u6b62"},
-            {"appletviewer.menuitem.save", "\u4fdd\u5b58..."},
-            {"appletviewer.menuitem.start", "\u958b\u59cb"},
-            {"appletviewer.menuitem.clone", "\u8907\u88fd..."},
-            {"appletviewer.menuitem.tag", "\u30bf\u30b0..."},
-            {"appletviewer.menuitem.info", "\u60c5\u5831..."},
-            {"appletviewer.menuitem.edit", "\u7de8\u96c6"},
-            {"appletviewer.menuitem.encoding", "\u6587\u5b57\u30b3\u30fc\u30c9"},
+        Object[][] temp = new Object[][] {
+            {"textframe.button.dismiss", "\u53D6\u6D88"},
+            {"appletviewer.tool.title", "\u30A2\u30D7\u30EC\u30C3\u30C8\u30FB\u30D3\u30E5\u30FC\u30A2: {0}"},
+            {"appletviewer.menu.applet", "\u30A2\u30D7\u30EC\u30C3\u30C8"},
+            {"appletviewer.menuitem.restart", "\u518D\u8D77\u52D5"},
+            {"appletviewer.menuitem.reload", "\u518D\u30ED\u30FC\u30C9"},
+            {"appletviewer.menuitem.stop", "\u505C\u6B62"},
+            {"appletviewer.menuitem.save", "\u4FDD\u5B58..."},
+            {"appletviewer.menuitem.start", "\u958B\u59CB"},
+            {"appletviewer.menuitem.clone", "\u30AF\u30ED\u30FC\u30F3\u306E\u4F5C\u6210..."},
+            {"appletviewer.menuitem.tag", "\u30BF\u30B0..."},
+            {"appletviewer.menuitem.info", "\u60C5\u5831..."},
+            {"appletviewer.menuitem.edit", "\u7DE8\u96C6"},
+            {"appletviewer.menuitem.encoding", "\u6587\u5B57\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0"},
             {"appletviewer.menuitem.print", "\u5370\u5237..."},
-            {"appletviewer.menuitem.props", "\u30d7\u30ed\u30d1\u30c6\u30a3..."},
-            {"appletviewer.menuitem.close", "\u9589\u3058\u308b"},
-            {"appletviewer.menuitem.quit", "\u7d42\u4e86"},
+            {"appletviewer.menuitem.props", "\u30D7\u30ED\u30D1\u30C6\u30A3..."},
+            {"appletviewer.menuitem.close", "\u9589\u3058\u308B"},
+            {"appletviewer.menuitem.quit", "\u7D42\u4E86"},
             {"appletviewer.label.hello", "Hello..."},
-            {"appletviewer.status.start", "\u30a2\u30d7\u30ec\u30c3\u30c8\u3092\u958b\u59cb\u3057\u307e\u3059\u3002"},
-            {"appletviewer.appletsave.filedialogtitle","\u30a2\u30d7\u30ec\u30c3\u30c8\u3092\u76f4\u5217\u5316\u3057\u3066\u4fdd\u5b58"},
-            {"appletviewer.appletsave.err1", "{0} \u3092 {1} \u306b\u76f4\u5217\u5316\u3057\u3066\u66f8\u304d\u8fbc\u307f\u307e\u3059\u3002"},
-            {"appletviewer.appletsave.err2", "\u30a2\u30d7\u30ec\u30c3\u30c8\u4fdd\u5b58: {0}"},
-            {"appletviewer.applettag", "\u30bf\u30b0\u8868\u793a"},
-            {"appletviewer.applettag.textframe", "\u30a2\u30d7\u30ec\u30c3\u30c8\u306e HTML \u30bf\u30b0"},
-            {"appletviewer.appletinfo.applet", "-- \u30a2\u30d7\u30ec\u30c3\u30c8\u60c5\u5831\u306a\u3057 --"},
-            {"appletviewer.appletinfo.param", "-- \u30d1\u30e9\u30e1\u30fc\u30bf\u60c5\u5831\u306a\u3057 --"},
-            {"appletviewer.appletinfo.textframe", "\u30a2\u30d7\u30ec\u30c3\u30c8\u60c5\u5831"},
-            {"appletviewer.appletprint.fail", "\u5370\u5237\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002"},
-            {"appletviewer.appletprint.finish", "\u5370\u5237\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002"},
-            {"appletviewer.appletprint.cancel", "\u5370\u5237\u306f\u53d6\u308a\u6d88\u3055\u308c\u307e\u3057\u305f\u3002"},
-            {"appletviewer.appletencoding", "\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0: {0}"},
-            {"appletviewer.parse.warning.requiresname", "\u8b66\u544a: <param name=... value=...> \u30bf\u30b0\u306b name \u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
-            {"appletviewer.parse.warning.paramoutside", "\u8b66\u544a: <param> \u30bf\u30b0\u304c <applet> ... </applet> \u306e\u5916\u306b\u3042\u308a\u307e\u3059\u3002"},
-            {"appletviewer.parse.warning.applet.requirescode", "\u8b66\u544a: <applet> \u30bf\u30b0\u306b code \u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
-            {"appletviewer.parse.warning.applet.requiresheight", "\u8b66\u544a: <applet> \u30bf\u30b0\u306b height \u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
-            {"appletviewer.parse.warning.applet.requireswidth", "\u8b66\u544a: <applet> \u30bf\u30b0\u306b width \u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
-            {"appletviewer.parse.warning.object.requirescode", "\u8b66\u544a: <object> \u30bf\u30b0\u306b code \u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
-            {"appletviewer.parse.warning.object.requiresheight", "\u8b66\u544a: <object> \u30bf\u30b0\u306b height \u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
-            {"appletviewer.parse.warning.object.requireswidth", "\u8b66\u544a: <object> \u30bf\u30b0\u306b width \u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
-            {"appletviewer.parse.warning.embed.requirescode", "\u8b66\u544a: <embed> \u30bf\u30b0\u306b code \u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
-            {"appletviewer.parse.warning.embed.requiresheight", "\u8b66\u544a: <embed> \u30bf\u30b0\u306b height \u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
-            {"appletviewer.parse.warning.embed.requireswidth", "\u8b66\u544a: <embed> \u30bf\u30b0\u306b width \u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
-            {"appletviewer.parse.warning.appnotLongersupported", "\u8b66\u544a: <app> \u30bf\u30b0\u306f\u73fe\u5728\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u4ee3\u308f\u308a\u306b <applet> \u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-            {"appletviewer.usage", "\u4f7f\u3044\u65b9: appletviewer <options> url(s)\n\n<options> \u306b\u306f\u6b21\u306e\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002\n  -debug                  Java \u30c7\u30d0\u30c3\u30ac\u3067\u30a2\u30d7\u30ec\u30c3\u30c8\u30d3\u30e5\u30fc\u30a2\u3092\u8d77\u52d5\u3059\u308b\n  -encoding <encoding>    HTML \u30d5\u30a1\u30a4\u30eb\u3067\u4f7f\u7528\u3055\u308c\u308b\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u6307\u5b9a\u3059\u308b\n  -J<runtime flag>        java \u30a4\u30f3\u30bf\u30d7\u30ea\u30bf\u306b\u5f15\u6570\u3092\u6e21\u3059\n\n-J \u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u6a19\u6e96\u3067\u306f\u306a\u304f\u3001\u4e88\u544a\u306a\u3057\u306b\u5909\u66f4\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002"},
-            {"appletviewer.main.err.unsupportedopt", "\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u30aa\u30d7\u30b7\u30e7\u30f3: {0}"},
-            {"appletviewer.main.err.unrecognizedarg", "\u8a8d\u8b58\u3055\u308c\u306a\u3044\u5f15\u6570: {0}"},
-            {"appletviewer.main.err.dupoption", "\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u91cd\u8907\u3057\u3066\u4f7f\u7528: {0}"},
-            {"appletviewer.main.err.inputfile", "\u5165\u529b\u30d5\u30a1\u30a4\u30eb\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-            {"appletviewer.main.err.badurl", "\u4e0d\u6b63\u306a URL: {0} ( {1} )"},
-            {"appletviewer.main.err.io", "{0} \u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u5165\u51fa\u529b\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"},
-            {"appletviewer.main.err.readablefile", " {0} \u304c\u30d5\u30a1\u30a4\u30eb\u3067\u304b\u3064\u8aad\u307f\u8fbc\u307f\u53ef\u80fd\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-            {"appletviewer.main.err.correcturl", " {0} \u306f\u6b63\u3057\u3044 URL \u3067\u3059\u304b?"},
-            {"appletviewer.main.prop.store", "AppletViewer \u306e\u30e6\u30fc\u30b6\u56fa\u6709\u30d7\u30ed\u30d1\u30c6\u30a3"},
-            {"appletviewer.main.err.prop.cantread", "\u30e6\u30fc\u30b6\u30d7\u30ed\u30d1\u30c6\u30a3\u30d5\u30a1\u30a4\u30eb\u304c\u8aad\u307f\u8fbc\u307e\u308c\u307e\u305b\u3093: {0}"},
-            {"appletviewer.main.err.prop.cantsave", "\u30e6\u30fc\u30b6\u30d7\u30ed\u30d1\u30c6\u30a3\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3067\u304d\u307e\u305b\u3093: {0}"},
-            {"appletviewer.main.warn.nosecmgr", "\u8b66\u544a: \u30c7\u30d0\u30c3\u30ac\u3067\u306e\u73fe\u5728\u306e\u5236\u9650\u306b\u3088\u308a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u7121\u52b9\u306b\u3057\u3066\u3044\u307e\u3059\u3002"},
-            {"appletviewer.main.debug.cantfinddebug", "\u30c7\u30d0\u30c3\u30ac\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002"},
-            {"appletviewer.main.debug.cantfindmain", "\u30c7\u30d0\u30c3\u30ac\u3067 main \u30e1\u30bd\u30c3\u30c9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002"},
-            {"appletviewer.main.debug.exceptionindebug", "\u30c7\u30d0\u30c3\u30ac\u3067\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"},
-            {"appletviewer.main.debug.cantaccess", "\u30c7\u30d0\u30c3\u30ac\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002"},
-            {"appletviewer.main.nosecmgr", "\u8b66\u544a: SecurityManager \u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-            {"appletviewer.main.warning", "\u8b66\u544a: \u30a2\u30d7\u30ec\u30c3\u30c8\u304c\u8d77\u52d5\u3057\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u5165\u529b\u306b <applet> \u30bf\u30b0\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-            {"appletviewer.main.warn.prop.overwrite", "\u8b66\u544a: \u30e6\u30fc\u30b6\u306e\u8981\u6c42\u306b\u3088\u308a\u30b7\u30b9\u30c6\u30e0\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u4e00\u6642\u7684\u306b\u4e0a\u66f8\u304d\u3057\u3066\u3044\u307e\u3059: \u30ad\u30fc: {0} \u53e4\u3044\u5024: {1} \u65b0\u3057\u3044\u5024: {2}"},
-            {"appletviewer.main.warn.cantreadprops", "\u8b66\u544a: AppletViewer \u30d7\u30ed\u30d1\u30c6\u30a3\u30d5\u30a1\u30a4\u30eb\u304c\u8aad\u307f\u8fbc\u307e\u308c\u307e\u305b\u3093: {0} \u30c7\u30d5\u30a9\u30eb\u30c8\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002"},
-            {"appletioexception.loadclass.throw.interrupted", "\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\u304c\u4e2d\u65ad\u3055\u308c\u307e\u3057\u305f: {0}"},
-            {"appletioexception.loadclass.throw.notloaded", "\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u304c\u8aad\u307f\u8fbc\u307e\u308c\u307e\u305b\u3093: {0}"},
-            {"appletclassloader.loadcode.verbose", "{1} \u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306e\u30b9\u30c8\u30ea\u30fc\u30e0 {0} \u3092\u30aa\u30fc\u30d7\u30f3\u3067\u304d\u307e\u305b\u3093"},
-            {"appletclassloader.filenotfound", "\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0}"},
-            {"appletclassloader.fileformat", "{0} \u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30d5\u30a1\u30a4\u30eb\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"},
-            {"appletclassloader.fileioexception", "{0} \u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u5165\u51fa\u529b\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"},
-            {"appletclassloader.fileexception", "{1} \u8aad\u307f\u8fbc\u307f\u4e2d\u306b {0} \u306e\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"},
-            {"appletclassloader.filedeath", "{1} \u8aad\u307f\u8fbc\u307f\u4e2d\u306b {0} \u304c\u5f37\u5236\u7d42\u4e86\u3055\u308c\u307e\u3057\u305f\u3002"},
-            {"appletclassloader.fileerror", "{1} \u8aad\u307f\u8fbc\u307f\u4e2d\u306b {0} \u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"},
-            {"appletclassloader.findclass.verbose.findclass", "\u30af\u30e9\u30b9 {1} \u3092\u898b\u3064\u3051\u308b {0}}"},
-            {"appletclassloader.findclass.verbose.openstream", "{1} \u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306e\u30b9\u30c8\u30ea\u30fc\u30e0 {0} \u3092\u30aa\u30fc\u30d7\u30f3\u3067\u304d\u307e\u305b\u3093"},
-            {"appletclassloader.getresource.verbose.forname", "\u540d\u524d\u7528\u306e AppletClassLoader.getResource: {0}"},
-            {"appletclassloader.getresource.verbose.found", "\u30ea\u30bd\u30fc\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f: \u30b7\u30b9\u30c6\u30e0\u30ea\u30bd\u30fc\u30b9\u3068\u3057\u3066\u306e {0}"},
-            {"appletclassloader.getresourceasstream.verbose", "\u30ea\u30bd\u30fc\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f: \u30b7\u30b9\u30c6\u30e0\u30ea\u30bd\u30fc\u30b9\u3068\u3057\u3066\u306e {0}"},
-            {"appletpanel.runloader.err", "object \u304b code \u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u3069\u3061\u3089\u304b\u304c\u5fc5\u8981\u3067\u3059\uff01"},
-            {"appletpanel.runloader.exception", "{0} \u3092\u518d\u69cb\u6210\u4e2d\u306b\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"},
-            {"appletpanel.destroyed", "\u30a2\u30d7\u30ec\u30c3\u30c8\u304c\u6301\u3064\u30ea\u30bd\u30fc\u30b9\u3092\u89e3\u653e\u3057\u307e\u3057\u305f\u3002"},
-            {"appletpanel.loaded", "\u30a2\u30d7\u30ec\u30c3\u30c8\u304c\u8aad\u307f\u8fbc\u307e\u308c\u307e\u3057\u305f\u3002"},
-            {"appletpanel.started", "\u30a2\u30d7\u30ec\u30c3\u30c8\u304c\u958b\u59cb\u3055\u308c\u307e\u3057\u305f\u3002"},
-            {"appletpanel.inited", "\u30a2\u30d7\u30ec\u30c3\u30c8\u304c\u521d\u671f\u5316\u3055\u308c\u307e\u3057\u305f\u3002"},
-            {"appletpanel.stopped", "\u30a2\u30d7\u30ec\u30c3\u30c8\u304c\u7d42\u4e86\u3057\u307e\u3057\u305f\u3002"},
-            {"appletpanel.disposed", "\u30a2\u30d7\u30ec\u30c3\u30c8\u304c\u7834\u68c4\u3055\u308c\u307e\u3057\u305f\u3002"},
-            {"appletpanel.nocode", "APLLET \u30bf\u30b0\u306b CODE \u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
-            {"appletpanel.notfound", "load: \u30af\u30e9\u30b9 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002"},
-            {"appletpanel.nocreate", "load: {0} \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3067\u304d\u307e\u305b\u3093\u3002"},
-            {"appletpanel.noconstruct", "load: {0} \u306f public \u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3042\u308b\u3044\u306f public \u306a\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3092\u6301\u3063\u3066\u3044\u307e\u305b\u3093\u3002"},
-            {"appletpanel.death", "\u5f37\u5236\u7d42\u4e86\u3055\u308c\u307e\u3057\u305f\u3002"},
-            {"appletpanel.exception", "\u4f8b\u5916: {0}."},
-            {"appletpanel.exception2", "\u4f8b\u5916: {0}: {1}."},
-            {"appletpanel.error", "\u30a8\u30e9\u30fc: {0}."},
-            {"appletpanel.error2", "\u30a8\u30e9\u30fc: {0}: {1}."},
-            {"appletpanel.notloaded", "Init: \u30a2\u30d7\u30ec\u30c3\u30c8\u306f\u8aad\u307f\u8fbc\u307e\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-            {"appletpanel.notinited", "Start: \u30a2\u30d7\u30ec\u30c3\u30c8\u306f\u521d\u671f\u5316\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-            {"appletpanel.notstarted", "Stop: \u30a2\u30d7\u30ec\u30c3\u30c8\u306f\u958b\u59cb\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-            {"appletpanel.notstopped", "Destroy: \u30a2\u30d7\u30ec\u30c3\u30c8\u306f\u505c\u6b62\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-            {"appletpanel.notdestroyed", "Dispose: \u30a2\u30d7\u30ec\u30c3\u30c8\u306f\u7834\u68c4\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-            {"appletpanel.notdisposed", "Load: \u30a2\u30d7\u30ec\u30c3\u30c8\u306f\u7834\u68c4\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-            {"appletpanel.bail", "\u4e2d\u65ad\u3055\u308c\u307e\u3057\u305f\u3002"},
-            {"appletpanel.filenotfound", "\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0}"},
-            {"appletpanel.fileformat", "{0} \u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30d5\u30a1\u30a4\u30eb\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"},
-            {"appletpanel.fileioexception", "{0} \u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u5165\u51fa\u529b\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"},
-            {"appletpanel.fileexception", "{1} \u8aad\u307f\u8fbc\u307f\u4e2d\u306b {0} \u306e\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"},
-            {"appletpanel.filedeath", "{1} \u8aad\u307f\u8fbc\u307f\u4e2d\u306b {0} \u304c\u5f37\u5236\u7d42\u4e86\u3055\u308c\u307e\u3057\u305f\u3002"},
-            {"appletpanel.fileerror", "{1} \u8aad\u307f\u8fbc\u307f\u4e2d\u306b {0} \u306e\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"},
-            {"appletpanel.badattribute.exception", "HTML \u69cb\u6587\u89e3\u6790: width/height \u5c5e\u6027\u306e\u5024\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093"},
-            {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream \u306b\u306f null \u3067\u306a\u3044\u30af\u30e9\u30b9\u30ed\u30fc\u30c0\u304c\u5fc5\u8981\u3067\u3059\u3002"},
-            {"appletprops.title", "\u30a2\u30d7\u30ec\u30c3\u30c8\u30d3\u30e5\u30fc\u30a2\u306e\u30d7\u30ed\u30d1\u30c6\u30a3"},
-            {"appletprops.label.http.server", "Http \u30d7\u30ed\u30ad\u30b7\u30b5\u30fc\u30d0:"},
-            {"appletprops.label.http.proxy", "Http \u30d7\u30ed\u30ad\u30b7\u306e\u30dd\u30fc\u30c8:"},
-            {"appletprops.label.network", "\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30a2\u30af\u30bb\u30b9:"},
-            {"appletprops.choice.network.item.none", "\u306a\u3057"},
-            {"appletprops.choice.network.item.applethost", "\u30a2\u30d7\u30ec\u30c3\u30c8\u30db\u30b9\u30c8\u306e\u307f"},
-            {"appletprops.choice.network.item.unrestricted", "\u5236\u9650\u306a\u3057"},
-            {"appletprops.label.class", "\u30af\u30e9\u30b9\u30a2\u30af\u30bb\u30b9:"},
-            {"appletprops.choice.class.item.restricted", "\u5236\u9650\u3042\u308a"},
-            {"appletprops.choice.class.item.unrestricted", "\u5236\u9650\u306a\u3057"},
-            {"appletprops.label.unsignedapplet", "\u7f72\u540d\u306e\u306a\u3044\u30a2\u30d7\u30ec\u30c3\u30c8\u3092\u8a31\u53ef\u3057\u307e\u3059\u304b:"},
+            {"appletviewer.status.start", "\u30A2\u30D7\u30EC\u30C3\u30C8\u3092\u958B\u59CB\u3057\u3066\u3044\u307E\u3059..."},
+            {"appletviewer.appletsave.filedialogtitle","\u30A2\u30D7\u30EC\u30C3\u30C8\u3092\u30D5\u30A1\u30A4\u30EB\u306B\u30B7\u30EA\u30A2\u30E9\u30A4\u30BA"},
+            {"appletviewer.appletsave.err1", "{0}\u3092{1}\u306B\u30B7\u30EA\u30A2\u30E9\u30A4\u30BA"},
+            {"appletviewer.appletsave.err2", "appletSave\u5185: {0}"},
+            {"appletviewer.applettag", "\u30BF\u30B0\u306E\u8868\u793A"},
+            {"appletviewer.applettag.textframe", "\u30A2\u30D7\u30EC\u30C3\u30C8HTML\u30BF\u30B0"},
+            {"appletviewer.appletinfo.applet", "-- \u30A2\u30D7\u30EC\u30C3\u30C8\u60C5\u5831\u306A\u3057 --"},
+            {"appletviewer.appletinfo.param", "-- \u30D1\u30E9\u30E1\u30FC\u30BF\u60C5\u5831\u306A\u3057 --"},
+            {"appletviewer.appletinfo.textframe", "\u30A2\u30D7\u30EC\u30C3\u30C8\u60C5\u5831"},
+            {"appletviewer.appletprint.fail", "\u5370\u5237\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002"},
+            {"appletviewer.appletprint.finish", "\u5370\u5237\u304C\u5B8C\u4E86\u3057\u307E\u3057\u305F\u3002"},
+            {"appletviewer.appletprint.cancel", "\u5370\u5237\u304C\u4E2D\u6B62\u3055\u308C\u307E\u3057\u305F\u3002"},
+            {"appletviewer.appletencoding", "\u6587\u5B57\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0: {0}"},
+            {"appletviewer.parse.warning.requiresname", "\u8B66\u544A: <param name=... value=...>\u30BF\u30B0\u306Bname\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002"},
+            {"appletviewer.parse.warning.paramoutside", "\u8B66\u544A: <param>\u30BF\u30B0\u304C<applet> ... </applet>\u306E\u5916\u5074\u3067\u3059\u3002"},
+            {"appletviewer.parse.warning.applet.requirescode", "\u8B66\u544A: <applet>\u30BF\u30B0\u306Bcode\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002"},
+            {"appletviewer.parse.warning.applet.requiresheight", "\u8B66\u544A: <applet>\u30BF\u30B0\u306Bheight\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002"},
+            {"appletviewer.parse.warning.applet.requireswidth", "\u8B66\u544A: <applet>\u30BF\u30B0\u306Bwidth\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002"},
+            {"appletviewer.parse.warning.object.requirescode", "\u8B66\u544A: <object>\u30BF\u30B0\u306Bcode\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002"},
+            {"appletviewer.parse.warning.object.requiresheight", "\u8B66\u544A: <object>\u30BF\u30B0\u306Bheight\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002"},
+            {"appletviewer.parse.warning.object.requireswidth", "\u8B66\u544A: <object>\u30BF\u30B0\u306Bwidth\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002"},
+            {"appletviewer.parse.warning.embed.requirescode", "\u8B66\u544A: <embed>\u30BF\u30B0\u306Bcode\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002"},
+            {"appletviewer.parse.warning.embed.requiresheight", "\u8B66\u544A: <embed>\u30BF\u30B0\u306Bheight\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002"},
+            {"appletviewer.parse.warning.embed.requireswidth", "\u8B66\u544A: <embed>\u30BF\u30B0\u306Bwidth\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002"},
+            {"appletviewer.parse.warning.appnotLongersupported", "\u8B66\u544A: <app>\u30BF\u30B0\u306F\u73FE\u5728\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u304B\u308F\u308A\u306B<applet>\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
+            {"appletviewer.usage", "\u4F7F\u7528\u65B9\u6CD5: appletviewer <options> url(s)\n\n<options>\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059:\n  -debug                  Java\u30C7\u30D0\u30C3\u30AC\u3067\u30A2\u30D7\u30EC\u30C3\u30C8\u30FB\u30D3\u30E5\u30FC\u30A2\u3092\u958B\u59CB\u3059\u308B\n  -encoding <encoding>    HTML\u30D5\u30A1\u30A4\u30EB\u306B\u3088\u3063\u3066\u4F7F\u7528\u3055\u308C\u308B\u6587\u5B57\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u3092\u6307\u5B9A\u3059\u308B\n  -J<runtime flag>        \u5F15\u6570\u3092Java\u30A4\u30F3\u30BF\u30D7\u30EA\u30BF\u306B\u6E21\u3059\n\n-J\u306F\u975E\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u3042\u308A\u3001\u4E88\u544A\u306A\u3057\u306B\u5909\u66F4\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002"},
+            {"appletviewer.main.err.unsupportedopt", "\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u30AA\u30D7\u30B7\u30E7\u30F3: {0}"},
+            {"appletviewer.main.err.unrecognizedarg", "\u8A8D\u8B58\u3055\u308C\u306A\u3044\u5F15\u6570: {0}"},
+            {"appletviewer.main.err.dupoption", "\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u4F7F\u7528\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059: {0}"},
+            {"appletviewer.main.err.inputfile", "\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+            {"appletviewer.main.err.badurl", "\u4E0D\u6B63\u306AURL: {0} ( {1} )"},
+            {"appletviewer.main.err.io", "\u8AAD\u8FBC\u307F\u4E2D\u306E\u5165\u51FA\u529B\u4F8B\u5916\u3067\u3059: {0}"},
+            {"appletviewer.main.err.readablefile", "{0}\u304C\u30D5\u30A1\u30A4\u30EB\u3067\u3042\u308A\u3001\u8AAD\u8FBC\u307F\u53EF\u80FD\u3067\u3042\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
+            {"appletviewer.main.err.correcturl", "{0}\u306F\u6B63\u3057\u3044URL\u3067\u3059\u304B\u3002"},
+            {"appletviewer.main.prop.store", "AppletViewer\u7528\u306E\u30E6\u30FC\u30B6\u30FC\u304C\u6307\u5B9A\u3057\u305F\u30D7\u30ED\u30D1\u30C6\u30A3"},
+            {"appletviewer.main.err.prop.cantread", "\u30E6\u30FC\u30B6\u30FC\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093: {0}"},
+            {"appletviewer.main.err.prop.cantsave", "\u30E6\u30FC\u30B6\u30FC\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u4FDD\u5B58\u3067\u304D\u307E\u305B\u3093: {0}"},
+            {"appletviewer.main.warn.nosecmgr", "\u8B66\u544A: \u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u3092\u7121\u52B9\u5316\u3057\u307E\u3059\u3002"},
+            {"appletviewer.main.debug.cantfinddebug", "\u30C7\u30D0\u30C3\u30AC\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002"},
+            {"appletviewer.main.debug.cantfindmain", "\u30C7\u30D0\u30C3\u30AC\u306E\u30E1\u30A4\u30F3\u30FB\u30E1\u30BD\u30C3\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002"},
+            {"appletviewer.main.debug.exceptionindebug", "\u30C7\u30D0\u30C3\u30AC\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002"},
+            {"appletviewer.main.debug.cantaccess", "\u30C7\u30D0\u30C3\u30AC\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3002"},
+            {"appletviewer.main.nosecmgr", "\u8B66\u544A: SecurityManager\u304C\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+            {"appletviewer.main.warning", "\u8B66\u544A: \u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u958B\u59CB\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u5165\u529B\u306B<applet>\u30BF\u30B0\u304C\u3042\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
+            {"appletviewer.main.warn.prop.overwrite", "\u8B66\u544A: \u30E6\u30FC\u30B6\u30FC\u306E\u30EA\u30AF\u30A8\u30B9\u30C8\u3067\u30B7\u30B9\u30C6\u30E0\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u4E00\u6642\u7684\u306B\u4E0A\u66F8\u304D\u3057\u307E\u3059: \u30AD\u30FC: {0} \u53E4\u3044\u5024: {1} \u65B0\u3057\u3044\u5024: {2}"},
+            {"appletviewer.main.warn.cantreadprops", "\u8B66\u544A: AppletViewer\u30D7\u30ED\u30D1\u30C6\u30A3\u30FB\u30D5\u30A1\u30A4\u30EB{0}\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002"},
+            {"appletioexception.loadclass.throw.interrupted", "\u30AF\u30E9\u30B9\u306E\u30ED\u30FC\u30C9\u304C\u4E2D\u65AD\u3057\u307E\u3057\u305F: {0}"},
+            {"appletioexception.loadclass.throw.notloaded", "\u30AF\u30E9\u30B9\u304C\u30ED\u30FC\u30C9\u3055\u308C\u307E\u305B\u3093: {0}"},
+            {"appletclassloader.loadcode.verbose", "{1}\u3092\u53D6\u5F97\u3059\u308B\u305F\u3081\u306E{0}\u3078\u306E\u30B9\u30C8\u30EA\u30FC\u30E0\u3092\u958B\u304D\u307E\u3059"},
+            {"appletclassloader.filenotfound", "{0}\u306E\u691C\u7D22\u4E2D\u306B\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093"},
+            {"appletclassloader.fileformat", "{0}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B\u30D5\u30A1\u30A4\u30EB\u30FB\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F"},
+            {"appletclassloader.fileioexception", "{0}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B\u5165\u51FA\u529B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F"},
+            {"appletclassloader.fileexception", "{1}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B{0}\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F"},
+            {"appletclassloader.filedeath", "{1}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B{0}\u304C\u5F37\u5236\u7D42\u4E86\u3057\u307E\u3057\u305F"},
+            {"appletclassloader.fileerror", "{1}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B{0}\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F"},
+            {"appletclassloader.findclass.verbose.findclass", "{0}\u306F\u30AF\u30E9\u30B9{1}\u3092\u691C\u51FA\u3057\u307E\u3057\u305F"},
+            {"appletclassloader.findclass.verbose.openstream", "{1}\u3092\u53D6\u5F97\u3059\u308B\u305F\u3081\u306E{0}\u3078\u306E\u30B9\u30C8\u30EA\u30FC\u30E0\u3092\u958B\u304D\u307E\u3059"},
+            {"appletclassloader.getresource.verbose.forname", "\u540D\u524D{0}\u306EAppletClassLoader.getResource\u3067\u3059"},
+            {"appletclassloader.getresource.verbose.found", "\u30EA\u30BD\u30FC\u30B9{0}\u304C\u30B7\u30B9\u30C6\u30E0\u30FB\u30EA\u30BD\u30FC\u30B9\u3068\u3057\u3066\u691C\u51FA\u3055\u308C\u307E\u3057\u305F"},
+            {"appletclassloader.getresourceasstream.verbose", "\u30EA\u30BD\u30FC\u30B9{0}\u304C\u30B7\u30B9\u30C6\u30E0\u30FB\u30EA\u30BD\u30FC\u30B9\u3068\u3057\u3066\u691C\u51FA\u3055\u308C\u307E\u3057\u305F"},
+            {"appletpanel.runloader.err", "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u307E\u305F\u306F\u30B3\u30FC\u30C9\u30FB\u30D1\u30E9\u30E1\u30FC\u30BF\u306E\u3044\u305A\u308C\u304B\u3067\u3059\u3002"},
+            {"appletpanel.runloader.exception", "{0}\u306E\u30C7\u30B7\u30EA\u30A2\u30E9\u30A4\u30BA\u4E2D\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F"},
+            {"appletpanel.destroyed", "\u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u7834\u68C4\u3055\u308C\u307E\u3057\u305F\u3002"},
+            {"appletpanel.loaded", "\u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u30ED\u30FC\u30C9\u3055\u308C\u307E\u3057\u305F\u3002"},
+            {"appletpanel.started", "\u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u958B\u59CB\u3055\u308C\u307E\u3057\u305F\u3002"},
+            {"appletpanel.inited", "\u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u521D\u671F\u5316\u3055\u308C\u307E\u3057\u305F\u3002"},
+            {"appletpanel.stopped", "\u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u505C\u6B62\u3055\u308C\u307E\u3057\u305F\u3002"},
+            {"appletpanel.disposed", "\u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u7834\u68C4\u3055\u308C\u307E\u3057\u305F\u3002"},
+            {"appletpanel.nocode", "APPLET\u30BF\u30B0\u306BCODE\u30D1\u30E9\u30E1\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093\u3002"},
+            {"appletpanel.notfound", "\u30ED\u30FC\u30C9: \u30AF\u30E9\u30B9{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002"},
+            {"appletpanel.nocreate", "\u30ED\u30FC\u30C9: {0}\u3092\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u5316\u3067\u304D\u307E\u305B\u3093\u3002"},
+            {"appletpanel.noconstruct", "\u30ED\u30FC\u30C9: {0}\u306Fpublic\u3067\u306A\u3044\u304B\u3001public\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u3092\u6301\u3063\u3066\u3044\u307E\u305B\u3093\u3002"},
+            {"appletpanel.death", "\u5F37\u5236\u7D42\u4E86\u3055\u308C\u307E\u3057\u305F"},
+            {"appletpanel.exception", "\u4F8B\u5916: {0}\u3002"},
+            {"appletpanel.exception2", "\u4F8B\u5916: {0}: {1}\u3002"},
+            {"appletpanel.error", "\u30A8\u30E9\u30FC: {0}\u3002"},
+            {"appletpanel.error2", "\u30A8\u30E9\u30FC: {0}: {1}\u3002"},
+            {"appletpanel.notloaded", "\u521D\u671F\u5316: \u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u30ED\u30FC\u30C9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+            {"appletpanel.notinited", "\u958B\u59CB: \u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+            {"appletpanel.notstarted", "\u505C\u6B62: \u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u958B\u59CB\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+            {"appletpanel.notstopped", "\u7834\u68C4: \u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u505C\u6B62\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+            {"appletpanel.notdestroyed", "\u7834\u68C4: \u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u7834\u68C4\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+            {"appletpanel.notdisposed", "\u30ED\u30FC\u30C9: \u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u7834\u68C4\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+            {"appletpanel.bail", "\u4E2D\u65AD\u6E08: \u7D42\u4E86\u3057\u3066\u3044\u307E\u3059\u3002"},
+            {"appletpanel.filenotfound", "{0}\u306E\u691C\u7D22\u4E2D\u306B\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093"},
+            {"appletpanel.fileformat", "{0}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B\u30D5\u30A1\u30A4\u30EB\u30FB\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F"},
+            {"appletpanel.fileioexception", "{0}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B\u5165\u51FA\u529B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F"},
+            {"appletpanel.fileexception", "{1}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B{0}\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F"},
+            {"appletpanel.filedeath", "{1}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B{0}\u304C\u5F37\u5236\u7D42\u4E86\u3057\u307E\u3057\u305F"},
+            {"appletpanel.fileerror", "{1}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B{0}\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F"},
+            {"appletpanel.badattribute.exception", "HTML\u89E3\u6790: width\u307E\u305F\u306Fheight\u5C5E\u6027\u306E\u5024\u304C\u4E0D\u6B63\u3067\u3059"},
+            {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream\u306F\u975Enull\u306E\u30ED\u30FC\u30C0\u30FC\u304C\u5FC5\u8981\u3067\u3059"},
+            {"appletprops.title", "AppletViewer\u30D7\u30ED\u30D1\u30C6\u30A3"},
+            {"appletprops.label.http.server", "Http\u30D7\u30ED\u30AD\u30B7\u30FB\u30B5\u30FC\u30D0\u30FC:"},
+            {"appletprops.label.http.proxy", "Http\u30D7\u30ED\u30AD\u30B7\u30FB\u30DD\u30FC\u30C8:"},
+            {"appletprops.label.network", "\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u30FB\u30A2\u30AF\u30BB\u30B9:"},
+            {"appletprops.choice.network.item.none", "\u306A\u3057"},
+            {"appletprops.choice.network.item.applethost", "\u30A2\u30D7\u30EC\u30C3\u30C8\u30FB\u30DB\u30B9\u30C8"},
+            {"appletprops.choice.network.item.unrestricted", "\u5236\u9650\u306A\u3057"},
+            {"appletprops.label.class", "\u30AF\u30E9\u30B9\u30FB\u30A2\u30AF\u30BB\u30B9:"},
+            {"appletprops.choice.class.item.restricted", "\u5236\u9650\u4ED8\u304D"},
+            {"appletprops.choice.class.item.unrestricted", "\u5236\u9650\u306A\u3057"},
+            {"appletprops.label.unsignedapplet", "\u7F72\u540D\u3055\u308C\u3066\u3044\u306A\u3044\u30A2\u30D7\u30EC\u30C3\u30C8\u3092\u8A31\u53EF:"},
             {"appletprops.choice.unsignedapplet.no", "\u3044\u3044\u3048"},
-            {"appletprops.choice.unsignedapplet.yes", "\u306f\u3044"},
+            {"appletprops.choice.unsignedapplet.yes", "\u306F\u3044"},
             {"appletprops.button.apply", "\u9069\u7528"},
-            {"appletprops.button.cancel", "\u53d6\u6d88\u3057"},
-            {"appletprops.button.reset", "\u30ea\u30bb\u30c3\u30c8"},
-            {"appletprops.apply.exception", "\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u4fdd\u5b58\u306b\u5931\u6557\u3057\u307e\u3057\u305f: {0}"},
+            {"appletprops.button.cancel", "\u53D6\u6D88"},
+            {"appletprops.button.reset", "\u30EA\u30BB\u30C3\u30C8"},
+            {"appletprops.apply.exception", "\u30D7\u30ED\u30D1\u30C6\u30A3{0}\u306E\u4FDD\u5B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F"},
             /* 4066432 */
-            {"appletprops.title.invalidproxy", "\u7121\u52b9\u306a\u5165\u529b"},
-            {"appletprops.label.invalidproxy", "\u30d7\u30ed\u30ad\u30b7\u306e\u30dd\u30fc\u30c8\u756a\u53f7\u306f\u6b63\u306e\u6574\u6570\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002"},
-            {"appletprops.button.ok", "\u4e86\u89e3"},
+            {"appletprops.title.invalidproxy", "\u30A8\u30F3\u30C8\u30EA\u304C\u7121\u52B9\u3067\u3059"},
+            {"appletprops.label.invalidproxy", "\u30D7\u30ED\u30AD\u30B7\u30FB\u30DD\u30FC\u30C8\u306F\u6B63\u306E\u6574\u6570\u5024\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002"},
+            {"appletprops.button.ok", "OK"},
             /* end 4066432 */
-            {"appletprops.prop.store", "AppletViewer \u306e\u30e6\u30fc\u30b6\u56fa\u6709\u30d7\u30ed\u30d1\u30c6\u30a3"},
-            {"appletsecurityexception.checkcreateclassloader", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: classloader"},
-            {"appletsecurityexception.checkaccess.thread", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: thread"},
-            {"appletsecurityexception.checkaccess.threadgroup", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: threadgroup: {0}"},
-            {"appletsecurityexception.checkexit", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: exit: {0}"},
-            {"appletsecurityexception.checkexec", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: exec: {0}"},
-            {"appletsecurityexception.checklink", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: link: {0}"},
-            {"appletsecurityexception.checkpropsaccess", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: properties"},
-            {"appletsecurityexception.checkpropsaccess.key", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: properties access {0}"},
-            {"appletsecurityexception.checkread.exception1", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0}, {1}"},
-            {"appletsecurityexception.checkread.exception2", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: file.read: {0}"},
-            {"appletsecurityexception.checkread", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: file.read: {0} == {1}"},
-            {"appletsecurityexception.checkwrite.exception", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0}, {1}"},
-            {"appletsecurityexception.checkwrite", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: file.write: {0} == {1}"},
-            {"appletsecurityexception.checkread.fd", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: fd.read"},
-            {"appletsecurityexception.checkwrite.fd", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: fd.write"},
-            {"appletsecurityexception.checklisten", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: socket.listen: {0}"},
-            {"appletsecurityexception.checkaccept", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: socket.accept: {0}:{1}"},
-            {"appletsecurityexception.checkconnect.networknone", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: socket.connect: {0}->{1}"},
-            {"appletsecurityexception.checkconnect.networkhost1", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {1} \u306e\u5143\u306b\u306a\u308b {0} \u306b\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3002"},
-            {"appletsecurityexception.checkconnect.networkhost2", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: \u30db\u30b9\u30c8 {0} \u307e\u305f\u306f {1} \u306e IP \u3092\u89e3\u6c7a\u3067\u304d\u307e\u305b\u3093\u3002"},
-            {"appletsecurityexception.checkconnect.networkhost3", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: \u30db\u30b9\u30c8 {0} \u306e IP \u3092\u89e3\u6c7a\u3067\u304d\u307e\u305b\u3093\u3002 trustProxy \u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u8abf\u3079\u3066\u304f\u3060\u3055\u3044\u3002"},
-            {"appletsecurityexception.checkconnect", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: connect: {0}->{1}"},
-            {"appletsecurityexception.checkpackageaccess", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: \u30d1\u30c3\u30b1\u30fc\u30b8 {0} \u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002"},
-            {"appletsecurityexception.checkpackagedefinition", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: \u30d1\u30c3\u30b1\u30fc\u30b8 {0} \u3092\u5b9a\u7fa9\u3067\u304d\u307e\u305b\u3093\u3002"},
-            {"appletsecurityexception.cannotsetfactory", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: \u30d5\u30a1\u30af\u30c8\u30ea\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002"},
-            {"appletsecurityexception.checkmemberaccess", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: \u30e1\u30f3\u30d0\u30a2\u30af\u30bb\u30b9\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-            {"appletsecurityexception.checkgetprintjob", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: getPrintJob"},
-            {"appletsecurityexception.checksystemclipboardaccess", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: getSystemClipboard"},
-            {"appletsecurityexception.checkawteventqueueaccess", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: getEventQueue"},
-            {"appletsecurityexception.checksecurityaccess", "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: security operation: {0}"},
-            {"appletsecurityexception.getsecuritycontext.unknown", "\u30af\u30e9\u30b9\u30ed\u30fc\u30c0\u30bf\u30a4\u30d7\u304c\u4e0d\u660e\u3067\u3059\u3002getContext \u306e\u30c1\u30a7\u30c3\u30af\u304c\u3067\u304d\u307e\u305b\u3093\u3002"},
-            {"appletsecurityexception.checkread.unknown", "\u30af\u30e9\u30b9\u30ed\u30fc\u30c0\u30bf\u30a4\u30d7\u304c\u4e0d\u660e\u3067\u3059\u3002{0} \u306e\u8aad\u307f\u8fbc\u307f\u30c1\u30a7\u30c3\u30af\u304c\u3067\u304d\u307e\u305b\u3093\u3002"},
-            {"appletsecurityexception.checkconnect.unknown", "\u30af\u30e9\u30b9\u30ed\u30fc\u30c0\u30bf\u30a4\u30d7\u304c\u4e0d\u660e\u3067\u3059\u3002\u63a5\u7d9a\u30c1\u30a7\u30c3\u30af\u304c\u3067\u304d\u307e\u305b\u3093\u3002"},
+            {"appletprops.prop.store", "AppletViewer\u7528\u306E\u30E6\u30FC\u30B6\u30FC\u304C\u6307\u5B9A\u3057\u305F\u30D7\u30ED\u30D1\u30C6\u30A3"},
+            {"appletsecurityexception.checkcreateclassloader", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30AF\u30E9\u30B9\u30ED\u30FC\u30C0\u30FC"},
+            {"appletsecurityexception.checkaccess.thread", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30B9\u30EC\u30C3\u30C9"},
+            {"appletsecurityexception.checkaccess.threadgroup", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30B9\u30EC\u30C3\u30C9\u30B0\u30EB\u30FC\u30D7: {0}"},
+            {"appletsecurityexception.checkexit", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u7D42\u4E86: {0}"},
+            {"appletsecurityexception.checkexec", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u5B9F\u884C: {0}"},
+            {"appletsecurityexception.checklink", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30EA\u30F3\u30AF: {0}"},
+            {"appletsecurityexception.checkpropsaccess", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30D7\u30ED\u30D1\u30C6\u30A3"},
+            {"appletsecurityexception.checkpropsaccess.key", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30D7\u30ED\u30D1\u30C6\u30A3\u30FB\u30A2\u30AF\u30BB\u30B9{0}"},
+            {"appletsecurityexception.checkread.exception1", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: {0}, {1}"},
+            {"appletsecurityexception.checkread.exception2", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: file.read: {0}"},
+            {"appletsecurityexception.checkread", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: file.read: {0} == {1}"},
+            {"appletsecurityexception.checkwrite.exception", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: {0}, {1}"},
+            {"appletsecurityexception.checkwrite", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: file.write: {0} == {1}"},
+            {"appletsecurityexception.checkread.fd", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: fd.read"},
+            {"appletsecurityexception.checkwrite.fd", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: fd.write"},
+            {"appletsecurityexception.checklisten", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: socket.listen: {0}"},
+            {"appletsecurityexception.checkaccept", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: socket.accept: {0}:{1}"},
+            {"appletsecurityexception.checkconnect.networknone", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: socket.connect: {0}->{1}"},
+            {"appletsecurityexception.checkconnect.networkhost1", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: {1}\u306E\u8D77\u70B9\u3092\u4F7F\u7528\u3057\u3066{0}\u306B\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002"},
+            {"appletsecurityexception.checkconnect.networkhost2", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30DB\u30B9\u30C8{0}\u307E\u305F\u306F{1}\u306EIP\u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002 "},
+            {"appletsecurityexception.checkconnect.networkhost3", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30DB\u30B9\u30C8{0}\u306EIP\u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002trustProxy\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
+            {"appletsecurityexception.checkconnect", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u63A5\u7D9A: {0}->{1}"},
+            {"appletsecurityexception.checkpackageaccess", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30D1\u30C3\u30B1\u30FC\u30B8\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093: {0}"},
+            {"appletsecurityexception.checkpackagedefinition", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30D1\u30C3\u30B1\u30FC\u30B8\u3092\u5B9A\u7FA9\u3067\u304D\u307E\u305B\u3093: {0}"},
+            {"appletsecurityexception.cannotsetfactory", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30D5\u30A1\u30AF\u30C8\u30EA\u3092\u8A2D\u5B9A\u3067\u304D\u307E\u305B\u3093"},
+            {"appletsecurityexception.checkmemberaccess", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30E1\u30F3\u30D0\u30FC\u30FB\u30A2\u30AF\u30BB\u30B9\u306E\u78BA\u8A8D"},
+            {"appletsecurityexception.checkgetprintjob", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: getPrintJob"},
+            {"appletsecurityexception.checksystemclipboardaccess", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: getSystemClipboard"},
+            {"appletsecurityexception.checkawteventqueueaccess", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: getEventQueue"},
+            {"appletsecurityexception.checksecurityaccess", "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u4F8B\u5916: \u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u64CD\u4F5C: {0}"},
+            {"appletsecurityexception.getsecuritycontext.unknown", "\u4E0D\u660E\u306A\u30AF\u30E9\u30B9\u30ED\u30FC\u30C0\u30FC\u30FB\u30BF\u30A4\u30D7\u3067\u3059\u3002getContext\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093"},
+            {"appletsecurityexception.checkread.unknown", "\u4E0D\u660E\u306A\u30AF\u30E9\u30B9\u30ED\u30FC\u30C0\u30FC\u30FB\u30BF\u30A4\u30D7\u3067\u3059\u3002{0}\u306E\u8AAD\u53D6\u308A\u30C1\u30A7\u30C3\u30AF\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093"},
+            {"appletsecurityexception.checkconnect.unknown", "\u4E0D\u660E\u306A\u30AF\u30E9\u30B9\u30ED\u30FC\u30C0\u30FC\u30FB\u30BF\u30A4\u30D7\u3067\u3059\u3002\u63A5\u7D9A\u30C1\u30A7\u30C3\u30AF\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093"},
         };
+
+        return temp;
     }
 }
--- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_ko.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_ko.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2010, 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
@@ -29,173 +29,175 @@
 public class MsgAppletViewer_ko extends ListResourceBundle {
 
     public Object[][] getContents() {
-        return new Object[][] {
-            {"textframe.button.dismiss", "\ub2eb\uae30"},
-            {"appletviewer.tool.title", "\uc560\ud50c\ub9bf \ubdf0\uc5b4: {0}"},
-            {"appletviewer.menu.applet", "\uc560\ud50c\ub9bf "},
-            {"appletviewer.menuitem.restart", "\uc7ac\uc2dc\uc791"},
-            {"appletviewer.menuitem.reload", "\uc7ac\ub85c\ub4dc"},
-            {"appletviewer.menuitem.stop", "\uba48\ucda4"},
-            {"appletviewer.menuitem.save", "\uc800\uc7a5..."},
-            {"appletviewer.menuitem.start", "\uc2dc\uc791"},
-            {"appletviewer.menuitem.clone", "\ubcf5\uc81c..."},
-            {"appletviewer.menuitem.tag", "\ud0dc\uadf8..."},
-            {"appletviewer.menuitem.info", "\uc815\ubcf4..."},
-            {"appletviewer.menuitem.edit", "\ud3b8\uc9d1"},
-            {"appletviewer.menuitem.encoding", "\ubb38\uc790 \uc778\ucf54\ub529"},
-            {"appletviewer.menuitem.print", "\uc778\uc1c4..."},
-            {"appletviewer.menuitem.props", "\ub4f1\ub85d \uc815\ubcf4..."},
-            {"appletviewer.menuitem.close", "\ub2eb\uae30"},
-            {"appletviewer.menuitem.quit", "\uc885\ub8cc"},
-            {"appletviewer.label.hello", "\ud658\uc601\ud569\ub2c8\ub2e4..."},
-            {"appletviewer.status.start", "\uc560\ud50c\ub9bf \uc2dc\uc791 \uc911..."},
-            {"appletviewer.appletsave.filedialogtitle","\uc560\ud50c\ub9bf \uc77c\ub828 \ubc88\ud638\ub97c \ud30c\uc77c\uc5d0 \uc800\uc7a5"},
-            {"appletviewer.appletsave.err1", "{0}\uc5d0\uc11c {1}\uae4c\uc9c0 \uc77c\ub828 \ubc88\ud638\ub97c \uc9c0\uc815\ud558\ub294 \uc911"},
-            {"appletviewer.appletsave.err2", "appletSave \uc5d0\uc11c {0} \ubc1c\uc0dd"},
-            {"appletviewer.applettag", "\ud0dc\uadf8 \ud45c\uc2dc"},
-            {"appletviewer.applettag.textframe", "\uc560\ud50c\ub9bf HTML \ud0dc\uadf8"},
-            {"appletviewer.appletinfo.applet", "-- \uc560\ud50c\ub9bf \uc815\ubcf4 \uc5c6\uc74c --"},
-            {"appletviewer.appletinfo.param", "-- \ub9e4\uac1c\ubcc0\uc218 \uc815\ubcf4 \uc5c6\uc74c --"},
-            {"appletviewer.appletinfo.textframe", "\uc560\ud50c\ub9bf \uc815\ubcf4"},
-            {"appletviewer.appletprint.fail", "\uc778\uc1c4 \uc624\ub958 \ubc1c\uc0dd"},
-            {"appletviewer.appletprint.finish", "\uc778\uc1c4 \uc644\ub8cc"},
-            {"appletviewer.appletprint.cancel", "\uc778\uc1c4 \ucde8\uc18c"},
-            {"appletviewer.appletencoding", "\ubb38\uc790 \uc778\ucf54\ub529: {0}"},
-            {"appletviewer.parse.warning.requiresname", "\uacbd\uace0: \uc774\ub984 \uc18d\uc131\uc5d0 <param name=... value=...> \ud0dc\uadf8\uac00 \ud544\uc694\ud569\ub2c8\ub2e4."},
-            {"appletviewer.parse.warning.paramoutside", "\uacbd\uace0: <applet> ... </applet> \uc678\ubd80\uc5d0 <param> \ud0dc\uadf8\uac00 \uc788\uc2b5\ub2c8\ub2e4."},
-            {"appletviewer.parse.warning.applet.requirescode", "\uacbd\uace0: <applet> \ud0dc\uadf8\uc5d0 \ucf54\ub4dc \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4."},
-            {"appletviewer.parse.warning.applet.requiresheight", "\uacbd\uace0: <applet> \ud0dc\uadf8\uc5d0 \ub192\uc774 \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4."},
-            {"appletviewer.parse.warning.applet.requireswidth", "\uacbd\uace0: <applet> \ud0dc\uadf8\uc5d0 \ub108\ube44 \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4."},
-            {"appletviewer.parse.warning.object.requirescode", "\uacbd\uace0: <object> \ud0dc\uadf8\uc5d0 \ucf54\ub4dc \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4."},
-            {"appletviewer.parse.warning.object.requiresheight", "\uacbd\uace0: <object> \ud0dc\uadf8\uc5d0 \ub192\uc774 \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4."},
-            {"appletviewer.parse.warning.object.requireswidth", "\uacbd\uace0: <object> \ud0dc\uadf8\uc5d0 \ub108\ube44 \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4."},
-            {"appletviewer.parse.warning.embed.requirescode", "\uacbd\uace0: <embed> \ud0dc\uadf8\uc5d0 \ucf54\ub4dc \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4."},
-            {"appletviewer.parse.warning.embed.requiresheight", "\uacbd\uace0: <embed> \ud0dc\uadf8\uc5d0 \ub192\uc774 \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4."},
-            {"appletviewer.parse.warning.embed.requireswidth", "\uacbd\uace0: <embed> \ud0dc\uadf8\uc5d0 \ub108\ube44 \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4."},
-            {"appletviewer.parse.warning.appnotLongersupported", "\uacbd\uace0: <app> \ud0dc\uadf8\ub97c \ub354 \uc774\uc0c1 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ub300\uc548\uc73c\ub85c <applet>\uc744 \uc0ac\uc6a9\ud558\uac8c \ub418\ub294 \ub300\uc0c1:"},
-            {"appletviewer.usage", "\uc0ac\uc6a9\ubc95: appletviewer <options> url(s)\n\nwhere <options> \ub2e4\uc74c\uc744 \ud3ec\ud568:\n  -debug                  Java \ub514\ubc84\uac70\uc5d0\uc11c applet viewer \uc2dc\uc791\n  -encoding <encoding>    HTML \ud30c\uc77c\uc744 \ud1b5\ud574 \ubb38\uc790 \uc778\ucf54\ub529 \uc9c0\uc815\n  -J<runtime flag>        Java \uc778\ud130\ud504\ub9ac\ud130\uc5d0 \uc778\uc790 \uc804\ub2ec\n\n -J \uc635\uc158\uc740 \ud45c\uc900\uc774 \uc544\ub2c8\uba70 \uc54c\ub9bc \uc5c6\uc774 \ubcc0\uacbd\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4."},
-            {"appletviewer.main.err.unsupportedopt", "\uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \uc635\uc158: {0}"},
-            {"appletviewer.main.err.unrecognizedarg", "\uc54c \uc218 \uc5c6\ub294 \uc778\uc790: {0}"},
-            {"appletviewer.main.err.dupoption", "\uc635\uc158 \uc911\ubcf5 \uc0ac\uc6a9: {0}"},
-            {"appletviewer.main.err.inputfile", "\uc9c0\uc815\ub41c \uc785\ub825 \ud30c\uc77c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4."},
-            {"appletviewer.main.err.badurl", "\uc798\ubabb\ub41c URL: {0} ( {1} )"},
-            {"appletviewer.main.err.io", "\uc77d\ub294 \uc911\uc5d0 I/O \uc608\uc678 \uc624\ub958: {0}"},
-            {"appletviewer.main.err.readablefile", "{0}\uc774(\uac00) \uc77d\uc744 \uc218 \uc788\ub294 \ud30c\uc77c\uc778\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624."},
-            {"appletviewer.main.err.correcturl", "{0}\uc774(\uac00) \uc62c\ubc14\ub978 URL\uc785\ub2c8\uae4c?"},
-            {"appletviewer.main.prop.store", "AppletViewer\uc5d0 \ub300\ud55c \ud2b9\uc815 \uc0ac\uc6a9\uc790 \ub4f1\ub85d \uc815\ubcf4"},
-            {"appletviewer.main.err.prop.cantread", "\uc0ac\uc6a9\uc790 \ub4f1\ub85d \uc815\ubcf4 \ud30c\uc77c\uc744 \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4: {0}"},
-            {"appletviewer.main.err.prop.cantsave", "\uc0ac\uc6a9\uc790 \ub4f1\ub85d \uc815\ubcf4 \ud30c\uc77c\uc744 \uc800\uc7a5\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4: {0}"},
-            {"appletviewer.main.warn.nosecmgr", "\uacbd\uace0: \ubcf4\uc548 \uc0ac\uc6a9 \ubd88\uac00"},
-            {"appletviewer.main.debug.cantfinddebug", "\ub514\ubc84\uac70\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"},
-            {"appletviewer.main.debug.cantfindmain", "\ub514\ubc84\uac70\uc5d0\uc11c \ud575\uc2ec \uba54\uc18c\ub4dc\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"},
-            {"appletviewer.main.debug.exceptionindebug", "\ub514\ubc84\uac70\uc5d0\uc11c \uc608\uc678!"},
-            {"appletviewer.main.debug.cantaccess", "\ub514\ubc84\uac70\ub97c \uc561\uc138\uc2a4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"},
-            {"appletviewer.main.nosecmgr", "\uacbd\uace0: SecurityManager\uac00 \uc124\uce58\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4!"},
-            {"appletviewer.main.warning", "\uacbd\uace0: \uc560\ud50c\ub9bf\uc744 \uc2dc\uc791\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. <applet> \ud0dc\uadf8\uac00 \uc785\ub825\ub418\uc5b4 \uc788\ub294\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624."},
-            {"appletviewer.main.warn.prop.overwrite", "\uacbd\uace0: \uc0ac\uc6a9\uc790\uc758 \uc694\uad6c\uc5d0 \uc77c\uc2dc\uc801\uc73c\ub85c \uc2dc\uc2a4\ud15c \uc18d\uc131\uc744 \uacb9\uccd0\uc501\ub2c8\ub2e4: \ud0a4: {0} \uc774\uc804 \uac12: {1} \uc0c8\ub85c\uc6b4 \uac12: {2}"},
-            {"appletviewer.main.warn.cantreadprops", "\uacbd\uace0: AppletViewer \ub4f1\ub85d \uc815\ubcf4 \ud30c\uc77c\uc744 \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4: {0}\uc774(\uac00) \uae30\ubcf8\uac12\uc73c\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4."},
-            {"appletioexception.loadclass.throw.interrupted", "\ud074\ub798\uc2a4 \ub85c\ub4dc \uc911\ub2e8: {0}"},
-            {"appletioexception.loadclass.throw.notloaded", "\ud074\ub798\uc2a4 \ub85c\ub4dc \uc2e4\ud328: {0}"},
-            {"appletclassloader.loadcode.verbose", "{1}\uc744(\ub97c) \uac00\uc838\uc624\uae30 \uc704\ud574 stream\uc744 \uc5ec\ub294 \uc911: {0}"},
-            {"appletclassloader.filenotfound", "\ucc3e\uace0 \uc788\ub294 \ud30c\uc77c\uc774 \uc5c6\uc74c: {0}"},
-            {"appletclassloader.fileformat", "\ub85c\ub4dc\ud558\ub294 \uc911\uc5d0 \ud30c\uc77c \ud615\uc2dd \uc608\uc678 \uc624\ub958: {0}"},
-            {"appletclassloader.fileioexception", "\ub85c\ub4dc\ud558\ub294 \uc911\uc5d0 I/O \uc608\uc678 \uc624\ub958: {0}"},
-            {"appletclassloader.fileexception", "\ub85c\ub4dc\ud558\ub294 \uc911\uc5d0 {0} \uc608\uc678 \uc624\ub958: {1}"},
-            {"appletclassloader.filedeath", "\ub85c\ub4dc\ud558\ub294 \uc911\uc5d0 {0} \uc0ad\uc81c: {1}"},
-            {"appletclassloader.fileerror", "\ub85c\ub4dc\ud558\ub294 \uc911\uc5d0 {0} \uc624\ub958: {1}"},
-            {"appletclassloader.findclass.verbose.findclass", "{0}\uc5d0\uc11c {1} \ud074\ub798\uc2a4\ub97c \ucc3e\uc2b5\ub2c8\ub2e4."},
-            {"appletclassloader.findclass.verbose.openstream", "{1}\uc744(\ub97c) \uac00\uc838\uc624\uae30 \uc704\ud574 stream\uc744 \uc5ec\ub294 \uc911: {0}"},
-            {"appletclassloader.getresource.verbose.forname", "{0} \uc774\ub984\uc5d0 \ub300\ud55c AppletClassLoader.getResource"},
-            {"appletclassloader.getresource.verbose.found", "\uc2dc\uc2a4\ud15c \uc790\uc6d0\uc778 {0} \uc790\uc6d0\uc744 \ucc3e\uc558\uc2b5\ub2c8\ub2e4."},
-            {"appletclassloader.getresourceasstream.verbose", "\uc2dc\uc2a4\ud15c \uc790\uc6d0\uc778 {0} \uc790\uc6d0\uc744 \ucc3e\uc558\uc2b5\ub2c8\ub2e4."},
-            {"appletpanel.runloader.err", "\uac1c\uccb4 \ub610\ub294 \ucf54\ub4dc \ub9e4\uac1c\ubcc0\uc218\uc785\ub2c8\ub2e4!"},
-            {"appletpanel.runloader.exception", "{0}\uc758 \uc77c\ub828 \ubc88\ud638\ub97c \ud574\uc81c\ud558\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4."},
-            {"appletpanel.destroyed", "\uc560\ud50c\ub9bf\uc744 \uc0ad\uc81c\ud558\uc600\uc2b5\ub2c8\ub2e4."},
-            {"appletpanel.loaded", "\uc560\ud50c\ub9bf\uc744 \ub85c\ub4dc\ud558\uc600\uc2b5\ub2c8\ub2e4."},
-            {"appletpanel.started", "\uc560\ud50c\ub9bf\uc744 \uc2dc\uc791\ud558\uc600\uc2b5\ub2c8\ub2e4."},
-            {"appletpanel.inited", "\uc560\ud50c\ub9bf\uc744 \ucd08\uae30\ud654\ud558\uc600\uc2b5\ub2c8\ub2e4."},
-            {"appletpanel.stopped", "\uc560\ud50c\ub9bf\uc744 \uba48\ucd94\uc5c8\uc2b5\ub2c8\ub2e4."},
-            {"appletpanel.disposed", "\uc560\ud50c\ub9bf\uc744 \ubc30\uc5f4\ud558\uc600\uc2b5\ub2c8\ub2e4."},
-            {"appletpanel.nocode", "\uc560\ud50c\ub9bf \ud0dc\uadf8\uc5d0\uc11c CODE \ub9e4\uac1c\ubcc0\uc218\ub97c \ube60\ub728\ub838\uc2b5\ub2c8\ub2e4."},
-            {"appletpanel.notfound", "load: class {0}\uc774(\uac00) \uc5c6\uc2b5\ub2c8\ub2e4."},
-            {"appletpanel.nocreate", "load: {0}\uc744(\ub97c) \uc778\uc2a4\ud134\uc2a4\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
-            {"appletpanel.noconstruct", "load: {0}\uc774(\uac00) public\uc774 \uc544\ub2c8\uac70\ub098 public \uc0dd\uc131\uc790\ub97c \uac00\uc9c0\uace0 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."},
-            {"appletpanel.death", "\uc0ad\uc81c"},
-            {"appletpanel.exception", "\uc608\uc678 \uc624\ub958: {0}."},
-            {"appletpanel.exception2", "{0} \uc608\uc678 \uc624\ub958: {1}."},
-            {"appletpanel.error", "\uc624\ub958: {0}."},
-            {"appletpanel.error2", "{0} \uc624\ub958: {1}."},
-            {"appletpanel.notloaded", "Init: \uc560\ud50c\ub9bf\uc744 \ub85c\ub4dc\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."},
-            {"appletpanel.notinited", "Start: \uc560\ud50c\ub9bf\uc744 \ucd08\uae30\ud654\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."},
-            {"appletpanel.notstarted", "Stop: \uc560\ud50c\ub9bf\uc744 \uc2dc\uc791\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."},
-            {"appletpanel.notstopped", "Destroy: \uc560\ud50c\ub9bf\uc744 \uba48\ucd94\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."},
-            {"appletpanel.notdestroyed", "Dispose: \uc560\ud50c\ub9bf\uc744 \uc9c0\uc6b0\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."},
-            {"appletpanel.notdisposed", "Load: \uc560\ud50c\ub9bf\uc744 \ubc30\uc5f4\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."},
-            {"appletpanel.bail", "Interrupted: \uc560\ud50c\ub9bf\uc744 \uae34\uae09 \ubcf5\uad6c\ud558\ub294 \uc911\uc785\ub2c8\ub2e4."},
-            {"appletpanel.filenotfound", "\ucc3e\uace0 \uc788\ub294 \ud30c\uc77c\uc774 \uc5c6\uc74c: {0}"},
-            {"appletpanel.fileformat", "\ub85c\ub4dc\ud558\ub294 \uc911\uc5d0 \ud30c\uc77c \ud615\uc2dd \uc608\uc678 \uc624\ub958: {0}"},
-            {"appletpanel.fileioexception", "\ub85c\ub4dc\ud558\ub294 \uc911\uc5d0 I/O \uc608\uc678 \uc624\ub958: {0}"},
-            {"appletpanel.fileexception", "\ub85c\ub4dc\ud558\ub294 \uc911\uc5d0 {0} \uc608\uc678 \uc624\ub958: {1}"},
-            {"appletpanel.filedeath", "\ub85c\ub4dc\ud558\ub294 \uc911\uc5d0 {0} \uc0ad\uc81c: {1}"},
-            {"appletpanel.fileerror", "\ub85c\ub4dc\ud558\ub294 \uc911\uc5d0 {0} \uc624\ub958: {1}"},
-            {"appletpanel.badattribute.exception", "HTML \uad6c\ubb38 \ubd84\uc11d: \uc798\ubabb\ub41c width/height \uc18d\uc131 \uac12"},
-            {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream\uc5d0\ub294 \ub110\uc774 \uc544\ub2cc \ub85c\ub354\uac00 \ud544\uc694\ud569\ub2c8\ub2e4."},
-            {"appletprops.title", "AppletViewer \ub4f1\ub85d \uc815\ubcf4"},
-            {"appletprops.label.http.server", "Http \ud504\ub85d\uc2dc \uc11c\ubc84:"},
-            {"appletprops.label.http.proxy", "Http \ud504\ub85d\uc2dc \ud3ec\ud2b8:"},
-            {"appletprops.label.network", "\ub124\ud2b8\uc6cc\ud06c \uc561\uc138\uc2a4:"},
-            {"appletprops.choice.network.item.none", "\uc5c6\uc74c"},
-            {"appletprops.choice.network.item.applethost", "\uc560\ud50c\ub9bf \ud638\uc2a4\ud2b8"},
-            {"appletprops.choice.network.item.unrestricted", "\ubb34\uc81c\ud55c"},
-            {"appletprops.label.class", "\ud074\ub798\uc2a4 \uc561\uc138\uc2a4"},
-            {"appletprops.choice.class.item.restricted", "\uc81c\ud55c"},
-            {"appletprops.choice.class.item.unrestricted", "\ubb34\uc81c\ud55c"},
-            {"appletprops.label.unsignedapplet", "\uc11c\uba85\ub418\uc9c0 \uc54a\uc740 \uc560\ud50c\ub9bf \ud5c8\uc6a9:"},
-            {"appletprops.choice.unsignedapplet.no", "\uc544\ub2c8\uc624"},
-            {"appletprops.choice.unsignedapplet.yes", "\uc608"},
-            {"appletprops.button.apply", "\uc801\uc6a9"},
-            {"appletprops.button.cancel", "\ucde8\uc18c"},
-            {"appletprops.button.reset", "\uc7ac\uc124\uc815"},
-            {"appletprops.apply.exception", "{0} \ub4f1\ub85d \uc815\ubcf4\ub97c \uc800\uc7a5\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+        Object[][] temp = new Object[][] {
+            {"textframe.button.dismiss", "\uD574\uC81C"},
+            {"appletviewer.tool.title", "\uC560\uD50C\uB9BF \uBDF0\uC5B4: {0}"},
+            {"appletviewer.menu.applet", "\uC560\uD50C\uB9BF"},
+            {"appletviewer.menuitem.restart", "\uC7AC\uC2DC\uC791"},
+            {"appletviewer.menuitem.reload", "\uC7AC\uB85C\uB4DC"},
+            {"appletviewer.menuitem.stop", "\uC815\uC9C0"},
+            {"appletviewer.menuitem.save", "\uC800\uC7A5..."},
+            {"appletviewer.menuitem.start", "\uC2DC\uC791"},
+            {"appletviewer.menuitem.clone", "\uBCF5\uC81C..."},
+            {"appletviewer.menuitem.tag", "\uD0DC\uADF8 \uC9C0\uC815..."},
+            {"appletviewer.menuitem.info", "\uC815\uBCF4..."},
+            {"appletviewer.menuitem.edit", "\uD3B8\uC9D1"},
+            {"appletviewer.menuitem.encoding", "\uBB38\uC790 \uC778\uCF54\uB529"},
+            {"appletviewer.menuitem.print", "\uC778\uC1C4..."},
+            {"appletviewer.menuitem.props", "\uC18D\uC131..."},
+            {"appletviewer.menuitem.close", "\uB2EB\uAE30"},
+            {"appletviewer.menuitem.quit", "\uC885\uB8CC"},
+            {"appletviewer.label.hello", "\uC2DC\uC791..."},
+            {"appletviewer.status.start", "\uC560\uD50C\uB9BF\uC744 \uC2DC\uC791\uD558\uB294 \uC911..."},
+            {"appletviewer.appletsave.filedialogtitle","\uD30C\uC77C\uB85C \uC560\uD50C\uB9BF \uC9C1\uB82C\uD654"},
+            {"appletviewer.appletsave.err1", "{0}\uC744(\uB97C) {1}(\uC73C)\uB85C \uC9C1\uB82C\uD654\uD558\uB294 \uC911"},
+            {"appletviewer.appletsave.err2", "appletSave\uC5D0 \uC624\uB958 \uBC1C\uC0DD: {0}"},
+            {"appletviewer.applettag", "\uD0DC\uADF8\uAC00 \uD45C\uC2DC\uB428"},
+            {"appletviewer.applettag.textframe", "\uC560\uD50C\uB9BF HTML \uD0DC\uADF8"},
+            {"appletviewer.appletinfo.applet", "-- \uC560\uD50C\uB9BF \uC815\uBCF4 \uC5C6\uC74C --"},
+            {"appletviewer.appletinfo.param", "-- \uB9E4\uAC1C\uBCC0\uC218 \uC815\uBCF4 \uC5C6\uC74C --"},
+            {"appletviewer.appletinfo.textframe", "\uC560\uD50C\uB9BF \uC815\uBCF4"},
+            {"appletviewer.appletprint.fail", "\uC778\uC1C4\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4."},
+            {"appletviewer.appletprint.finish", "\uC778\uC1C4\uB97C \uC644\uB8CC\uD588\uC2B5\uB2C8\uB2E4."},
+            {"appletviewer.appletprint.cancel", "\uC778\uC1C4\uAC00 \uCDE8\uC18C\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+            {"appletviewer.appletencoding", "\uBB38\uC790 \uC778\uCF54\uB529: {0}"},
+            {"appletviewer.parse.warning.requiresname", "\uACBD\uACE0: <param name=... value=...> \uD0DC\uADF8\uC5D0\uB294 name \uC18D\uC131\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."},
+            {"appletviewer.parse.warning.paramoutside", "\uACBD\uACE0: <param> \uD0DC\uADF8\uAC00 <applet> ... </applet> \uBC16\uC5D0 \uC788\uC2B5\uB2C8\uB2E4."},
+            {"appletviewer.parse.warning.applet.requirescode", "\uACBD\uACE0: <applet> \uD0DC\uADF8\uC5D0\uB294 code \uC18D\uC131\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."},
+            {"appletviewer.parse.warning.applet.requiresheight", "\uACBD\uACE0: <applet> \uD0DC\uADF8\uC5D0\uB294 height \uC18D\uC131\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."},
+            {"appletviewer.parse.warning.applet.requireswidth", "\uACBD\uACE0: <applet> \uD0DC\uADF8\uC5D0\uB294 width \uC18D\uC131\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."},
+            {"appletviewer.parse.warning.object.requirescode", "\uACBD\uACE0: <object> \uD0DC\uADF8\uC5D0\uB294 code \uC18D\uC131\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."},
+            {"appletviewer.parse.warning.object.requiresheight", "\uACBD\uACE0: <object> \uD0DC\uADF8\uC5D0\uB294 height \uC18D\uC131\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."},
+            {"appletviewer.parse.warning.object.requireswidth", "\uACBD\uACE0: <object> \uD0DC\uADF8\uC5D0\uB294 width \uC18D\uC131\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."},
+            {"appletviewer.parse.warning.embed.requirescode", "\uACBD\uACE0: <embed> \uD0DC\uADF8\uC5D0\uB294 code \uC18D\uC131\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."},
+            {"appletviewer.parse.warning.embed.requiresheight", "\uACBD\uACE0: <embed> \uD0DC\uADF8\uC5D0\uB294 height \uC18D\uC131\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."},
+            {"appletviewer.parse.warning.embed.requireswidth", "\uACBD\uACE0: <embed> \uD0DC\uADF8\uC5D0\uB294 width \uC18D\uC131\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."},
+            {"appletviewer.parse.warning.appnotLongersupported", "\uACBD\uACE0: <app> \uD0DC\uADF8\uB294 \uB354 \uC774\uC0C1 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uB300\uC2E0 <applet>\uC744 \uC0AC\uC6A9\uD558\uC2ED\uC2DC\uC624."},
+            {"appletviewer.usage", "\uC0AC\uC6A9\uBC95: appletviewer <options> url(s)\n\n\uC5EC\uAE30\uC11C <options>\uB294 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4.\n  -debug                  Java \uB514\uBC84\uAC70\uC5D0\uC11C \uC560\uD50C\uB9BF \uBDF0\uC5B4\uB97C \uC2DC\uC791\uD569\uB2C8\uB2E4.\n  -encoding <encoding>    HTML \uD30C\uC77C\uC5D0 \uC0AC\uC6A9\uB420 \uBB38\uC790 \uC778\uCF54\uB529\uC744 \uC9C0\uC815\uD569\uB2C8\uB2E4.\n  -J<runtime flag>        Java \uC778\uD130\uD504\uB9AC\uD130\uB85C \uC778\uC218\uB97C \uC804\uB2EC\uD569\uB2C8\uB2E4.\n\n-J \uC635\uC158\uC740 \uD45C\uC900\uC774 \uC544\uB2C8\uBA70 \uC608\uACE0 \uC5C6\uC774 \uBCC0\uACBD\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4."},
+            {"appletviewer.main.err.unsupportedopt", "\uC9C0\uC6D0\uB418\uC9C0 \uC54A\uB294 \uC635\uC158: {0}"},
+            {"appletviewer.main.err.unrecognizedarg", "\uC54C \uC218 \uC5C6\uB294 \uC778\uC218: {0}"},
+            {"appletviewer.main.err.dupoption", "\uC911\uBCF5\uB41C \uC635\uC158 \uC0AC\uC6A9: {0}"},
+            {"appletviewer.main.err.inputfile", "\uC9C0\uC815\uB41C \uC785\uB825 \uD30C\uC77C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."},
+            {"appletviewer.main.err.badurl", "\uC798\uBABB\uB41C URL: {0}({1})"},
+            {"appletviewer.main.err.io", "\uC77D\uB294 \uC911 I/O \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {0}"},
+            {"appletviewer.main.err.readablefile", "{0}\uC774(\uAC00) \uD30C\uC77C\uC774\uBA70 \uC77D\uAE30 \uAC00\uB2A5\uD55C \uC0C1\uD0DC\uC778\uC9C0 \uD655\uC778\uD558\uC2ED\uC2DC\uC624."},
+            {"appletviewer.main.err.correcturl", "{0}\uC774(\uAC00) \uC62C\uBC14\uB978 URL\uC785\uB2C8\uAE4C?"},
+            {"appletviewer.main.prop.store", "\uC0AC\uC6A9\uC790 \uAD00\uB828 AppletViewer \uC18D\uC131"},
+            {"appletviewer.main.err.prop.cantread", "\uC0AC\uC6A9\uC790 \uC18D\uC131 \uD30C\uC77C\uC744 \uC77D\uC744 \uC218 \uC5C6\uC74C: {0}"},
+            {"appletviewer.main.err.prop.cantsave", "\uC0AC\uC6A9\uC790 \uC18D\uC131 \uD30C\uC77C\uC744 \uC800\uC7A5\uD560 \uC218 \uC5C6\uC74C: {0}"},
+            {"appletviewer.main.warn.nosecmgr", "\uACBD\uACE0: \uBCF4\uC548\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD558\uB294 \uC911\uC785\uB2C8\uB2E4."},
+            {"appletviewer.main.debug.cantfinddebug", "\uB514\uBC84\uAC70\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4!"},
+            {"appletviewer.main.debug.cantfindmain", "\uB514\uBC84\uAC70\uC5D0\uC11C \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4!"},
+            {"appletviewer.main.debug.exceptionindebug", "\uB514\uBC84\uAC70\uC5D0 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4!"},
+            {"appletviewer.main.debug.cantaccess", "\uB514\uBC84\uAC70\uC5D0 \uC561\uC138\uC2A4\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4!"},
+            {"appletviewer.main.nosecmgr", "\uACBD\uACE0: SecurityManager\uAC00 \uC124\uCE58\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4!"},
+            {"appletviewer.main.warning", "\uACBD\uACE0: \uC2DC\uC791\uB41C \uC560\uD50C\uB9BF\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. <applet> \uD0DC\uADF8\uAC00 \uC785\uB825\uB418\uC5C8\uB294\uC9C0 \uD655\uC778\uD558\uC2ED\uC2DC\uC624."},
+            {"appletviewer.main.warn.prop.overwrite", "\uACBD\uACE0: \uC0AC\uC6A9\uC790\uC758 \uC694\uCCAD\uC5D0 \uB530\uB77C \uC77C\uC2DC\uC801\uC73C\uB85C \uC2DC\uC2A4\uD15C \uC18D\uC131\uC744 \uACB9\uCCD0 \uC4F0\uB294 \uC911: \uD0A4: {0}, \uC774\uC804 \uAC12: {1}, \uC0C8 \uAC12: {2}"},
+            {"appletviewer.main.warn.cantreadprops", "\uACBD\uACE0: AppletViewer \uC18D\uC131 \uD30C\uC77C\uC744 \uC77D\uC744 \uC218 \uC5C6\uC74C: {0}. \uAE30\uBCF8\uAC12\uC744 \uC0AC\uC6A9\uD558\uB294 \uC911\uC785\uB2C8\uB2E4."},
+            {"appletioexception.loadclass.throw.interrupted", "\uD074\uB798\uC2A4 \uB85C\uB4DC\uAC00 \uC911\uB2E8\uB428: {0}"},
+            {"appletioexception.loadclass.throw.notloaded", "\uD074\uB798\uC2A4\uAC00 \uB85C\uB4DC\uB418\uC9C0 \uC54A\uC74C: {0}"},
+            {"appletclassloader.loadcode.verbose", "{1}\uC744(\uB97C) \uAC00\uC838\uC624\uAE30 \uC704\uD574 {0}\uC5D0 \uB300\uD55C \uC2A4\uD2B8\uB9BC\uC744 \uC5EC\uB294 \uC911"},
+            {"appletclassloader.filenotfound", "{0}\uC744(\uB97C) \uAC80\uC0C9\uD558\uB294 \uC911 \uD30C\uC77C\uC744 \uCC3E\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4."},
+            {"appletclassloader.fileformat", "\uB85C\uB4DC \uC911 \uD30C\uC77C \uD615\uC2DD \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {0}"},
+            {"appletclassloader.fileioexception", "\uB85C\uB4DC \uC911 I/O \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {0}"},
+            {"appletclassloader.fileexception", "\uB85C\uB4DC \uC911 {0} \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {1}"},
+            {"appletclassloader.filedeath", "\uB85C\uB4DC \uC911 {0}\uC774(\uAC00) \uC885\uB8CC\uB428: {1}"},
+            {"appletclassloader.fileerror", "\uB85C\uB4DC \uC911 {0} \uC624\uB958 \uBC1C\uC0DD: {1}"},
+            {"appletclassloader.findclass.verbose.findclass", "{0}\uC774(\uAC00) {1} \uD074\uB798\uC2A4\uB97C \uCC3E\uC2B5\uB2C8\uB2E4."},
+            {"appletclassloader.findclass.verbose.openstream", "{1}\uC744(\uB97C) \uAC00\uC838\uC624\uAE30 \uC704\uD574 {0}\uC5D0 \uB300\uD55C \uC2A4\uD2B8\uB9BC\uC744 \uC5EC\uB294 \uC911"},
+            {"appletclassloader.getresource.verbose.forname", "\uC774\uB984\uC5D0 \uB300\uD55C AppletClassLoader.getResource: {0}"},
+            {"appletclassloader.getresource.verbose.found", "\uC2DC\uC2A4\uD15C \uB9AC\uC18C\uC2A4\uB85C {0} \uB9AC\uC18C\uC2A4\uB97C \uCC3E\uC558\uC2B5\uB2C8\uB2E4."},
+            {"appletclassloader.getresourceasstream.verbose", "\uC2DC\uC2A4\uD15C \uB9AC\uC18C\uC2A4\uB85C {0} \uB9AC\uC18C\uC2A4\uB97C \uCC3E\uC558\uC2B5\uB2C8\uB2E4."},
+            {"appletpanel.runloader.err", "\uAC1D\uCCB4 \uB610\uB294 \uCF54\uB4DC \uB9E4\uAC1C\uBCC0\uC218\uC785\uB2C8\uB2E4!"},
+            {"appletpanel.runloader.exception", "{0}\uC758 \uC9C1\uB82C\uD654\uB97C \uD574\uC81C\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4."},
+            {"appletpanel.destroyed", "\uC560\uD50C\uB9BF\uC774 \uC0AD\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+            {"appletpanel.loaded", "\uC560\uD50C\uB9BF\uC774 \uB85C\uB4DC\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+            {"appletpanel.started", "\uC560\uD50C\uB9BF\uC774 \uC2DC\uC791\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+            {"appletpanel.inited", "\uC560\uD50C\uB9BF\uC774 \uCD08\uAE30\uD654\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+            {"appletpanel.stopped", "\uC560\uD50C\uB9BF\uC774 \uC815\uC9C0\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+            {"appletpanel.disposed", "\uC560\uD50C\uB9BF\uC774 \uBC30\uCE58\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+            {"appletpanel.nocode", "APPLET \uD0DC\uADF8\uC5D0 CODE \uB9E4\uAC1C\uBCC0\uC218\uAC00 \uB204\uB77D\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+            {"appletpanel.notfound", "\uB85C\uB4DC: {0} \uD074\uB798\uC2A4\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+            {"appletpanel.nocreate", "\uB85C\uB4DC: {0}\uC744(\uB97C) \uC778\uC2A4\uD134\uC2A4\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+            {"appletpanel.noconstruct", "\uB85C\uB4DC: {0}\uC740(\uB294) \uACF5\uC6A9\uC774 \uC544\uB2C8\uAC70\uB098 \uACF5\uC6A9 \uC0DD\uC131\uC790\uB97C \uD3EC\uD568\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."},
+            {"appletpanel.death", "\uC885\uB8CC\uB428"},
+            {"appletpanel.exception", "\uC608\uC678 \uC0AC\uD56D: {0}."},
+            {"appletpanel.exception2", "\uC608\uC678 \uC0AC\uD56D: {0}: {1}."},
+            {"appletpanel.error", "\uC624\uB958: {0}."},
+            {"appletpanel.error2", "\uC624\uB958: {0}: {1}."},
+            {"appletpanel.notloaded", "\uCD08\uAE30\uD654: \uC560\uD50C\uB9BF\uC774 \uB85C\uB4DC\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."},
+            {"appletpanel.notinited", "\uC2DC\uC791: \uC560\uD50C\uB9BF\uC774 \uCD08\uAE30\uD654\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."},
+            {"appletpanel.notstarted", "\uC815\uC9C0: \uC560\uD50C\uB9BF\uC774 \uC2DC\uC791\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."},
+            {"appletpanel.notstopped", "\uC0AD\uC81C: \uC560\uD50C\uB9BF\uC774 \uC815\uC9C0\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."},
+            {"appletpanel.notdestroyed", "\uBC30\uCE58: \uC560\uD50C\uB9BF\uC774 \uC0AD\uC81C\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."},
+            {"appletpanel.notdisposed", "\uB85C\uB4DC: \uC560\uD50C\uB9BF\uC774 \uBC30\uCE58\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."},
+            {"appletpanel.bail", "\uC911\uB2E8\uB428: \uC911\uB2E8\uD558\uB294 \uC911\uC785\uB2C8\uB2E4."},
+            {"appletpanel.filenotfound", "{0}\uC744(\uB97C) \uAC80\uC0C9\uD558\uB294 \uC911 \uD30C\uC77C\uC744 \uCC3E\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4."},
+            {"appletpanel.fileformat", "\uB85C\uB4DC \uC911 \uD30C\uC77C \uD615\uC2DD \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {0}"},
+            {"appletpanel.fileioexception", "\uB85C\uB4DC \uC911 I/O \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {0}"},
+            {"appletpanel.fileexception", "\uB85C\uB4DC \uC911 {0} \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {1}"},
+            {"appletpanel.filedeath", "\uB85C\uB4DC \uC911 {0}\uC774(\uAC00) \uC885\uB8CC\uB428: {1}"},
+            {"appletpanel.fileerror", "\uB85C\uB4DC \uC911 {0} \uC624\uB958 \uBC1C\uC0DD: {1}"},
+            {"appletpanel.badattribute.exception", "HTML \uAD6C\uBB38 \uBD84\uC11D \uC911: width/height \uC18D\uC131\uC5D0 \uB300\uD55C \uAC12\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."},
+            {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream\uC5D0 \uB110\uC774 \uC544\uB2CC \uB85C\uB354\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4."},
+            {"appletprops.title", "AppletViewer \uC18D\uC131"},
+            {"appletprops.label.http.server", "HTTP \uD504\uB85D\uC2DC \uC11C\uBC84:"},
+            {"appletprops.label.http.proxy", "HTTP \uD504\uB85D\uC2DC \uD3EC\uD2B8:"},
+            {"appletprops.label.network", "\uB124\uD2B8\uC6CC\uD06C \uC561\uC138\uC2A4:"},
+            {"appletprops.choice.network.item.none", "\uC5C6\uC74C"},
+            {"appletprops.choice.network.item.applethost", "\uC560\uD50C\uB9BF \uD638\uC2A4\uD2B8"},
+            {"appletprops.choice.network.item.unrestricted", "\uC81C\uD55C\uB418\uC9C0 \uC54A\uC74C"},
+            {"appletprops.label.class", "\uD074\uB798\uC2A4 \uC561\uC138\uC2A4:"},
+            {"appletprops.choice.class.item.restricted", "\uC81C\uD55C\uB428"},
+            {"appletprops.choice.class.item.unrestricted", "\uC81C\uD55C\uB418\uC9C0 \uC54A\uC74C"},
+            {"appletprops.label.unsignedapplet", "\uC11C\uBA85\uB418\uC9C0 \uC54A\uC740 \uC560\uD50C\uB9BF \uD5C8\uC6A9:"},
+            {"appletprops.choice.unsignedapplet.no", "\uC544\uB2C8\uC624"},
+            {"appletprops.choice.unsignedapplet.yes", "\uC608"},
+            {"appletprops.button.apply", "\uC801\uC6A9"},
+            {"appletprops.button.cancel", "\uCDE8\uC18C"},
+            {"appletprops.button.reset", "\uC7AC\uC124\uC815"},
+            {"appletprops.apply.exception", "\uC18D\uC131 \uC800\uC7A5 \uC2E4\uD328: {0}"},
             /* 4066432 */
-            {"appletprops.title.invalidproxy", "\uc798\ubabb\ub41c \uc785\ub825"},
-            {"appletprops.label.invalidproxy", "\ud504\ub85d\uc2dc \ud3ec\ud2b8\ub294 \uc591\uc758 \uc815\uc218\uac12\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
-            {"appletprops.button.ok", "\ud655\uc778"},
+            {"appletprops.title.invalidproxy", "\uBD80\uC801\uD569\uD55C \uD56D\uBAA9"},
+            {"appletprops.label.invalidproxy", "\uD504\uB85D\uC2DC \uD3EC\uD2B8\uB294 \uC591\uC758 \uC815\uC218 \uAC12\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4."},
+            {"appletprops.button.ok", "\uD655\uC778"},
             /* end 4066432 */
-            {"appletprops.prop.store", "AppletViewer\uc5d0 \ub300\ud55c \ud2b9\uc815 \uc0ac\uc6a9\uc790 \ub4f1\ub85d \uc815\ubcf4"},
-            {"appletsecurityexception.checkcreateclassloader", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: classloader"},
-            {"appletsecurityexception.checkaccess.thread", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: thread"},
-            {"appletsecurityexception.checkaccess.threadgroup", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: threadgroup: {0}"},
-            {"appletsecurityexception.checkexit", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: exit: {0}"},
-            {"appletsecurityexception.checkexec", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: exec: {0}"},
-            {"appletsecurityexception.checklink", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: link: {0}"},
-            {"appletsecurityexception.checkpropsaccess", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: properties"},
-            {"appletsecurityexception.checkpropsaccess.key", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: properties access {0}"},
-            {"appletsecurityexception.checkread.exception1", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: {0}, {1}"},
-            {"appletsecurityexception.checkread.exception2", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: file.read: {0}"},
-            {"appletsecurityexception.checkread", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: file.read: {0} == {1}"},
-            {"appletsecurityexception.checkwrite.exception", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: {0}, {1}"},
-            {"appletsecurityexception.checkwrite", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: file.write: {0} == {1}"},
-            {"appletsecurityexception.checkread.fd", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: fd.read"},
-            {"appletsecurityexception.checkwrite.fd", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: fd.write"},
-            {"appletsecurityexception.checklisten", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: socket.listen: {0}"},
-            {"appletsecurityexception.checkaccept", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: socket.accept: {0}:{1}"},
-            {"appletsecurityexception.checkconnect.networknone", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: socket.connect: {0}->{1}"},
-            {"appletsecurityexception.checkconnect.networkhost1", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: {1}\uc744(\ub97c) \uae30\uc810\uc73c\ub85c \ud558\uc5ec {0}\uc5d0 \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
-            {"appletsecurityexception.checkconnect.networkhost2", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: {0} \ub610\ub294 {1} \ud638\uc2a4\ud2b8\uc758 IP \uc8fc\uc18c\ub97c \ud574\ub3c5\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. "},
-            {"appletsecurityexception.checkconnect.networkhost3", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: {0} \ud638\uc2a4\ud2b8\uc758 IP \uc8fc\uc18c\ub97c \ud574\ub3c5\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. trustProxy \ub4f1\ub85d \uc815\ubcf4\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624."},
-            {"appletsecurityexception.checkconnect", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: connect: {0}->{1}"},
-            {"appletsecurityexception.checkpackageaccess", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: {0} \ud328\ud0a4\uc9c0\ub97c \uc561\uc138\uc2a4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
-            {"appletsecurityexception.checkpackagedefinition", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: {0} \ud328\ud0a4\uc9c0\ub97c \uc815\uc758\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
-            {"appletsecurityexception.cannotsetfactory", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: factory\ub97c \uc124\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
-            {"appletsecurityexception.checkmemberaccess", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: \ud56d\ubaa9 \uc561\uc138\uc2a4\ub97c \ud655\uc778\ud558\uc2ed\uc2dc\uc624."},
-            {"appletsecurityexception.checkgetprintjob", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: getPrintJob"},
-            {"appletsecurityexception.checksystemclipboardaccess", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: getSystemClipboard"},
-            {"appletsecurityexception.checkawteventqueueaccess", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: getEventQueue"},
-            {"appletsecurityexception.checksecurityaccess", "\ubcf4\uc548 \uc608\uc678 \uc624\ub958: security operation: {0}"},
-            {"appletsecurityexception.getsecuritycontext.unknown", "\uc54c \uc218 \uc5c6\ub294 \ud074\ub798\uc2a4\ub85c\ub354 \uc720\ud615\uc774\ubbc0\ub85c GetContext\ub97c \ud655\uc778\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
-            {"appletsecurityexception.checkread.unknown", "\uc54c \uc218 \uc5c6\ub294 \ud074\ub798\uc2a4\ub85c\ub354 \uc720\ud615\uc774\ubbc0\ub85c {0}\uc744 \ud655\uc778\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
-            {"appletsecurityexception.checkconnect.unknown", "\uc54c \uc218 \uc5c6\ub294 \ud074\ub798\uc2a4\ub85c\ub354 \uc720\ud615\uc774\ubbc0\ub85c checking connect\ub97c \ud655\uc778\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+            {"appletprops.prop.store", "\uC0AC\uC6A9\uC790 \uAD00\uB828 AppletViewer \uC18D\uC131"},
+            {"appletsecurityexception.checkcreateclassloader", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uD074\uB798\uC2A4 \uB85C\uB354"},
+            {"appletsecurityexception.checkaccess.thread", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uC2A4\uB808\uB4DC"},
+            {"appletsecurityexception.checkaccess.threadgroup", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uC2A4\uB808\uB4DC \uADF8\uB8F9: {0}"},
+            {"appletsecurityexception.checkexit", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uC885\uB8CC: {0}"},
+            {"appletsecurityexception.checkexec", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uC2E4\uD589: {0}"},
+            {"appletsecurityexception.checklink", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uB9C1\uD06C: {0}"},
+            {"appletsecurityexception.checkpropsaccess", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uC18D\uC131"},
+            {"appletsecurityexception.checkpropsaccess.key", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uC18D\uC131 \uC561\uC138\uC2A4 {0}"},
+            {"appletsecurityexception.checkread.exception1", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: {0}, {1}"},
+            {"appletsecurityexception.checkread.exception2", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: file.read: {0}"},
+            {"appletsecurityexception.checkread", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: file.read: {0} == {1}"},
+            {"appletsecurityexception.checkwrite.exception", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: {0}, {1}"},
+            {"appletsecurityexception.checkwrite", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: file.write: {0} == {1}"},
+            {"appletsecurityexception.checkread.fd", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: fd.read"},
+            {"appletsecurityexception.checkwrite.fd", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: fd.write"},
+            {"appletsecurityexception.checklisten", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: socket.listen: {0}"},
+            {"appletsecurityexception.checkaccept", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: socket.accept: {0}:{1}"},
+            {"appletsecurityexception.checkconnect.networknone", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: socket.connect: {0}->{1}"},
+            {"appletsecurityexception.checkconnect.networkhost1", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: {1}\uC5D0\uC11C {0}\uC5D0 \uC811\uC18D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+            {"appletsecurityexception.checkconnect.networkhost2", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: {0} \uD638\uC2A4\uD2B8 \uB610\uB294 {1}\uC5D0 \uB300\uD55C IP\uB97C \uBD84\uC11D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. "},
+            {"appletsecurityexception.checkconnect.networkhost3", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: {0} \uD638\uC2A4\uD2B8\uC5D0 \uB300\uD55C IP\uB97C \uBD84\uC11D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. trustProxy \uC18D\uC131\uC744 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624."},
+            {"appletsecurityexception.checkconnect", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uC811\uC18D: {0}->{1}"},
+            {"appletsecurityexception.checkpackageaccess", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uD328\uD0A4\uC9C0\uC5D0 \uC561\uC138\uC2A4\uD560 \uC218 \uC5C6\uC74C: {0}"},
+            {"appletsecurityexception.checkpackagedefinition", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uD328\uD0A4\uC9C0\uB97C \uC815\uC758\uD560 \uC218 \uC5C6\uC74C: {0}"},
+            {"appletsecurityexception.cannotsetfactory", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uD329\uD1A0\uB9AC\uB97C \uC124\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+            {"appletsecurityexception.checkmemberaccess", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uBA64\uBC84 \uC561\uC138\uC2A4\uB97C \uD655\uC778\uD558\uC2ED\uC2DC\uC624."},
+            {"appletsecurityexception.checkgetprintjob", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: getPrintJob"},
+            {"appletsecurityexception.checksystemclipboardaccess", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: getSystemClipboard"},
+            {"appletsecurityexception.checkawteventqueueaccess", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: getEventQueue"},
+            {"appletsecurityexception.checksecurityaccess", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uBCF4\uC548 \uC791\uC5C5: {0}"},
+            {"appletsecurityexception.getsecuritycontext.unknown", "\uC54C \uC218 \uC5C6\uB294 \uD074\uB798\uC2A4 \uB85C\uB354 \uC720\uD615\uC785\uB2C8\uB2E4. getContext\uB97C \uD655\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+            {"appletsecurityexception.checkread.unknown", "\uC54C \uC218 \uC5C6\uB294 \uD074\uB798\uC2A4 \uB85C\uB354 \uC720\uD615\uC785\uB2C8\uB2E4. {0} \uC77D\uAE30\uB97C \uD655\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+            {"appletsecurityexception.checkconnect.unknown", "\uC54C \uC218 \uC5C6\uB294 \uD074\uB798\uC2A4 \uB85C\uB354 \uC720\uD615\uC785\uB2C8\uB2E4. \uC811\uC18D\uC744 \uD655\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
         };
+
+        return temp;
     }
 }
--- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_pt_BR.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_pt_BR.java	Wed Jul 05 17:35:13 2017 +0200
@@ -29,173 +29,175 @@
 public class MsgAppletViewer_pt_BR extends ListResourceBundle {
 
     public Object[][] getContents() {
-        return new Object[][] {
+        Object[][] temp = new Object[][] {
             {"textframe.button.dismiss", "Rejeitar"},
-            {"appletviewer.tool.title", "Visualizador de applet: {0}"},
+            {"appletviewer.tool.title", "Visualizador do Applet: {0}"},
             {"appletviewer.menu.applet", "Applet"},
             {"appletviewer.menuitem.restart", "Reiniciar"},
             {"appletviewer.menuitem.reload", "Recarregar"},
-            {"appletviewer.menuitem.stop", "Parar"},
-            {"appletviewer.menuitem.save", "Salvar..."},
+            {"appletviewer.menuitem.stop", "Interromper"},
+            {"appletviewer.menuitem.save", "Salvar"},
             {"appletviewer.menuitem.start", "Iniciar"},
             {"appletviewer.menuitem.clone", "Clonar..."},
-            {"appletviewer.menuitem.tag", "Marca..."},
-            {"appletviewer.menuitem.info", "Info..."},
+            {"appletviewer.menuitem.tag", "Tag..."},
+            {"appletviewer.menuitem.info", "Informa\u00E7\u00F5es..."},
             {"appletviewer.menuitem.edit", "Editar"},
-            {"appletviewer.menuitem.encoding", "Codifica\u00e7\u00e3o de caracteres"},
+            {"appletviewer.menuitem.encoding", "Codifica\u00E7\u00E3o do Caractere"},
             {"appletviewer.menuitem.print", "Imprimir..."},
             {"appletviewer.menuitem.props", "Propriedades..."},
             {"appletviewer.menuitem.close", "Fechar"},
             {"appletviewer.menuitem.quit", "Sair"},
-            {"appletviewer.label.hello", "Ol\u00e1..."},
-            {"appletviewer.status.start", "iniciando applet..."},
-            {"appletviewer.appletsave.filedialogtitle","Serializar applet no arquivo"},
+            {"appletviewer.label.hello", "Ol\u00E1..."},
+            {"appletviewer.status.start", "iniciando o applet..."},
+            {"appletviewer.appletsave.filedialogtitle","Serializar Applet no Arquivo"},
             {"appletviewer.appletsave.err1", "serializando um {0} para {1}"},
-            {"appletviewer.appletsave.err2", "em appletSave: {0}"},
-            {"appletviewer.applettag", "Marca exibida"},
-            {"appletviewer.applettag.textframe", "Marca HTML do applet"},
-            {"appletviewer.appletinfo.applet", "-- sem informa\u00e7\u00f5es do applet --"},
-            {"appletviewer.appletinfo.param", "-- sem informa\u00e7\u00f5es do par\u00e2metro --"},
-            {"appletviewer.appletinfo.textframe", "Informa\u00e7\u00f5es do applet"},
-            {"appletviewer.appletprint.fail", "Falha na impress\u00e3o."},
-            {"appletviewer.appletprint.finish", "Impress\u00e3o finalizada."},
-            {"appletviewer.appletprint.cancel", "Impress\u00e3o cancelada."},
-            {"appletviewer.appletencoding", "Codifica\u00e7\u00e3o de caracteres: {0}"},
-            {"appletviewer.parse.warning.requiresname", "Aviso: a marca <param name=... value=...> requer nome do atributo."},
-            {"appletviewer.parse.warning.paramoutside", "Aviso: marca <param> fora de <applet> ... </applet>."},
-            {"appletviewer.parse.warning.applet.requirescode", "Aviso: marca <applet> requer c\u00f3digo de atributo."},
-            {"appletviewer.parse.warning.applet.requiresheight", "Aviso: marca <applet> requer atributo de altura."},
-            {"appletviewer.parse.warning.applet.requireswidth", "Aviso: marca <applet> requer atributo de largura."},
-            {"appletviewer.parse.warning.object.requirescode", "Aviso: marca <object> requer c\u00f3digo de atributo."},
-            {"appletviewer.parse.warning.object.requiresheight", "Aviso: marca <object> requer atributo de altura."},
-            {"appletviewer.parse.warning.object.requireswidth", "Aviso: marca <object> requer atributo de largura."},
-            {"appletviewer.parse.warning.embed.requirescode", "Aviso: marca <embed> requer c\u00f3digo de atributo."},
-            {"appletviewer.parse.warning.embed.requiresheight", "Aviso: marca <embed> requer atributo de altura."},
-            {"appletviewer.parse.warning.embed.requireswidth", "Aviso: marca <embed> requer atributo de largura."},
-            {"appletviewer.parse.warning.appnotLongersupported", "Aviso: marca <app> n\u00e3o mais suportada, usar <applet> em seu lugar:"},
-            {"appletviewer.usage", "Uso: url(s) de <options> do visualizador de applets\n\nem que <options> inclui:\n  -debug                  inicia o visualizador de applet no depurador Java\n  -encoding <encoding>    especifica a codifica\u00e7\u00e3o de caracteres usada pelos arquivos HTML\n  -J<runtime flag>        passa o argumento para o int\u00e9rprete de java\n\nA op\u00e7\u00e3o -J n\u00e3o \u00e9 padr\u00e3o e est\u00e1 sujeita a altera\u00e7\u00f5es sem aviso."},
-            {"appletviewer.main.err.unsupportedopt", "Op\u00e7\u00e3o n\u00e3o suportada: {0}"},
-            {"appletviewer.main.err.unrecognizedarg", "Argumento n\u00e3o reconhecido: {0}"},
-            {"appletviewer.main.err.dupoption", "Uso duplicado da op\u00e7\u00e3o: {0}"},
-        {"appletviewer.main.err.inputfile", "Nenhum arquivo de entrada especificado."},
-            {"appletviewer.main.err.badurl", "URL incorreto: {0} ( {1} )"},
-            {"appletviewer.main.err.io", "Exce\u00e7\u00e3o de E/S durante a leitura: {0}"},
-            {"appletviewer.main.err.readablefile", "Certifique-se de que {0} seja um arquivo e seja leg\u00edvel."},
-            {"appletviewer.main.err.correcturl", "{0} \u00e9 o URL correto?"},
-            {"appletviewer.main.prop.store", "Propriedades espec\u00edficas do usu\u00e1rio para AppletViewer"},
-        {"appletviewer.main.err.prop.cantread", "N\u00e3o \u00e9 poss\u00edvel ler o arquivo de propriedades do usu\u00e1rio: {0}"},
-            {"appletviewer.main.err.prop.cantsave", "N\u00e3o \u00e9 poss\u00edvel salvar o arquivo de propriedades do usu\u00e1rio: {0}"},
-            {"appletviewer.main.warn.nosecmgr", "Aviso: desabilitando a seguran\u00e7a."},
-        {"appletviewer.main.debug.cantfinddebug", "N\u00e3o \u00e9 poss\u00edvel localizar o depurador!"},
-        {"appletviewer.main.debug.cantfindmain", "N\u00e3o \u00e9 poss\u00edvel localizar o m\u00e9todo principal no depurador!"},
-            {"appletviewer.main.debug.exceptionindebug", "Exce\u00e7\u00e3o no depurador!"},
-        {"appletviewer.main.debug.cantaccess", "N\u00e3o \u00e9 poss\u00edvel acessar o depurador!"},
-            {"appletviewer.main.nosecmgr", "Aviso: SecurityManager n\u00e3o instalado!"},
-            {"appletviewer.main.warning", "Aviso: nenhum applet foi iniciado. Certifique-se de que a entrada contenha uma marca <applet>."},
-            {"appletviewer.main.warn.prop.overwrite", "Aviso: substituindo temporariamente a propriedade do sistema em solicita\u00e7\u00e3o do usu\u00e1rio: chave: {0} valor antigo: {1} valor novo: {2}"},
-            {"appletviewer.main.warn.cantreadprops", "Aviso: n\u00e3o \u00e9 poss\u00edvel ler o arquivo de propriedades do AppletViewer: {0} usando padr\u00f5es."},
-        {"appletioexception.loadclass.throw.interrupted", "carregamento de classe interrompido: {0}"},
-            {"appletioexception.loadclass.throw.notloaded", "classe n\u00e3o carregada: {0}"},
-            {"appletclassloader.loadcode.verbose", "Abrindo fluxo para: {0} para obter {1}"},
-            {"appletclassloader.filenotfound", "Arquivo n\u00e3o encontrado ao procurar por: {0}"},
-            {"appletclassloader.fileformat", "Exce\u00e7\u00e3o de formato de arquivo ao carregar: {0}"},
-            {"appletclassloader.fileioexception", "Exce\u00e7\u00e3o de E/S ao carregar: {0}"},
-            {"appletclassloader.fileexception", "Exce\u00e7\u00e3o {0} ao carregar: {0}"},
+            {"appletviewer.appletsave.err2", "no appletSave: {0}"},
+            {"appletviewer.applettag", "Tag mostrada"},
+            {"appletviewer.applettag.textframe", "Tag HTML do Applet"},
+            {"appletviewer.appletinfo.applet", "-- nenhuma informa\u00E7\u00E3o do applet --"},
+            {"appletviewer.appletinfo.param", "-- sem informa\u00E7\u00E3o de par\u00E2metro --"},
+            {"appletviewer.appletinfo.textframe", "Informa\u00E7\u00F5es do Applet"},
+            {"appletviewer.appletprint.fail", "Falha na impress\u00E3o."},
+            {"appletviewer.appletprint.finish", "Impress\u00E3o finalizada."},
+            {"appletviewer.appletprint.cancel", "Impress\u00E3o cancelada."},
+            {"appletviewer.appletencoding", "Codifica\u00E7\u00E3o de Caractere: {0}"},
+            {"appletviewer.parse.warning.requiresname", "Advert\u00EAncia: a tag <param name=... value=...> requer um atributo de nome."},
+            {"appletviewer.parse.warning.paramoutside", "Advert\u00EAncia: a tag <param> externa <applet> ... </applet>."},
+            {"appletviewer.parse.warning.applet.requirescode", "Advert\u00EAncia: a tag <applet> requer um atributo de c\u00F3digo."},
+            {"appletviewer.parse.warning.applet.requiresheight", "Advert\u00EAncia: a tag <applet> requer um atributo de altura."},
+            {"appletviewer.parse.warning.applet.requireswidth", "Advert\u00EAncia: a tag <applet> requer um atributo de largura."},
+            {"appletviewer.parse.warning.object.requirescode", "Advert\u00EAncia: a tag <object> requer um atributo de c\u00F3digo."},
+            {"appletviewer.parse.warning.object.requiresheight", "Advert\u00EAncia: a tag <object> requer um atributo de altura."},
+            {"appletviewer.parse.warning.object.requireswidth", "Advert\u00EAncia: a tag <object> requer um atributo de largura."},
+            {"appletviewer.parse.warning.embed.requirescode", "Advert\u00EAncia: a tag <embed> requer um atributo de c\u00F3digo."},
+            {"appletviewer.parse.warning.embed.requiresheight", "Advert\u00EAncia: a tag <embed> requer um atributo de altura."},
+            {"appletviewer.parse.warning.embed.requireswidth", "Advert\u00EAncia: a tag <embed> requer um atributo de largura."},
+            {"appletviewer.parse.warning.appnotLongersupported", "Advert\u00EAncia: a tag <app> n\u00E3o \u00E9 mais suportada; use <applet>:"},
+            {"appletviewer.usage", "Uso: appletviewer <op\u00E7\u00F5es> url(s)\n\nem que as <op\u00E7\u00F5es> incluem:\n  -debug                  Inicia o visualizador do applet no depurador Java\n  -encoding <codifica\u00E7\u00E3o>    Especifica a codifica\u00E7\u00E3o de caractere usada pelos arquivos HTML\n  -J<flag de runtime>        Informa o argumento ao intepretador java\n\nA op\u00E7\u00E3o -J n\u00E3o \u00E9 padr\u00E3o e est\u00E1 sujeita \u00E0 altera\u00E7\u00E3o sem notifica\u00E7\u00E3o."},
+            {"appletviewer.main.err.unsupportedopt", "Op\u00E7\u00E3o n\u00E3o suportada: {0}"},
+            {"appletviewer.main.err.unrecognizedarg", "Argumento n\u00E3o reconhecido: {0}"},
+            {"appletviewer.main.err.dupoption", "Uso duplicado da op\u00E7\u00E3o: {0}"},
+            {"appletviewer.main.err.inputfile", "Nenhum arquivo de entrada especificado."},
+            {"appletviewer.main.err.badurl", "URL Inv\u00E1lido: {0} ( {1} )"},
+            {"appletviewer.main.err.io", "Exce\u00E7\u00E3o de E/S ao ler: {0}"},
+            {"appletviewer.main.err.readablefile", "Certifique-se de que {0} seja um arquivo e seja leg\u00EDvel."},
+            {"appletviewer.main.err.correcturl", "O URL {0} est\u00E1 correto?"},
+            {"appletviewer.main.prop.store", "Propriedades espec\u00EDficas do usu\u00E1rio do AppletViewer"},
+            {"appletviewer.main.err.prop.cantread", "N\u00E3o \u00E9 poss\u00EDvel ler o arquivo de propriedades do usu\u00E1rio: {0}"},
+            {"appletviewer.main.err.prop.cantsave", "N\u00E3o \u00E9 poss\u00EDvel salvar o arquivo de propriedades do usu\u00E1rio: {0}"},
+            {"appletviewer.main.warn.nosecmgr", "Advert\u00EAncia: desativando a seguran\u00E7a."},
+            {"appletviewer.main.debug.cantfinddebug", "N\u00E3o \u00E9 poss\u00EDvel localizar o depurador!"},
+            {"appletviewer.main.debug.cantfindmain", "N\u00E3o \u00E9 poss\u00EDvel localizar o m\u00E9todo principal no depurador!"},
+            {"appletviewer.main.debug.exceptionindebug", "Exce\u00E7\u00E3o no depurador!"},
+            {"appletviewer.main.debug.cantaccess", "N\u00E3o \u00E9 poss\u00EDvel acessar o depurador!"},
+            {"appletviewer.main.nosecmgr", "Advert\u00EAncia: SecurityManager n\u00E3o instalado!"},
+            {"appletviewer.main.warning", "Advert\u00EAncia: Nenhum applet iniciado. Certifique-se de que a entrada contenha uma tag <applet>."},
+            {"appletviewer.main.warn.prop.overwrite", "Advert\u00EAncia: Substituindo a propriedade do sistema temporariamente a pedido do usu\u00E1rio: chave: {0} valor antigo: {1} valor novo: {2}"},
+            {"appletviewer.main.warn.cantreadprops", "Advert\u00EAncia: N\u00E3o \u00E9 poss\u00EDvel ler o arquivo de propriedades AppletViewer: {0} Usando defaults."},
+            {"appletioexception.loadclass.throw.interrupted", "carregamento de classe interrompido: {0}"},
+            {"appletioexception.loadclass.throw.notloaded", "classe n\u00E3o carregada: {0}"},
+            {"appletclassloader.loadcode.verbose", "Fluxo de abertura para: {0} para obter {1}"},
+            {"appletclassloader.filenotfound", "Arquivo n\u00E3o encontrado ao procurar: {0}"},
+            {"appletclassloader.fileformat", "Exce\u00E7\u00E3o de formato do arquivo ao carregar: {0}"},
+            {"appletclassloader.fileioexception", "Exce\u00E7\u00E3o de E/S ao carregar: {0}"},
+            {"appletclassloader.fileexception", "exce\u00E7\u00E3o de {0} ao carregar: {1}"},
             {"appletclassloader.filedeath", "{0} eliminado ao carregar: {1}"},
-            {"appletclassloader.fileerror", "Erro {0} ao carregar: {1}"},
-            {"appletclassloader.findclass.verbose.findclass", "{0} encontra classe {1}"},
-            {"appletclassloader.findclass.verbose.openstream", "Abrindo fluxo para: {0} para obter {1}"},
+            {"appletclassloader.fileerror", "erro de {0} ao carregar: {1}"},
+            {"appletclassloader.findclass.verbose.findclass", "{0} localizar classe {1}"},
+            {"appletclassloader.findclass.verbose.openstream", "Fluxo de abertura para: {0} para obter {1}"},
             {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource do nome: {0}"},
             {"appletclassloader.getresource.verbose.found", "Recurso encontrado: {0} como um recurso do sistema"},
             {"appletclassloader.getresourceasstream.verbose", "Recurso encontrado: {0} como um recurso do sistema"},
-            {"appletpanel.runloader.err", "Par\u00e2metro de c\u00f3digo ou objeto!"},
-            {"appletpanel.runloader.exception", "exce\u00e7\u00e3o ao desserializar {0}"},
-            {"appletpanel.destroyed", "Applet destru\u00eddo."},
+            {"appletpanel.runloader.err", "Par\u00E2metro de c\u00F3digo ou objeto!"},
+            {"appletpanel.runloader.exception", "exce\u00E7\u00E3o ao desserializar {0}"},
+            {"appletpanel.destroyed", "Applet destru\u00EDdo."},
             {"appletpanel.loaded", "Applet carregado."},
             {"appletpanel.started", "Applet iniciado."},
             {"appletpanel.inited", "Applet inicializado."},
             {"appletpanel.stopped", "Applet interrompido."},
             {"appletpanel.disposed", "Applet descartado."},
-            {"appletpanel.nocode", "Marca APPLET ausente no par\u00e2metro CODE."},
-            {"appletpanel.notfound", "carregar: classe {0} n\u00e3o encontrada."},
-            {"appletpanel.nocreate", "carregar: {0} n\u00e3o pode ser instanciado."},
-            {"appletpanel.noconstruct", "carregar: {0} n\u00e3o \u00e9 p\u00fablico ou n\u00e3o possui um construtor p\u00fablico."},
+            {"appletpanel.nocode", "A tag APPLET n\u00E3o encontrou o par\u00E2metro CODE."},
+            {"appletpanel.notfound", "carga: classe {0} n\u00E3o encontrada."},
+            {"appletpanel.nocreate", "carga: {0} n\u00E3o pode ser instanciada."},
+            {"appletpanel.noconstruct", "carga: {0} n\u00E3o \u00E9 p\u00FAblica ou n\u00E3o tem construtor p\u00FAblico."},
             {"appletpanel.death", "eliminado"},
-            {"appletpanel.exception", "exce\u00e7\u00e3o: {0}."},
-            {"appletpanel.exception2", "exce\u00e7\u00e3o: {0}: {1}."},
+            {"appletpanel.exception", "exce\u00E7\u00E3o: {0}."},
+            {"appletpanel.exception2", "exce\u00E7\u00E3o: {0}: {1}."},
             {"appletpanel.error", "erro: {0}."},
             {"appletpanel.error2", "erro: {0}: {1}."},
-            {"appletpanel.notloaded", "Inicializar: applet n\u00e3o carregado."},
-            {"appletpanel.notinited", "Iniciar: applet n\u00e3o inicializado."},
-            {"appletpanel.notstarted", "Parar: applet n\u00e3o iniciado."},
-            {"appletpanel.notstopped", "Destruir: applet n\u00e3o interrompido."},
-            {"appletpanel.notdestroyed", "Descartar: applet n\u00e3o destru\u00eddo."},
-            {"appletpanel.notdisposed", "Carregar: applet n\u00e3o descartado."},
-            {"appletpanel.bail", "Interrompido: salvando."},
-            {"appletpanel.filenotfound", "Arquivo n\u00e3o encontrado ao procurar por: {0}"},
-            {"appletpanel.fileformat", "Exce\u00e7\u00e3o de formato de arquivo ao carregar: {0}"},
-            {"appletpanel.fileioexception", "Exce\u00e7\u00e3o de E/S ao carregar: {0}"},
-            {"appletpanel.fileexception", "Exce\u00e7\u00e3o {0} ao carregar: {0}"},
+            {"appletpanel.notloaded", "Inic: applet n\u00E3o carregado."},
+            {"appletpanel.notinited", "Iniciar: applet n\u00E3o inicializado."},
+            {"appletpanel.notstarted", "Interromper: applet n\u00E3o inicializado."},
+            {"appletpanel.notstopped", "Destruir: applet n\u00E3o interrompido."},
+            {"appletpanel.notdestroyed", "Descartar: applet n\u00E3o destru\u00EDdo."},
+            {"appletpanel.notdisposed", "Carregar: applet n\u00E3o descartado."},
+            {"appletpanel.bail", "Interrompido: esvaziando."},
+            {"appletpanel.filenotfound", "Arquivo n\u00E3o encontrado ao procurar: {0}"},
+            {"appletpanel.fileformat", "Exce\u00E7\u00E3o de formato do arquivo ao carregar: {0}"},
+            {"appletpanel.fileioexception", "Exce\u00E7\u00E3o de E/S ao carregar: {0}"},
+            {"appletpanel.fileexception", "exce\u00E7\u00E3o de {0} ao carregar: {1}"},
             {"appletpanel.filedeath", "{0} eliminado ao carregar: {1}"},
-            {"appletpanel.fileerror", "Erro {0} ao carregar: {1}"},
-            {"appletpanel.badattribute.exception", "An\u00e1lise de HTML: valor incorreto do atributo de largura/altura"},
-            {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream requer carregador n\u00e3o nulo"},
+            {"appletpanel.fileerror", "erro de {0} ao carregar: {1}"},
+            {"appletpanel.badattribute.exception", "Parse de HTML: valor incorreto do atributo de largura/altura"},
+            {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream requer um carregador n\u00E3o nulo"},
             {"appletprops.title", "Propriedades do AppletViewer"},
-            {"appletprops.label.http.server", "Servidor proxy de http:"},
-            {"appletprops.label.http.proxy", "Porta do proxy de http:"},
-            {"appletprops.label.network", "Acesso \u00e0 rede:"},
+            {"appletprops.label.http.server", "Servidor proxy Http:"},
+            {"appletprops.label.http.proxy", "Porta proxy Http:"},
+            {"appletprops.label.network", "Acesso de rede:"},
             {"appletprops.choice.network.item.none", "Nenhum"},
-            {"appletprops.choice.network.item.applethost", "Host do applet"},
-            {"appletprops.choice.network.item.unrestricted", "N\u00e3o registrado"},
-            {"appletprops.label.class", "Acesso \u00e0 classe:"},
+            {"appletprops.choice.network.item.applethost", "Host do Applet"},
+            {"appletprops.choice.network.item.unrestricted", "Irrestrito"},
+            {"appletprops.label.class", "Acesso \u00E0 classe:"},
             {"appletprops.choice.class.item.restricted", "Restrito"},
-            {"appletprops.choice.class.item.unrestricted", "N\u00e3o registrado"},
-            {"appletprops.label.unsignedapplet", "Permitir applets n\u00e3o assinados:"},
-            {"appletprops.choice.unsignedapplet.no", "N\u00e3o"},
+            {"appletprops.choice.class.item.unrestricted", "Irrestrito"},
+            {"appletprops.label.unsignedapplet", "Permitir applets n\u00E3o assinados:"},
+            {"appletprops.choice.unsignedapplet.no", "N\u00E3o"},
             {"appletprops.choice.unsignedapplet.yes", "Sim"},
             {"appletprops.button.apply", "Aplicar"},
             {"appletprops.button.cancel", "Cancelar"},
             {"appletprops.button.reset", "Redefinir"},
-            {"appletprops.apply.exception", "Falha ao salvar propriedades: {0}"},
+            {"appletprops.apply.exception", "Falha ao salvar as propriedades: {0}"},
             /* 4066432 */
-        {"appletprops.title.invalidproxy", "Entrada inv\u00e1lida"},
-        {"appletprops.label.invalidproxy", "A porta do proxy deve ser um valor inteiro positivo."},
-        {"appletprops.button.ok", "OK"},
-        /* end 4066432 */
-            {"appletprops.prop.store", "Propriedades espec\u00edficas do usu\u00e1rio para AppletViewer"},
-            {"appletsecurityexception.checkcreateclassloader", "Exce\u00e7\u00e3o de seguran\u00e7a: classloader"},
-            {"appletsecurityexception.checkaccess.thread", "Exce\u00e7\u00e3o de seguran\u00e7a: thread"},
-            {"appletsecurityexception.checkaccess.threadgroup", "Exce\u00e7\u00e3o de seguran\u00e7a: threadgroup: {0}"},
-            {"appletsecurityexception.checkexit", "Exce\u00e7\u00e3o de seguran\u00e7a: exit: {0}"},
-            {"appletsecurityexception.checkexec", "Exce\u00e7\u00e3o de seguran\u00e7a: exec: {0}"},
-            {"appletsecurityexception.checklink", "Exce\u00e7\u00e3o de seguran\u00e7a: link: {0}"},
-            {"appletsecurityexception.checkpropsaccess", "Exce\u00e7\u00e3o de seguran\u00e7a: properties"},
-            {"appletsecurityexception.checkpropsaccess.key", "Exce\u00e7\u00e3o de seguran\u00e7a: properties access {0}"},
-            {"appletsecurityexception.checkread.exception1", "Exce\u00e7\u00e3o de seguran\u00e7a: {0}, {1}"},
-            {"appletsecurityexception.checkread.exception2", "Exce\u00e7\u00e3o de seguran\u00e7a: file.read: {0}"},
-            {"appletsecurityexception.checkread", "Exce\u00e7\u00e3o de seguran\u00e7a: file.read: {0} == {1}"},
-            {"appletsecurityexception.checkwrite.exception", "Exce\u00e7\u00e3o de seguran\u00e7a: {0}, {1}"},
-            {"appletsecurityexception.checkwrite", "Exce\u00e7\u00e3o de seguran\u00e7a: file.write: {0} == {1}"},
-            {"appletsecurityexception.checkread.fd", "Exce\u00e7\u00e3o de seguran\u00e7a: fd.read"},
-            {"appletsecurityexception.checkwrite.fd", "Exce\u00e7\u00e3o de seguran\u00e7a: fd.write"},
-            {"appletsecurityexception.checklisten", "Exce\u00e7\u00e3o de seguran\u00e7a: socket.listen: {0}"},
-            {"appletsecurityexception.checkaccept", "Exce\u00e7\u00e3o de seguran\u00e7a: socket.accept: {0} == {1}"},
-            {"appletsecurityexception.checkconnect.networknone", "Exce\u00e7\u00e3o de seguran\u00e7a: socket.connect: {0} == {1}"},
-            {"appletsecurityexception.checkconnect.networkhost1", "Exce\u00e7\u00e3o de seguran\u00e7a: n\u00e3o foi poss\u00edvel conectar a {0} com a origem de {1}."},
-            {"appletsecurityexception.checkconnect.networkhost2", "Exce\u00e7\u00e3o de seguran\u00e7a: n\u00e3o foi poss\u00edvel resolver o IP para o host {0} ou para {1}. "},
-            {"appletsecurityexception.checkconnect.networkhost3", "Exce\u00e7\u00e3o de seguran\u00e7a: n\u00e3o foi poss\u00edvel resolver o IP para o host {0}. Consulte a propriedade trustProxy."},
-            {"appletsecurityexception.checkconnect", "Exce\u00e7\u00e3o de seguran\u00e7a: connect: {0}->{1}"},
-            {"appletsecurityexception.checkpackageaccess", "Exce\u00e7\u00e3o de seguran\u00e7a: n\u00e3o \u00e9 poss\u00edvel acessar o pacote: {0}"},
-            {"appletsecurityexception.checkpackagedefinition", "Exce\u00e7\u00e3o de seguran\u00e7a: n\u00e3o \u00e9 poss\u00edvel definir o pacote: {0}"},
-            {"appletsecurityexception.cannotsetfactory", "Exce\u00e7\u00e3o de seguran\u00e7a: n\u00e3o \u00e9 poss\u00edvel definir a f\u00e1brica"},
-            {"appletsecurityexception.checkmemberaccess", "Exce\u00e7\u00e3o de seguran\u00e7a: verificar acesso de membro"},
-            {"appletsecurityexception.checkgetprintjob", "Exce\u00e7\u00e3o de seguran\u00e7a: getPrintJob"},
-            {"appletsecurityexception.checksystemclipboardaccess", "Exce\u00e7\u00e3o de seguran\u00e7a: getSystemClipboard"},
-            {"appletsecurityexception.checkawteventqueueaccess", "Exce\u00e7\u00e3o de seguran\u00e7a: getEventQueue"},
-            {"appletsecurityexception.checksecurityaccess", "Exce\u00e7\u00e3o de seguran\u00e7a: opera\u00e7\u00e3o de seguran\u00e7a: {0}"},
-            {"appletsecurityexception.getsecuritycontext.unknown", "tipo desconhecido de carregador de classe. n\u00e3o \u00e9 poss\u00edvel verificar para getContext"},
-            {"appletsecurityexception.checkread.unknown", "tipo desconhecido de carregador de classe. n\u00e3o \u00e9 poss\u00edvel verificar para verifica\u00e7\u00e3o de leitura  {0}"},
-            {"appletsecurityexception.checkconnect.unknown", "tipo desconhecido de carregador de classe. n\u00e3o \u00e9 poss\u00edvel verificar para verifica\u00e7\u00e3o de conex\u00e3o"},
+            {"appletprops.title.invalidproxy", "Entrada Inv\u00E1lida"},
+            {"appletprops.label.invalidproxy", "A Porta Proxy deve ser um valor inteiro positivo."},
+            {"appletprops.button.ok", "OK"},
+            /* end 4066432 */
+            {"appletprops.prop.store", "Propriedades espec\u00EDficas do usu\u00E1rio do AppletViewer"},
+            {"appletsecurityexception.checkcreateclassloader", "Exce\u00E7\u00E3o de Seguran\u00E7a: carregador de classes"},
+            {"appletsecurityexception.checkaccess.thread", "Exce\u00E7\u00E3o de Seguran\u00E7a: thread"},
+            {"appletsecurityexception.checkaccess.threadgroup", "Exce\u00E7\u00E3o de Seguran\u00E7a: grupo de threads: {0}"},
+            {"appletsecurityexception.checkexit", "Exce\u00E7\u00E3o de Seguran\u00E7a: sa\u00EDda: {0}"},
+            {"appletsecurityexception.checkexec", "Exce\u00E7\u00E3o de Seguran\u00E7a: exec.: {0}"},
+            {"appletsecurityexception.checklink", "Exce\u00E7\u00E3o de Seguran\u00E7a: link: {0}"},
+            {"appletsecurityexception.checkpropsaccess", "Exce\u00E7\u00E3o de Seguran\u00E7a: propriedades"},
+            {"appletsecurityexception.checkpropsaccess.key", "Exce\u00E7\u00E3o de Seguran\u00E7a: acesso \u00E0s propriedades {0}"},
+            {"appletsecurityexception.checkread.exception1", "Exce\u00E7\u00E3o de Seguran\u00E7a: {0}, {1}"},
+            {"appletsecurityexception.checkread.exception2", "Exce\u00E7\u00E3o de Seguran\u00E7a: file.read: {0}"},
+            {"appletsecurityexception.checkread", "Exce\u00E7\u00E3o de Seguran\u00E7a: file.read: {0} == {1}"},
+            {"appletsecurityexception.checkwrite.exception", "Exce\u00E7\u00E3o de Seguran\u00E7a: {0}, {1}"},
+            {"appletsecurityexception.checkwrite", "Exce\u00E7\u00E3o de Seguran\u00E7a: file.write: {0} == {1}"},
+            {"appletsecurityexception.checkread.fd", "Exce\u00E7\u00E3o de Seguran\u00E7a: fd.read"},
+            {"appletsecurityexception.checkwrite.fd", "Exce\u00E7\u00E3o de Seguran\u00E7a: fd.write"},
+            {"appletsecurityexception.checklisten", "Exce\u00E7\u00E3o de Seguran\u00E7a: socket.listen: {0}"},
+            {"appletsecurityexception.checkaccept", "Exce\u00E7\u00E3o de Seguran\u00E7a: socket.accept: {0}:{1}"},
+            {"appletsecurityexception.checkconnect.networknone", "Exce\u00E7\u00E3o de Seguran\u00E7a: socket.connect: {0}->{1}"},
+            {"appletsecurityexception.checkconnect.networkhost1", "Exce\u00E7\u00E3o de Seguran\u00E7a: N\u00E3o foi poss\u00EDvel estabelecer conex\u00E3o com {0} com a origem de {1}."},
+            {"appletsecurityexception.checkconnect.networkhost2", "Exce\u00E7\u00E3o de Seguran\u00E7a: N\u00E3o foi poss\u00EDvel resolver o IP para o host {0} ou para {1}. "},
+            {"appletsecurityexception.checkconnect.networkhost3", "Exce\u00E7\u00E3o de Seguran\u00E7a: N\u00E3o foi poss\u00EDvel resolver o IP para o host {0}. Consulte a propriedade trustProxy."},
+            {"appletsecurityexception.checkconnect", "Exce\u00E7\u00E3o de Seguran\u00E7a: conectar: {0}->{1}"},
+            {"appletsecurityexception.checkpackageaccess", "Exce\u00E7\u00E3o de Seguran\u00E7a: n\u00E3o \u00E9 poss\u00EDvel acessar o pacote: {0}"},
+            {"appletsecurityexception.checkpackagedefinition", "Exce\u00E7\u00E3o de Seguran\u00E7a: n\u00E3o \u00E9 poss\u00EDvel definir o pacote: {0}"},
+            {"appletsecurityexception.cannotsetfactory", "Exce\u00E7\u00E3o de Seguran\u00E7a: n\u00E3o \u00E9 poss\u00EDvel definir o factory"},
+            {"appletsecurityexception.checkmemberaccess", "Exce\u00E7\u00E3o de Seguran\u00E7a: verificar acesso do membro"},
+            {"appletsecurityexception.checkgetprintjob", "Exce\u00E7\u00E3o de Seguran\u00E7a: getPrintJob"},
+            {"appletsecurityexception.checksystemclipboardaccess", "Exce\u00E7\u00E3o de Seguran\u00E7a: getSystemClipboard"},
+            {"appletsecurityexception.checkawteventqueueaccess", "Exce\u00E7\u00E3o de Seguran\u00E7a: getEventQueue"},
+            {"appletsecurityexception.checksecurityaccess", "Exce\u00E7\u00E3o de Seguran\u00E7a: opera\u00E7\u00E3o de seguran\u00E7a: {0}"},
+            {"appletsecurityexception.getsecuritycontext.unknown", "tipo de carregador de classe desconhecido. n\u00E3o \u00E9 poss\u00EDvel verificar getContext"},
+            {"appletsecurityexception.checkread.unknown", "tipo de carregador de classe desconhecido. n\u00E3o \u00E9 poss\u00EDvel verificar a leitura {0}"},
+            {"appletsecurityexception.checkconnect.unknown", "tipo de carregador de classe desconhecido. n\u00E3o \u00E9 poss\u00EDvel verificar a conex\u00E3o"},
         };
+
+        return temp;
     }
 }
--- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_sv.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_sv.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2010, 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
@@ -29,173 +29,175 @@
 public class MsgAppletViewer_sv extends ListResourceBundle {
 
     public Object[][] getContents() {
-        return new Object[][] {
-            {"textframe.button.dismiss", "St\u00e4ng"},
+        Object[][] temp = new Object[][] {
+            {"textframe.button.dismiss", "St\u00E4ng"},
             {"appletviewer.tool.title", "Applet Viewer: {0}"},
             {"appletviewer.menu.applet", "Applet"},
             {"appletviewer.menuitem.restart", "Starta om"},
-            {"appletviewer.menuitem.reload", "L\u00e4s in igen"},
-            {"appletviewer.menuitem.stop", "Stoppa"},
-            {"appletviewer.menuitem.save", "Spara ..."},
+            {"appletviewer.menuitem.reload", "Ladda om"},
+            {"appletviewer.menuitem.stop", "Stopp"},
+            {"appletviewer.menuitem.save", "Spara..."},
             {"appletviewer.menuitem.start", "Starta"},
-            {"appletviewer.menuitem.clone", "Klona ..."},
-            {"appletviewer.menuitem.tag", "Tagga ..."},
-            {"appletviewer.menuitem.info", "Info ..."},
+            {"appletviewer.menuitem.clone", "Klona..."},
+            {"appletviewer.menuitem.tag", "Tagg..."},
+            {"appletviewer.menuitem.info", "Information..."},
             {"appletviewer.menuitem.edit", "Redigera"},
             {"appletviewer.menuitem.encoding", "Teckenkodning"},
-            {"appletviewer.menuitem.print", "Skriv ut ..."},
-            {"appletviewer.menuitem.props", "Egenskaper ..."},
-            {"appletviewer.menuitem.close", "St\u00e4ng"},
+            {"appletviewer.menuitem.print", "Skriv ut..."},
+            {"appletviewer.menuitem.props", "Egenskaper..."},
+            {"appletviewer.menuitem.close", "St\u00E4ng"},
             {"appletviewer.menuitem.quit", "Avsluta"},
-            {"appletviewer.label.hello", "Hall\u00e5 ..."},
-            {"appletviewer.status.start", "startar applet ..."},
-            {"appletviewer.appletsave.filedialogtitle","Ordna appletar seriellt i filen"},
-            {"appletviewer.appletsave.err1", "serialiserar en {0} till {1}"},
+            {"appletviewer.label.hello", "Hej..."},
+            {"appletviewer.status.start", "startar applet..."},
+            {"appletviewer.appletsave.filedialogtitle","Serialisera applet till fil"},
+            {"appletviewer.appletsave.err1", "serialiserar {0} till {1}"},
             {"appletviewer.appletsave.err2", "i appletSave: {0}"},
-            {"appletviewer.applettag", "Visad tagg"},
-            {"appletviewer.applettag.textframe", "HTML-tagg f\u00f6r applet"},
-            {"appletviewer.appletinfo.applet", "-- ingen applet-info --"},
-            {"appletviewer.appletinfo.param", "-- ingen parameterinfo --"},
-            {"appletviewer.appletinfo.textframe", "Applet-info"},
-            {"appletviewer.appletprint.fail", "Utskrift misslyckades."},
-            {"appletviewer.appletprint.finish", "Utskriften \u00e4r klar."},
-            {"appletviewer.appletprint.cancel", "Utskriften avbr\u00f6ts."},
+            {"appletviewer.applettag", "Tagg visas"},
+            {"appletviewer.applettag.textframe", "HTML-tagg f\u00F6r applet"},
+            {"appletviewer.appletinfo.applet", "-- ingen appletinformation --"},
+            {"appletviewer.appletinfo.param", "-- ingen parameterinformation --"},
+            {"appletviewer.appletinfo.textframe", "Appletinformation"},
+            {"appletviewer.appletprint.fail", "Kunde inte skriva ut."},
+            {"appletviewer.appletprint.finish", "Utskriften klar."},
+            {"appletviewer.appletprint.cancel", "Utskriften avbruten."},
             {"appletviewer.appletencoding", "Teckenkodning: {0}"},
-            {"appletviewer.parse.warning.requiresname", "Varning: Taggen <param name=... value=...> kr\u00e4ver ett namnattribut."},
-            {"appletviewer.parse.warning.paramoutside", "Varning: Taggen <param> utanf\u00f6r <applet> ... </applet>."},
-            {"appletviewer.parse.warning.applet.requirescode", "Varning: <applet> Taggen kr\u00e4ver kodattribut."},
-            {"appletviewer.parse.warning.applet.requiresheight", "Varning: <applet> Taggen kr\u00e4ver h\u00f6jdattribut."},
-            {"appletviewer.parse.warning.applet.requireswidth", "Varning: <applet> Taggen kr\u00e4ver breddattribut."},
-            {"appletviewer.parse.warning.object.requirescode", "Varning: <object> Taggen kr\u00e4ver kodattribut."},
-            {"appletviewer.parse.warning.object.requiresheight", "Varning: <object> Taggen kr\u00e4ver h\u00f6jdattribut."},
-            {"appletviewer.parse.warning.object.requireswidth", "Varning: <object> koden kr\u00e4ver breddattribut."},
-            {"appletviewer.parse.warning.embed.requirescode", "Varning: <embed> koden kr\u00e4ver programkodattribut."},
-            {"appletviewer.parse.warning.embed.requiresheight", "Varning: <embed> koden kr\u00e4ver h\u00f6jdattribut."},
-            {"appletviewer.parse.warning.embed.requireswidth", "Varning: <embed> koden kr\u00e4ver breddattribut."},
-            {"appletviewer.parse.warning.appnotLongersupported", "Varning: Taggen <app> st\u00f6ds inte l\u00e4ngre, anv\u00e4nd <applet> ist\u00e4llet:"},
-            {"appletviewer.usage", "Syntax: appletviewer <alternativ> url(s)\n\nd\u00e4r <alternativ> omfattar:\n  -debug                  Starta applet-granskaren i Java-fels\u00f6karen\n  -encoding <kodning>    Ange teckenkodningen som anv\u00e4nds av HTML-filer\n  -J<k\u00f6rtidsflagga>        Skicka argumentet till Java-tolken\n\nAlternativet -J \u00e4r inte ett standardalternativ och kan \u00e4ndras utan f\u00f6reg\u00e5ende meddelande."},
-            {"appletviewer.main.err.unsupportedopt", "Alternativet st\u00f6ds inte: {0}"},
-            {"appletviewer.main.err.unrecognizedarg", "Ok\u00e4nt argument: {0}"},
-            {"appletviewer.main.err.dupoption", "Alternativet \u00e4r duplicerat: {0}"},
-            {"appletviewer.main.err.inputfile", "Inga indatafiler har angetts."},
+            {"appletviewer.parse.warning.requiresname", "Varning: <param name=... value=...>-taggen kr\u00E4ver ett namnattribut."},
+            {"appletviewer.parse.warning.paramoutside", "Varning: <param>-taggen finns utanf\u00F6r <applet> ... </applet>."},
+            {"appletviewer.parse.warning.applet.requirescode", "Varning: <applet>-taggen kr\u00E4ver ett kodattribut."},
+            {"appletviewer.parse.warning.applet.requiresheight", "Varning: <applet>-taggen kr\u00E4ver ett h\u00F6jdattribut."},
+            {"appletviewer.parse.warning.applet.requireswidth", "Varning: <applet>-taggen kr\u00E4ver ett breddattribut."},
+            {"appletviewer.parse.warning.object.requirescode", "Varning: <object>-taggen kr\u00E4ver ett kodattribut."},
+            {"appletviewer.parse.warning.object.requiresheight", "Varning: <object>-taggen kr\u00E4ver ett h\u00F6jdattribut."},
+            {"appletviewer.parse.warning.object.requireswidth", "Varning: <object>-taggen kr\u00E4ver ett breddattribut."},
+            {"appletviewer.parse.warning.embed.requirescode", "Varning: <embed>-taggen kr\u00E4ver ett kodattribut."},
+            {"appletviewer.parse.warning.embed.requiresheight", "Varning: <embed>-taggen kr\u00E4ver ett h\u00F6jdattribut."},
+            {"appletviewer.parse.warning.embed.requireswidth", "Varning: <embed>-taggen kr\u00E4ver ett breddattribut."},
+            {"appletviewer.parse.warning.appnotLongersupported", "Varning: <app>-taggen st\u00F6ds inte l\u00E4ngre, anv\u00E4nd <applet> ist\u00E4llet:"},
+            {"appletviewer.usage", "Syntax: URL:er f\u00F6r appletviewer-<alternativ>.\n\nF\u00F6ljande <alternativ> finns:\n  -debug                  Startar appletvisning i Java-fels\u00F6kningen\n  -encoding <kodning>    Anger teckenkodning  som anv\u00E4nds i HTML-filer\n  -J<k\u00F6rningsflagga>        \u00D6verf\u00F6r argument till Java-tolkningen\n\nAlternativet -J \u00E4r inte standard och kan \u00E4ndras utan f\u00F6reg\u00E5ende meddelande."},
+            {"appletviewer.main.err.unsupportedopt", "Alternativ som inte st\u00F6ds: {0}"},
+            {"appletviewer.main.err.unrecognizedarg", "Ok\u00E4nt argument: {0}"},
+            {"appletviewer.main.err.dupoption", "Duplicerat alternativ: {0}"},
+            {"appletviewer.main.err.inputfile", "Inga angivna indatafiler."},
             {"appletviewer.main.err.badurl", "Felaktig URL: {0} ( {1} )"},
-            {"appletviewer.main.err.io", "I/O-undantag vid l\u00e4sning: {0}"},
-            {"appletviewer.main.err.readablefile", "Kontrollera att {0} \u00e4r en l\u00e4sbar fil."},
-            {"appletviewer.main.err.correcturl", "\u00c4r {0} r\u00e4tt URL?"},
-            {"appletviewer.main.prop.store", "Anv\u00e4ndarspecifika egenskaper f\u00f6r AppletViewer"},
-            {"appletviewer.main.err.prop.cantread", "Det g\u00e5r inte att l\u00e4sa filen med anv\u00e4ndaregenskaper: {0}"},
-            {"appletviewer.main.err.prop.cantsave", "Det g\u00e5r inte att spara filen med anv\u00e4ndaregenskaper: {0}"},
-            {"appletviewer.main.warn.nosecmgr", "Varning: avaktiverar s\u00e4kerheten."},
-            {"appletviewer.main.debug.cantfinddebug", "Det g\u00e5r inte att hitta fels\u00f6karen!"},
-            {"appletviewer.main.debug.cantfindmain", "Det g\u00e5r inte att hitta huvudmetod i fels\u00f6karen!"},
-            {"appletviewer.main.debug.exceptionindebug", "Undantagsavbrott i fels\u00f6karen!"},
-            {"appletviewer.main.debug.cantaccess", "Det g\u00e5r inte att h\u00e4mta fels\u00f6karen!"},
+            {"appletviewer.main.err.io", "I/O-undantag vid l\u00E4sning: {0}"},
+            {"appletviewer.main.err.readablefile", "Kontrollera att {0} \u00E4r en fil som \u00E4r l\u00E4sbar."},
+            {"appletviewer.main.err.correcturl", "\u00C4r {0} den korrekta URL:en?"},
+            {"appletviewer.main.prop.store", "Anv\u00E4ndarspecifika egenskaper f\u00F6r AppletViewer"},
+            {"appletviewer.main.err.prop.cantread", "Kan inte l\u00E4sa egenskapsfilen: {0}"},
+            {"appletviewer.main.err.prop.cantsave", "Kan inte spara egenskapsfilen: {0}"},
+            {"appletviewer.main.warn.nosecmgr", "Varning: s\u00E4kerheten inaktiveras."},
+            {"appletviewer.main.debug.cantfinddebug", "Hittar inte fels\u00F6kningsprogrammet!"},
+            {"appletviewer.main.debug.cantfindmain", "Hittar inte huvudmetoden i fels\u00F6kningsprogrammet!"},
+            {"appletviewer.main.debug.exceptionindebug", "Undantag i fels\u00F6kningsprogrammet!"},
+            {"appletviewer.main.debug.cantaccess", "Det finns ingen \u00E5tkomst till fels\u00F6kningsprogrammet!"},
             {"appletviewer.main.nosecmgr", "Varning: SecurityManager har inte installerats!"},
-            {"appletviewer.main.warning", "Varning: Inga appletar startades. Kontrollera att indata inneh\u00e5ller en <applet>-tagg."},
-            {"appletviewer.main.warn.prop.overwrite", "Varning: Skriver tillf\u00e4lligt \u00f6ver systemegenskap p\u00e5 anv\u00e4ndarens beg\u00e4ran: nyckel: {0} gammalt v\u00e4rde: {1} nytt v\u00e4rde: {2}"},
-            {"appletviewer.main.warn.cantreadprops", "Varning: Det g\u00e5r inte att l\u00e4sa egenskapsfilen till AppletViewer: {0} Anv\u00e4nder standardv\u00e4rden."},
-            {"appletioexception.loadclass.throw.interrupted", "klassinl\u00e4sning avbr\u00f6ts: {0}"},
-            {"appletioexception.loadclass.throw.notloaded", "klassen har inte l\u00e4sts in: {0}"},
-            {"appletclassloader.loadcode.verbose", "\u00d6ppnar str\u00f6m till: {0} f\u00f6r att f\u00e5 {1}"},
-            {"appletclassloader.filenotfound", "Fil saknas vid s\u00f6kning efter: {0}"},
-            {"appletclassloader.fileformat", "Filformatundantag vid inl\u00e4sning: {0}"},
-            {"appletclassloader.fileioexception", "I/O-undantag vid inl\u00e4sning: {0}"},
-            {"appletclassloader.fileexception", "{0}-undantag vid inl\u00e4sning: {1}"},
-            {"appletclassloader.filedeath", "{0} avslutades vid inl\u00e4sning: {1}"},
-            {"appletclassloader.fileerror", "{0} fel vid inl\u00e4sning: {1}"},
-            {"appletclassloader.findclass.verbose.findclass", "{0} s\u00f6k klass {1}"},
-            {"appletclassloader.findclass.verbose.openstream", "\u00d6ppnar str\u00f6m till: {0} f\u00f6r att f\u00e5 {1}"},
-            {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource f\u00f6r namnet {0}"},
-            {"appletclassloader.getresource.verbose.found", "Hittade resursen {0} som en systemresurs"},
-            {"appletclassloader.getresourceasstream.verbose", "Hittade resursen {0} som en systemresurs"},
+            {"appletviewer.main.warning", "Varning: Inga appletar har startats. Kontrollera att indata inneh\u00E5ller <applet>-tagg."},
+            {"appletviewer.main.warn.prop.overwrite", "Varning: Skriver tillf\u00E4lligt \u00F6ver systemegenskap enligt beg\u00E4ran fr\u00E5n anv\u00E4ndare: nyckel: {0} gammalt v\u00E4rde: {1} nytt v\u00E4rde: {2}"},
+            {"appletviewer.main.warn.cantreadprops", "Varning: Kan inte l\u00E4sa egenskapsfil f\u00F6r AppletViewer: {0} Standardv\u00E4rden anv\u00E4nds."},
+            {"appletioexception.loadclass.throw.interrupted", "klassinl\u00E4sning avbr\u00F6ts: {0}"},
+            {"appletioexception.loadclass.throw.notloaded", "klass inte inl\u00E4st: {0}"},
+            {"appletclassloader.loadcode.verbose", "\u00D6ppnar str\u00F6m till: {0} f\u00F6r h\u00E4mtning av {1}"},
+            {"appletclassloader.filenotfound", "Hittade inte fil vid s\u00F6kning efter: {0}"},
+            {"appletclassloader.fileformat", "Undantag av filformat vid l\u00E4sning av: {0}"},
+            {"appletclassloader.fileioexception", "I/O-undantag vid l\u00E4sning: {0}"},
+            {"appletclassloader.fileexception", "{0} undantag vid l\u00E4sning: {1}"},
+            {"appletclassloader.filedeath", "{0} avslutad vid l\u00E4sning: {1}"},
+            {"appletclassloader.fileerror", "{0} fel vid l\u00E4sning: {1}"},
+            {"appletclassloader.findclass.verbose.findclass", "{0} hittar klass {1}"},
+            {"appletclassloader.findclass.verbose.openstream", "\u00D6ppnar str\u00F6m till: {0} f\u00F6r h\u00E4mtning av {1}"},
+            {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource f\u00F6r namnet: {0}"},
+            {"appletclassloader.getresource.verbose.found", "Hittade resursen: {0} som systemresurs"},
+            {"appletclassloader.getresourceasstream.verbose", "Hittade resursen: {0} som systemresurs"},
             {"appletpanel.runloader.err", "Antingen objekt- eller kodparameter!"},
             {"appletpanel.runloader.exception", "undantag vid avserialisering {0}"},
-            {"appletpanel.destroyed", "Appleten f\u00f6rst\u00f6rd."},
-            {"appletpanel.loaded", "Appleten \u00e4r inl\u00e4st."},
-            {"appletpanel.started", "Appleten har startat."},
-            {"appletpanel.inited", "Appleten har initierats."},
-            {"appletpanel.stopped", "Appleten har stoppats."},
-            {"appletpanel.disposed", "Appleten har sl\u00e4ngts."},
-            {"appletpanel.nocode", "Taggen APPLET saknar parametern CODE."},
-            {"appletpanel.notfound", "inl\u00e4sning: klassen {0} finns inte."},
-            {"appletpanel.nocreate", "inl\u00e4sning: kan inte skapa instans av {0}."},
-            {"appletpanel.noconstruct", "inl\u00e4sning: {0} \u00e4r inte allm\u00e4n eller har ingen allm\u00e4n konstruktor."},
+            {"appletpanel.destroyed", "Applet raderad."},
+            {"appletpanel.loaded", "Applet laddad."},
+            {"appletpanel.started", "Applet startad."},
+            {"appletpanel.inited", "Applet initierad."},
+            {"appletpanel.stopped", "Applet stoppad."},
+            {"appletpanel.disposed", "Applet kasserad."},
+            {"appletpanel.nocode", "APPLET-tagg saknar CODE-parameter."},
+            {"appletpanel.notfound", "load: hittade inte klassen {0}."},
+            {"appletpanel.nocreate", "load: {0} kan inte instansieras."},
+            {"appletpanel.noconstruct", "load: {0} \u00E4r inte allm\u00E4n eller saknar allm\u00E4n konstruktor."},
             {"appletpanel.death", "avslutad"},
             {"appletpanel.exception", "undantag: {0}."},
             {"appletpanel.exception2", "undantag: {0}: {1}."},
             {"appletpanel.error", "fel: {0}."},
-            {"appletpanel.error2", "fel: {0}: {1}."},
-            {"appletpanel.notloaded", "Init: appleten har inte l\u00e4sts in."},
-            {"appletpanel.notinited", "Start: appleten har inte initierats."},
-            {"appletpanel.notstarted", "Stopp: appleten har inte startats."},
-            {"appletpanel.notstopped", "Destruktion: appleten har inte stoppats."},
-            {"appletpanel.notdestroyed", "Sl\u00e4ng: appleten har inte f\u00f6rst\u00f6rts."},
-            {"appletpanel.notdisposed", "Inl\u00e4sning: appletten har inte sl\u00e4ngts."},
-            {"appletpanel.bail", "Avbruten: avaktiverar."},
-            {"appletpanel.filenotfound", "Fil saknas vid s\u00f6kning efter: {0}"},
-            {"appletpanel.fileformat", "Filformatundantag vid inl\u00e4sning: {0}"},
-            {"appletpanel.fileioexception", "I/O-undantag vid inl\u00e4sning: {0}"},
-            {"appletpanel.fileexception", "{0}-undantag vid inl\u00e4sning: {1}"},
-            {"appletpanel.filedeath", "{0} avslutades vid inl\u00e4sning: {1}"},
-            {"appletpanel.fileerror", "{0} fel vid inl\u00e4sning: {1}"},
-            {"appletpanel.badattribute.exception", "Html-tolkning: felaktigt v\u00e4rde f\u00f6r h\u00f6jd-breddattribut"},
-            {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream kr\u00e4ver inl\u00e4sare som inte \u00e4r tom"},
-            {"appletprops.title", "Egenskaper f\u00f6r AppletViewer"},
-            {"appletprops.label.http.server", "Proxy-server f\u00f6r HTTP:"},
-            {"appletprops.label.http.proxy", "HTTP-proxyns port:"},
-            {"appletprops.label.network", "N\u00e4tverks\u00e5tkomst:"},
-            {"appletprops.choice.network.item.none", "Inget"},
-            {"appletprops.choice.network.item.applethost", "Applet-v\u00e4rd"},
-            {"appletprops.choice.network.item.unrestricted", "Obegr\u00e4nsad"},
-            {"appletprops.label.class", "Klass\u00e5tkomst:"},
-            {"appletprops.choice.class.item.restricted", "Begr\u00e4nsad"},
-            {"appletprops.choice.class.item.unrestricted", "Obegr\u00e4nsad"},
-            {"appletprops.label.unsignedapplet", "Till\u00e5t osignerade appletar:"},
+            {"appletpanel.error2", "fel {0}: {1}."},
+            {"appletpanel.notloaded", "Initiera: applet \u00E4r inte inl\u00E4st."},
+            {"appletpanel.notinited", "Starta: applet \u00E4r inte initierad."},
+            {"appletpanel.notstarted", "Stoppa: applet har inte startats."},
+            {"appletpanel.notstopped", "Radera: applet har inte stoppats."},
+            {"appletpanel.notdestroyed", "Kassera: applet har inte raderats."},
+            {"appletpanel.notdisposed", "Ladda: applet har inte kasserats."},
+            {"appletpanel.bail", "Avbruten."},
+            {"appletpanel.filenotfound", "Hittade inte fil vid s\u00F6kning efter: {0}"},
+            {"appletpanel.fileformat", "Undantag av filformat vid l\u00E4sning av: {0}"},
+            {"appletpanel.fileioexception", "I/O-undantag vid l\u00E4sning: {0}"},
+            {"appletpanel.fileexception", "{0} undantag vid l\u00E4sning: {1}"},
+            {"appletpanel.filedeath", "{0} avslutad vid l\u00E4sning: {1}"},
+            {"appletpanel.fileerror", "{0} fel vid l\u00E4sning: {1}"},
+            {"appletpanel.badattribute.exception", "HTML-tolkning: felaktigt v\u00E4rde f\u00F6r bredd-/h\u00F6jdattribut"},
+            {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream kr\u00E4ver laddare med icke-null"},
+            {"appletprops.title", "AppletViewer-egenskaper"},
+            {"appletprops.label.http.server", "HTTP-proxyserver:"},
+            {"appletprops.label.http.proxy", "HTTP-proxyport:"},
+            {"appletprops.label.network", "N\u00E4tverks\u00E5tkomst:"},
+            {"appletprops.choice.network.item.none", "Ingen"},
+            {"appletprops.choice.network.item.applethost", "Appletv\u00E4rd"},
+            {"appletprops.choice.network.item.unrestricted", "Obegr\u00E4nsad"},
+            {"appletprops.label.class", "Klass\u00E5tkomst:"},
+            {"appletprops.choice.class.item.restricted", "Begr\u00E4nsad"},
+            {"appletprops.choice.class.item.unrestricted", "Obegr\u00E4nsad"},
+            {"appletprops.label.unsignedapplet", "Till\u00E5t osignerade appletar:"},
             {"appletprops.choice.unsignedapplet.no", "Nej"},
             {"appletprops.choice.unsignedapplet.yes", "Ja"},
-            {"appletprops.button.apply", "Utf\u00f6r"},
+            {"appletprops.button.apply", "Till\u00E4mpa"},
             {"appletprops.button.cancel", "Avbryt"},
-            {"appletprops.button.reset", "\u00c5terst\u00e4ll"},
-            {"appletprops.apply.exception", "Kunde inte spara egenskaperna: {0}"},
+            {"appletprops.button.reset", "\u00C5terst\u00E4ll"},
+            {"appletprops.apply.exception", "Kunde inte spara egenskaper: {0}"},
             /* 4066432 */
-            {"appletprops.title.invalidproxy", "Ogiltig inmatning"},
-            {"appletprops.label.invalidproxy", "Proxyporten m\u00e5ste anges som ett positivt heltal"},
+            {"appletprops.title.invalidproxy", "Ogiltig post"},
+            {"appletprops.label.invalidproxy", "Proxyport m\u00E5ste vara ett positivt heltal."},
             {"appletprops.button.ok", "OK"},
             /* end 4066432 */
-            {"appletprops.prop.store", "Anv\u00e4ndarspecifika egenskaper f\u00f6r AppletViewer"},
-            {"appletsecurityexception.checkcreateclassloader", "S\u00e4kerhetsundantag: klassinl\u00e4sare"},
-            {"appletsecurityexception.checkaccess.thread", "S\u00e4kerhetsundantag: tr\u00e5d"},
-            {"appletsecurityexception.checkaccess.threadgroup", "S\u00e4kerhetsundantag: tr\u00e5dgruppen {0}"},
-            {"appletsecurityexception.checkexit", "S\u00e4kerhetsundantag: exit-punkten {0}"},
-            {"appletsecurityexception.checkexec", "S\u00e4kerhetsundantag: programfilen {0}"},
-            {"appletsecurityexception.checklink", "S\u00e4kerhetsundantag: l\u00e4nken {0}"},
-            {"appletsecurityexception.checkpropsaccess", "S\u00e4kerhetsundantag: egenskaperna"},
-            {"appletsecurityexception.checkpropsaccess.key", "S\u00e4kerhetsundantag: egenskaps\u00e5tkomsten {0}"},
-            {"appletsecurityexception.checkread.exception1", "S\u00e4kerhetsundantag: {0}, {1}"},
-            {"appletsecurityexception.checkread.exception2", "S\u00e4kerhetsundantag: file.read: {0}"},
-            {"appletsecurityexception.checkread", "S\u00e4kerhetsundantag: file.read: {0} == {1}"},
-            {"appletsecurityexception.checkwrite.exception", "S\u00e4kerhetsundantag: {0}, {1}"},
-            {"appletsecurityexception.checkwrite", "S\u00e4kerhetsundantag: file.write: {0} == {1}"},
-            {"appletsecurityexception.checkread.fd", "S\u00e4kerhetsundantag: fd.read"},
-            {"appletsecurityexception.checkwrite.fd", "S\u00e4kerhetsundantag: fd.write"},
-            {"appletsecurityexception.checklisten", "S\u00e4kerhetsundantag: socket.listen: {0}"},
-            {"appletsecurityexception.checkaccept", "S\u00e4kerhetsundantag: socket.accept: {0}:{1}"},
-            {"appletsecurityexception.checkconnect.networknone", "S\u00e4kerhetsundantag: socket.connect: {0}->{1}"},
-            {"appletsecurityexception.checkconnect.networkhost1", "S\u00e4kerhetsundantag: Kan inte koppla upp till {0} som kommer fr\u00e5n {1}."},
-            {"appletsecurityexception.checkconnect.networkhost2", "S\u00e4kerhetsundantag: Kan inte \u00f6vers\u00e4tta adressen f\u00f6r v\u00e4rdsystemet {0} eller for {1}. "},
-            {"appletsecurityexception.checkconnect.networkhost3", "S\u00e4kerhetsundantag: Kan inte \u00f6vers\u00e4tta adressen f\u00f6r v\u00e4rdsystemet {0}. Kontrollera egenskapen trustProxy."},
-            {"appletsecurityexception.checkconnect", "S\u00e4kerhetsundantag: uppkoppling: {0}->{1}"},
-            {"appletsecurityexception.checkpackageaccess", "S\u00e4kerhetsundantag: f\u00e5r inte \u00e5tkomst till paketet: {0}"},
-            {"appletsecurityexception.checkpackagedefinition", "S\u00e4kerhetsundantag: kan inte definiera paketet: {0}"},
-            {"appletsecurityexception.cannotsetfactory", "S\u00e4kerhetsundantag: kan inte st\u00e4lla in factory"},
-            {"appletsecurityexception.checkmemberaccess", "S\u00e4kerhetsundantag: kontrollera medlems\u00e5tkomst"},
-            {"appletsecurityexception.checkgetprintjob", "S\u00e4kerhetsundantag: getPrintJob"},
-            {"appletsecurityexception.checksystemclipboardaccess", "S\u00e4kerhetsundantag: getSystemClipboard"},
-            {"appletsecurityexception.checkawteventqueueaccess", "S\u00e4kerhetsundantag: getEventQueue"},
-            {"appletsecurityexception.checksecurityaccess", "S\u00e4kerhetsundantag: s\u00e4kerhetsbearbetning: {0}"},
-            {"appletsecurityexception.getsecuritycontext.unknown", "Ok\u00e4nd typ av klassinl\u00e4sare. Kan inte leta efter getContext"},
-            {"appletsecurityexception.checkread.unknown", "Ok\u00e4nd typ av klassinl\u00e4sare. Kan inte leta efter checking read {0}"},
-            {"appletsecurityexception.checkconnect.unknown", "Ok\u00e4nd typ av klassinl\u00e4sare. Kan inte leta efter checking connect"},
+            {"appletprops.prop.store", "Anv\u00E4ndarspecifika egenskaper f\u00F6r AppletViewer"},
+            {"appletsecurityexception.checkcreateclassloader", "S\u00E4kerhetsundantag: klassladdare"},
+            {"appletsecurityexception.checkaccess.thread", "S\u00E4kerhetsundantag: tr\u00E5d"},
+            {"appletsecurityexception.checkaccess.threadgroup", "S\u00E4kerhetsundantag: tr\u00E5dgrupp: {0}"},
+            {"appletsecurityexception.checkexit", "S\u00E4kerhetsundantag: utg\u00E5ng: {0}"},
+            {"appletsecurityexception.checkexec", "S\u00E4kerhetsundantag: exec: {0}"},
+            {"appletsecurityexception.checklink", "S\u00E4kerhetsundantag: l\u00E4nk: {0}"},
+            {"appletsecurityexception.checkpropsaccess", "S\u00E4kerhetsundantag: egenskaper"},
+            {"appletsecurityexception.checkpropsaccess.key", "S\u00E4kerhetsundantag: egenskaps\u00E5tkomst {0}"},
+            {"appletsecurityexception.checkread.exception1", "S\u00E4kerhetsundantag: {0}, {1}"},
+            {"appletsecurityexception.checkread.exception2", "S\u00E4kerhetsundantag: file.read: {0}"},
+            {"appletsecurityexception.checkread", "S\u00E4kerhetsundantag: file.read: {0} == {1}"},
+            {"appletsecurityexception.checkwrite.exception", "S\u00E4kerhetsundantag: {0}, {1}"},
+            {"appletsecurityexception.checkwrite", "S\u00E4kerhetsundantag: file.write: {0} == {1}"},
+            {"appletsecurityexception.checkread.fd", "S\u00E4kerhetsundantag: fd.read"},
+            {"appletsecurityexception.checkwrite.fd", "S\u00E4kerhetsundantag: fd.write"},
+            {"appletsecurityexception.checklisten", "S\u00E4kerhetsundantag: socket.listen: {0}"},
+            {"appletsecurityexception.checkaccept", "S\u00E4kerhetsundantag: socket.accept: {0}:{1}"},
+            {"appletsecurityexception.checkconnect.networknone", "S\u00E4kerhetsundantag: socket.connect: {0}->{1}"},
+            {"appletsecurityexception.checkconnect.networkhost1", "S\u00E4kerhetsundantag: Kunde inte ansluta till {0} med ursprung fr\u00E5n {1}."},
+            {"appletsecurityexception.checkconnect.networkhost2", "S\u00E4kerhetsundantag: Kunde inte matcha IP f\u00F6r v\u00E4rd {0} eller f\u00F6r {1}. "},
+            {"appletsecurityexception.checkconnect.networkhost3", "S\u00E4kerhetsundantag: Kunde inte matcha IP f\u00F6r v\u00E4rd {0}. Se egenskapen trustProxy."},
+            {"appletsecurityexception.checkconnect", "S\u00E4kerhetsundantag: connect: {0}->{1}"},
+            {"appletsecurityexception.checkpackageaccess", "S\u00E4kerhetsundantag: ingen \u00E5tkomst till paket: {0}"},
+            {"appletsecurityexception.checkpackagedefinition", "S\u00E4kerhetsundantag: kan inte definiera paket: {0}"},
+            {"appletsecurityexception.cannotsetfactory", "S\u00E4kerhetsundantag: kan inte ange fabrik"},
+            {"appletsecurityexception.checkmemberaccess", "S\u00E4kerhetsundantag: kontrollera medlems\u00E5tkomst"},
+            {"appletsecurityexception.checkgetprintjob", "S\u00E4kerhetsundantag: getPrintJob"},
+            {"appletsecurityexception.checksystemclipboardaccess", "S\u00E4kerhetsundantag: getSystemClipboard"},
+            {"appletsecurityexception.checkawteventqueueaccess", "S\u00E4kerhetsundantag: getEventQueue"},
+            {"appletsecurityexception.checksecurityaccess", "S\u00E4kerhetsundantag: s\u00E4kerhets\u00E5tg\u00E4rd: {0}"},
+            {"appletsecurityexception.getsecuritycontext.unknown", "ok\u00E4nd typ av klassladdare. kan inte kontrollera getContext"},
+            {"appletsecurityexception.checkread.unknown", "ok\u00E4nd typ av klassladdare. kan inte kontrollera kontroll\u00E4sning {0}"},
+            {"appletsecurityexception.checkconnect.unknown", "ok\u00E4nd typ av klassladdare. kan inte kontrollera kontrollanslutning"},
         };
+
+        return temp;
     }
 }
--- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_zh_CN.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_zh_CN.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2010, 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
@@ -29,173 +29,175 @@
 public class MsgAppletViewer_zh_CN extends ListResourceBundle {
 
     public Object[][] getContents() {
-        return new Object[][] {
-            {"textframe.button.dismiss", "\u5173\u95ed"},
-            {"appletviewer.tool.title", "\u5c0f\u7a0b\u5e8f\u67e5\u770b\u5668\uff1a{0}"},
-            {"appletviewer.menu.applet", "\u5c0f\u7a0b\u5e8f"},
-            {"appletviewer.menuitem.restart", "\u91cd\u65b0\u542f\u52a8"},
-            {"appletviewer.menuitem.reload", "\u91cd\u65b0\u8f7d\u5165"},
-            {"appletviewer.menuitem.stop", "\u505c\u6b62"},
-            {"appletviewer.menuitem.save", "\u4fdd\u5b58..."},
-            {"appletviewer.menuitem.start", "\u542f\u52a8"},
-            {"appletviewer.menuitem.clone", "\u590d\u5236..."},
-            {"appletviewer.menuitem.tag", "\u6807\u8bb0..."},
-            {"appletviewer.menuitem.info", "\u4fe1\u606f..."},
-            {"appletviewer.menuitem.edit", "\u7f16\u8f91"},
-            {"appletviewer.menuitem.encoding", "\u5b57\u7b26\u7f16\u7801"},
+        Object[][] temp = new Object[][] {
+            {"textframe.button.dismiss", "\u5173\u95ED"},
+            {"appletviewer.tool.title", "\u5C0F\u5E94\u7528\u7A0B\u5E8F\u67E5\u770B\u5668: {0}"},
+            {"appletviewer.menu.applet", "\u5C0F\u5E94\u7528\u7A0B\u5E8F"},
+            {"appletviewer.menuitem.restart", "\u91CD\u65B0\u542F\u52A8"},
+            {"appletviewer.menuitem.reload", "\u91CD\u65B0\u52A0\u8F7D"},
+            {"appletviewer.menuitem.stop", "\u505C\u6B62"},
+            {"appletviewer.menuitem.save", "\u4FDD\u5B58..."},
+            {"appletviewer.menuitem.start", "\u542F\u52A8"},
+            {"appletviewer.menuitem.clone", "\u514B\u9686..."},
+            {"appletviewer.menuitem.tag", "\u6807\u8BB0..."},
+            {"appletviewer.menuitem.info", "\u4FE1\u606F..."},
+            {"appletviewer.menuitem.edit", "\u7F16\u8F91"},
+            {"appletviewer.menuitem.encoding", "\u5B57\u7B26\u7F16\u7801"},
             {"appletviewer.menuitem.print", "\u6253\u5370..."},
-            {"appletviewer.menuitem.props", "\u5c5e\u6027..."},
-            {"appletviewer.menuitem.close", "\u5173\u95ed"},
-            {"appletviewer.menuitem.quit", "\u9000\u51fa"},
-            {"appletviewer.label.hello", "Hello..."},
-            {"appletviewer.status.start", "\u6b63\u5728\u542f\u52a8\u5c0f\u7a0b\u5e8f..."},
-            {"appletviewer.appletsave.filedialogtitle","\u5c06\u5c0f\u7a0b\u5e8f\u5e8f\u5217\u5316\u4e3a\u6587\u4ef6"},
-            {"appletviewer.appletsave.err1", "\u5c06 {0} \u5e8f\u5217\u5316\u4e3a {1}"},
-            {"appletviewer.appletsave.err2", "\u5728 appletSave \u4e2d\uff1a{0}"},
-            {"appletviewer.applettag", "\u663e\u793a\u7684\u6807\u8bb0"},
-            {"appletviewer.applettag.textframe", "\u5c0f\u7a0b\u5e8f HTML \u6807\u8bb0"},
-            {"appletviewer.appletinfo.applet", "-- \u6ca1\u6709\u4efb\u4f55\u5c0f\u7a0b\u5e8f\u4fe1\u606f --"},
-            {"appletviewer.appletinfo.param", "-- \u6ca1\u6709\u4efb\u4f55\u53c2\u6570\u4fe1\u606f --"},
-            {"appletviewer.appletinfo.textframe", "\u5c0f\u7a0b\u5e8f\u4fe1\u606f"},
-            {"appletviewer.appletprint.fail", "\u6253\u5370\u5931\u8d25\u3002"},
-            {"appletviewer.appletprint.finish", "\u5df2\u5b8c\u6210\u6253\u5370\u3002"},
-            {"appletviewer.appletprint.cancel", "\u6253\u5370\u88ab\u53d6\u6d88\u3002"},
-            {"appletviewer.appletencoding", "\u5b57\u7b26\u7f16\u7801\uff1a {0}"},
-            {"appletviewer.parse.warning.requiresname", "\u8b66\u544a\uff1a<param name=... value=...> \u6807\u8bb0\u9700\u8981\u540d\u79f0\u5c5e\u6027\u3002"},
-            {"appletviewer.parse.warning.paramoutside", "\u8b66\u544a\uff1a<param> \u6807\u8bb0\u5728 <applet> ... </applet> \u5916\u90e8\u3002"},
-            {"appletviewer.parse.warning.applet.requirescode", "\u8b66\u544a\uff1a <applet> \u6807\u8bb0\u9700\u8981\u4ee3\u7801\u5c5e\u6027\u3002"},
-            {"appletviewer.parse.warning.applet.requiresheight", "\u8b66\u544a\uff1a<applet> \u6807\u8bb0\u9700\u8981\u9ad8\u5ea6\u5c5e\u6027\u3002"},
-            {"appletviewer.parse.warning.applet.requireswidth", "\u8b66\u544a\uff1a <applet> \u6807\u8bb0\u9700\u8981\u5bbd\u5ea6\u5c5e\u6027\u3002"},
-            {"appletviewer.parse.warning.object.requirescode", "\u8b66\u544a\uff1a <object> \u6807\u8bb0\u9700\u8981\u4ee3\u7801\u5c5e\u6027\u3002"},
-            {"appletviewer.parse.warning.object.requiresheight", "\u8b66\u544a\uff1a<object> \u6807\u8bb0\u9700\u8981\u9ad8\u5ea6\u5c5e\u6027\u3002"},
-            {"appletviewer.parse.warning.object.requireswidth", "\u8b66\u544a\uff1a<object> \u6807\u8bb0\u9700\u8981\u5bbd\u5ea6\u5c5e\u6027\u3002"},
-            {"appletviewer.parse.warning.embed.requirescode", "\u8b66\u544a\uff1a <embed> \u6807\u8bb0\u9700\u8981\u4ee3\u7801\u5c5e\u6027\u3002"},
-            {"appletviewer.parse.warning.embed.requiresheight", "\u8b66\u544a\uff1a <embed> \u6807\u8bb0\u9700\u8981\u9ad8\u5ea6\u5c5e\u6027\u3002"},
-            {"appletviewer.parse.warning.embed.requireswidth", "\u8b66\u544a\uff1a <embed> \u6807\u8bb0\u9700\u8981\u5bbd\u5ea6\u5c5e\u6027\u3002"},
-            {"appletviewer.parse.warning.appnotLongersupported", "\u8b66\u544a\uff1a \u4e0d\u518d\u652f\u6301 <app> \u6807\u8bb0\uff0c\u8bf7\u4f7f\u7528 <applet> \uff1a"},
-            {"appletviewer.usage", "\u7528\u6cd5\uff1aappletviewer <options> url(s)\n\n\u5176\u4e2d\uff0c<options> \u5305\u62ec\uff1a\n  -debug                  \u5728 Java \u8c03\u8bd5\u5668\u4e2d\u542f\u52a8 applet \u5c0f\u7a0b\u5e8f\u67e5\u770b\u5668\n  -encoding <encoding>    \u6307\u5b9a\u7531 HTML \u6587\u4ef6\u4f7f\u7528\u7684\u5b57\u7b26\u7f16\u7801\n  -J<runtime flag>        \u5411 Java \u89e3\u91ca\u5668\u4f20\u9012\u53c2\u6570\n\n-J \u9009\u9879\u4e0d\u662f\u6807\u51c6\u9009\u9879\uff0c\u5982\u6709\u66f4\u6539\uff0c\u4e0d\u53e6\u884c\u901a\u77e5\u3002"},
-            {"appletviewer.main.err.unsupportedopt", "\u4e0d\u652f\u6301\u7684\u9009\u9879\uff1a{0}"},
-            {"appletviewer.main.err.unrecognizedarg", "\u4e0d\u53ef\u8bc6\u522b\u7684\u53c2\u6570\uff1a{0}"},
-            {"appletviewer.main.err.dupoption", "\u91cd\u590d\u4f7f\u7528\u7684\u9009\u9879\uff1a{0}"},
-            {"appletviewer.main.err.inputfile", "\u6ca1\u6709\u6307\u5b9a\u8f93\u5165\u6587\u4ef6\u3002"},
-            {"appletviewer.main.err.badurl", "URL \u9519\u8bef\uff1a{0} ( {1} )"},
-            {"appletviewer.main.err.io", "\u8fdb\u884c\u8bfb\u53d6\u65f6\u51fa\u73b0 I/O \u5f02\u5e38\uff1a {0}"},
-            {"appletviewer.main.err.readablefile", "\u786e\u4fdd {0} \u662f\u4e00\u4e2a\u6587\u4ef6\uff0c\u5e76\u4e14\u662f\u53ef\u8bfb\u7684\u3002"},
-            {"appletviewer.main.err.correcturl", "{0} \u662f\u5426\u662f\u6b63\u786e\u7684 URL\uff1f"},
-            {"appletviewer.main.prop.store", "\u7528\u6237\u6307\u5b9a\u7684 AppletViewer \u5c5e\u6027"},
-            {"appletviewer.main.err.prop.cantread", "\u4e0d\u80fd\u8bfb\u53d6\u7528\u6237\u5c5e\u6027\u6587\u4ef6\uff1a{0}"},
-            {"appletviewer.main.err.prop.cantsave", "\u4e0d\u80fd\u4fdd\u5b58\u7528\u6237\u5c5e\u6027\u6587\u4ef6\uff1a{0}"},
-            {"appletviewer.main.warn.nosecmgr", "\u8b66\u544a\uff1a \u7981\u7528\u5b89\u5168\u63a7\u5236"},
-            {"appletviewer.main.debug.cantfinddebug", "\u6ca1\u6709\u627e\u5230\u8c03\u8bd5\u5668\uff01"},
-            {"appletviewer.main.debug.cantfindmain", "\u5728\u8c03\u8bd5\u5668\u4e2d\u6ca1\u6709\u627e\u5230\u4e3b\u51fd\u6570\uff01"},
-            {"appletviewer.main.debug.exceptionindebug", "\u5728\u8c03\u8bd5\u5668\u4e2d\u53d1\u751f\u5f02\u5e38\uff01"},
-            {"appletviewer.main.debug.cantaccess", "\u4e0d\u80fd\u8bbf\u95ee\u8c03\u8bd5\u5668\uff01"},
-            {"appletviewer.main.nosecmgr", "\u8b66\u544a\uff1a\u6ca1\u6709\u5b89\u88c5 SecurityManager\uff01"},
-            {"appletviewer.main.warning", "\u8b66\u544a\uff1a\u6ca1\u6709\u542f\u52a8\u4efb\u4f55\u5c0f\u7a0b\u5e8f\u3002\u8bf7\u786e\u4fdd\u8f93\u5165\u4e2d\u5305\u542b <applet> \u6807\u8bb0\u3002"},
-            {"appletviewer.main.warn.prop.overwrite", "\u8b66\u544a\uff1a\u5e94\u7528\u6237\u8bf7\u6c42\u4e34\u65f6\u8986\u76d6\u7cfb\u7edf\u5c5e\u6027\uff1a\u5173\u952e\u5b57\uff1a{0} \u65e7\u503c\uff1a{1} \u65b0\u503c\uff1a{2}"},
-            {"appletviewer.main.warn.cantreadprops", "\u8b66\u544a\uff1a\u4e0d\u80fd\u8bfb\u53d6 AppletViewer \u7684\u5c5e\u6027\u6587\u4ef6\uff1a {0} \u4f7f\u7528\u9ed8\u8ba4\u503c\u3002"},
-            {"appletioexception.loadclass.throw.interrupted", "\u7c7b\u8f7d\u5165\u88ab\u4e2d\u65ad\uff1a{0}"},
-            {"appletioexception.loadclass.throw.notloaded", "\u672a\u8f7d\u5165\u7c7b\uff1a{0}"},
-            {"appletclassloader.loadcode.verbose", "\u6b63\u5728\u6253\u5f00\u6d41\u5230\uff1a {0} \u4ee5\u83b7\u53d6 {1}"},
-            {"appletclassloader.filenotfound", "\u67e5\u627e\u65f6\u627e\u4e0d\u5230\u6587\u4ef6\uff1a{0}"},
-            {"appletclassloader.fileformat", "\u8f7d\u5165\u65f6\u5f15\u53d1\u6587\u4ef6\u683c\u5f0f\u5f02\u5e38\uff1a{0}"},
-            {"appletclassloader.fileioexception", "\u8f7d\u5165\u65f6\u5f15\u53d1\u51fa\u73b0 I/O \u5f02\u5e38\uff1a{0}"},
-            {"appletclassloader.fileexception", "\u8f7d\u5165\u65f6\u5f15\u53d1 {0} \u5f02\u5e38\uff1a{1}"},
-            {"appletclassloader.filedeath", "\u8f7d\u5165\u65f6 {0} \u88ab\u53d6\u6d88\uff1a{1}"},
-            {"appletclassloader.fileerror", "\u8f7d\u5165\u65f6 {0} \u51fa\u9519\uff1a{1}"},
-            {"appletclassloader.findclass.verbose.findclass", "{0} \u67e5\u627e\u7c7b {1}"},
-            {"appletclassloader.findclass.verbose.openstream", "\u6b63\u5728\u6253\u5f00\u6d41\u5230\uff1a {0} \u4ee5\u83b7\u53d6 {1}"},
-            {"appletclassloader.getresource.verbose.forname", "\u7528\u4e8e\u540d\u79f0\u7684 AppletClassLoader.getResource\uff1a {0} "},
-            {"appletclassloader.getresource.verbose.found", "\u5df2\u627e\u5230\u7684\u8d44\u6e90\uff1a{0} \u4f5c\u4e3a\u7cfb\u7edf\u8d44\u6e90"},
-            {"appletclassloader.getresourceasstream.verbose", "\u5df2\u627e\u5230\u7684\u8d44\u6e90\uff1a{0} \u4f5c\u4e3a\u7cfb\u7edf\u8d44\u6e90"},
-            {"appletpanel.runloader.err", "\u5bf9\u8c61\u6216\u4ee3\u7801\u53c2\u6570\uff01"},
-            {"appletpanel.runloader.exception", "\u5e76\u884c\u5316 {0} \u65f6\u5f15\u53d1\u5f02\u5e38"},
-            {"appletpanel.destroyed", "\u5c0f\u7a0b\u5e8f\u5df2\u9500\u6bc1\u3002"},
-            {"appletpanel.loaded", "\u5c0f\u7a0b\u5e8f\u5df2\u8f7d\u5165\u3002"},
-            {"appletpanel.started", "\u5c0f\u7a0b\u5e8f\u5df2\u542f\u52a8\u3002"},
-            {"appletpanel.inited", "\u5c0f\u7a0b\u5e8f\u5df2\u521d\u59cb\u5316\u3002"},
-            {"appletpanel.stopped", "\u5c0f\u7a0b\u5e8f\u5df2\u505c\u6b62\u3002"},
-            {"appletpanel.disposed", "\u5c0f\u7a0b\u5e8f\u5df2\u64a4\u6d88\u3002"},
-            {"appletpanel.nocode", "APPLET \u6807\u8bb0\u4e22\u5931 CODE \u53c2\u6570\u3002"},
-            {"appletpanel.notfound", "\u8f7d\u5165\uff1a\u627e\u4e0d\u5230\u7c7b {0}\u3002"},
-            {"appletpanel.nocreate", "\u8f7d\u5165\uff1a\u65e0\u6cd5\u5b9e\u4f8b\u5316 {0}\u3002"},
-            {"appletpanel.noconstruct", "\u8f7d\u5165\uff1a{0} \u4e0d\u662f public \u5bf9\u8c61\u6216\u6ca1\u6709\u516c\u5171\u6784\u9020\u51fd\u6570\u3002"},
-            {"appletpanel.death", "\u5df2\u7ec8\u6b62"},
-            {"appletpanel.exception", "\u5f02\u5e38\uff1a {0}\u3002"},
-            {"appletpanel.exception2", "\u5f02\u5e38\uff1a{0}: {1}\u3002"},
-            {"appletpanel.error", "\u9519\u8bef\uff1a{0}\u3002"},
-            {"appletpanel.error2", "\u9519\u8bef\uff1a{0}: {1}\u3002"},
-            {"appletpanel.notloaded", "\u521d\u59cb\u5316\uff1a \u672a\u8f7d\u5165\u5c0f\u7a0b\u5e8f\u3002"},
-            {"appletpanel.notinited", "\u542f\u52a8\uff1a \u672a\u521d\u59cb\u5316\u5c0f\u7a0b\u5e8f\u3002"},
-            {"appletpanel.notstarted", "\u505c\u6b62\uff1a \u672a\u542f\u52a8\u5c0f\u7a0b\u5e8f\u3002"},
-            {"appletpanel.notstopped", "\u9500\u6bc1\uff1a \u672a\u505c\u6b62\u5c0f\u7a0b\u5e8f\u3002"},
-            {"appletpanel.notdestroyed", "\u64a4\u6d88\uff1a \u672a\u9500\u6bc1\u5c0f\u7a0b\u5e8f\u3002"},
-            {"appletpanel.notdisposed", "\u8f7d\u5165\uff1a \u672a\u64a4\u6d88\u5c0f\u7a0b\u5e8f\u3002"},
-            {"appletpanel.bail", "\u5df2\u4e2d\u65ad\uff1a\u6b63\u5728\u8df3\u51fa\u3002"},
-            {"appletpanel.filenotfound", "\u67e5\u627e\u65f6\u627e\u4e0d\u5230\u6587\u4ef6\uff1a {0}"},
-            {"appletpanel.fileformat", "\u8f7d\u5165\u65f6\u53d1\u751f\u6587\u4ef6\u683c\u5f0f\u5f02\u5e38\uff1a {0}"},
-            {"appletpanel.fileioexception", "\u8f7d\u5165\u65f6\u53d1\u751f I/O \u5f02\u5e38\uff1a {0}"},
-            {"appletpanel.fileexception", "\u8f7d\u5165 {1} \u65f6\u53d1\u751f {0} \u5f02\u5e38"},
-            {"appletpanel.filedeath", "\u8f7d\u5165 {1} \u65f6\u7ec8\u6b62 {0}"},
-            {"appletpanel.fileerror", "\u8f7d\u5165 {1} \u65f6 {0} \u51fa\u9519"},
-            {"appletpanel.badattribute.exception", "HTML \u89e3\u6790: \u5bbd\u5ea6/\u9ad8\u5ea6\u5c5e\u6027\u503c\u4e0d\u6b63\u786e"},
-            {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream \u9700\u8981\u975e\u7a7a\u8f7d\u5165\u7a0b\u5e8f"},
-            {"appletprops.title", "AppletViewer \u5c5e\u6027"},
-            {"appletprops.label.http.server", "Http \u4ee3\u7406\u670d\u52a1\u5668\uff1a"},
-            {"appletprops.label.http.proxy", "Http \u4ee3\u7406\u670d\u52a1\u5668\u7aef\u53e3\uff1a"},
-            {"appletprops.label.network", "\u7f51\u7edc\u8bbf\u95ee\uff1a"},
-            {"appletprops.choice.network.item.none", "\u65e0"},
-            {"appletprops.choice.network.item.applethost", "\u5c0f\u7a0b\u5e8f\u4e3b\u673a"},
-            {"appletprops.choice.network.item.unrestricted", "\u65e0\u9650\u5236"},
-            {"appletprops.label.class", "\u7c7b\u8bbf\u95ee\uff1a"},
-            {"appletprops.choice.class.item.restricted", "\u6709\u9650\u5236"},
-            {"appletprops.choice.class.item.unrestricted", "\u65e0\u9650\u5236"},
-            {"appletprops.label.unsignedapplet", "\u5141\u8bb8\u4f7f\u7528\u65e0\u7b7e\u540d\u7684\u5c0f\u7a0b\u5e8f\uff1a"},
+            {"appletviewer.menuitem.props", "\u5C5E\u6027..."},
+            {"appletviewer.menuitem.close", "\u5173\u95ED"},
+            {"appletviewer.menuitem.quit", "\u9000\u51FA"},
+            {"appletviewer.label.hello", "\u60A8\u597D..."},
+            {"appletviewer.status.start", "\u6B63\u5728\u542F\u52A8\u5C0F\u5E94\u7528\u7A0B\u5E8F..."},
+            {"appletviewer.appletsave.filedialogtitle","\u5C06\u5C0F\u5E94\u7528\u7A0B\u5E8F\u5E8F\u5217\u5316\u4E3A\u6587\u4EF6"},
+            {"appletviewer.appletsave.err1", "\u5C06{0}\u5E8F\u5217\u5316\u4E3A{1}"},
+            {"appletviewer.appletsave.err2", "\u5728 appletSave \u4E2D: {0}"},
+            {"appletviewer.applettag", "\u663E\u793A\u7684\u6807\u8BB0"},
+            {"appletviewer.applettag.textframe", "\u5C0F\u5E94\u7528\u7A0B\u5E8F HTML \u6807\u8BB0"},
+            {"appletviewer.appletinfo.applet", "-- \u6CA1\u6709\u5C0F\u5E94\u7528\u7A0B\u5E8F\u4FE1\u606F --"},
+            {"appletviewer.appletinfo.param", "-- \u6CA1\u6709\u53C2\u6570\u4FE1\u606F --"},
+            {"appletviewer.appletinfo.textframe", "\u5C0F\u5E94\u7528\u7A0B\u5E8F\u4FE1\u606F"},
+            {"appletviewer.appletprint.fail", "\u6253\u5370\u5931\u8D25\u3002"},
+            {"appletviewer.appletprint.finish", "\u5DF2\u5B8C\u6210\u6253\u5370\u3002"},
+            {"appletviewer.appletprint.cancel", "\u6253\u5370\u5DF2\u53D6\u6D88\u3002"},
+            {"appletviewer.appletencoding", "\u5B57\u7B26\u7F16\u7801: {0}"},
+            {"appletviewer.parse.warning.requiresname", "\u8B66\u544A: <param name=... value=...> \u6807\u8BB0\u9700\u8981\u540D\u79F0\u5C5E\u6027\u3002"},
+            {"appletviewer.parse.warning.paramoutside", "\u8B66\u544A: <param> \u6807\u8BB0\u5728 <applet> ... </applet> \u5916\u90E8\u3002"},
+            {"appletviewer.parse.warning.applet.requirescode", "\u8B66\u544A: <applet> \u6807\u8BB0\u9700\u8981\u4EE3\u7801\u5C5E\u6027\u3002"},
+            {"appletviewer.parse.warning.applet.requiresheight", "\u8B66\u544A: <applet> \u6807\u8BB0\u9700\u8981\u9AD8\u5EA6\u5C5E\u6027\u3002"},
+            {"appletviewer.parse.warning.applet.requireswidth", "\u8B66\u544A: <applet> \u6807\u8BB0\u9700\u8981\u5BBD\u5EA6\u5C5E\u6027\u3002"},
+            {"appletviewer.parse.warning.object.requirescode", "\u8B66\u544A: <object> \u6807\u8BB0\u9700\u8981\u4EE3\u7801\u5C5E\u6027\u3002"},
+            {"appletviewer.parse.warning.object.requiresheight", "\u8B66\u544A: <object> \u6807\u8BB0\u9700\u8981\u9AD8\u5EA6\u5C5E\u6027\u3002"},
+            {"appletviewer.parse.warning.object.requireswidth", "\u8B66\u544A: <object> \u6807\u8BB0\u9700\u8981\u5BBD\u5EA6\u5C5E\u6027\u3002"},
+            {"appletviewer.parse.warning.embed.requirescode", "\u8B66\u544A: <embed> \u6807\u8BB0\u9700\u8981\u4EE3\u7801\u5C5E\u6027\u3002"},
+            {"appletviewer.parse.warning.embed.requiresheight", "\u8B66\u544A: <embed> \u6807\u8BB0\u9700\u8981\u9AD8\u5EA6\u5C5E\u6027\u3002"},
+            {"appletviewer.parse.warning.embed.requireswidth", "\u8B66\u544A: <embed> \u6807\u8BB0\u9700\u8981\u5BBD\u5EA6\u5C5E\u6027\u3002"},
+            {"appletviewer.parse.warning.appnotLongersupported", "\u8B66\u544A: \u4E0D\u518D\u652F\u6301 <app> \u6807\u8BB0, \u8BF7\u6539\u7528 <applet>:"},
+            {"appletviewer.usage", "\u7528\u6CD5: appletviewer <options> url\n\n\u5176\u4E2D, <options> \u5305\u62EC:\n  -debug                  \u5728 Java \u8C03\u8BD5\u5668\u4E2D\u542F\u52A8\u5C0F\u5E94\u7528\u7A0B\u5E8F\u67E5\u770B\u5668\n  -encoding <encoding>    \u6307\u5B9A HTML \u6587\u4EF6\u4F7F\u7528\u7684\u5B57\u7B26\u7F16\u7801\n  -J<runtime flag>        \u5C06\u53C2\u6570\u4F20\u9012\u5230 java \u89E3\u91CA\u5668\n\n-J \u9009\u9879\u662F\u975E\u6807\u51C6\u9009\u9879, \u5982\u6709\u66F4\u6539, \u6055\u4E0D\u53E6\u884C\u901A\u77E5\u3002"},
+            {"appletviewer.main.err.unsupportedopt", "\u4E0D\u652F\u6301\u7684\u9009\u9879: {0}"},
+            {"appletviewer.main.err.unrecognizedarg", "\u65E0\u6CD5\u8BC6\u522B\u7684\u53C2\u6570: {0}"},
+            {"appletviewer.main.err.dupoption", "\u91CD\u590D\u4F7F\u7528\u9009\u9879: {0}"},
+            {"appletviewer.main.err.inputfile", "\u672A\u6307\u5B9A\u8F93\u5165\u6587\u4EF6\u3002"},
+            {"appletviewer.main.err.badurl", "\u9519\u8BEF URL: {0} ({1})"},
+            {"appletviewer.main.err.io", "\u8BFB\u53D6{0}\u65F6\u51FA\u73B0 I/O \u5F02\u5E38\u9519\u8BEF"},
+            {"appletviewer.main.err.readablefile", "\u786E\u4FDD{0}\u662F\u6587\u4EF6\u4E14\u53EF\u8BFB\u3002"},
+            {"appletviewer.main.err.correcturl", "{0} \u662F\u5426\u662F\u6B63\u786E\u7684 URL?"},
+            {"appletviewer.main.prop.store", "AppletViewer \u7684\u7528\u6237\u7279\u5B9A\u5C5E\u6027"},
+            {"appletviewer.main.err.prop.cantread", "\u65E0\u6CD5\u8BFB\u53D6\u7528\u6237\u5C5E\u6027\u6587\u4EF6: {0}"},
+            {"appletviewer.main.err.prop.cantsave", "\u65E0\u6CD5\u4FDD\u5B58\u7528\u6237\u5C5E\u6027\u6587\u4EF6: {0}"},
+            {"appletviewer.main.warn.nosecmgr", "\u8B66\u544A: \u7981\u7528\u5B89\u5168\u3002"},
+            {"appletviewer.main.debug.cantfinddebug", "\u627E\u4E0D\u5230\u8C03\u8BD5\u5668!"},
+            {"appletviewer.main.debug.cantfindmain", "\u5728\u8C03\u8BD5\u5668\u4E2D\u627E\u4E0D\u5230\u4E3B\u8981\u65B9\u6CD5!"},
+            {"appletviewer.main.debug.exceptionindebug", "\u8C03\u8BD5\u5668\u4E2D\u5B58\u5728\u5F02\u5E38\u9519\u8BEF!"},
+            {"appletviewer.main.debug.cantaccess", "\u65E0\u6CD5\u8BBF\u95EE\u8C03\u8BD5\u5668!"},
+            {"appletviewer.main.nosecmgr", "\u8B66\u544A: \u672A\u5B89\u88C5 SecurityManager!"},
+            {"appletviewer.main.warning", "\u8B66\u544A: \u672A\u542F\u52A8\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002\u786E\u4FDD\u8F93\u5165\u5305\u542B <applet> \u6807\u8BB0\u3002"},
+            {"appletviewer.main.warn.prop.overwrite", "\u8B66\u544A: \u6839\u636E\u7528\u6237\u8BF7\u6C42\u4E34\u65F6\u8986\u76D6\u7CFB\u7EDF\u5C5E\u6027: \u5173\u952E\u5B57: {0}, \u65E7\u503C: {1}, \u65B0\u503C: {2}"},
+            {"appletviewer.main.warn.cantreadprops", "\u8B66\u544A: \u65E0\u6CD5\u8BFB\u53D6 AppletViewer \u5C5E\u6027\u6587\u4EF6: {0}\u3002\u8BF7\u4F7F\u7528\u9ED8\u8BA4\u503C\u3002"},
+            {"appletioexception.loadclass.throw.interrupted", "\u7C7B\u52A0\u8F7D\u4E2D\u65AD: {0}"},
+            {"appletioexception.loadclass.throw.notloaded", "\u672A\u52A0\u8F7D\u7C7B: {0}"},
+            {"appletclassloader.loadcode.verbose", "\u6253\u5F00\u5230{0}\u7684\u6D41\u4EE5\u83B7\u53D6{1}"},
+            {"appletclassloader.filenotfound", "\u67E5\u627E\u65F6\u627E\u4E0D\u5230\u6587\u4EF6: {0}"},
+            {"appletclassloader.fileformat", "\u52A0\u8F7D\u65F6\u51FA\u73B0\u6587\u4EF6\u683C\u5F0F\u5F02\u5E38\u9519\u8BEF: {0}"},
+            {"appletclassloader.fileioexception", "\u52A0\u8F7D\u65F6\u51FA\u73B0 I/O \u5F02\u5E38\u9519\u8BEF: {0}"},
+            {"appletclassloader.fileexception", "\u52A0\u8F7D\u65F6\u51FA\u73B0{0}\u5F02\u5E38\u9519\u8BEF: {1}"},
+            {"appletclassloader.filedeath", "\u52A0\u8F7D\u65F6\u5DF2\u7EC8\u6B62{0}: {1}"},
+            {"appletclassloader.fileerror", "\u52A0\u8F7D\u65F6\u51FA\u73B0{0}\u9519\u8BEF: {1}"},
+            {"appletclassloader.findclass.verbose.findclass", "{0}\u627E\u5230\u7C7B{1}"},
+            {"appletclassloader.findclass.verbose.openstream", "\u6253\u5F00\u5230{0}\u7684\u6D41\u4EE5\u83B7\u53D6{1}"},
+            {"appletclassloader.getresource.verbose.forname", "\u540D\u79F0\u7684 AppletClassLoader.getResource: {0}"},
+            {"appletclassloader.getresource.verbose.found", "\u5DF2\u627E\u5230\u4F5C\u4E3A\u7CFB\u7EDF\u8D44\u6E90\u7684\u8D44\u6E90{0}"},
+            {"appletclassloader.getresourceasstream.verbose", "\u5DF2\u627E\u5230\u4F5C\u4E3A\u7CFB\u7EDF\u8D44\u6E90\u7684\u8D44\u6E90{0}"},
+            {"appletpanel.runloader.err", "\u5BF9\u8C61\u6216\u4EE3\u7801\u53C2\u6570!"},
+            {"appletpanel.runloader.exception", "\u53CD\u5E8F\u5217\u5316{0}\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF"},
+            {"appletpanel.destroyed", "\u5DF2\u9500\u6BC1\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002"},
+            {"appletpanel.loaded", "\u5DF2\u52A0\u8F7D\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002"},
+            {"appletpanel.started", "\u5DF2\u542F\u52A8\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002"},
+            {"appletpanel.inited", "\u5DF2\u521D\u59CB\u5316\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002"},
+            {"appletpanel.stopped", "\u5DF2\u505C\u6B62\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002"},
+            {"appletpanel.disposed", "\u5DF2\u5904\u7406\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002"},
+            {"appletpanel.nocode", "APPLET \u6807\u8BB0\u7F3A\u5C11 CODE \u53C2\u6570\u3002"},
+            {"appletpanel.notfound", "\u52A0\u8F7D: \u627E\u4E0D\u5230\u7C7B{0}\u3002"},
+            {"appletpanel.nocreate", "\u52A0\u8F7D: \u65E0\u6CD5\u5B9E\u4F8B\u5316{0}\u3002"},
+            {"appletpanel.noconstruct", "\u52A0\u8F7D: {0}\u4E0D\u662F\u516C\u5171\u7684, \u6216\u8005\u6CA1\u6709\u516C\u5171\u6784\u9020\u5668\u3002"},
+            {"appletpanel.death", "\u5DF2\u7EC8\u6B62"},
+            {"appletpanel.exception", "\u5F02\u5E38\u9519\u8BEF: {0}\u3002"},
+            {"appletpanel.exception2", "\u5F02\u5E38\u9519\u8BEF: {0}: {1}\u3002"},
+            {"appletpanel.error", "\u9519\u8BEF: {0}\u3002"},
+            {"appletpanel.error2", "\u9519\u8BEF: {0}: {1}\u3002"},
+            {"appletpanel.notloaded", "\u521D\u59CB\u5316: \u672A\u52A0\u8F7D\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002"},
+            {"appletpanel.notinited", "\u542F\u52A8: \u672A\u521D\u59CB\u5316\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002"},
+            {"appletpanel.notstarted", "\u505C\u6B62: \u672A\u542F\u52A8\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002"},
+            {"appletpanel.notstopped", "\u9500\u6BC1: \u672A\u505C\u6B62\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002"},
+            {"appletpanel.notdestroyed", "\u5904\u7406: \u672A\u9500\u6BC1\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002"},
+            {"appletpanel.notdisposed", "\u52A0\u8F7D: \u672A\u5904\u7406\u5C0F\u5E94\u7528\u7A0B\u5E8F\u3002"},
+            {"appletpanel.bail", "\u5DF2\u4E2D\u65AD: \u79BB\u5F00\u3002"},
+            {"appletpanel.filenotfound", "\u67E5\u627E\u65F6\u627E\u4E0D\u5230\u6587\u4EF6: {0}"},
+            {"appletpanel.fileformat", "\u52A0\u8F7D\u65F6\u51FA\u73B0\u6587\u4EF6\u683C\u5F0F\u5F02\u5E38\u9519\u8BEF: {0}"},
+            {"appletpanel.fileioexception", "\u52A0\u8F7D\u65F6\u51FA\u73B0 I/O \u5F02\u5E38\u9519\u8BEF: {0}"},
+            {"appletpanel.fileexception", "\u52A0\u8F7D\u65F6\u51FA\u73B0{0}\u5F02\u5E38\u9519\u8BEF: {1}"},
+            {"appletpanel.filedeath", "\u52A0\u8F7D\u65F6\u5DF2\u7EC8\u6B62{0}: {1}"},
+            {"appletpanel.fileerror", "\u52A0\u8F7D\u65F6\u51FA\u73B0{0}\u9519\u8BEF: {1}"},
+            {"appletpanel.badattribute.exception", "HTML \u8BED\u6CD5\u5206\u6790: \u5BBD\u5EA6/\u9AD8\u5EA6\u5C5E\u6027\u7684\u503C\u4E0D\u6B63\u786E"},
+            {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream \u9700\u8981\u975E\u7A7A\u52A0\u8F7D\u5668"},
+            {"appletprops.title", "AppletViewer \u5C5E\u6027"},
+            {"appletprops.label.http.server", "Http \u4EE3\u7406\u670D\u52A1\u5668:"},
+            {"appletprops.label.http.proxy", "Http \u4EE3\u7406\u7AEF\u53E3:"},
+            {"appletprops.label.network", "\u7F51\u7EDC\u8BBF\u95EE\u6743\u9650:"},
+            {"appletprops.choice.network.item.none", "\u65E0"},
+            {"appletprops.choice.network.item.applethost", "\u5C0F\u5E94\u7528\u7A0B\u5E8F\u4E3B\u673A"},
+            {"appletprops.choice.network.item.unrestricted", "\u4E0D\u53D7\u9650\u5236"},
+            {"appletprops.label.class", "\u7C7B\u8BBF\u95EE\u6743\u9650:"},
+            {"appletprops.choice.class.item.restricted", "\u53D7\u9650\u5236"},
+            {"appletprops.choice.class.item.unrestricted", "\u4E0D\u53D7\u9650\u5236"},
+            {"appletprops.label.unsignedapplet", "\u5141\u8BB8\u672A\u7B7E\u540D\u5C0F\u5E94\u7528\u7A0B\u5E8F:"},
             {"appletprops.choice.unsignedapplet.no", "\u5426"},
-            {"appletprops.choice.unsignedapplet.yes", "\u662f"},
-            {"appletprops.button.apply", "\u5e94\u7528"},
-            {"appletprops.button.cancel", "\u53d6\u6d88"},
-            {"appletprops.button.reset", "\u91cd\u8bbe"},
-            {"appletprops.apply.exception", "\u4fdd\u5b58\u5c5e\u6027\u65f6\u5931\u8d25\uff1a {0}"},
+            {"appletprops.choice.unsignedapplet.yes", "\u662F"},
+            {"appletprops.button.apply", "\u5E94\u7528"},
+            {"appletprops.button.cancel", "\u53D6\u6D88"},
+            {"appletprops.button.reset", "\u91CD\u8BBE"},
+            {"appletprops.apply.exception", "\u65E0\u6CD5\u4FDD\u5B58\u5C5E\u6027: {0}"},
             /* 4066432 */
-            {"appletprops.title.invalidproxy", "\u65e0\u6548\u7684\u9879\u76ee"},
-            {"appletprops.label.invalidproxy", "\u4ee3\u7406\u670d\u52a1\u5668\u7684\u7aef\u53e3\u53f7\u5fc5\u987b\u662f\u4e00\u4e2a\u6b63\u6574\u6570\u503c\u3002"},
-            {"appletprops.button.ok", "\u786e\u5b9a"},
+            {"appletprops.title.invalidproxy", "\u6761\u76EE\u65E0\u6548"},
+            {"appletprops.label.invalidproxy", "\u4EE3\u7406\u7AEF\u53E3\u5FC5\u987B\u662F\u4E00\u4E2A\u6B63\u6574\u6570\u503C\u3002"},
+            {"appletprops.button.ok", "\u786E\u5B9A"},
             /* end 4066432 */
-            {"appletprops.prop.store", "AppletViewer \u7684\u7528\u6237\u7279\u6709\u5c5e\u6027"},
-            {"appletsecurityexception.checkcreateclassloader", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u7c7b\u8f7d\u5165\u7a0b\u5e8f"},
-            {"appletsecurityexception.checkaccess.thread", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u7ebf\u7a0b "},
-            {"appletsecurityexception.checkaccess.threadgroup", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a \u7ebf\u7a0b\u7ec4\uff1a {0}"},
-            {"appletsecurityexception.checkexit", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u9000\u51fa\uff1a {0}"},
-            {"appletsecurityexception.checkexec", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u6267\u884c\uff1a {0}"},
-            {"appletsecurityexception.checklink", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u8fde\u63a5\uff1a {0}"},
-            {"appletsecurityexception.checkpropsaccess", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u5c5e\u6027"},
-            {"appletsecurityexception.checkpropsaccess.key", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u5c5e\u6027\u8bbf\u95ee {0}"},
-            {"appletsecurityexception.checkread.exception1", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a{0}, {1}"},
-            {"appletsecurityexception.checkread.exception2", "\u5b89\u5168\u6027\u5f02\u5e38\uff1afile.read: {0}"},
-            {"appletsecurityexception.checkread", "\u5b89\u5168\u6027\u5f02\u5e38\uff1afile.read: {0} == {1}"},
-            {"appletsecurityexception.checkwrite.exception", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a{0}, {1}"},
-            {"appletsecurityexception.checkwrite", "\u5b89\u5168\u6027\u5f02\u5e38\uff1afile.write: {0} == {1}"},
-            {"appletsecurityexception.checkread.fd", "\u5b89\u5168\u6027\u5f02\u5e38\uff1afd.read"},
-            {"appletsecurityexception.checkwrite.fd", "\u5b89\u5168\u6027\u5f02\u5e38\uff1afd.write"},
-            {"appletsecurityexception.checklisten", "\u5b89\u5168\u6027\u5f02\u5e38\uff1asocket.listen: {0}"},
-            {"appletsecurityexception.checkaccept", "\u5b89\u5168\u6027\u5f02\u5e38\uff1asocket.accept: {0}:{1}"},
-            {"appletsecurityexception.checkconnect.networknone", "\u5b89\u5168\u6027\u5f02\u5e38\uff1asocket.connect: {0}->{1}"},
-            {"appletsecurityexception.checkconnect.networkhost1", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u65e0\u6cd5\u7528\u6765\u81ea {1} \u7684\u6e90\u8fde\u63a5\u5230 {0}\u3002"},
-            {"appletsecurityexception.checkconnect.networkhost2", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u65e0\u6cd5\u89e3\u6790\u4e3b\u673a {0} \u6216 {1} \u7684 IP\u3002"},
-            {"appletsecurityexception.checkconnect.networkhost3", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u65e0\u6cd5\u89e3\u6790\u4e3b\u673a {0} \u7684 IP\u3002\u8bf7\u53c2\u89c1\u5c5e\u6027 trustProxy\u3002"},
-            {"appletsecurityexception.checkconnect", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a \u8fde\u63a5: {0}->{1}"},
-            {"appletsecurityexception.checkpackageaccess", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u65e0\u6cd5\u8bbf\u95ee\u7a0b\u5e8f\u5305\uff1a{0}"},
-            {"appletsecurityexception.checkpackagedefinition", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u65e0\u6cd5\u5b9a\u4e49\u7a0b\u5e8f\u5305\uff1a{0}"},
-            {"appletsecurityexception.cannotsetfactory", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u65e0\u6cd5\u8bbe\u7f6e\u5de5\u5382"},
-            {"appletsecurityexception.checkmemberaccess", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u68c0\u67e5\u6210\u5458\u8bbf\u95ee"},
-            {"appletsecurityexception.checkgetprintjob", "\u5b89\u5168\u6027\u5f02\u5e38\uff1agetPrintJob"},
-            {"appletsecurityexception.checksystemclipboardaccess", "\u5b89\u5168\u6027\u5f02\u5e38\uff1agetSystemClipboard"},
-            {"appletsecurityexception.checkawteventqueueaccess", "\u5b89\u5168\u6027\u5f02\u5e38\uff1agetEventQueue"},
-            {"appletsecurityexception.checksecurityaccess", "\u5b89\u5168\u6027\u5f02\u5e38\uff1a\u5b89\u5168\u64cd\u4f5c {0}"},
-            {"appletsecurityexception.getsecuritycontext.unknown", "\u672a\u77e5\u7684\u7c7b\u8f7d\u5165\u7a0b\u5e8f\u7c7b\u578b\u3002\u65e0\u6cd5\u68c0\u67e5 getContext"},
-            {"appletsecurityexception.checkread.unknown", "\u672a\u77e5\u7684\u7c7b\u8f7d\u5165\u7a0b\u5e8f\u7c7b\u578b\u3002\u65e0\u6cd5\u68c0\u67e5\u7531\u68c0\u67e5\u8bfb {0} \u751f\u6210\u7684\u7ed3\u679c"},
-            {"appletsecurityexception.checkconnect.unknown", "\u672a\u77e5\u7684\u7c7b\u8f7d\u5165\u7a0b\u5e8f\u7c7b\u578b\u3002\u65e0\u6cd5\u68c0\u67e5\u7531\u68c0\u67e5\u8fde\u63a5\u751f\u6210\u7684\u7ed3\u679c"},
+            {"appletprops.prop.store", "AppletViewer \u7684\u7528\u6237\u7279\u5B9A\u5C5E\u6027"},
+            {"appletsecurityexception.checkcreateclassloader", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u7C7B\u52A0\u8F7D\u5668"},
+            {"appletsecurityexception.checkaccess.thread", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u7EBF\u7A0B"},
+            {"appletsecurityexception.checkaccess.threadgroup", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u7EBF\u7A0B\u7EC4: {0}"},
+            {"appletsecurityexception.checkexit", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u9000\u51FA: {0}"},
+            {"appletsecurityexception.checkexec", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u6267\u884C: {0}"},
+            {"appletsecurityexception.checklink", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u94FE\u63A5: {0}"},
+            {"appletsecurityexception.checkpropsaccess", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u5C5E\u6027"},
+            {"appletsecurityexception.checkpropsaccess.key", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u5C5E\u6027\u8BBF\u95EE{0}"},
+            {"appletsecurityexception.checkread.exception1", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: {0}, {1}"},
+            {"appletsecurityexception.checkread.exception2", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: file.read: {0}"},
+            {"appletsecurityexception.checkread", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: file.read: {0} == {1}"},
+            {"appletsecurityexception.checkwrite.exception", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: {0}, {1}"},
+            {"appletsecurityexception.checkwrite", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: file.write: {0} == {1}"},
+            {"appletsecurityexception.checkread.fd", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: fd.read"},
+            {"appletsecurityexception.checkwrite.fd", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: fd.write"},
+            {"appletsecurityexception.checklisten", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: socket.listen: {0}"},
+            {"appletsecurityexception.checkaccept", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: socket.accept: {0}:{1}"},
+            {"appletsecurityexception.checkconnect.networknone", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: socket.connect: {0}->{1}"},
+            {"appletsecurityexception.checkconnect.networkhost1", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u65E0\u6CD5\u8FDE\u63A5\u5230\u6E90\u81EA{1}\u7684{0}\u3002"},
+            {"appletsecurityexception.checkconnect.networkhost2", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u65E0\u6CD5\u89E3\u6790\u4E3B\u673A{0}\u6216{1}\u7684 IP\u3002"},
+            {"appletsecurityexception.checkconnect.networkhost3", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u65E0\u6CD5\u89E3\u6790\u4E3B\u673A{0}\u7684 IP\u3002\u8BF7\u53C2\u9605 trustProxy \u5C5E\u6027\u3002"},
+            {"appletsecurityexception.checkconnect", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u8FDE\u63A5: {0}->{1}"},
+            {"appletsecurityexception.checkpackageaccess", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u65E0\u6CD5\u8BBF\u95EE\u7A0B\u5E8F\u5305: {0}"},
+            {"appletsecurityexception.checkpackagedefinition", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u65E0\u6CD5\u5B9A\u4E49\u7A0B\u5E8F\u5305: {0}"},
+            {"appletsecurityexception.cannotsetfactory", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u65E0\u6CD5\u8BBE\u7F6E\u5DE5\u5382"},
+            {"appletsecurityexception.checkmemberaccess", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u68C0\u67E5\u6210\u5458\u8BBF\u95EE\u6743\u9650"},
+            {"appletsecurityexception.checkgetprintjob", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: getPrintJob"},
+            {"appletsecurityexception.checksystemclipboardaccess", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: getSystemClipboard"},
+            {"appletsecurityexception.checkawteventqueueaccess", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: getEventQueue"},
+            {"appletsecurityexception.checksecurityaccess", "\u5B89\u5168\u5F02\u5E38\u9519\u8BEF: \u5B89\u5168\u64CD\u4F5C: {0}"},
+            {"appletsecurityexception.getsecuritycontext.unknown", "\u7C7B\u52A0\u8F7D\u5668\u7C7B\u578B\u672A\u77E5\u3002\u65E0\u6CD5\u68C0\u67E5 getContext"},
+            {"appletsecurityexception.checkread.unknown", "\u7C7B\u52A0\u8F7D\u5668\u7C7B\u578B\u672A\u77E5\u3002\u65E0\u6CD5\u4E3A\u68C0\u67E5\u8BFB\u53D6\u6743\u9650{0}\u800C\u8FDB\u884C\u68C0\u67E5"},
+            {"appletsecurityexception.checkconnect.unknown", "\u7C7B\u52A0\u8F7D\u5668\u7C7B\u578B\u672A\u77E5\u3002\u65E0\u6CD5\u4E3A\u68C0\u67E5\u8FDE\u63A5\u800C\u8FDB\u884C\u68C0\u67E5"},
         };
+
+        return temp;
     }
 }
--- a/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_zh_TW.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/applet/resources/MsgAppletViewer_zh_TW.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2010, 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
@@ -29,173 +29,175 @@
 public class MsgAppletViewer_zh_TW extends ListResourceBundle {
 
     public Object[][] getContents() {
-        return new Object[][] {
-            {"textframe.button.dismiss", "\u95dc\u9589"},
-            {"appletviewer.tool.title", "Applet \u6aa2\u8996\u5668\uff1a{0}"},
+        Object[][] temp = new Object[][] {
+            {"textframe.button.dismiss", "\u95DC\u9589"},
+            {"appletviewer.tool.title", "Applet \u6AA2\u8996\u5668: {0}"},
             {"appletviewer.menu.applet", "Applet"},
-            {"appletviewer.menuitem.restart", "\u91cd\u65b0\u555f\u52d5"},
-            {"appletviewer.menuitem.reload", "\u91cd\u65b0\u8f09\u5165"},
-            {"appletviewer.menuitem.stop", "\u505c\u6b62"},
-            {"appletviewer.menuitem.save", "\u5132\u5b58..."},
-            {"appletviewer.menuitem.start", "\u555f\u52d5"},
-            {"appletviewer.menuitem.clone", "\u8907\u88fd..."},
-            {"appletviewer.menuitem.tag", "\u6a19\u7c64..."},
-            {"appletviewer.menuitem.info", "\u8cc7\u8a0a..."},
-            {"appletviewer.menuitem.edit", "\u7de8\u8f2f"},
-            {"appletviewer.menuitem.encoding", "\u5b57\u5143\u7de8\u78bc"},
+            {"appletviewer.menuitem.restart", "\u91CD\u65B0\u555F\u52D5"},
+            {"appletviewer.menuitem.reload", "\u91CD\u65B0\u8F09\u5165"},
+            {"appletviewer.menuitem.stop", "\u505C\u6B62"},
+            {"appletviewer.menuitem.save", "\u5132\u5B58..."},
+            {"appletviewer.menuitem.start", "\u555F\u52D5"},
+            {"appletviewer.menuitem.clone", "\u8907\u88FD..."},
+            {"appletviewer.menuitem.tag", "\u6A19\u8A18..."},
+            {"appletviewer.menuitem.info", "\u8CC7\u8A0A..."},
+            {"appletviewer.menuitem.edit", "\u7DE8\u8F2F"},
+            {"appletviewer.menuitem.encoding", "\u5B57\u5143\u7DE8\u78BC"},
             {"appletviewer.menuitem.print", "\u5217\u5370..."},
-            {"appletviewer.menuitem.props", "\u5c6c\u6027..."},
-            {"appletviewer.menuitem.close", "\u95dc\u9589"},
-            {"appletviewer.menuitem.quit", "\u7d50\u675f"},
-            {"appletviewer.label.hello", "Hello..."},
-            {"appletviewer.status.start", "\u555f\u52d5 applet..."},
-            {"appletviewer.appletsave.filedialogtitle","\u5c07 Applet \u4e32\u5217\u5316\u81f3\u6a94\u6848\u4e2d"},
-            {"appletviewer.appletsave.err1", "\u5c07 {0} \u4e32\u5217\u5316\u70ba {1}"},
-            {"appletviewer.appletsave.err2", "\u5728 appletSave\uff1a{0} \u4e2d"},
-            {"appletviewer.applettag", "\u986f\u793a\u7684\u6a19\u7c64"},
-            {"appletviewer.applettag.textframe", "Applet HTML \u6a19\u7c64"},
-            {"appletviewer.appletinfo.applet", "-- \u6c92\u6709 applet \u8cc7\u8a0a --"},
-            {"appletviewer.appletinfo.param", "-- \u6c92\u6709\u53c3\u6578\u8cc7\u8a0a --"},
-            {"appletviewer.appletinfo.textframe", "Applet \u8cc7\u8a0a"},
+            {"appletviewer.menuitem.props", "\u5C6C\u6027..."},
+            {"appletviewer.menuitem.close", "\u95DC\u9589"},
+            {"appletviewer.menuitem.quit", "\u7D50\u675F"},
+            {"appletviewer.label.hello", "\u60A8\u597D..."},
+            {"appletviewer.status.start", "\u6B63\u5728\u555F\u52D5 Applet..."},
+            {"appletviewer.appletsave.filedialogtitle","\u5C07 Applet \u5E8F\u5217\u5316\u70BA\u6A94\u6848"},
+            {"appletviewer.appletsave.err1", "\u5C07 {0} \u5E8F\u5217\u5316\u70BA {1}"},
+            {"appletviewer.appletsave.err2", "\u5728 appletSave \u4E2D: {0}"},
+            {"appletviewer.applettag", "\u986F\u793A\u7684\u6A19\u8A18"},
+            {"appletviewer.applettag.textframe", "Applet HTML \u6A19\u8A18"},
+            {"appletviewer.appletinfo.applet", "-- \u7121 Applet \u8CC7\u8A0A --"},
+            {"appletviewer.appletinfo.param", "-- \u7121\u53C3\u6578\u8CC7\u8A0A --"},
+            {"appletviewer.appletinfo.textframe", "Applet \u8CC7\u8A0A"},
             {"appletviewer.appletprint.fail", "\u5217\u5370\u5931\u6557\u3002"},
-            {"appletviewer.appletprint.finish", "\u7d50\u675f\u5217\u5370\u3002"},
-            {"appletviewer.appletprint.cancel", "\u53d6\u6d88\u5217\u5370\u3002"},
-            {"appletviewer.appletencoding", "\u5b57\u5143\u7de8\u78bc\uff1a{0}"},
-            {"appletviewer.parse.warning.requiresname", "\u8b66\u544a\uff1a <param name=... value=...> \u6a19\u7c64\u9700\u8981\u540d\u7a31\u5c6c\u6027\u3002"},
-            {"appletviewer.parse.warning.paramoutside", "\u8b66\u544a\uff1a<param> \u6a19\u7c64\u5728 <applet> ... </applet>\u4e4b\u5916\u3002"},
-            {"appletviewer.parse.warning.applet.requirescode", "\u8b66\u544a\uff1a<applet> \u6a19\u7c64\u9700\u8981\u7a0b\u5f0f\u78bc\u5c6c\u6027"},
-            {"appletviewer.parse.warning.applet.requiresheight", "\u8b66\u544a\uff1a<applet> \u6a19\u7c64\u9700\u8981\u9ad8\u5ea6\u5c6c\u6027\u3002"},
-            {"appletviewer.parse.warning.applet.requireswidth", "\u8b66\u544a\uff1a<applet> \u6a19\u7c64\u9700\u8981\u5bec\u5ea6\u5c6c\u6027\u3002"},
-            {"appletviewer.parse.warning.object.requirescode", "\u8b66\u544a\uff1a<object> \u6a19\u7c64\u9700\u8981\u7a0b\u5f0f\u78bc\u5c6c\u6027\u3002"},
-            {"appletviewer.parse.warning.object.requiresheight", "\u8b66\u544a\uff1a<object> \u6a19\u7c64\u9700\u8981\u9ad8\u5ea6\u5c6c\u6027\u3002"},
-            {"appletviewer.parse.warning.object.requireswidth", "\u8b66\u544a\uff1a<object> \u6a19\u7c64\u9700\u8981\u5bec\u5ea6\u5c6c\u6027\u3002"},
-            {"appletviewer.parse.warning.embed.requirescode", "\u8b66\u544a\uff1a<embed> \u6a19\u7c64\u9700\u8981\u7a0b\u5f0f\u78bc\u5c6c\u6027\u3002"},
-            {"appletviewer.parse.warning.embed.requiresheight", "\u8b66\u544a\uff1a<embed> \u6a19\u7c64\u9700\u8981\u9ad8\u5ea6\u5c6c\u6027\u3002"},
-            {"appletviewer.parse.warning.embed.requireswidth", "\u8b66\u544a\uff1a<embed> \u6a19\u7c64\u9700\u8981\u5bec\u5ea6\u5c6c\u6027"},
-            {"appletviewer.parse.warning.appnotLongersupported", "\u8b66\u544a\uff1a\u4e0d\u518d\u652f\u63f4 <app> \u6a19\u7c64\uff0c\u8acb\u6539\u7528 <applet> \u3002"},
-            {"appletviewer.usage", "\u4f7f\u7528\uff1aappletviewer <options> url(s)\n\n\u5176\u4e2d <options> \u5305\u542b:\n  -debug                  \u5728 JAVA \u9664\u932f\u4e2d\u555f\u52d5 applet \u6aa2\u8996\u5668\n  -encoding <encoding>    \u6307\u5b9a HTML \u6a94\u6848\u6240\u4f7f\u7528\u7684\u5b57\u5143\u7de8\u78bc\u65b9\u5f0f\n  -J<runtime flag>        \u5c07\u5f15\u6578\u50b3\u81f3 JAVA \u76f4\u8b6f\u7a0b\u5f0f\n\n -J \u9078\u9805\u4e26\u975e\u6a19\u6e96\u7684\uff0c\u800c\u4e14\u53d7\u6539\u8b8a\u63a7\u5236\u6642\u4e0d\u53e6\u884c\u901a\u77e5\u3002"},
-            {"appletviewer.main.err.unsupportedopt", "\u4e0d\u652f\u63f4\u7684\u9078\u9805\uff1a{0}"},
-            {"appletviewer.main.err.unrecognizedarg", "\u7121\u6cd5\u8fa8\u8b58\u7684\u5f15\u6578\uff1a{0}"},
-            {"appletviewer.main.err.dupoption", "\u91cd\u8907\u4f7f\u7528\u9078\u9805\uff1a{0}"},
-            {"appletviewer.main.err.inputfile", "\u672a\u6307\u5b9a\u8f38\u5165\u6a94\u6848\u3002"},
-            {"appletviewer.main.err.badurl", "\u932f\u8aa4\u7684 URL: {0} ( {1} )"},
-            {"appletviewer.main.err.io", "\u5728\u8b80\u53d6\u6642\u767c\u751f I/O \u7570\u5e38\uff1a{0}"},
-            {"appletviewer.main.err.readablefile", "\u8acb\u78ba\u5b9a {0} \u662f\u4e00\u500b\u6a94\u6848\u800c\u4e14\u53ef\u8b80\u53d6\u3002"},
-            {"appletviewer.main.err.correcturl", " {0} \u662f\u6b63\u78ba\u7684 URL \u55ce?"},
-            {"appletviewer.main.prop.store", "\u7d66 AppletViewer \u7684\u4f7f\u7528\u8005\u6307\u5b9a\u5c6c\u6027"},
-            {"appletviewer.main.err.prop.cantread", "\u7121\u6cd5\u8b80\u53d6\u4f7f\u7528\u8005\u5c6c\u6027\u6a94\u6848\uff1a{0}"},
-            {"appletviewer.main.err.prop.cantsave", "\u7121\u6cd5\u5132\u5b58\u4f7f\u7528\u8005\u5c6c\u6027\u6a94\u6848\uff1a{0}"},
-            {"appletviewer.main.warn.nosecmgr", "\u8b66\u544a\uff1a\u505c\u7528\u5b89\u5168\u6027\u529f\u80fd\u3002"},
-            {"appletviewer.main.debug.cantfinddebug", "\u627e\u4e0d\u5230\u9664\u932f\u7a0b\u5f0f!"},
-            {"appletviewer.main.debug.cantfindmain", "\u5728\u9664\u932f\u7a0b\u5f0f\u4e2d\u627e\u4e0d\u5230\u4e3b\u65b9\u6cd5!"},
-            {"appletviewer.main.debug.exceptionindebug", "\u9664\u932f\u7a0b\u5f0f\u767c\u751f\u7570\u5e38"},
-            {"appletviewer.main.debug.cantaccess", "\u7121\u6cd5\u5b58\u53d6\u9664\u932f\u7a0b\u5f0f!"},
-            {"appletviewer.main.nosecmgr", "\u8b66\u544a\uff1a\u672a\u5b89\u88dd SecurityManager"},
-            {"appletviewer.main.warning", "\u8b66\u544a\uff1a\u672a\u555f\u52d5 applet\u3002\u8acb\u78ba\u5b9a\u6240\u8f38\u5165\u7684\u5305\u542b <applet> \u6a19\u7c64\u3002"},
-            {"appletviewer.main.warn.prop.overwrite", "\u8b66\u544a\uff1a\u5728\u4f7f\u7528\u8005\u8981\u6c42\u4e0b\u66ab\u6642\u8986\u5beb\u7cfb\u7d71\u5c6c\u6027: key: {0} \u820a\u503c\uff1a{1} \u65b0\u503c\uff1a{2}"},
-            {"appletviewer.main.warn.cantreadprops", "\u8b66\u544a\uff1a\u7121\u6cd5\u8b80\u53d6 AppletViewer \u5c6c\u6027\u6a94\uff1a{0} \u4f7f\u7528\u9810\u8a2d\u503c\u3002"},
-            {"appletioexception.loadclass.throw.interrupted", "\u985e\u5225\u8f09\u5165\u4e2d\u65b7\uff1a{0}"},
-            {"appletioexception.loadclass.throw.notloaded", "\u985e\u5225\u672a\u88ab\u8f09\u5165\uff1a{0}"},
-            {"appletclassloader.loadcode.verbose", "\u958b\u555f\u4e32\u6d41\u81f3\uff1a{0} \u4ee5\u7372\u5f97\uff1a{1}"},
-            {"appletclassloader.filenotfound", "\u5728\u5c0b\u627e\uff1a{0} \u6642\u672a\u627e\u5230\u6a94\u6848"},
-            {"appletclassloader.fileformat", "\u5728\u8f09\u5165\uff1a{0} \u6642\u767c\u751f\u6a94\u6848\u683c\u5f0f\u7570\u5e38"},
-            {"appletclassloader.fileioexception", "\u5728\u8f09\u5165\uff1a{0} \u6642\u767c\u751f I/O \u7570\u5e38"},
-            {"appletclassloader.fileexception", "\u5728\u8f09\u5165\uff1a{1} \u6642\u767c\u751f {0} \u7570\u5e38"},
-            {"appletclassloader.filedeath", "\u5728\u8f09\u5165 {1} \u6642 {0} \u88ab\u522a\u9664"},
-            {"appletclassloader.fileerror", "\u5728\u8f09\u5165 {1} \u6642\u767c\u751f {0} \u932f\u8aa4"},
-            {"appletclassloader.findclass.verbose.findclass", "{0} \u767c\u73fe\u985e\u5225 {1}"},
-            {"appletclassloader.findclass.verbose.openstream", "\u958b\u555f\u8cc7\u6599\u6d41\u81f3\uff1a{0} \u4ee5\u7372\u5f97 {1}"},
-            {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource \u540d\u7a31\uff1a{0}"},
-            {"appletclassloader.getresource.verbose.found", "\u767c\u73fe\u8cc7\u6e90\uff1a {0} \u662f\u7cfb\u7d71\u8cc7\u6e90"},
-            {"appletclassloader.getresourceasstream.verbose", "\u88ab\u767c\u73fe\u7684\u8cc7\u6e90\uff1a{0} \u662f\u7cfb\u7d71\u8cc7\u6e90"},
-            {"appletpanel.runloader.err", "\u7269\u4ef6\u6216\u662f\u7a0b\u5f0f\u78bc\u53c3\u6578!"},
-            {"appletpanel.runloader.exception", "\u53cd\u4e32\u5217\u5316 {0} \u6642\u767c\u751f\u7570\u5e38"},
-            {"appletpanel.destroyed", "Applet \u5df2\u92b7\u6bc0"},
-            {"appletpanel.loaded", "Applet \u5df2\u8f09\u5165\u3002"},
-            {"appletpanel.started", "Applet \u5df2\u555f\u52d5\u3002"},
-            {"appletpanel.inited", "Applet \u5df2\u521d\u59cb\u5316\u3002"},
-            {"appletpanel.stopped", "Applet \u5df2\u505c\u6b62\u3002"},
-            {"appletpanel.disposed", "Applet \u5df2\u68c4\u7f6e\u3002"},
-            {"appletpanel.nocode", "APPLET \u6a19\u7c64\u907a\u6f0f CODE \u53c3\u6578\u3002"},
-            {"appletpanel.notfound", "\u8f09\u5165\ufe30\u627e\u4e0d\u5230\u985e\u5225 {0}\u3002"},
-            {"appletpanel.nocreate", "\u8f09\u5165\ufe30\u7121\u6cd5\u5275\u8a2d {0}\u3002"},
-            {"appletpanel.noconstruct", "\u8f09\u5165\ufe30{0} \u4e0d\u662f\u516c\u7528\u6216\u6c92\u6709\u516c\u7528\u5efa\u69cb\u5143\u3002"},
-            {"appletpanel.death", "\u5df2\u522a\u9664"},
-            {"appletpanel.exception", "\u7570\u5e38\ufe30{0}\u3002"},
-            {"appletpanel.exception2", "\u7570\u5e38\ufe30{0}\ufe30{1}\u3002"},
-            {"appletpanel.error", "\u932f\u8aa4\ufe30{0}\u3002"},
-            {"appletpanel.error2", "\u932f\u8aa4\ufe30{0}\ufe30{1}\u3002"},
-            {"appletpanel.notloaded", "\u521d\u59cb\u5316\ufe30\u6c92\u6709\u8f09\u5165 applet\u3002"},
-            {"appletpanel.notinited", "\u555f\u52d5\ufe30\u6c92\u6709\u521d\u59cb\u5316 applet\u3002"},
-            {"appletpanel.notstarted", "\u505c\u6b62\ufe30\u6c92\u6709\u555f\u52d5 applet\u3002"},
-            {"appletpanel.notstopped", "\u92b7\u6bc0\ufe30\u6c92\u6709\u505c\u6b62 applet\u3002"},
-            {"appletpanel.notdestroyed", "\u68c4\u7f6e\ufe30\u6c92\u6709\u92b7\u6bc0 applet\u3002"},
-            {"appletpanel.notdisposed", "\u8f09\u5165\ufe30\u6c92\u6709\u68c4\u7f6e applet\u3002"},
-            {"appletpanel.bail", "\u4e2d\u65b7\ufe30\u91cb\u51fa\u3002"},
-            {"appletpanel.filenotfound", "\u5c0b\u627e\ufe30{0} \u6642\u627e\u4e0d\u5230\u6a94\u6848"},
-            {"appletpanel.fileformat", "\u8f09\u5165\ufe30{0} \u6642\u767c\u751f\u6a94\u6848\u683c\u5f0f\u7570\u5e38"},
-            {"appletpanel.fileioexception", "\u8f09\u5165\ufe30{0} \u6642\u767c\u751f I/O \u7570\u5e38"},
-            {"appletpanel.fileexception", "\u8f09\u5165\ufe30{1} \u6642\u767c\u751f {0} \u7570\u5e38"},
-            {"appletpanel.filedeath", "\u8f09\u5165\ufe30{1} \u6642\u522a\u9664\u4e86 {0}"},
-            {"appletpanel.fileerror", "\u8f09\u5165\ufe30{1} \u6642\u767c\u751f {0} \u932f\u8aa4"},
-            {"appletpanel.badattribute.exception", "HTML \u5256\u6790\uff1a\u5bec\u5ea6/\u9ad8\u5ea6\u5c6c\u6027\u503c\u4e0d\u6b63\u78ba"},
-            {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream \u9700\u8981\u975e\u7a7a\u7684\u8f09\u5165\u5668"},
-            {"appletprops.title", "AppletViewer \u5c6c\u6027"},
-            {"appletprops.label.http.server", "Http \u4ee3\u7406\u4f3a\u670d\u5668\ufe30"},
-            {"appletprops.label.http.proxy", "Http \u4ee3\u7406\u9023\u63a5\u57e0\ufe30"},
-            {"appletprops.label.network", "\u7db2\u8def\u5b58\u53d6\ufe30"},
+            {"appletviewer.appletprint.finish", "\u5B8C\u6210\u5217\u5370\u3002"},
+            {"appletviewer.appletprint.cancel", "\u5217\u5370\u53D6\u6D88\u3002"},
+            {"appletviewer.appletencoding", "\u5B57\u5143\u7DE8\u78BC: {0}"},
+            {"appletviewer.parse.warning.requiresname", "\u8B66\u544A: <\u53C3\u6578\u540D\u7A31=... \u503C=...> \u6A19\u8A18\u9700\u8981\u540D\u7A31\u5C6C\u6027\u3002"},
+            {"appletviewer.parse.warning.paramoutside", "\u8B66\u544A: <param> \u6A19\u8A18\u5728 <applet> ... </applet> \u4E4B\u5916\u3002"},
+            {"appletviewer.parse.warning.applet.requirescode", "\u8B66\u544A: <applet> \u6A19\u8A18\u9700\u8981\u4EE3\u78BC\u5C6C\u6027\u3002"},
+            {"appletviewer.parse.warning.applet.requiresheight", "\u8B66\u544A: <applet> \u6A19\u8A18\u9700\u8981\u9AD8\u5EA6\u5C6C\u6027\u3002"},
+            {"appletviewer.parse.warning.applet.requireswidth", "\u8B66\u544A: <applet> \u6A19\u8A18\u9700\u8981\u5BEC\u5EA6\u5C6C\u6027\u3002"},
+            {"appletviewer.parse.warning.object.requirescode", "\u8B66\u544A: <object> \u6A19\u8A18\u9700\u8981\u4EE3\u78BC\u5C6C\u6027\u3002"},
+            {"appletviewer.parse.warning.object.requiresheight", "\u8B66\u544A: <object> \u6A19\u8A18\u9700\u8981\u9AD8\u5EA6\u5C6C\u6027\u3002"},
+            {"appletviewer.parse.warning.object.requireswidth", "\u8B66\u544A: <object> \u6A19\u8A18\u9700\u8981\u5BEC\u5EA6\u5C6C\u6027\u3002"},
+            {"appletviewer.parse.warning.embed.requirescode", "\u8B66\u544A: <embed> \u6A19\u8A18\u9700\u8981\u4EE3\u78BC\u5C6C\u6027\u3002"},
+            {"appletviewer.parse.warning.embed.requiresheight", "\u8B66\u544A: <embed> \u6A19\u8A18\u9700\u8981\u9AD8\u5EA6\u5C6C\u6027\u3002"},
+            {"appletviewer.parse.warning.embed.requireswidth", "\u8B66\u544A: <embed> \u6A19\u8A18\u9700\u8981\u5BEC\u5EA6\u5C6C\u6027\u3002"},
+            {"appletviewer.parse.warning.appnotLongersupported", "\u8B66\u544A: \u4E0D\u518D\u652F\u63F4 <app> \u6A19\u8A18\uFF0C\u8ACB\u6539\u7528 <applet>:"},
+            {"appletviewer.usage", "\u7528\u6CD5: appletviewer <\u9078\u9805> url(s)\n\n\u5176\u4E2D\u7684 <\u9078\u9805> \u5305\u62EC:\n  -debug                  \u5728 Java \u9664\u932F\u7A0B\u5F0F\u4E2D\u555F\u52D5 Applet \u6AA2\u8996\u5668\n  -encoding <\u7DE8\u78BC>    \u6307\u5B9A HTML \u6A94\u6848\u4F7F\u7528\u7684\u5B57\u5143\u7DE8\u78BC\n  -J<\u57F7\u884C\u968E\u6BB5\u65D7\u6A19>        \u5C07\u5F15\u6578\u50B3\u9001\u81F3 java \u89E3\u8B6F\u5668\n\n -J \u9078\u9805\u4E0D\u662F\u6A19\u6E96\u9078\u9805\uFF0C\u82E5\u6709\u8B8A\u66F4\u4E0D\u53E6\u884C\u901A\u77E5\u3002"},
+            {"appletviewer.main.err.unsupportedopt", "\u4E0D\u652F\u63F4\u7684\u9078\u9805: {0}"},
+            {"appletviewer.main.err.unrecognizedarg", "\u7121\u6CD5\u8FA8\u8B58\u7684\u5F15\u6578: {0}"},
+            {"appletviewer.main.err.dupoption", "\u91CD\u8907\u4F7F\u7528\u9078\u9805: {0}"},
+            {"appletviewer.main.err.inputfile", "\u672A\u6307\u5B9A\u8F38\u5165\u6A94\u6848\u3002"},
+            {"appletviewer.main.err.badurl", "\u932F\u8AA4\u7684 URL: {0} ( {1} )"},
+            {"appletviewer.main.err.io", "\u8B80\u53D6\u6642\u767C\u751F I/O \u7570\u5E38\u72C0\u6CC1: {0}"},
+            {"appletviewer.main.err.readablefile", "\u78BA\u8A8D {0} \u70BA\u6A94\u6848\u4E14\u53EF\u8B80\u53D6\u3002"},
+            {"appletviewer.main.err.correcturl", "{0} \u662F\u5426\u70BA\u6B63\u78BA\u7684 URL\uFF1F"},
+            {"appletviewer.main.prop.store", "AppletViewer \u7684\u4F7F\u7528\u8005\u7279\u5B9A\u5C6C\u6027"},
+            {"appletviewer.main.err.prop.cantread", "\u7121\u6CD5\u8B80\u53D6\u4F7F\u7528\u8005\u5C6C\u6027\u6A94\u6848: {0}"},
+            {"appletviewer.main.err.prop.cantsave", "\u7121\u6CD5\u5132\u5B58\u4F7F\u7528\u8005\u5C6C\u6027\u6A94\u6848: {0}"},
+            {"appletviewer.main.warn.nosecmgr", "\u8B66\u544A: \u505C\u7528\u5B89\u5168\u529F\u80FD\u3002"},
+            {"appletviewer.main.debug.cantfinddebug", "\u627E\u4E0D\u5230\u9664\u932F\u7A0B\u5F0F\uFF01"},
+            {"appletviewer.main.debug.cantfindmain", "\u5728\u9664\u932F\u7A0B\u5F0F\u4E2D\u627E\u4E0D\u5230\u4E3B\u8981\u65B9\u6CD5\uFF01"},
+            {"appletviewer.main.debug.exceptionindebug", "\u9664\u932F\u7A0B\u5F0F\u767C\u751F\u7570\u5E38\u72C0\u6CC1\uFF01"},
+            {"appletviewer.main.debug.cantaccess", "\u7121\u6CD5\u5B58\u53D6\u9664\u932F\u7A0B\u5F0F\uFF01"},
+            {"appletviewer.main.nosecmgr", "\u8B66\u544A: \u672A\u5B89\u88DD SecurityManager\uFF01"},
+            {"appletviewer.main.warning", "\u8B66\u544A: \u672A\u555F\u52D5 Applet\u3002\u8ACB\u78BA\u8A8D\u8F38\u5165\u5305\u542B <applet> \u6A19\u8A18\u3002"},
+            {"appletviewer.main.warn.prop.overwrite", "\u8B66\u544A: \u4F9D\u7167\u4F7F\u7528\u8005\u8981\u6C42\uFF0C\u66AB\u6642\u8986\u5BEB\u7CFB\u7D71\u5C6C\u6027: \u7D22\u5F15\u9375: {0} \u820A\u503C: {1} \u65B0\u503C: {2}"},
+            {"appletviewer.main.warn.cantreadprops", "\u8B66\u544A: \u7121\u6CD5\u8B80\u53D6 AppletViewer \u5C6C\u6027\u6A94\u6848: {0} \u4F7F\u7528\u9810\u8A2D\u503C\u3002"},
+            {"appletioexception.loadclass.throw.interrupted", "\u985E\u5225\u8F09\u5165\u4E2D\u65B7: {0}"},
+            {"appletioexception.loadclass.throw.notloaded", "\u672A\u8F09\u5165\u985E\u5225: {0}"},
+            {"appletclassloader.loadcode.verbose", "\u958B\u555F {0} \u7684\u4E32\u6D41\u4EE5\u53D6\u5F97 {1}"},
+            {"appletclassloader.filenotfound", "\u5C0B\u627E {0} \u6642\u627E\u4E0D\u5230\u6A94\u6848"},
+            {"appletclassloader.fileformat", "\u8F09\u5165\u6642\u767C\u751F\u6A94\u6848\u683C\u5F0F\u7570\u5E38\u72C0\u6CC1: {0}"},
+            {"appletclassloader.fileioexception", "\u8F09\u5165\u6642\u767C\u751F I/O \u7570\u5E38\u72C0\u6CC1: {0}"},
+            {"appletclassloader.fileexception", "\u8F09\u5165\u6642\u767C\u751F {0} \u7570\u5E38\u72C0\u6CC1: {1}"},
+            {"appletclassloader.filedeath", "\u8F09\u5165\u6642\u522A\u9664 {0}: {1}"},
+            {"appletclassloader.fileerror", "\u8F09\u5165\u6642\u767C\u751F {0} \u932F\u8AA4: {1}"},
+            {"appletclassloader.findclass.verbose.findclass", "{0} \u5C0B\u627E\u985E\u5225 {1}"},
+            {"appletclassloader.findclass.verbose.openstream", "\u958B\u555F {0} \u7684\u4E32\u6D41\u4EE5\u53D6\u5F97 {1}"},
+            {"appletclassloader.getresource.verbose.forname", "AppletClassLoader.getResource \u7684\u540D\u7A31: {0}"},
+            {"appletclassloader.getresource.verbose.found", "\u627E\u5230\u8CC7\u6E90: {0} \u4F5C\u70BA\u7CFB\u7D71\u8CC7\u6E90"},
+            {"appletclassloader.getresourceasstream.verbose", "\u627E\u5230\u8CC7\u6E90: {0} \u4F5C\u70BA\u7CFB\u7D71\u8CC7\u6E90"},
+            {"appletpanel.runloader.err", "\u7269\u4EF6\u6216\u4EE3\u78BC\u53C3\u6578\uFF01"},
+            {"appletpanel.runloader.exception", "\u9084\u539F\u5E8F\u5217\u5316 {0} \u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1"},
+            {"appletpanel.destroyed", "\u5DF2\u640D\u6BC0 Applet\u3002"},
+            {"appletpanel.loaded", "\u5DF2\u8F09\u5165 Applet\u3002"},
+            {"appletpanel.started", "\u5DF2\u555F\u7528 Applet\u3002"},
+            {"appletpanel.inited", "\u5DF2\u8D77\u59CB Applet\u3002"},
+            {"appletpanel.stopped", "\u5DF2\u505C\u6B62 Applet\u3002"},
+            {"appletpanel.disposed", "\u5DF2\u8655\u7F6E Applet\u3002"},
+            {"appletpanel.nocode", "APPLET \u6A19\u8A18\u907A\u6F0F CODE \u53C3\u6578\u3002"},
+            {"appletpanel.notfound", "\u8F09\u5165: \u627E\u4E0D\u5230\u985E\u5225 {0}\u3002"},
+            {"appletpanel.nocreate", "\u8F09\u5165: \u7121\u6CD5\u5EFA\u7ACB {0}\u3002"},
+            {"appletpanel.noconstruct", "\u8F09\u5165: {0} \u975E\u516C\u7528\u6216\u6C92\u6709\u516C\u7528\u5EFA\u69CB\u5B50\u3002"},
+            {"appletpanel.death", "\u5DF2\u522A\u9664"},
+            {"appletpanel.exception", "\u7570\u5E38\u72C0\u6CC1: {0}\u3002"},
+            {"appletpanel.exception2", "\u7570\u5E38\u72C0\u6CC1: {0}: {1}\u3002"},
+            {"appletpanel.error", "\u932F\u8AA4: {0}\u3002"},
+            {"appletpanel.error2", "\u932F\u8AA4: {0}: {1}\u3002"},
+            {"appletpanel.notloaded", "\u8D77\u59CB: \u672A\u8F09\u5165 Applet\u3002"},
+            {"appletpanel.notinited", "\u555F\u52D5: \u672A\u8D77\u59CB Applet\u3002"},
+            {"appletpanel.notstarted", "\u505C\u6B62: \u672A\u555F\u52D5 Applet\u3002"},
+            {"appletpanel.notstopped", "\u640D\u6BC0: \u672A\u505C\u6B62 Applet\u3002"},
+            {"appletpanel.notdestroyed", "\u8655\u7F6E: \u672A\u640D\u6BC0 Applet\u3002"},
+            {"appletpanel.notdisposed", "\u8F09\u5165: \u672A\u8655\u7F6E Applet\u3002"},
+            {"appletpanel.bail", "\u5DF2\u4E2D\u65B7: \u6B63\u5728\u7D50\u675F\u3002"},
+            {"appletpanel.filenotfound", "\u5C0B\u627E {0} \u6642\u627E\u4E0D\u5230\u6A94\u6848"},
+            {"appletpanel.fileformat", "\u8F09\u5165\u6642\u767C\u751F\u6A94\u6848\u683C\u5F0F\u7570\u5E38\u72C0\u6CC1: {0}"},
+            {"appletpanel.fileioexception", "\u8F09\u5165\u6642\u767C\u751F I/O \u7570\u5E38\u72C0\u6CC1: {0}"},
+            {"appletpanel.fileexception", "\u8F09\u5165\u6642\u767C\u751F {0} \u7570\u5E38\u72C0\u6CC1: {1}"},
+            {"appletpanel.filedeath", "\u8F09\u5165\u6642\u522A\u9664 {0}: {1}"},
+            {"appletpanel.fileerror", "\u8F09\u5165\u6642\u767C\u751F {0} \u932F\u8AA4: {1}"},
+            {"appletpanel.badattribute.exception", "HTML \u5256\u6790: \u5BEC\u5EA6/\u9AD8\u5EA6\u5C6C\u6027\u7684\u503C\u4E0D\u6B63\u78BA"},
+            {"appletillegalargumentexception.objectinputstream", "AppletObjectInputStream \u9700\u8981\u975E\u7A7A\u503C\u8F09\u5165\u5668"},
+            {"appletprops.title", "AppletViewer \u5C6C\u6027"},
+            {"appletprops.label.http.server", "Http \u4EE3\u7406\u4E3B\u6A5F\u4F3A\u670D\u5668:"},
+            {"appletprops.label.http.proxy", "Http \u4EE3\u7406\u4E3B\u6A5F\u9023\u63A5\u57E0:"},
+            {"appletprops.label.network", "\u7DB2\u8DEF\u5B58\u53D6:"},
             {"appletprops.choice.network.item.none", "\u7121"},
-            {"appletprops.choice.network.item.applethost", "Applet \u4e3b\u6a5f"},
-            {"appletprops.choice.network.item.unrestricted", "\u7121\u9650\u5236\u7684"},
-            {"appletprops.label.class", "\u985e\u5225\u5b58\u53d6\ufe30"},
-            {"appletprops.choice.class.item.restricted", "\u53d7\u9650\u5236\u7684"},
-            {"appletprops.choice.class.item.unrestricted", "\u7121\u9650\u5236\u7684"},
-            {"appletprops.label.unsignedapplet", "\u5141\u8a31\u7121\u7c3d\u540d\u7684 applet\ufe30"},
+            {"appletprops.choice.network.item.applethost", "Applet \u4E3B\u6A5F"},
+            {"appletprops.choice.network.item.unrestricted", "\u4E0D\u53D7\u9650\u5236"},
+            {"appletprops.label.class", "\u985E\u5225\u5B58\u53D6:"},
+            {"appletprops.choice.class.item.restricted", "\u53D7\u9650\u5236"},
+            {"appletprops.choice.class.item.unrestricted", "\u4E0D\u53D7\u9650\u5236"},
+            {"appletprops.label.unsignedapplet", "\u5141\u8A31\u672A\u7C3D\u7F72\u7684 Applet:"},
             {"appletprops.choice.unsignedapplet.no", "\u5426"},
-            {"appletprops.choice.unsignedapplet.yes", "\u662f"},
+            {"appletprops.choice.unsignedapplet.yes", "\u662F"},
             {"appletprops.button.apply", "\u5957\u7528"},
-            {"appletprops.button.cancel", "\u53d6\u6d88"},
-            {"appletprops.button.reset", "\u91cd\u8a2d"},
-            {"appletprops.apply.exception", "\u7121\u6cd5\u5132\u5b58\u5c6c\u6027\ufe30{0}"},
+            {"appletprops.button.cancel", "\u53D6\u6D88"},
+            {"appletprops.button.reset", "\u91CD\u8A2D"},
+            {"appletprops.apply.exception", "\u7121\u6CD5\u5132\u5B58\u5C6C\u6027: {0}"},
             /* 4066432 */
-            {"appletprops.title.invalidproxy", "\u8f38\u5165\u9805\u76ee\u7121\u6548"},
-            {"appletprops.label.invalidproxy", "\u4ee3\u7406\u9023\u63a5\u57e0\u5fc5\u9808\u662f\u6b63\u6574\u6578\u503c\u3002"},
-            {"appletprops.button.ok", "\u78ba\u5b9a"},
+            {"appletprops.title.invalidproxy", "\u7121\u6548\u7684\u9805\u76EE"},
+            {"appletprops.label.invalidproxy", "\u4EE3\u7406\u4E3B\u6A5F\u9023\u63A5\u57E0\u5FC5\u9808\u662F\u6B63\u6574\u6578\u503C\u3002"},
+            {"appletprops.button.ok", "\u78BA\u5B9A"},
             /* end 4066432 */
-            {"appletprops.prop.store", "\u7528\u65bc AppletViewer \u7684\u4f7f\u7528\u8005\u6307\u5b9a\u5c6c\u6027"},
-            {"appletsecurityexception.checkcreateclassloader", "\u5b89\u5168\u6027\u7570\u5e38\uff1a\u985e\u5225\u8f09\u5165\u5668"},
-            {"appletsecurityexception.checkaccess.thread", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u57f7\u884c\u7dd2"},
-            {"appletsecurityexception.checkaccess.threadgroup", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u57f7\u884c\u7dd2\u7fa4\u7d44\ufe30{0}"},
-            {"appletsecurityexception.checkexit", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u7d50\u675f\ufe30{0}"},
-            {"appletsecurityexception.checkexec", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u57f7\u884c\ufe30{0}"},
-            {"appletsecurityexception.checklink", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u9023\u7d50\ufe30{0}"},
-            {"appletsecurityexception.checkpropsaccess", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u5c6c\u6027"},
-            {"appletsecurityexception.checkpropsaccess.key", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u5c6c\u6027\u5b58\u53d6 {0}"},
-            {"appletsecurityexception.checkread.exception1", "\u5b89\u5168\u6027\u7570\u5e38\ufe30{0}, {1}"},
-            {"appletsecurityexception.checkread.exception2", "\u5b89\u5168\u6027\u7570\u5e38\ufe30file.read: {0}"},
-            {"appletsecurityexception.checkread", "file.write: {0} == {1}"},
-            {"appletsecurityexception.checkwrite.exception", "\u5b89\u5168\u6027\u7570\u5e38\ufe30{0}, {1}"},
-            {"appletsecurityexception.checkwrite", "\u5b89\u5168\u6027\u7570\u5e38\ufe30{0} == {1}"},
-            {"appletsecurityexception.checkread.fd", "\u5b89\u5168\u6027\u7570\u5e38\ufe30 fd.read"},
-            {"appletsecurityexception.checkwrite.fd", "\u5b89\u5168\u6027\u7570\u5e38\ufe30 fd.write"},
-            {"appletsecurityexception.checklisten", "\u5b89\u5168\u6027\u7570\u5e38\ufe30 socket.listen: {0}"},
-            {"appletsecurityexception.checkaccept", "\u5b89\u5168\u6027\u7570\u5e38\ufe30 socket.accept: {0}:{1}"},
-            {"appletsecurityexception.checkconnect.networknone", "\u5b89\u5168\u6027\u7570\u5e38\ufe30{0}->{1}"},
-            {"appletsecurityexception.checkconnect.networkhost1", "\u5b89\u5168\u6027\u7570\u5e38\ufe30 \u7121\u6cd5\u5f9e {1} \u9023\u63a5\u5230\u539f\u59cb\u7684 {0}\u3002"},
-            {"appletsecurityexception.checkconnect.networkhost2", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u7121\u6cd5\u89e3\u8b6f\u4e3b\u6a5f {0} \u6216 {1} \u7684 IP\u3002"},
-            {"appletsecurityexception.checkconnect.networkhost3", "\u5168\u6027\u7570\u5e38\ufe30\u7121\u6cd5\u89e3\u8b6f\u4e3b\u6a5f {0} \u7684 IP\u3002\u8acb\u53c3\u95b1 trustProxy \u5c6c\u6027\u3002"},
-            {"appletsecurityexception.checkconnect", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u9023\u63a5\ufe30{0}->{1}"},
-            {"appletsecurityexception.checkpackageaccess", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u7121\u6cd5\u5b58\u53d6\u5957\u88dd\u8edf\u9ad4\ufe30{0}"},
-            {"appletsecurityexception.checkpackagedefinition", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u7121\u6cd5\u5b9a\u7fa9\u5957\u88dd\u8edf\u9ad4\ufe30{0}"},
-            {"appletsecurityexception.cannotsetfactory", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u7121\u6cd5\u8a2d\u5b9a factory"},
-            {"appletsecurityexception.checkmemberaccess", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u6aa2\u67e5\u6210\u54e1\u5b58\u53d6\u6b0a\u9650"},
-            {"appletsecurityexception.checkgetprintjob", "\u5b89\u5168\u6027\u7570\u5e38\ufe30getPrintJob"},
-            {"appletsecurityexception.checksystemclipboardaccess", "\u5b89\u5168\u6027\u7570\u5e38\ufe30getSystemClipboard"},
-            {"appletsecurityexception.checkawteventqueueaccess", "\u5b89\u5168\u6027\u7570\u5e38\ufe30getEventQueue"},
-            {"appletsecurityexception.checksecurityaccess", "\u5b89\u5168\u6027\u7570\u5e38\ufe30\u5b89\u5168\u6027\u64cd\u4f5c\ufe30{0}"},
-            {"appletsecurityexception.getsecuritycontext.unknown", "\u672a\u77e5\u7684\u985e\u5225\u8f09\u5165\u5668\u985e\u578b\u3002\u7121\u6cd5\u6aa2\u67e5 getContext"},
-            {"appletsecurityexception.checkread.unknown", "\u672a\u77e5\u7684\u985e\u5225\u8f09\u5165\u5668\u985e\u578b\u3002\u7121\u6cd5\u67e5\u770b\u6aa2\u67e5\u8b80\u53d6 {0}"},
-            {"appletsecurityexception.checkconnect.unknown", "\u672a\u77e5\u7684\u985e\u5225\u8f09\u5165\u5668\u985e\u578b\u3002\u7121\u6cd5\u67e5\u770b\u6aa2\u67e5\u9023\u63a5"},
+            {"appletprops.prop.store", "AppletViewer \u7684\u4F7F\u7528\u8005\u7279\u5B9A\u5C6C\u6027"},
+            {"appletsecurityexception.checkcreateclassloader", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: classloader"},
+            {"appletsecurityexception.checkaccess.thread", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: thread"},
+            {"appletsecurityexception.checkaccess.threadgroup", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: threadgroup: {0}"},
+            {"appletsecurityexception.checkexit", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: exit: {0}"},
+            {"appletsecurityexception.checkexec", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: exec: {0}"},
+            {"appletsecurityexception.checklink", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: link: {0}"},
+            {"appletsecurityexception.checkpropsaccess", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: \u5C6C\u6027"},
+            {"appletsecurityexception.checkpropsaccess.key", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: \u5C6C\u6027\u5B58\u53D6 {0}"},
+            {"appletsecurityexception.checkread.exception1", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: {0}\uFF0C{1}"},
+            {"appletsecurityexception.checkread.exception2", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: file.read: {0}"},
+            {"appletsecurityexception.checkread", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: file.read: {0} == {1}"},
+            {"appletsecurityexception.checkwrite.exception", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: {0}\uFF0C{1}"},
+            {"appletsecurityexception.checkwrite", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: file.write: {0} == {1}"},
+            {"appletsecurityexception.checkread.fd", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: fd.read"},
+            {"appletsecurityexception.checkwrite.fd", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: fd.write"},
+            {"appletsecurityexception.checklisten", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: socket.listen: {0}"},
+            {"appletsecurityexception.checkaccept", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: socket.accept: {0}:{1}"},
+            {"appletsecurityexception.checkconnect.networknone", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: socket.connect: {0}->{1}"},
+            {"appletsecurityexception.checkconnect.networkhost1", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: \u7121\u6CD5\u5F9E\u4F86\u6E90 {1} \u9023\u7DDA\u81F3 {0}\u3002"},
+            {"appletsecurityexception.checkconnect.networkhost2", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: \u7121\u6CD5\u89E3\u6790\u4E3B\u6A5F {0} \u6216 {1} \u7684 IP\u3002"},
+            {"appletsecurityexception.checkconnect.networkhost3", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: \u7121\u6CD5\u89E3\u6790\u4E3B\u6A5F {0} \u7684 IP\u3002\u8ACB\u53C3\u95B1 trustProxy \u5C6C\u6027\u3002"},
+            {"appletsecurityexception.checkconnect", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: connect: {0}->{1}"},
+            {"appletsecurityexception.checkpackageaccess", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: \u7121\u6CD5\u5B58\u53D6\u5957\u88DD\u7A0B\u5F0F: {0}"},
+            {"appletsecurityexception.checkpackagedefinition", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: \u7121\u6CD5\u5B9A\u7FA9\u5957\u88DD\u7A0B\u5F0F: {0}"},
+            {"appletsecurityexception.cannotsetfactory", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: \u7121\u6CD5\u8A2D\u5B9A\u8655\u7406\u7AD9"},
+            {"appletsecurityexception.checkmemberaccess", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: \u6AA2\u67E5\u6210\u54E1\u5B58\u53D6"},
+            {"appletsecurityexception.checkgetprintjob", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: getPrintJob"},
+            {"appletsecurityexception.checksystemclipboardaccess", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: getSystemClipboard"},
+            {"appletsecurityexception.checkawteventqueueaccess", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: getEventQueue"},
+            {"appletsecurityexception.checksecurityaccess", "\u5B89\u5168\u7570\u5E38\u72C0\u6CC1: \u5B89\u5168\u4F5C\u696D: {0}"},
+            {"appletsecurityexception.getsecuritycontext.unknown", "\u4E0D\u660E\u7684\u985E\u5225\u8F09\u5165\u5668\u985E\u578B\u3002\u7121\u6CD5\u6AA2\u67E5 getContext"},
+            {"appletsecurityexception.checkread.unknown", "\u4E0D\u660E\u7684\u985E\u5225\u8F09\u5165\u5668\u985E\u578B\u3002\u7121\u6CD5\u6AA2\u67E5 read {0}"},
+            {"appletsecurityexception.checkconnect.unknown", "\u4E0D\u660E\u7684\u985E\u5225\u8F09\u5165\u5668\u985E\u578B\u3002\u7121\u6CD5\u6AA2\u67E5\u9023\u7DDA"},
         };
+
+        return temp;
     }
 }
--- a/jdk/src/share/classes/sun/awt/resources/awt_de.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/awt/resources/awt_de.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -12,12 +12,12 @@
 
 # Key names
 AWT.enter=Eingabe
-AWT.backSpace=R\u00fccktaste
+AWT.backSpace=R\u00FCcktaste
 AWT.tab=Tabulator
 AWT.cancel=Abbrechen
-AWT.clear=L\u00f6schen
+AWT.clear=L\u00F6schen
 AWT.pause=Pause
-AWT.capsLock=Umschalttaste Gro\u00df-/Kleinschreibung
+AWT.capsLock=Feststelltaste
 AWT.escape=ESC
 AWT.space=Leertaste
 AWT.pgup=Bild auf
@@ -28,25 +28,25 @@
 AWT.up=Oben
 AWT.right=Rechts
 AWT.down=Unten
-AWT.begin=Begin
-AWT.comma=Comma
-AWT.period=Period
-AWT.slash=Slash
-AWT.semicolon=Semicolon
-AWT.equals=Equals
-AWT.openBracket=Open Bracket
-AWT.backSlash=Back Slash
-AWT.closeBracket=Close Bracket
-AWT.multiply=Tastenblock *
-AWT.add=Tastenblock +
-AWT.separator=Tastenblock ,
-AWT.separater=Tastenblock ,
-AWT.subtract=Tastenblock -
-AWT.decimal=Tastenblock .
-AWT.divide=Tastenblock /
+AWT.begin=Anfang
+AWT.comma=Komma
+AWT.period=Punkt
+AWT.slash=Schr\u00E4gstrich
+AWT.semicolon=Semikolon
+AWT.equals=Entspricht
+AWT.openBracket=\u00D6ffnende Klammer
+AWT.backSlash=Umgekehrter Schr\u00E4gstrich
+AWT.closeBracket=Schlie\u00DFende Klammer
+AWT.multiply=NumPad *
+AWT.add=NumPad +
+AWT.separator=NumPad ,
+AWT.separater=NumPad ,
+AWT.subtract=NumPad -
+AWT.decimal=NumPad .
+AWT.divide=NumPad /
 AWT.delete=Entf
 AWT.numLock=Num
-AWT.scrollLock=Rollsperre
+AWT.scrollLock=Rollen
 AWT.f1=F1
 AWT.f2=F2
 AWT.f3=F3
@@ -75,9 +75,9 @@
 AWT.insert=Einfg
 AWT.help=Hilfe
 AWT.windows=Windows
-AWT.context=Context Menu
-AWT.backQuote=Schlie\u00dfendes Anf\u00fchrungszeichen
-AWT.quote=Einfaches Anf\u00fchrungszeichen
+AWT.context=Kontextmen\u00FC
+AWT.backQuote=Schlie\u00DFendes Anf\u00FChrungszeichen
+AWT.quote=Anf\u00FChrungszeichen
 AWT.deadGrave=Gravis (Dead)
 AWT.deadAcute=Akut (Dead)
 AWT.deadCircumflex=Zirkumflex (Dead)
@@ -94,11 +94,11 @@
 AWT.deadIota=Iota (Dead)
 AWT.deadVoicedSound=Stimmhaft (Dead)
 AWT.deadSemivoicedSound=Halbstimmhaft (Dead)
-AWT.ampersand=Kaufm\u00e4nnisches Und
-AWT.asterisk=Stern
-AWT.quoteDbl=Doppelte Anf\u00fchrungszeichen
+AWT.ampersand=Et-Zeichen
+AWT.asterisk=Sternchen
+AWT.quoteDbl=Doppelte Anf\u00FChrungszeichen
 AWT.Less=Kleiner als
-AWT.greater=Gr\u00f6\u00dfer als
+AWT.greater=Gr\u00F6\u00DFer als
 AWT.braceLeft=Linke geschweifte Klammer
 AWT.braceRight=Rechte geschweifte Klammer
 AWT.at=Klammeraffe
@@ -117,8 +117,8 @@
 AWT.final=Abschluss
 AWT.convert=Konvertieren
 AWT.noconvert=Nicht konvertieren
-AWT.accept=Annehmen
-AWT.modechange=Modus\u00e4nderung
+AWT.accept=Akzeptieren
+AWT.modechange=Modus\u00E4nderung
 AWT.kana=Kana
 AWT.kanji=Kanji
 AWT.alphanumeric=Alphanumerisch
@@ -129,26 +129,26 @@
 AWT.romanCharacters=Lateinische Zeichen
 AWT.allCandidates=Alle Kandidaten
 AWT.previousCandidate=Vorheriger Kandidat
-AWT.codeInput=Code-Eingabe
+AWT.codeInput=Codeeingabe
 AWT.japaneseKatakana=Japanisch (Katakana)
 AWT.japaneseHiragana=Japanisch (Hiragana)
 AWT.japaneseRoman=Japanisch (Latein)
 AWT.kanaLock=Kana Lock
 AWT.inputMethodOnOff=Eingabemethode ein/aus
 AWT.again=Wiederholen
-AWT.undo=R\u00fcckg\u00e4ngig
+AWT.undo=R\u00FCckg\u00E4ngig
 AWT.copy=Kopieren
-AWT.paste=Einf\u00fcgen
+AWT.paste=Einf\u00FCgen
 AWT.cut=Ausschneiden
 AWT.find=Suchen
 AWT.props=Eigenschaften
-AWT.stop=Stop
+AWT.stop=Stopp
 AWT.compose=Verfassen
 
 # Numeric Keypad
 AWT.numpad=NumPad
-AWT.unknown=Unknown
-AWT.undefined=Undefined
+AWT.unknown=Unbekannt
+AWT.undefined=Undefiniert
 
 # Predefined cursor names
 AWT.DefaultCursor=Standardcursor
@@ -166,12 +166,12 @@
 AWT.HandCursor=Handcursor
 AWT.MoveCursor=Verschiebecursor
 AWT.DefaultDragCursor=Standardcursor beim Ziehen
-AWT.DefaultNoDropCursor=Standardcursor beim Nichtziehen
+AWT.DefaultNoDropCursor=Standardcursor NoDrag
 AWT.DefaultDropCursor=Standardcursor beim Ablegen
 
 # Input method related strings
 AWT.CompositionWindowTitle=Eingabefenster
-AWT.InputMethodSelectionMenu=Eingabemethode ausw\u00e4hlen
+AWT.InputMethodSelectionMenu=Eingabemethode ausw\u00E4hlen
 AWT.HostInputMethodDisplayName=Systemeingabemethoden
 AWT.InputMethodLanguage.ja=Japanisch
 AWT.InputMethodLanguage.ko=Koreanisch
@@ -188,5 +188,5 @@
 java.awt.def.delay=30
 
 # Warnings
-AWT.InconsistentDLLsWarning=Textbasierte Operationen arbeiten m\u00f6glicherweise nicht richtig, weil auf Ihrem System ein inkonsistenter Satz von Dynamic Linking Libraries (DLLs) installiert ist. Weitere Informationen zu diesem Problem sowie eine Empfehlung zu deren Umgehung finden Sie in den Java(TM) 2 SDK, Standard Edition Release Notes unter java.sun.com.
+AWT.InconsistentDLLsWarning=Textbasierte Vorg\u00E4nge funktionieren m\u00F6glicherweise nicht richtig, weil inkonsistente Dynamic Linking Librarys (DLLs) auf dem System installiert sind. Weitere Informationen zu diesem Problem sowie eine Empfehlung zu der Umgehung finden Sie in den Java(TM) 2 SDK, Standard Edition Release Notes unter java.sun.com.
 
--- a/jdk/src/share/classes/sun/awt/resources/awt_es.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/awt/resources/awt_es.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -4,49 +4,49 @@
 #
 
 # Modifier names
-AWT.shift=May\u00fasculas
+AWT.shift=May\u00FAsculas
 AWT.control=Ctrl
 AWT.alt=Alt
 AWT.meta=Meta
 AWT.altGraph=Alt Gr
 
 # Key names
-AWT.enter=Introduzca
+AWT.enter=Intro
 AWT.backSpace=Retroceso
 AWT.tab=Tabulador
 AWT.cancel=Cancelar
 AWT.clear=Borrar
 AWT.pause=Pausa
-AWT.capsLock=Bloqueo de may\u00fasculas
+AWT.capsLock=Bloqueo de May\u00FAsculas
 AWT.escape=Escape
 AWT.space=Espacio
-AWT.pgup=ReP\u00e1g
-AWT.pgdn=AvP\u00e1g
+AWT.pgup=ReP\u00E1g
+AWT.pgdn=AvP\u00E1g
 AWT.end=Fin
 AWT.home=Inicio
 AWT.left=Izquierda
 AWT.up=Arriba
 AWT.right=Derecha
 AWT.down=Abajo
-AWT.begin=Begin
-AWT.comma=Comma
-AWT.period=Period
-AWT.slash=Slash
-AWT.semicolon=Semicolon
-AWT.equals=Equals
-AWT.openBracket=Open Bracket
-AWT.backSlash=Back Slash
-AWT.closeBracket=Close Bracket
-AWT.multiply=* de teclado num\u00e9rico
-AWT.add=+ de teclado num\u00e9rico
-AWT.separator=, de teclado num\u00e9rico
-AWT.separater=, de teclado num\u00e9rico  # for backwards compatibility only
-AWT.subtract=- de teclado num\u00e9rico
-AWT.decimal=. de teclado num\u00e9rico
-AWT.divide=/ de teclado num\u00e9rico
+AWT.begin=Inicio
+AWT.comma=Coma
+AWT.period=Punto
+AWT.slash=Barra
+AWT.semicolon=Punto y coma
+AWT.equals=Igual
+AWT.openBracket=Par\u00E9ntesis de Apertura
+AWT.backSlash=Barra Invertida
+AWT.closeBracket=Par\u00E9ntesis de Cierre
+AWT.multiply=* de Teclado Num\u00E9rico
+AWT.add=+ de Teclado Num\u00E9rico
+AWT.separator=, de Teclado Num\u00E9rico
+AWT.separater=, de Teclado Num\u00E9rico
+AWT.subtract=- de Teclado Num\u00E9rico
+AWT.decimal=. de Teclado Num\u00E9rico
+AWT.divide=/ de Teclado Num\u00E9rico
 AWT.delete=Suprimir
-AWT.numLock=Bloqueo num\u00e9rico
-AWT.scrollLock=Bloqueo de desplazamiento
+AWT.numLock=Bloqueo Num\u00E9rico
+AWT.scrollLock=Bloqueo de Desplazamiento
 AWT.f1=F1
 AWT.f2=F2
 AWT.f3=F3
@@ -71,70 +71,70 @@
 AWT.f22=F22
 AWT.f23=F23
 AWT.f24=F24
-AWT.printScreen=Imprimir pantalla
+AWT.printScreen=Imprimir Pantalla
 AWT.insert=Insertar
 AWT.help=Ayuda
 AWT.windows=Windows
-AWT.context=Context Menu
-AWT.backQuote=Abrir comilla
-AWT.quote=Cerrar comilla
-AWT.deadGrave=Acento grave muerto
-AWT.deadAcute=Acento agudio muerto
-AWT.deadCircumflex=Circunflejo muerto
-AWT.deadTilde=Tilde muerto
-AWT.deadMacron=Macron muerto
-AWT.deadBreve=Breve muerto
-AWT.deadAboveDot=Punto superior muerto
-AWT.deadDiaeresis=Di\u00e9resis muerta
-AWT.deadAboveRing=C\u00edrculo superior muerto
-AWT.deadDoubleAcute=Acento agudo doble muerto
-AWT.deadCaron=Caron muerto
-AWT.deadCedilla=Cedilla muerta
-AWT.deadOgonek=Ogonek muerto
-AWT.deadIota=Iota muerta
-AWT.deadVoicedSound=Sonido sonoro muerto
-AWT.deadSemivoicedSound=Sonido semisonoro muerto
-AWT.ampersand=S\u00edmbolo &
+AWT.context=Men\u00FA Contextual
+AWT.backQuote=Comilla Invertida
+AWT.quote=Comilla
+AWT.deadGrave=Acento Grave (Tecla Muerta)
+AWT.deadAcute=Acento Agudo Muerto
+AWT.deadCircumflex=Circunflejo (Tecla Muerta)
+AWT.deadTilde=Tilde (Tecla Muerta)
+AWT.deadMacron=Macr\u00F3n (Tecla Muerta)
+AWT.deadBreve=Acento Breve (Tecla Muerta)
+AWT.deadAboveDot=Punto Superior (Tecla Muerta)
+AWT.deadDiaeresis=Di\u00E9resis (Tecla Muerta)
+AWT.deadAboveRing=C\u00EDrculo Superior (Tecla Muerta)
+AWT.deadDoubleAcute=Acento Agudo Doble (Tecla Muerta)
+AWT.deadCaron=Acento Articircunflejo (Tecla Muerta)
+AWT.deadCedilla=Cedilla (Tecla Muerta)
+AWT.deadOgonek=Esp\u00EDritu \u00C1spero (Tecla Muerta)
+AWT.deadIota=Iota (Tecla Muerta)
+AWT.deadVoicedSound=Sonido Sonoro (Tecla Muerta)
+AWT.deadSemivoicedSound=Sonido Semisonoro (Tecla Muerta)
+AWT.ampersand=Ampersand
 AWT.asterisk=Asterisco
-AWT.quoteDbl=Dobles comillas
+AWT.quoteDbl=Dobles Comillas
 AWT.Less=Menor que
 AWT.greater=Mayor que
-AWT.braceLeft=Abrir llave
-AWT.braceRight=Cerrar llave
+AWT.braceLeft=Llave de Apertura
+AWT.braceRight=Llave de Cierre
 AWT.at=Arroba
 AWT.colon=Dos puntos
 AWT.circumflex=Circunflejo
-AWT.dollar=D\u00f3lar
+AWT.dollar=D\u00F3lar
 AWT.euro=Euro
-AWT.exclamationMark=Signo de exclamaci\u00f3n izquierdo
-AWT.invertedExclamationMark=Signo de exclamaci\u00f3n derecho
-AWT.leftParenthesis=Par\u00e9ntesis izquierdo
-AWT.numberSign=Signo de n\u00famero
-AWT.plus=M\u00e1s
+AWT.exclamationMark=Signo de Exclamaci\u00F3n de Cierre
+AWT.invertedExclamationMark=Signo de Exclamaci\u00F3n de Apertura
+AWT.leftParenthesis=Par\u00E9ntesis Izquierdo
+AWT.numberSign=Signo de N\u00FAmero
+AWT.plus=M\u00E1s
 AWT.minus=Menos
-AWT.rightParenthesis=Par\u00e9ntesis derecho
+AWT.rightParenthesis=Par\u00E9ntesis Derecho
 AWT.underscore=Subrayado
 AWT.final=Final
 AWT.convert=Convertir
 AWT.noconvert=No Convertir
 AWT.accept=Aceptar
-AWT.modechange=Cambio de modo
+AWT.modechange=Cambio de Modo
 AWT.kana=Kana
 AWT.kanji=Kanji
-AWT.alphanumeric=Alfanum\u00e9rico
+AWT.alphanumeric=Alfanum\u00E9rico
 AWT.katakana=Katakana
 AWT.hiragana=Hiragana
-AWT.fullWidth=Anchura completa
-AWT.halfWidth=Media anchura
-AWT.romanCharacters=Caracteres romanos
-AWT.allCandidates=Todos los candidatos
-AWT.previousCandidate=Candidato anterior
-AWT.codeInput=Entrada de c\u00f3digo
-AWT.japaneseKatakana=Caracteres katakana japoneses
-AWT.japaneseHiragana=Caracteres hiragana japoneses
-AWT.japaneseRoman=Caracteres romanos japoneses
-AWT.kanaLock=Bloquear kana
-AWT.inputMethodOnOff=Activar/desactivar m\u00e9todo de entrada
+AWT.fullWidth=Anchura Completa
+AWT.halfWidth=Media Anchura
+AWT.romanCharacters=Caracteres Romanos
+AWT.allCandidates=Todos los Candidatos
+AWT.previousCandidate=Candidato Anterior
+AWT.codeInput=Entrada de C\u00F3digo
+AWT.japaneseKatakana=Caracteres Katakana Japoneses
+AWT.japaneseHiragana=Caracteres Hiragana Japoneses
+AWT.japaneseRoman=Caracteres Romanos Japoneses
+AWT.kanaLock=Bloqueo Kana
+AWT.inputMethodOnOff=Activar/Desactivar M\u00E9todo de Entrada
 AWT.again=Repetir
 AWT.undo=Deshacer
 AWT.copy=Copiar
@@ -146,48 +146,47 @@
 AWT.compose=Componer
 
 # Numeric Keypad
-AWT.numpad=NumPad
-AWT.unknown=Unknown
-AWT.undefined=Undefined
+AWT.numpad=Teclado Num\u00E9rico
+AWT.unknown=Desconocido
+AWT.undefined=No Definido
 
 # Predefined cursor names
-AWT.DefaultCursor=Cursor predeterminado
-AWT.CrosshairCursor=Cursor de punto de mira
-AWT.TextCursor=Cursor de texto
-AWT.WaitCursor=Cursor de espera
-AWT.SWResizeCursor=Cursor de cambio de tama\u00f1o suroeste
-AWT.SEResizeCursor=Cursor de cambio de tama\u00f1o sudeste
-AWT.NWResizeCursor=Cursor de cambio de tama\u00f1o noroeste
-AWT.NEResizeCursor=Cursor de cambio de tama\u00f1o nordeste
-AWT.NResizeCursor=Cursor de cambio de tama\u00f1o norte
-AWT.SResizeCursor=Cursor de cambio de tama\u00f1o sur
-AWT.WResizeCursor=Cursor de cambio de tama\u00f1o oeste
-AWT.EResizeCursor=Cursor de cambio de tama\u00f1o este
-AWT.HandCursor=Cursor de mano
-AWT.MoveCursor=Cursor de movimiento
-AWT.DefaultDragCursor=Cursor de arrastrar predeterminado
-AWT.DefaultNoDropCursor=Cursor de no arrastrar predeterminado
-AWT.DefaultDropCursor=Cursor de soltar predeterminado
+AWT.DefaultCursor=Cursor Por defecto
+AWT.CrosshairCursor=Cursor de Punto de Mira
+AWT.TextCursor=Cursor de Texto
+AWT.WaitCursor=Cursor de Espera
+AWT.SWResizeCursor=Cursor de Cambio de Tama\u00F1o Suroeste
+AWT.SEResizeCursor=Cursor de Cambio de Tama\u00F1o Sudeste
+AWT.NWResizeCursor=Cursor de Cambio de Tama\u00F1o Noroeste
+AWT.NEResizeCursor=Cursor de Cambio de Tama\u00F1o Nordeste
+AWT.NResizeCursor=Cursor de Cambio de Tama\u00F1o Norte
+AWT.SResizeCursor=Cursor de Cambio de Tama\u00F1o Sur
+AWT.WResizeCursor=Cursor de Cambio de Tama\u00F1o Oeste
+AWT.EResizeCursor=Cursor de Cambio de Tama\u00F1o este
+AWT.HandCursor=Cursor de Mano
+AWT.MoveCursor=Cursor de Movimiento
+AWT.DefaultDragCursor=Cursor de Arrastrar Por defecto
+AWT.DefaultNoDropCursor=Cursor de No Arrastrar Por Defecto
+AWT.DefaultDropCursor=Cursor de Soltar Por Defecto
 
 # Input method related strings
-AWT.CompositionWindowTitle=Ventana de entrada
-AWT.InputMethodSelectionMenu=Seleccionar m\u00e9todo de entrada
-AWT.HostInputMethodDisplayName=M\u00e9todos de entrada del sistema
-AWT.InputMethodLanguage.ja=Japon\u00e9s
+AWT.CompositionWindowTitle=Ventana de Entrada
+AWT.InputMethodSelectionMenu=Seleccionar M\u00E9todo de Entrada
+AWT.HostInputMethodDisplayName=M\u00E9todos de Entrada del Sistema
+AWT.InputMethodLanguage.ja=Japon\u00E9s
 AWT.InputMethodLanguage.ko=Coreano
 AWT.InputMethodLanguage.zh=Chino
-AWT.InputMethodLanguage.zh_CN=Chino simplificado
-AWT.InputMethodLanguage.zh_TW=Chino tradicional
+AWT.InputMethodLanguage.zh_CN=Chino Simplificado
+AWT.InputMethodLanguage.zh_TW=Chino Tradicional
 AWT.InputMethodCreationFailed=No se ha podido crear {0}. Motivo: {1}
 
 # Property to select between on-the-spot and below-the-spot
 # composition with input methods. Valid values:
 # "on-the-spot", "below-the-spot".
 # May be overridden from command line.
-java.awt.im.style=en-el-acto
+java.awt.im.style=en el lugar
 java.awt.def.delay=30
 
 # Warnings
-AWT.InconsistentDLLsWarning=Puede que las operaciones textuales no funcionen correctamente debido a un conjunto incompatible de librer\u00edas de enlace \
+AWT.InconsistentDLLsWarning=Puede que las operaciones textuales no funcionen correctamente debido a un juego incoherente de bibliotecas de enlaces din\u00E1micos (DLL) instaladas en su sistema. Para obtener m\u00E1s informaci\u00F3n acerca de este problema y de la soluci\u00F3n alternativa sugerida, consulte Java(TM) 2 SDK, Standard Edition Release Notes en java.sun.com.
 
-
--- a/jdk/src/share/classes/sun/awt/resources/awt_fr.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/awt/resources/awt_fr.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -7,20 +7,20 @@
 AWT.shift=Maj
 AWT.control=Ctrl
 AWT.alt=Alt
-AWT.meta=M\u00e9ta
-AWT.altGraph=Alt graphe
+AWT.meta=M\u00E9ta
+AWT.altGraph=Alt graphique
 
 # Key names
-AWT.enter=Entr\u00e9e
-AWT.backSpace=Retour arri\u00e8re
+AWT.enter=Entr\u00E9e
+AWT.backSpace=Retour arri\u00E8re
 AWT.tab=Tab
 AWT.cancel=Annuler
 AWT.clear=Effacer
 AWT.pause=Pause
 AWT.capsLock=Verrouillage des majuscules
-AWT.escape=Esc
+AWT.escape=Echap
 AWT.space=Espace
-AWT.pgup=Page pr\u00e9c\u00e9dente
+AWT.pgup=Page pr\u00E9c\u00E9dente
 AWT.pgdn=Page suivante
 AWT.end=Fin
 AWT.home=Origine
@@ -28,25 +28,25 @@
 AWT.up=Haut
 AWT.right=Droite
 AWT.down=Bas
-AWT.begin=Begin
-AWT.comma=Comma
-AWT.period=Period
-AWT.slash=Slash
-AWT.semicolon=Semicolon
-AWT.equals=Equals
-AWT.openBracket=Open Bracket
-AWT.backSlash=Back Slash
-AWT.closeBracket=Close Bracket
-AWT.multiply=Pav\u00e9 num\u00e9rique *
-AWT.add=Pav\u00e9 num\u00e9rique +
-AWT.separator=Pav\u00e9 num\u00e9rique ,
-AWT.separater=Pav\u00e9 num\u00e9rique ,  # for backwards compatibility only
-AWT.subtract=Pav\u00e9 num\u00e9rique -
-AWT.decimal=Pav\u00e9 num\u00e9rique .
-AWT.divide=Pav\u00e9 num\u00e9rique /
+AWT.begin=D\u00E9but
+AWT.comma=Virgule
+AWT.period=Point
+AWT.slash=Barre oblique
+AWT.semicolon=Point-virgule
+AWT.equals=Egal
+AWT.openBracket=Crochet ouvrant
+AWT.backSlash=Barre oblique inverse
+AWT.closeBracket=Crochet fermant
+AWT.multiply=Pav\u00E9 num\u00E9rique *
+AWT.add=Pav\u00E9 num\u00E9rique +
+AWT.separator=Pav\u00E9 num\u00E9rique ,
+AWT.separater=Pav\u00E9 num\u00E9rique ,
+AWT.subtract=Pav\u00E9 num\u00E9rique -
+AWT.decimal=Pav\u00E9 num\u00E9rique .
+AWT.divide=Pav\u00E9 num\u00E9rique /
 AWT.delete=Supprimer
-AWT.numLock=Verrouillage du pav\u00e9 num\u00e9rique
-AWT.scrollLock=Verrouillage du d\u00e9filement
+AWT.numLock=Verrouillage du pav\u00E9 num\u00E9rique
+AWT.scrollLock=Verrouillage du d\u00E9filement
 AWT.f1=F1
 AWT.f2=F2
 AWT.f3=F3
@@ -71,34 +71,34 @@
 AWT.f22=F22
 AWT.f23=F23
 AWT.f24=F24
-AWT.printScreen=Impression d''\u00e9cran
-AWT.insert=Ins\u00e9rer
+AWT.printScreen=Impression d'\u00E9cran
+AWT.insert=Ins\u00E9rer
 AWT.help=Aide
 AWT.windows=Windows
-AWT.context=Context Menu
-AWT.backQuote=Guillemet ouvrant
-AWT.quote=Guillemet fermant
+AWT.context=Menu contextuel
+AWT.backQuote=Apostrophe invers\u00E9e
+AWT.quote=Apostrophe
 AWT.deadGrave=Accent grave
 AWT.deadAcute=Accent aigu
 AWT.deadCircumflex=Accent circonflexe
 AWT.deadTilde=Tilde
 AWT.deadMacron=Macron
 AWT.deadBreve=Demi-cercle
-AWT.deadAboveDot=Point en haut
-AWT.deadDiaeresis=Tr\u00e9ma
-AWT.deadAboveRing=Anneau en haut
-AWT.deadDoubleAcute=Double accent pointu
+AWT.deadAboveDot=Point en chef
+AWT.deadDiaeresis=Tr\u00E9ma
+AWT.deadAboveRing=Anneau en chef
+AWT.deadDoubleAcute=Double accent aigu
 AWT.deadCaron=Caron
-AWT.deadCedilla=C\u00e9dille
+AWT.deadCedilla=C\u00E9dille
 AWT.deadOgonek=Ogonek
 AWT.deadIota=Iota
-AWT.deadVoicedSound=Son vois\u00e9
-AWT.deadSemivoicedSound=Son semi-vois\u00e9
-AWT.ampersand=Perlu\u00e8te
-AWT.asterisk=Ast\u00e9risque
+AWT.deadVoicedSound=Son vois\u00E9
+AWT.deadSemivoicedSound=Son semi-vois\u00E9
+AWT.ampersand=Esperluette
+AWT.asterisk=Ast\u00E9risque
 AWT.quoteDbl=Guillemets
-AWT.Less=Inf\u00e9rieur \u00e0
-AWT.greater=Sup\u00e9rieur \u00e0
+AWT.Less=Inf\u00E9rieur \u00E0
+AWT.greater=Sup\u00E9rieur \u00E0
 AWT.braceLeft=Accolade ouvrante
 AWT.braceRight=Accolade fermante
 AWT.at=A commercial
@@ -106,14 +106,14 @@
 AWT.circumflex=Circonflexe
 AWT.dollar=Dollar
 AWT.euro=Euro
-AWT.exclamationMark=Point d''exclamation
-AWT.invertedExclamationMark=Point d''exclamation invers\u00e9
-AWT.leftParenthesis=Parenth\u00e8se ouvrante
-AWT.numberSign=Signe Num\u00e9ro
+AWT.exclamationMark=Point d'exclamation
+AWT.invertedExclamationMark=Point d'exclamation invers\u00E9
+AWT.leftParenthesis=Parenth\u00E8se ouvrante
+AWT.numberSign=Di\u00E8se
 AWT.plus=Plus
 AWT.minus=Moins
-AWT.rightParenthesis=Parenth\u00e8se fermante
-AWT.underscore=Tiret de soulignement
+AWT.rightParenthesis=Parenth\u00E8se fermante
+AWT.underscore=Trait de soulignement
 AWT.final=Final
 AWT.convert=Convertir
 AWT.noconvert=Ne pas convertir
@@ -121,64 +121,64 @@
 AWT.modechange=Changement de mode
 AWT.kana=Kana
 AWT.kanji=Kanji
-AWT.alphanumeric=Alphanum\u00e9rique
+AWT.alphanumeric=Alphanum\u00E9rique
 AWT.katakana=Katakana
 AWT.hiragana=Hiragana
 AWT.fullWidth=Pleine largeur
 AWT.halfWidth=Demi-largeur
-AWT.romanCharacters=Caract\u00e8res romains
+AWT.romanCharacters=Caract\u00E8res romains
 AWT.allCandidates=Tous les candidats
-AWT.previousCandidate=Candidat pr\u00e9c\u00e9dent
-AWT.codeInput=Entr\u00e9e de code
+AWT.previousCandidate=Candidat pr\u00E9c\u00E9dent
+AWT.codeInput=Entr\u00E9e de code
 AWT.japaneseKatakana=Japonais Katakana
 AWT.japaneseHiragana=Japonais Hiragana
 AWT.japaneseRoman=Japonais romain
 AWT.kanaLock=Verrouiller Kana
-AWT.inputMethodOnOff=Activation/d\u00e9sactivation de la m\u00e9thode d''entr\u00e9e
-AWT.again=R\u00e9p\u00e9ter
+AWT.inputMethodOnOff=Activation/d\u00E9sactivation de la m\u00E9thode d'entr\u00E9e
+AWT.again=R\u00E9p\u00E9ter
 AWT.undo=Annuler
 AWT.copy=Copier
 AWT.paste=Coller
 AWT.cut=Couper
 AWT.find=Rechercher
 AWT.props=Props
-AWT.stop=Arr\u00eater
+AWT.stop=Arr\u00EAter
 AWT.compose=Composer
 
 # Numeric Keypad
-AWT.numpad=NumPad
-AWT.unknown=Unknown
-AWT.undefined=Undefined
+AWT.numpad=Pav\u00E9 num\u00E9rique
+AWT.unknown=Inconnu
+AWT.undefined=Non d\u00E9fini
 
 # Predefined cursor names
-AWT.DefaultCursor=Pointeur par d\u00e9faut
-AWT.CrosshairCursor=Pointeur r\u00e9ticulaire
+AWT.DefaultCursor=Curseur par d\u00E9faut
+AWT.CrosshairCursor=Curseur r\u00E9ticulaire
 AWT.TextCursor=Curseur de texte
-AWT.WaitCursor=Pointeur d''attente
-AWT.SWResizeCursor=Pointeur de redimensionnement sud-ouest
-AWT.SEResizeCursor=Pointeur de redimensionnement sud-est
-AWT.NWResizeCursor=Pointeur de redimensionnement nord-ouest
-AWT.NEResizeCursor=Pointeur de redimensionnement nord-est
-AWT.NResizeCursor=Pointeur de redimensionnement nord
-AWT.SResizeCursor=Pointeur de redimensionnement sud
-AWT.WResizeCursor=Pointeur de redimensionnement ouest
-AWT.EResizeCursor=Pointeur de redimensionnement est
-AWT.HandCursor=Pointeur en forme de main
-AWT.MoveCursor=Pointeur de d\u00e9placement
-AWT.DefaultDragCursor=Pointeur de d\u00e9placement par d\u00e9faut
-AWT.DefaultNoDropCursor=Pointeur non d\u00e9pla\u00e7ant par d\u00e9faut
-AWT.DefaultDropCursor=Pointeur de pose par d\u00e9faut
+AWT.WaitCursor=Curseur d'attente
+AWT.SWResizeCursor=Curseur de redimensionnement sud-ouest
+AWT.SEResizeCursor=Curseur de redimensionnement sud-est
+AWT.NWResizeCursor=Curseur de redimensionnement nord-ouest
+AWT.NEResizeCursor=Curseur de redimensionnement nord-est
+AWT.NResizeCursor=Curseur de redimensionnement nord
+AWT.SResizeCursor=Curseur de redimensionnement sud
+AWT.WResizeCursor=Curseur de redimensionnement ouest
+AWT.EResizeCursor=Curseur de redimensionnement est
+AWT.HandCursor=Curseur en forme de main
+AWT.MoveCursor=Curseur de d\u00E9placement
+AWT.DefaultDragCursor=Curseur de d\u00E9placement par d\u00E9faut
+AWT.DefaultNoDropCursor=Curseur non d\u00E9pla\u00E7ant par d\u00E9faut
+AWT.DefaultDropCursor=Curseur de pose par d\u00E9faut
 
 # Input method related strings
-AWT.CompositionWindowTitle=Fen\u00eatre d''entr\u00e9e
-AWT.InputMethodSelectionMenu=S\u00e9lectionner la m\u00e9thode d''entr\u00e9e
-AWT.HostInputMethodDisplayName=M\u00e9thodes syst\u00e8me d''entr\u00e9e
+AWT.CompositionWindowTitle=Fen\u00EAtre d'entr\u00E9e
+AWT.InputMethodSelectionMenu=S\u00E9lectionner la m\u00E9thode d'entr\u00E9e
+AWT.HostInputMethodDisplayName=M\u00E9thodes d'entr\u00E9e syst\u00E8me
 AWT.InputMethodLanguage.ja=Japonais
-AWT.InputMethodLanguage.ko=Cor\u00e9en
+AWT.InputMethodLanguage.ko=Cor\u00E9en
 AWT.InputMethodLanguage.zh=Chinois
-AWT.InputMethodLanguage.zh_CN=Chinois simplifi\u00e9
+AWT.InputMethodLanguage.zh_CN=Chinois simplifi\u00E9
 AWT.InputMethodLanguage.zh_TW=Chinois traditionnel
-AWT.InputMethodCreationFailed=Impossible de cr\u00e9er {0}.  Raison\u00a0: {1}
+AWT.InputMethodCreationFailed=Impossible de cr\u00E9er {0}.  Raison\u00A0: {1}
 
 # Property to select between on-the-spot and below-the-spot
 # composition with input methods. Valid values:
@@ -188,5 +188,5 @@
 java.awt.def.delay=30
 
 # Warnings
-AWT.InconsistentDLLsWarning=Text based operations may not work correctly due to an inconsistent set of dynamic linking libraries (DLLs) installed on your system. For more information on this problem and a suggested workaround please see the Java(TM) 2 SDK, Standard Edition Release Notes on java.sun.com.
+AWT.InconsistentDLLsWarning=Il se peut que les op\u00E9rations li\u00E9es au texte ne fonctionnent pas correctement lorsqu'un ensemble incoh\u00E9rent de DLL est install\u00E9 sur le syst\u00E8me. Vous trouverez plus de d\u00E9tails sur ce probl\u00E8me et sur sa solution dans le document Java(TM) 2 SDK, Standard Edition Release Notes sur java.sun.com.
 
--- a/jdk/src/share/classes/sun/awt/resources/awt_it.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/awt/resources/awt_it.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -16,34 +16,34 @@
 AWT.tab=Tabulazione
 AWT.cancel=Annulla
 AWT.clear=Cancella
-AWT.pause=Pausa
+AWT.pause=Sospendi
 AWT.capsLock=Bloc Maiusc
 AWT.escape=Esc
 AWT.space=Barra spaziatrice
 AWT.pgup=Pg Su
-AWT.pgdn=Pg Gi\u00f9
+AWT.pgdn=Pg Gi\u00F9
 AWT.end=Fine
 AWT.home=Home
 AWT.left=Sinistra
 AWT.up=Su
 AWT.right=Destra
-AWT.down=Gi\u00f9
-AWT.begin=Begin
-AWT.comma=Comma
-AWT.period=Period
-AWT.slash=Slash
-AWT.semicolon=Semicolon
-AWT.equals=Equals
-AWT.openBracket=Open Bracket
-AWT.backSlash=Back Slash
-AWT.closeBracket=Close Bracket
-AWT.multiply=TastNum *
-AWT.add=TastNum +
-AWT.separator=TastNum ,
-AWT.separater=TastNum ,
-AWT.subtract=TastNum -
-AWT.decimal=TastNum .
-AWT.divide=TastNum /
+AWT.down=Gi\u00F9
+AWT.begin=Inizio
+AWT.comma=Virgola
+AWT.period=Punto
+AWT.slash=Barra
+AWT.semicolon=Punto e virgola
+AWT.equals=Uguale
+AWT.openBracket=Parentesi quadra aperta
+AWT.backSlash=Barra rovesciata
+AWT.closeBracket=Parentesi quadra chiusa
+AWT.multiply=NumPad *
+AWT.add=NumPad +
+AWT.separator=NumPad ,
+AWT.separater=NumPad ,
+AWT.subtract=NumPad -
+AWT.decimal=NumPad .
+AWT.divide=NumPad /
 AWT.delete=Elimina
 AWT.numLock=Bloc Num
 AWT.scrollLock=Bloc Scorr
@@ -75,9 +75,9 @@
 AWT.insert=Ins
 AWT.help=?
 AWT.windows=Windows
-AWT.context=Context Menu
-AWT.backQuote=Virgolette invertite
-AWT.quote=Virgolette
+AWT.context=Menu di scelta rapida
+AWT.backQuote=Apice invertito
+AWT.quote=Apice
 AWT.deadGrave=Grave non attivo
 AWT.deadAcute=Acuto non attivo
 AWT.deadCircumflex=Circonflesso non attivo
@@ -96,7 +96,7 @@
 AWT.deadSemivoicedSound=Suono semivocalizzato non attivo
 AWT.ampersand=E commerciale
 AWT.asterisk=Asterisco
-AWT.quoteDbl=Virgolette doppie
+AWT.quoteDbl=Virgolette
 AWT.Less=Minore
 AWT.greater=Maggiore
 AWT.braceLeft=Parentesi graffa aperta
@@ -110,15 +110,15 @@
 AWT.invertedExclamationMark=Punto esclamativo invertito
 AWT.leftParenthesis=Parentesi aperta
 AWT.numberSign=Cancelletto
-AWT.plus=Pi\u00f9
+AWT.plus=Pi\u00F9
 AWT.minus=Meno
 AWT.rightParenthesis=Parentesi chiusa
 AWT.underscore=Sottolineatura
 AWT.final=Finale
 AWT.convert=Converti
 AWT.noconvert=Non convertire
-AWT.accept=Accetta
-AWT.modechange=Cambia modalit\u00e0
+AWT.accept=Accetto
+AWT.modechange=Modifica modalit\u00E0
 AWT.kana=Kana
 AWT.kanji=Kanji
 AWT.alphanumeric=Alfanumerico
@@ -141,14 +141,14 @@
 AWT.paste=Incolla
 AWT.cut=Taglia
 AWT.find=Trova
-AWT.props=Props
-AWT.stop=Interrompi caricamento pagina
+AWT.props=Propriet\u00E0
+AWT.stop=Arresta
 AWT.compose=Componi
 
 # Numeric Keypad
 AWT.numpad=NumPad
-AWT.unknown=Unknown
-AWT.undefined=Undefined
+AWT.unknown=Sconosciuto
+AWT.undefined=Non definito
 
 # Predefined cursor names
 AWT.DefaultCursor=Cursore predefinito
@@ -188,5 +188,5 @@
 java.awt.def.delay=30
 
 # Warnings
-AWT.InconsistentDLLsWarning=Le operazioni sul testo possono non funzionarecorrettamente, a causa di una serie non coerente di DLL installate sul sistema.Per ulteriori informazioni su questo problema e per la soluzione suggerita,vedere le note di rilascio di Java(TM) 2 SDK, Standard Edition su java.sun.com.
+AWT.InconsistentDLLsWarning=Le operazioni sul testo possono non funzionare correttamente, a causa di una serie non coerente di DLL installate sul sistema. Per ulteriori informazioni su questo problema e per la soluzione suggerita, vedere le note di rilascio di Java(TM) 2 SDK, Standard Edition su java.sun.com.
 
--- a/jdk/src/share/classes/sun/awt/resources/awt_ja.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/awt/resources/awt_ja.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -7,36 +7,36 @@
 AWT.shift=Shift
 AWT.control=Ctrl
 AWT.alt=Alt
-AWT.meta=Meta
-AWT.altGraph=Alt Graph
+AWT.meta=\u30E1\u30BF
+AWT.altGraph=Alt\u30B0\u30E9\u30D5
 
 # Key names
 AWT.enter=Enter
 AWT.backSpace=Backspace
 AWT.tab=Tab
-AWT.cancel=Cancel
-AWT.clear=Clear
-AWT.pause=Pause
+AWT.cancel=\u53D6\u6D88
+AWT.clear=\u30AF\u30EA\u30A2
+AWT.pause=\u4E00\u6642\u505C\u6B62
 AWT.capsLock=Caps Lock
-AWT.escape=Escape
-AWT.space=Space
+AWT.escape=Esc
+AWT.space=\u30B9\u30DA\u30FC\u30B9
 AWT.pgup=Page Up
 AWT.pgdn=Page Down
 AWT.end=End
 AWT.home=Home
-AWT.left=Left
-AWT.up=Up
-AWT.right=Right
-AWT.down=Down
-AWT.begin=Begin
-AWT.comma=Comma
-AWT.period=Period
-AWT.slash=Slash
-AWT.semicolon=Semicolon
-AWT.equals=Equals
-AWT.openBracket=Open Bracket
-AWT.backSlash=Back Slash
-AWT.closeBracket=Close Bracket
+AWT.left=\u5DE6
+AWT.up=\u4E0A
+AWT.right=\u53F3
+AWT.down=\u4E0B
+AWT.begin=\u958B\u59CB
+AWT.comma=\u30AB\u30F3\u30DE
+AWT.period=\u30D4\u30EA\u30AA\u30C9
+AWT.slash=\u30B9\u30E9\u30C3\u30B7\u30E5
+AWT.semicolon=\u30BB\u30DF\u30B3\u30ED\u30F3
+AWT.equals=\u7B49\u53F7
+AWT.openBracket=\u5DE6\u5927\u30AB\u30C3\u30B3
+AWT.backSlash=\u30D0\u30C3\u30AF\u30B9\u30E9\u30C3\u30B7\u30E5
+AWT.closeBracket=\u53F3\u5927\u30AB\u30C3\u30B3
 AWT.multiply=NumPad *
 AWT.add=NumPad +
 AWT.separator=NumPad ,
@@ -73,11 +73,11 @@
 AWT.f24=F24
 AWT.printScreen=Print Screen
 AWT.insert=Insert
-AWT.help=Help
+AWT.help=\u30D8\u30EB\u30D7
 AWT.windows=Windows
-AWT.context=Context Menu
-AWT.backQuote=Back Quote
-AWT.quote=Quote
+AWT.context=\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30FB\u30E1\u30CB\u30E5\u30FC
+AWT.backQuote=\u9006\u5F15\u7528\u7B26
+AWT.quote=\u5F15\u7528\u7B26
 AWT.deadGrave=Dead Grave
 AWT.deadAcute=Dead Acute
 AWT.deadCircumflex=Dead Circumflex
@@ -94,99 +94,99 @@
 AWT.deadIota=Dead Iota
 AWT.deadVoicedSound=Dead Voiced Sound
 AWT.deadSemivoicedSound=Dead Semivoiced Sound
-AWT.ampersand=Ampersand
-AWT.asterisk=Asterisk
-AWT.quoteDbl=Double Quote
-AWT.Less=Less
-AWT.greater=Greater
-AWT.braceLeft=Left Brace
-AWT.braceRight=Right Brace
-AWT.at=At
-AWT.colon=Colon
-AWT.circumflex=Circumflex
-AWT.dollar=Dollar
-AWT.euro=Euro
-AWT.exclamationMark=Exclamation Mark
-AWT.invertedExclamationMark=Inverted Exclamation Mark
-AWT.leftParenthesis=Left Parenthesis
-AWT.numberSign=Number Sign
-AWT.plus=Plus
-AWT.minus=Minus
-AWT.rightParenthesis=Right Parenthesis
-AWT.underscore=Underscore
-AWT.final=Final
-AWT.convert=\u5909\u63db
-AWT.noconvert=\u7121\u5909\u63db
-AWT.accept=\u78ba\u5b9a
-AWT.modechange=\u65e5\u672c\u8a9e On-Off
-AWT.kana=\u304b\u306a
-AWT.kanji=\u6f22\u5b57
-AWT.alphanumeric=\u82f1\u6570
-AWT.katakana=\u30ab\u30bf\u30ab\u30ca
-AWT.hiragana=\u3072\u3089\u304c\u306a
-AWT.fullWidth=\u5168\u89d2
-AWT.halfWidth=\u534a\u89d2
-AWT.romanCharacters=\u30ed\u30fc\u30de\u5b57
-AWT.allCandidates=\u5168\u5019\u88dc
-AWT.previousCandidate=\u524d\u5019\u88dc
-AWT.codeInput=\u30b3\u30fc\u30c9\u5165\u529b
-AWT.japaneseKatakana=Japanese Katakana
-AWT.japaneseHiragana=Japanese Hiragana
-AWT.japaneseRoman=Japanese Roman
-AWT.kanaLock=\u30ab\u30ca\u30ed\u30c3\u30af
-AWT.inputMethodOnOff=\u5165\u529b\u30e1\u30bd\u30c3\u30c9 On-Off
-AWT.again=Again
-AWT.undo=Undo
-AWT.copy=Copy
-AWT.paste=Paste
-AWT.cut=Cut
-AWT.find=Find
-AWT.props=Props
-AWT.stop=Stop
-AWT.compose=Compose
+AWT.ampersand=\u30A2\u30F3\u30D1\u30B5\u30F3\u30C9
+AWT.asterisk=\u30A2\u30B9\u30BF\u30EA\u30B9\u30AF
+AWT.quoteDbl=\u4E8C\u91CD\u5F15\u7528\u7B26
+AWT.Less=\u3088\u308A\u5C0F\u3055\u3044
+AWT.greater=\u3088\u308A\u5927\u304D\u3044
+AWT.braceLeft=\u5DE6\u4E2D\u30AB\u30C3\u30B3
+AWT.braceRight=\u53F3\u4E2D\u30AB\u30C3\u30B3
+AWT.at=\u30A2\u30C3\u30C8
+AWT.colon=\u30B3\u30ED\u30F3
+AWT.circumflex=\u66F2\u6298\u30A2\u30AF\u30BB\u30F3\u30C8\u8A18\u53F7
+AWT.dollar=\u30C9\u30EB
+AWT.euro=\u30E6\u30FC\u30ED
+AWT.exclamationMark=\u611F\u5606\u7B26
+AWT.invertedExclamationMark=\u9006\u611F\u5606\u7B26
+AWT.leftParenthesis=\u5DE6\u4E38\u30AB\u30C3\u30B3
+AWT.numberSign=\u756A\u53F7\u8A18\u53F7
+AWT.plus=\u30D7\u30E9\u30B9
+AWT.minus=\u30DE\u30A4\u30CA\u30B9
+AWT.rightParenthesis=\u53F3\u4E38\u30AB\u30C3\u30B3
+AWT.underscore=\u30A2\u30F3\u30C0\u30FC\u30B9\u30B3\u30A2
+AWT.final=\u6700\u7D42
+AWT.convert=\u5909\u63DB
+AWT.noconvert=\u7121\u5909\u63DB
+AWT.accept=\u78BA\u5B9A
+AWT.modechange=\u30E2\u30FC\u30C9\u5909\u66F4
+AWT.kana=\u304B\u306A
+AWT.kanji=\u6F22\u5B57
+AWT.alphanumeric=\u82F1\u6570\u5B57
+AWT.katakana=\u30AB\u30BF\u30AB\u30CA
+AWT.hiragana=\u3072\u3089\u304C\u306A
+AWT.fullWidth=\u5168\u89D2
+AWT.halfWidth=\u534A\u89D2
+AWT.romanCharacters=\u30ED\u30FC\u30DE\u5B57
+AWT.allCandidates=\u5168\u5019\u88DC
+AWT.previousCandidate=\u524D\u5019\u88DC
+AWT.codeInput=\u30B3\u30FC\u30C9\u5165\u529B
+AWT.japaneseKatakana=\u65E5\u672C\u8A9E\u306E\u30AB\u30BF\u30AB\u30CA
+AWT.japaneseHiragana=\u65E5\u672C\u8A9E\u306E\u3072\u3089\u304C\u306A
+AWT.japaneseRoman=\u65E5\u672C\u8A9E\u306E\u30ED\u30FC\u30DE\u5B57
+AWT.kanaLock=\u30AB\u30CA\u30FB\u30ED\u30C3\u30AF
+AWT.inputMethodOnOff=\u5165\u529B\u30E1\u30BD\u30C3\u30C9On-Off
+AWT.again=\u518D\u5EA6
+AWT.undo=\u5143\u306B\u623B\u3059
+AWT.copy=\u30B3\u30D4\u30FC
+AWT.paste=\u8CBC\u4ED8\u3051
+AWT.cut=\u5207\u53D6\u308A
+AWT.find=\u691C\u7D22
+AWT.props=\u30D7\u30ED\u30D1\u30C6\u30A3
+AWT.stop=\u505C\u6B62
+AWT.compose=\u4F5C\u6210
 
 # Numeric Keypad
 AWT.numpad=NumPad
-AWT.unknown=Unknown
-AWT.undefined=Undefined
+AWT.unknown=\u4E0D\u660E
+AWT.undefined=\u672A\u5B9A\u7FA9
 
 # Predefined cursor names
-AWT.DefaultCursor=Default Cursor
-AWT.CrosshairCursor=Crosshair Cursor
-AWT.TextCursor=Text Cursor
-AWT.WaitCursor=Wait Cursor
-AWT.SWResizeCursor=Southwest Resize Cursor
-AWT.SEResizeCursor=Southeast Resize Cursor
-AWT.NWResizeCursor=Northwest Resize Cursor
-AWT.NEResizeCursor=Northeast Resize Cursor
-AWT.NResizeCursor=North Resize Cursor
-AWT.SResizeCursor=South Resize Cursor
-AWT.WResizeCursor=West Resize Cursor
-AWT.EResizeCursor=East Resize Cursor
-AWT.HandCursor=Hand Cursor
-AWT.MoveCursor=Move Cursor
-AWT.DefaultDragCursor=Default Drag Cursor
-AWT.DefaultNoDropCursor=Default NoDrag Cursor
-AWT.DefaultDropCursor=Default Drop Cursor
+AWT.DefaultCursor=\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30AB\u30FC\u30BD\u30EB
+AWT.CrosshairCursor=\u5341\u5B57\u30AB\u30FC\u30BD\u30EB
+AWT.TextCursor=\u30C6\u30AD\u30B9\u30C8\u30FB\u30AB\u30FC\u30BD\u30EB
+AWT.WaitCursor=\u5F85\u6A5F\u30AB\u30FC\u30BD\u30EB
+AWT.SWResizeCursor=\u5357\u897F\u65B9\u5411\u306E\u30EA\u30B5\u30A4\u30BA\u30FB\u30AB\u30FC\u30BD\u30EB
+AWT.SEResizeCursor=\u5357\u6771\u65B9\u5411\u306E\u30EA\u30B5\u30A4\u30BA\u30FB\u30AB\u30FC\u30BD\u30EB
+AWT.NWResizeCursor=\u5317\u897F\u65B9\u5411\u306E\u30EA\u30B5\u30A4\u30BA\u30FB\u30AB\u30FC\u30BD\u30EB
+AWT.NEResizeCursor=\u5317\u6771\u65B9\u5411\u306E\u30EA\u30B5\u30A4\u30BA\u30FB\u30AB\u30FC\u30BD\u30EB
+AWT.NResizeCursor=\u5317\u65B9\u5411\u306E\u30EA\u30B5\u30A4\u30BA\u30FB\u30AB\u30FC\u30BD\u30EB
+AWT.SResizeCursor=\u5357\u65B9\u5411\u306E\u30EA\u30B5\u30A4\u30BA\u30FB\u30AB\u30FC\u30BD\u30EB
+AWT.WResizeCursor=\u897F\u65B9\u5411\u306E\u30EA\u30B5\u30A4\u30BA\u30FB\u30AB\u30FC\u30BD\u30EB
+AWT.EResizeCursor=\u6771\u65B9\u5411\u306E\u30EA\u30B5\u30A4\u30BA\u30FB\u30AB\u30FC\u30BD\u30EB
+AWT.HandCursor=\u6307\u578B\u30AB\u30FC\u30BD\u30EB
+AWT.MoveCursor=\u79FB\u52D5\u30AB\u30FC\u30BD\u30EB
+AWT.DefaultDragCursor=\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30C9\u30E9\u30C3\u30B0\u30FB\u30AB\u30FC\u30BD\u30EB
+AWT.DefaultNoDropCursor=\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30C9\u30E9\u30C3\u30B0\u7981\u6B62\u30AB\u30FC\u30BD\u30EB
+AWT.DefaultDropCursor=\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30C9\u30ED\u30C3\u30D7\u30FB\u30AB\u30FC\u30BD\u30EB
 
 # Input method related strings
-AWT.CompositionWindowTitle=\u5165\u529b\u30a6\u30a3\u30f3\u30c9\u30a6
-AWT.InputMethodSelectionMenu=\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9\u306e\u5207\u66ff\u3048
-AWT.HostInputMethodDisplayName=\u30b7\u30b9\u30c6\u30e0\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9
-AWT.InputMethodLanguage.ja=\u65e5\u672c\u8a9e
-AWT.InputMethodLanguage.ko=\u97d3\u56fd\u8a9e
-AWT.InputMethodLanguage.zh=\u4e2d\u56fd\u8a9e
-AWT.InputMethodLanguage.zh_CN=\u4e2d\u56fd\u8a9e\uff08\u7c21\u4f53\u5b57\uff09
-AWT.InputMethodLanguage.zh_TW=\u4e2d\u56fd\u8a9e\uff08\u7e41\u4f53\u5b57\uff09
-AWT.InputMethodCreationFailed={0} \u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 \u7406\u7531: {1}
+AWT.CompositionWindowTitle=\u5165\u529B\u30A6\u30A3\u30F3\u30C9\u30A6
+AWT.InputMethodSelectionMenu=\u5165\u529B\u30E1\u30BD\u30C3\u30C9\u306E\u9078\u629E
+AWT.HostInputMethodDisplayName=\u30B7\u30B9\u30C6\u30E0\u5165\u529B\u30E1\u30BD\u30C3\u30C9
+AWT.InputMethodLanguage.ja=\u65E5\u672C\u8A9E
+AWT.InputMethodLanguage.ko=\u97D3\u56FD\u8A9E
+AWT.InputMethodLanguage.zh=\u4E2D\u56FD\u8A9E
+AWT.InputMethodLanguage.zh_CN=\u4E2D\u56FD\u8A9E(\u7C21\u4F53\u5B57)
+AWT.InputMethodLanguage.zh_TW=\u4E2D\u56FD\u8A9E(\u7E41\u4F53\u5B57)
+AWT.InputMethodCreationFailed={0}\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u7406\u7531: {1}
 
 # Property to select between on-the-spot and below-the-spot
 # composition with input methods. Valid values:
 # "on-the-spot", "below-the-spot".
 # May be overridden from command line.
-java.awt.im.style=on-the-spot
+java.awt.im.style=\u5373\u5EA7
 java.awt.def.delay=30
 
 # Warnings
-AWT.InconsistentDLLsWarning=\u30b7\u30b9\u30c6\u30e0\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u4e00\u9023\u306e\u30c0\u30a4\u30ca\u30df\u30c3\u30af\u30ea\u30f3\u30af\u30e9\u30a4\u30d6\u30e9\u30ea (DLL) \u306b\u77db\u76fe\u304c\u3042\u308b\u305f\u3081\u3001\u30c6\u30ad\u30b9\u30c8\u30d9\u30fc\u30b9\u306e\u64cd\u4f5c\u304c\u6b63\u3057\u304f\u52d5\u4f5c\u3057\u307e\u305b\u3093\u3002\u3053\u306e\u554f\u984c\u306e\u8a73\u7d30\u3068\u56de\u907f\u7b56\u306f\u3001java.sun.com \u4e0a\u306b\u3042\u308b Java(TM) 2 SDK, Standard Edition \u306e\u30ea\u30ea\u30fc\u30b9\u30ce\u30fc\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+AWT.InconsistentDLLsWarning=\u30B7\u30B9\u30C6\u30E0\u306B\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u308B\u4E00\u9023\u306E\u30C0\u30A4\u30CA\u30DF\u30C3\u30AF\u30FB\u30EA\u30F3\u30AF\u30FB\u30E9\u30A4\u30D6\u30E9\u30EA(DLL)\u306B\u77DB\u76FE\u304C\u3042\u308B\u305F\u3081\u3001\u30C6\u30AD\u30B9\u30C8\u30FB\u30D9\u30FC\u30B9\u306E\u64CD\u4F5C\u304C\u6B63\u3057\u304F\u52D5\u4F5C\u3057\u307E\u305B\u3093\u3002\u3053\u306E\u554F\u984C\u306E\u8A73\u7D30\u3068\u56DE\u907F\u7B56\u306F\u3001java.sun.com\u4E0A\u306B\u3042\u308BJava(TM) 2 SDK, Standard Edition\u306E\u30EA\u30EA\u30FC\u30B9\u30FB\u30CE\u30FC\u30C8\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002
 
--- a/jdk/src/share/classes/sun/awt/resources/awt_ko.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/awt/resources/awt_ko.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -115,70 +115,70 @@
 AWT.rightParenthesis=Right Parenthesis
 AWT.underscore=Underscore
 AWT.final=Final
-AWT.convert=\ubcc0\ud658
-AWT.noconvert=\ubcc0\ud658 \uc548\ud568
-AWT.accept=\uc801\uc6a9
-AWT.modechange=\ubaa8\ub4dc \ubcc0\uacbd
-AWT.kana=\uac00\ub098
-AWT.kanji=\uac04\uc9c0
-AWT.alphanumeric=\uc601\uc22b\uc790
-AWT.katakana=\uac00\ud0c0\uce74\ub098
-AWT.hiragana=\ud788\ub77c\uac00\ub098
+AWT.convert=\uBCC0\uD658
+AWT.noconvert=\uBCC0\uD658 \uC548\uD568
+AWT.accept=\uB3D9\uC758
+AWT.modechange=\uBAA8\uB4DC \uBCC0\uACBD
+AWT.kana=\uAC00\uB098
+AWT.kanji=\uAC04\uC9C0
+AWT.alphanumeric=\uC601\uC22B\uC790
+AWT.katakana=\uAC00\uD0C0\uCE74\uB098
+AWT.hiragana=\uD788\uB77C\uAC00\uB098
 AWT.fullWidth=Full-Width
 AWT.halfWidth=Half-Width
-AWT.romanCharacters=\ub85c\ub9c8 \ubb38\uc790
-AWT.allCandidates=\ubaa8\ub4e0 \ud6c4\ubcf4
-AWT.previousCandidate=\uc774\uc804 \ud6c4\ubcf4
-AWT.codeInput=\ucf54\ub4dc \uc785\ub825
-AWT.japaneseKatakana=\uc77c\ubcf8\uc5b4 \uac00\ud0c0\uce74\ub098
-AWT.japaneseHiragana=\uc77c\ubcf8\uc5b4 \ud788\ub77c\uac00\ub098
-AWT.japaneseRoman=\uc77c\ubcf8\uc5b4 \ub85c\ub9c8 \ubb38\uc790
-AWT.kanaLock=\uac00\ub098 \uc7a0\uae08
-AWT.inputMethodOnOff=\uc785\ub825 \uba54\uc18c\ub4dc \ucf2c/\ub054
-AWT.again=\ub2e4\uc2dc
-AWT.undo=\uc2e4\ud589 \ucde8\uc18c
-AWT.copy=\ubcf5\uc0ac
-AWT.paste=\ubd99\uc5ec\ub123\uae30
-AWT.cut=\uc798\ub77c\ub0b4\uae30
-AWT.find=\ucc3e\uae30
+AWT.romanCharacters=\uB85C\uB9C8 \uBB38\uC790
+AWT.allCandidates=\uBAA8\uB4E0 \uD6C4\uBCF4
+AWT.previousCandidate=\uC774\uC804 \uD6C4\uBCF4
+AWT.codeInput=\uCF54\uB4DC \uC785\uB825
+AWT.japaneseKatakana=\uC77C\uBCF8\uC5B4 \uAC00\uD0C0\uCE74\uB098
+AWT.japaneseHiragana=\uC77C\uBCF8\uC5B4 \uD788\uB77C\uAC00\uB098
+AWT.japaneseRoman=\uC77C\uBCF8\uC5B4 \uB85C\uB9C8 \uBB38\uC790
+AWT.kanaLock=\uAC00\uB098 \uC7A0\uAE08
+AWT.inputMethodOnOff=\uC785\uB825 \uBC29\uBC95 \uC124\uC815/\uD574\uC81C
+AWT.again=\uB2E4\uC2DC
+AWT.undo=\uC2E4\uD589 \uCDE8\uC18C
+AWT.copy=\uBCF5\uC0AC
+AWT.paste=\uBD99\uC5EC\uB123\uAE30
+AWT.cut=\uC798\uB77C\uB0B4\uAE30
+AWT.find=\uCC3E\uAE30
 AWT.props=Props
-AWT.stop=\uc815\uc9c0
-AWT.compose=\uad6c\uc131
+AWT.stop=\uC815\uC9C0
+AWT.compose=\uAD6C\uC131
 
 # Numeric Keypad
 AWT.numpad=NumPad
-AWT.unknown=Unknown
-AWT.undefined=Undefined
+AWT.unknown=\uC54C \uC218 \uC5C6\uC74C
+AWT.undefined=\uC815\uC758\uB418\uC9C0 \uC54A\uC74C
 
 # Predefined cursor names
-AWT.DefaultCursor=\uae30\ubcf8 \ucee4\uc11c
-AWT.CrosshairCursor=\uc2ed\uc790 \ucee4\uc11c
-AWT.TextCursor=\ud14d\uc2a4\ud2b8 \ucee4\uc11c
-AWT.WaitCursor=\ub300\uae30 \ucee4\uc11c
-AWT.SWResizeCursor=\ub0a8\uc11c \ubc29\ud5a5 \ud06c\uae30 \uc870\uc815 \ucee4\uc11c
-AWT.SEResizeCursor=\ub0a8\ub3d9 \ubc29\ud5a5 \ud06c\uae30 \uc870\uc815 \ucee4\uc11c
-AWT.NWResizeCursor=\ubd81\uc11c \ubc29\ud5a5 \ud06c\uae30 \uc870\uc815 \ucee4\uc11c
-AWT.NEResizeCursor=\ubd81\ub3d9 \ubc29\ud5a5 \ud06c\uae30 \uc870\uc815 \ucee4\uc11c
-AWT.NResizeCursor=\ubd81\ucabd \ubc29\ud5a5 \ud06c\uae30 \uc870\uc815 \ucee4\uc11c
-AWT.SResizeCursor=\ub0a8\ucabd \ubc29\ud5a5 \ud06c\uae30 \uc870\uc815 \ucee4\uc11c
-AWT.WResizeCursor=\uc11c\ucabd \ubc29\ud5a5 \ud06c\uae30 \uc870\uc815 \ucee4\uc11c
-AWT.EResizeCursor=\ub3d9\ucabd \ubc29\ud5a5 \ud06c\uae30 \uc870\uc815 \ucee4\uc11c
-AWT.HandCursor=\uc190 \ucee4\uc11c
-AWT.MoveCursor=\uc774\ub3d9 \ucee4\uc11c
-AWT.DefaultDragCursor=\uae30\ubcf8 \ub04c\uae30 \ucee4\uc11c
-AWT.DefaultNoDropCursor=\uae30\ubcf8 \ub04c\uc9c0 \uc54a\uc74c \ucee4\uc11c
-AWT.DefaultDropCursor=\uae30\ubcf8 \ub193\uae30 \ucee4\uc11c
+AWT.DefaultCursor=\uAE30\uBCF8 \uCEE4\uC11C
+AWT.CrosshairCursor=\uC2ED\uC790 \uCEE4\uC11C
+AWT.TextCursor=\uD14D\uC2A4\uD2B8 \uCEE4\uC11C
+AWT.WaitCursor=\uB300\uAE30 \uCEE4\uC11C
+AWT.SWResizeCursor=\uB0A8\uC11C \uBC29\uD5A5 \uD06C\uAE30 \uC870\uC815 \uCEE4\uC11C
+AWT.SEResizeCursor=\uB0A8\uB3D9 \uBC29\uD5A5 \uD06C\uAE30 \uC870\uC815 \uCEE4\uC11C
+AWT.NWResizeCursor=\uBD81\uC11C \uBC29\uD5A5 \uD06C\uAE30 \uC870\uC815 \uCEE4\uC11C
+AWT.NEResizeCursor=\uBD81\uB3D9 \uBC29\uD5A5 \uD06C\uAE30 \uC870\uC815 \uCEE4\uC11C
+AWT.NResizeCursor=\uBD81\uCABD \uBC29\uD5A5 \uD06C\uAE30 \uC870\uC815 \uCEE4\uC11C
+AWT.SResizeCursor=\uB0A8\uCABD \uBC29\uD5A5 \uD06C\uAE30 \uC870\uC815 \uCEE4\uC11C
+AWT.WResizeCursor=\uC11C\uCABD \uBC29\uD5A5 \uD06C\uAE30 \uC870\uC815 \uCEE4\uC11C
+AWT.EResizeCursor=\uB3D9\uCABD \uBC29\uD5A5 \uD06C\uAE30 \uC870\uC815 \uCEE4\uC11C
+AWT.HandCursor=\uC190 \uCEE4\uC11C
+AWT.MoveCursor=\uC774\uB3D9 \uCEE4\uC11C
+AWT.DefaultDragCursor=\uAE30\uBCF8 \uB04C\uAE30 \uCEE4\uC11C
+AWT.DefaultNoDropCursor=\uAE30\uBCF8 NoDrag \uCEE4\uC11C
+AWT.DefaultDropCursor=\uAE30\uBCF8 \uB193\uAE30 \uCEE4\uC11C
 
 # Input method related strings
-AWT.CompositionWindowTitle=\uc785\ub825 \ucc3d
-AWT.InputMethodSelectionMenu=\uc785\ub825 \ubc29\ubc95 \uc120\ud0dd
-AWT.HostInputMethodDisplayName=\uc2dc\uc2a4\ud15c \uc785\ub825 \ubc29\ubc95
-AWT.InputMethodLanguage.ja=\uc77c\ubcf8\uc5b4
-AWT.InputMethodLanguage.ko=\ud55c\uad6d\uc5b4
-AWT.InputMethodLanguage.zh=\uc911\uad6d\uc5b4
-AWT.InputMethodLanguage.zh_CN=\uc911\uad6d\uc5b4 \uac04\uccb4
-AWT.InputMethodLanguage.zh_TW=\uc911\uad6d\uc5b4 \ubc88\uccb4
-AWT.InputMethodCreationFailed={0}\uc744(\ub97c) \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.  \uc774\uc720: {1}
+AWT.CompositionWindowTitle=\uC785\uB825 \uCC3D
+AWT.InputMethodSelectionMenu=\uC785\uB825 \uBC29\uBC95 \uC120\uD0DD
+AWT.HostInputMethodDisplayName=\uC2DC\uC2A4\uD15C \uC785\uB825 \uBC29\uBC95
+AWT.InputMethodLanguage.ja=\uC77C\uBCF8\uC5B4
+AWT.InputMethodLanguage.ko=\uD55C\uAD6D\uC5B4
+AWT.InputMethodLanguage.zh=\uC911\uAD6D\uC5B4
+AWT.InputMethodLanguage.zh_CN=\uC911\uAD6D\uC5B4 \uAC04\uCCB4
+AWT.InputMethodLanguage.zh_TW=\uC911\uAD6D\uC5B4 \uBC88\uCCB4
+AWT.InputMethodCreationFailed={0}\uC744(\uB97C) \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC6D0\uC778: {1}
 
 # Property to select between on-the-spot and below-the-spot
 # composition with input methods. Valid values:
@@ -188,5 +188,5 @@
 java.awt.def.delay=30
 
 # Warnings
-AWT.InconsistentDLLsWarning=\uc2dc\uc2a4\ud15c\uc5d0 \uc124\uce58\ub41c DLL(dynamic linking libraries) \uc138\ud2b8\uac00 \uc77c\uce58\ud558\uc9c0 \uc54a\uc73c\ubbc0\ub85c \uc791\uc5c5\uc5d0 \uae30\ucd08\ud55c \ud14d\uc2a4\ud2b8\uac00 \uc62c\ubc14\ub974\uac8c \uc791\ub3d9\ud558\uc9c0 \uc54a\uc744 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ubb38\uc81c\uc5d0 \ub300\ud55c \ub354 \uc790\uc138\ud55c \uc815\ubcf4\uc640 \uc81c\uc548\ub41c \ud574\uacb0 \ubc29\ubc95\uc740 java.sun.com\uc758 Java(TM) 2 SDK, Standard Edition Release Notes\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624.
+AWT.InconsistentDLLsWarning=\uC2DC\uC2A4\uD15C\uC5D0 \uC124\uCE58\uB41C DLL(Dynamic Linking Libraries) \uC9D1\uD569\uC774 \uC77C\uCE58\uD558\uC9C0 \uC54A\uC544 \uD14D\uC2A4\uD2B8 \uAE30\uBC18 \uC791\uC5C5\uC774 \uC81C\uB300\uB85C \uC791\uB3D9\uD558\uC9C0 \uC54A\uC744 \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uC774 \uBB38\uC81C\uC5D0 \uB300\uD55C \uC790\uC138\uD55C \uB0B4\uC6A9\uACFC \uD574\uACB0 \uBC29\uBC95 \uC81C\uC548 \uC0AC\uD56D\uC740 java.sun.com\uC758 Java(TM) 2 SDK, Standard Edition Release Notes\uB97C \uCC38\uC870\uD558\uC2ED\uC2DC\uC624.
 
--- a/jdk/src/share/classes/sun/awt/resources/awt_pt_BR.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/awt/resources/awt_pt_BR.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,3 +1,4 @@
+
 #
 # AWT-specific properties
 #
@@ -12,38 +13,38 @@
 # Key names
 AWT.enter=Enter
 AWT.backSpace=Backspace
-AWT.tab=Tab
+AWT.tab=Guia
 AWT.cancel=Cancelar
 AWT.clear=Limpar
 AWT.pause=Pausar
 AWT.capsLock=Caps Lock
 AWT.escape=Escape
-AWT.space=Barra de espa\u00e7o
-AWT.pgup=P\u00e1gina acima
-AWT.pgdn=P\u00e1gina abaixo
+AWT.space=Espa\u00E7o
+AWT.pgup=P\u00E1gina Acima
+AWT.pgdn=P\u00E1gina Abaixo
 AWT.end=Fim
-AWT.home=In\u00edcio
+AWT.home=In\u00EDcio
 AWT.left=Esquerda
 AWT.up=Acima
 AWT.right=Direita
 AWT.down=Abaixo
-AWT.begin=Come\u00e7ar
-AWT.comma=V\u00edrgula
-AWT.period=Ponto final
+AWT.begin=Come\u00E7ar
+AWT.comma=V\u00EDrgula
+AWT.period=Ponto Final
 AWT.slash=Barra
-AWT.semicolon=Ponto-e-v\u00edrgula
+AWT.semicolon=Ponto-e-V\u00EDrgula
 AWT.equals=Igual
-AWT.openBracket=Abrir par\u00eantese
-AWT.backSlash=Barra invertida
-AWT.closeBracket=Fechar par\u00eantese
-AWT.multiply=Teclado num\u00e9rico *
-AWT.add=Teclado num\u00e9rico +
-AWT.separator=Teclado num\u00e9rico ,
-AWT.separater=Teclado num\u00e9rico ,
-AWT.subtract=Teclado num\u00e9rico -
-AWT.decimal=Teclado num\u00e9rico .
-AWT.divide=Teclado num\u00e9rico /
-AWT.delete=Excluir
+AWT.openBracket=Par\u00EAntese de Abertura
+AWT.backSlash=Barra Invertida
+AWT.closeBracket=Par\u00EAntese de Fechamento
+AWT.multiply=Teclado Num\u00E9rico *
+AWT.add=Teclado Num\u00E9rico +
+AWT.separator=Teclado Num\u00E9rico ,
+AWT.separater=Teclado Num\u00E9rico ,
+AWT.subtract=Teclado Num\u00E9rico -
+AWT.decimal=Teclado Num\u00E9rico .
+AWT.divide=Teclado Num\u00E9rico /
+AWT.delete=Delete
 AWT.numLock=Num Lock
 AWT.scrollLock=Scroll Lock
 AWT.f1=F1
@@ -70,114 +71,114 @@
 AWT.f22=F22
 AWT.f23=F23
 AWT.f24=F24
-AWT.printScreen=Imprimir tela
-AWT.insert=Inserir
+AWT.printScreen=Print Screen
+AWT.insert=Insert
 AWT.help=Ajuda
-AWT.windows=Windows
-AWT.context=Menu de contexto
+AWT.windows=Janelas
+AWT.context=Menu de Contexto
 AWT.backQuote=Crase
 AWT.quote=Aspas
-AWT.deadGrave=Acento grave
-AWT.deadAcute=Acento agudo
-AWT.deadCircumflex=Acento circunflexo
+AWT.deadGrave=Acento Grave
+AWT.deadAcute=Acento Agudo
+AWT.deadCircumflex=Acento Circunflexo
 AWT.deadTilde=Til
-AWT.deadMacron=M\u00e1cron
+AWT.deadMacron=M\u00E1cron
 AWT.deadBreve=Braquia
-AWT.deadAboveDot=Ponto em cima
+AWT.deadAboveDot=Ponto em Cima
 AWT.deadDiaeresis=Trema
-AWT.deadAboveRing=S\u00edmbolo do grau
-AWT.deadDoubleAcute=Acento agudo duplo
-AWT.deadCaron=Acento circunflexo invertido
+AWT.deadAboveRing=S\u00EDmbolo de Grau
+AWT.deadDoubleAcute=Acento Agudo Duplo
+AWT.deadCaron=Acento Circunflexo Invertido
 AWT.deadCedilla=Cedilha
-AWT.deadOgonek=Ogonek
-AWT.deadIota=Iota
-AWT.deadVoicedSound=Som sonoro
-AWT.deadSemivoicedSound=Som surdo
-AWT.ampersand=E comercial
+AWT.deadOgonek=Gancho Polon\u00EAs
+AWT.deadIota=Lota
+AWT.deadVoicedSound=Sonoro (Som)
+AWT.deadSemivoicedSound=Surdo (Som)
+AWT.ampersand=E Comercial
 AWT.asterisk=Asterisco
-AWT.quoteDbl=Aspas duplas
+AWT.quoteDbl=Aspas Duplas
 AWT.Less=Menos
 AWT.greater=Maior
-AWT.braceLeft=Chave esquerda
-AWT.braceRight=Chave direta
+AWT.braceLeft=Chave Esquerda
+AWT.braceRight=Chave Direta
 AWT.at=Arroba
-AWT.colon=V\u00edrgula
+AWT.colon=V\u00EDrgula
 AWT.circumflex=Circunflexo
-AWT.dollar=D\u00f3lar
+AWT.dollar=D\u00F3lar
 AWT.euro=Euro
-AWT.exclamationMark=Ponto de exclama\u00e7\u00e3o
-AWT.invertedExclamationMark=Ponto de exclama\u00e7\u00e3o invertido
-AWT.leftParenthesis=Par\u00eantese esquerdo
-AWT.numberSign=Sinal num\u00e9rico
+AWT.exclamationMark=Ponto de Exclama\u00E7\u00E3o
+AWT.invertedExclamationMark=Ponto de Exclama\u00E7\u00E3o Invertido
+AWT.leftParenthesis=Par\u00EAntese Esquerdo
+AWT.numberSign=Sinal Num\u00E9rico
 AWT.plus=Mais
 AWT.minus=Menos
-AWT.rightParenthesis=Par\u00eantese direito
+AWT.rightParenthesis=Par\u00EAntese Direito
 AWT.underscore=Sublinhado
 AWT.final=Final
 AWT.convert=Converter
-AWT.noconvert=N\u00e3o converter
+AWT.noconvert=N\u00E3o Converter
 AWT.accept=Aceitar
-AWT.modechange=Altera\u00e7\u00e3o de modo
+AWT.modechange=Altera\u00E7\u00E3o de Modo
 AWT.kana=Kana
 AWT.kanji=Kanji
-AWT.alphanumeric=Alfanum\u00e9rico
+AWT.alphanumeric=Alfanum\u00E9rico
 AWT.katakana=Katakana
 AWT.hiragana=Hiragana
-AWT.fullWidth=Largura total
-AWT.halfWidth=Meia largura
-AWT.romanCharacters=Caracteres romanos
-AWT.allCandidates=Todos os candidatos
-AWT.previousCandidate=Candidato anterior
-AWT.codeInput=Entrada de c\u00f3digo
-AWT.japaneseKatakana=Katakana japon\u00eas
-AWT.japaneseHiragana=Hiragana japon\u00eas
-AWT.japaneseRoman=Romano japon\u00eas
+AWT.fullWidth=Largura Total
+AWT.halfWidth=Meia Largura
+AWT.romanCharacters=Caracteres Romanos
+AWT.allCandidates=Todos os Candidatos
+AWT.previousCandidate=Candidato Anterior
+AWT.codeInput=Entrada de C\u00F3digo
+AWT.japaneseKatakana=Katakana Japon\u00EAs
+AWT.japaneseHiragana=Hiragana Japon\u00EAs
+AWT.japaneseRoman=Romano Japon\u00EAs
 AWT.kanaLock=Kana Lock
-AWT.inputMethodOnOff=M\u00e9todo de entrada ativado/desativado
+AWT.inputMethodOnOff=M\u00E9todo de Entrada Ativado/Desativado
 AWT.again=Novamente
 AWT.undo=Desfazer
 AWT.copy=Copiar
 AWT.paste=Colar
 AWT.cut=Recortar
 AWT.find=Localizar
-AWT.props=Props
-AWT.stop=Parar
+AWT.props=Sustentar
+AWT.stop=Interromper
 AWT.compose=Compor
 
 # Numeric Keypad
-AWT.numpad=Teclado num\u00e9rico
+AWT.numpad=Teclado Num\u00E9rico
 AWT.unknown=Desconhecido
 AWT.undefined=Indefinido
 
 # Predefined cursor names
-AWT.DefaultCursor=Cursor padr\u00e3o
-AWT.CrosshairCursor=Cursor em forma de cruz
-AWT.TextCursor=Cursor de texto
-AWT.WaitCursor=Cursor em forma de ampulheta
-AWT.SWResizeCursor=Cursor de seta que aponta para sudoeste
-AWT.SEResizeCursor=Cursor de seta que aponta para sudeste
-AWT.NWResizeCursor=Cursor de seta que aponta para noroeste
-AWT.NEResizeCursor=Cursor de seta que aponta para nordeste
-AWT.NResizeCursor=Cursor de seta que aponta para cima
-AWT.SResizeCursor=Cursor de seta que aponta para baixo
-AWT.WResizeCursor=Cursor de seta que aponta \u00e0 esquerda
-AWT.EResizeCursor=Cursor de seta que aponta \u00e0 direita
-AWT.HandCursor=Cursor em forma de m\u00e3o
-AWT.MoveCursor=Cursor de movimento
-AWT.DefaultDragCursor=Cursor padr\u00e3o de arrastar
-AWT.DefaultNoDropCursor=Cursor padr\u00e3o sem arrasto
-AWT.DefaultDropCursor=Cursor padr\u00e3o de soltar
+AWT.DefaultCursor=Cursor Default
+AWT.CrosshairCursor=Cursor em Forma de Cruz
+AWT.TextCursor=Cursor de Texto
+AWT.WaitCursor=Cursor em Forma de Ampulheta
+AWT.SWResizeCursor=Cursor de Seta Que Aponta para Sudoeste
+AWT.SEResizeCursor=Cursor de Seta Que Aponta para Sudeste
+AWT.NWResizeCursor=Cursor de Seta Que Aponta para Noroeste
+AWT.NEResizeCursor=Cursor de Seta Que Aponta para Nordeste
+AWT.NResizeCursor=Cursor de Seta Que Aponta para Cima
+AWT.SResizeCursor=Cursor de Seta Que Aponta para Baixo
+AWT.WResizeCursor=Cursor de Seta Que Aponta \u00E0 Esquerda
+AWT.EResizeCursor=Cursor de Seta Que Aponta \u00E0 Direita
+AWT.HandCursor=Cursor em Forma de M\u00E3o
+AWT.MoveCursor=Cursor de Movimento
+AWT.DefaultDragCursor=Cursor Default de Arrastar
+AWT.DefaultNoDropCursor=Cursor Default sem Arrastar
+AWT.DefaultDropCursor=Cursor Default de Soltar
 
 # Input method related strings
-AWT.CompositionWindowTitle=Janela de entrada
-AWT.InputMethodSelectionMenu=Selecionar m\u00e9todo de entrada
-AWT.HostInputMethodDisplayName=M\u00e9todos de entrada do sistema
-AWT.InputMethodLanguage.ja=Japon\u00eas
+AWT.CompositionWindowTitle=Janela de Entrada
+AWT.InputMethodSelectionMenu=Selecionar M\u00E9todo de Entrada
+AWT.HostInputMethodDisplayName=M\u00E9todos de Entrada do Sistema
+AWT.InputMethodLanguage.ja=Japon\u00EAs
 AWT.InputMethodLanguage.ko=Coreano
-AWT.InputMethodLanguage.zh=Chin\u00eas
-AWT.InputMethodLanguage.zh_CN=Chin\u00eas simplificado
-AWT.InputMethodLanguage.zh_TW=Chin\u00eas tradicional
-AWT.InputMethodCreationFailed=N\u00e3o foi poss\u00edvel criar {0}.  Raz\u00e3o: {1}
+AWT.InputMethodLanguage.zh=Chin\u00EAs
+AWT.InputMethodLanguage.zh_CN=Chin\u00EAs Simplificado
+AWT.InputMethodLanguage.zh_TW=Chin\u00EAs Tradicional
+AWT.InputMethodCreationFailed=N\u00E3o foi poss\u00EDvel criar {0}. Motivo: {1}
 
 # Property to select between on-the-spot and below-the-spot
 # composition with input methods. Valid values:
@@ -187,5 +188,5 @@
 java.awt.def.delay=30
 
 # Warnings
-AWT.InconsistentDLLsWarning=As opera\u00e7\u00f5es baseadas em texto podem n\u00e3o funcionar corretamente devido a um conjunto incoerente de bibliotecas de vincula\u00e7\u00e3o din\u00e2mica (DLLs) instalado no seu sistema. Para obter mais informa\u00e7\u00f5es sobre este problema e uma solu\u00e7\u00e3o recomendada, consulte as Notas de vers\u00e3o do Java(TM) 2 SDK, Standard Edition em java.sun.com.
+AWT.InconsistentDLLsWarning=Pode ser que as opera\u00E7\u00F5es baseadas em texto n\u00E3o funcionem corretamente devido a um conjunto incoerente de bibliotecas de vincula\u00E7\u00E3o din\u00E2mica (DLLs) instalado no seu sistema. Para obter mais informa\u00E7\u00F5es sobre este problema e uma solu\u00E7\u00E3o recomendada, consulte as Notas de Vers\u00E3o do Java(TM) 2 SDK, Standard Edition, em java.sun.com.
 
--- a/jdk/src/share/classes/sun/awt/resources/awt_sv.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/awt/resources/awt_sv.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -15,7 +15,7 @@
 AWT.backSpace=Backsteg
 AWT.tab=Tabb
 AWT.cancel=Avbryt
-AWT.clear=Ta bort
+AWT.clear=Rensa
 AWT.pause=Paus
 AWT.capsLock=Caps Lock
 AWT.escape=Esc
@@ -23,20 +23,20 @@
 AWT.pgup=Page Up
 AWT.pgdn=Page Down
 AWT.end=End
-AWT.home=Home
-AWT.left=V\u00e4nsterpil
-AWT.up=Upp\u00e5tpil
-AWT.right=H\u00f6gerpil
-AWT.down=Ned\u00e5tpil
+AWT.home=Hem
+AWT.left=V\u00E4nsterpil
+AWT.up=Upp
+AWT.right=H\u00F6gerpil
+AWT.down=Nedpil
 AWT.begin=Begin
-AWT.comma=Comma
-AWT.period=Period
-AWT.slash=Slash
-AWT.semicolon=Semicolon
-AWT.equals=Equals
-AWT.openBracket=Open Bracket
-AWT.backSlash=Back Slash
-AWT.closeBracket=Close Bracket
+AWT.comma=Kommatecken
+AWT.period=Punkt
+AWT.slash=Snedstreck
+AWT.semicolon=Semikolon
+AWT.equals=Lika med
+AWT.openBracket=Parentes
+AWT.backSlash=Omv\u00E4nt snedstreck
+AWT.closeBracket=Hakparentes
 AWT.multiply=NUM *
 AWT.add=NUM +
 AWT.separator=NUM ,
@@ -44,7 +44,7 @@
 AWT.subtract=NUM -
 AWT.decimal=NUM .
 AWT.divide=NUM /
-AWT.delete=Delete
+AWT.delete=Ta bort
 AWT.numLock=Num Lock
 AWT.scrollLock=Scroll Lock
 AWT.f1=F1
@@ -73,10 +73,10 @@
 AWT.f24=F24
 AWT.printScreen=Print Screen
 AWT.insert=Insert
-AWT.help=Hj\u00e4lp
+AWT.help=Hj\u00E4lp
 AWT.windows=Windows
-AWT.context=Context Menu
-AWT.backQuote=V\u00e4nster citattecken
+AWT.context=Snabbmeny
+AWT.backQuote=V\u00E4nster citattecken
 AWT.quote=Citattecken
 AWT.deadGrave=Dead Grave
 AWT.deadAcute=Dead Acute
@@ -98,9 +98,9 @@
 AWT.asterisk=Asterisk
 AWT.quoteDbl=Dubbelt citattecken
 AWT.Less=Mindre
-AWT.greater=St\u00f6rre
-AWT.braceLeft=Klammerparentes
-AWT.braceRight=H\u00f6ger klammerparentes
+AWT.greater=St\u00F6rre
+AWT.braceLeft=V\u00E4nster klammerparentes
+AWT.braceRight=H\u00F6ger klammerparentes
 AWT.at=Vid
 AWT.colon=Kolon
 AWT.circumflex=Cirkumflex
@@ -108,85 +108,85 @@
 AWT.euro=Euro
 AWT.exclamationMark=Utropstecken
 AWT.invertedExclamationMark=Inverterat utropstecken
-AWT.leftParenthesis=V\u00e4nsterparentes
+AWT.leftParenthesis=V\u00E4nsterparentes
 AWT.numberSign=Nummertecken
 AWT.plus=Plus
 AWT.minus=Minus
-AWT.rightParenthesis=H\u00f6gerparentes
-AWT.underscore=Understrykning
+AWT.rightParenthesis=H\u00F6gerparentes
+AWT.underscore=Understreck
 AWT.final=Slutgiltig
 AWT.convert=Konvertera
 AWT.noconvert=Ingen konvertering
 AWT.accept=Acceptera
-AWT.modechange=\u00c4ndring av l\u00e4ge
+AWT.modechange=\u00C4ndring av l\u00E4ge
 AWT.kana=Kana
 AWT.kanji=Kanji
 AWT.alphanumeric=Alfanumerisk
 AWT.katakana=Katakana
 AWT.hiragana=Hiragana
-AWT.fullWidth=Maximal bredd
+AWT.fullWidth=Full bredd
 AWT.halfWidth=Halv bredd
-AWT.romanCharacters=Raka tecken
+AWT.romanCharacters=Latinska tecken
 AWT.allCandidates=Alla kandidater
-AWT.previousCandidate=F\u00f6reg\u00e5ende kandidat
+AWT.previousCandidate=F\u00F6reg\u00E5ende kandidat
 AWT.codeInput=Kodindata
 AWT.japaneseKatakana=Japansk Katakana
 AWT.japaneseHiragana=Japansk Hiragana
-AWT.japaneseRoman=Japansk rak
-AWT.kanaLock=Kana-l\u00e5s
-AWT.inputMethodOnOff=Indatametod p\u00e5/av
+AWT.japaneseRoman=Japanska-latinska
+AWT.kanaLock=Kana-l\u00E5s
+AWT.inputMethodOnOff=Indatametod p\u00E5/av
 AWT.again=Upprepa
-AWT.undo=\u00c5ngra
+AWT.undo=\u00C5ngra
 AWT.copy=Kopiera
 AWT.paste=Klistra in
 AWT.cut=Klipp ut
-AWT.find=S\u00f6k
+AWT.find=S\u00F6k
 AWT.props=Egenskaper
 AWT.stop=Stopp
 AWT.compose=Skriv
 
 # Numeric Keypad
 AWT.numpad=NumPad
-AWT.unknown=Unknown
-AWT.undefined=Undefined
+AWT.unknown=Ok\u00E4nd
+AWT.undefined=Odefinierad
 
 # Predefined cursor names
-AWT.DefaultCursor=Standardmark\u00f6r
-AWT.CrosshairCursor=H\u00e5rkorsmark\u00f6r
-AWT.TextCursor=Textmark\u00f6r
-AWT.WaitCursor=V\u00e4ntemark\u00f6r
-AWT.SWResizeCursor=Southwest Resize Cursor
-AWT.SEResizeCursor=Southeast Resize Cursor
-AWT.NWResizeCursor=Northwest Resize Cursor
-AWT.NEResizeCursor=Northeast Resize Cursor
-AWT.NResizeCursor=North Resize Cursor
-AWT.SResizeCursor=South Resize Cursor
-AWT.WResizeCursor=West Resize Cursor
-AWT.EResizeCursor=East Resize Cursor
-AWT.HandCursor=Handmark\u00f6r
-AWT.MoveCursor=Flyttningsmark\u00f6r
-AWT.DefaultDragCursor=Standarddragmark\u00f6r
-AWT.DefaultNoDropCursor=Standardmark\u00f6r (ej drag)
-AWT.DefaultDropCursor=Standardsl\u00e4ppmark\u00f6r
+AWT.DefaultCursor=Standardmark\u00F6r
+AWT.CrosshairCursor=H\u00E5rkorsmark\u00F6r
+AWT.TextCursor=Textmark\u00F6r
+AWT.WaitCursor=V\u00E4ntemark\u00F6r
+AWT.SWResizeCursor=Mark\u00F6r f\u00F6r storleks\u00E4ndring (sydv\u00E4st)
+AWT.SEResizeCursor=Mark\u00F6r f\u00F6r storleks\u00E4ndring (sydost)
+AWT.NWResizeCursor=Mark\u00F6r f\u00F6r storleks\u00E4ndring (nordv\u00E4st)
+AWT.NEResizeCursor=Mark\u00F6r f\u00F6r storleks\u00E4ndring (nordost)
+AWT.NResizeCursor=Mark\u00F6r f\u00F6r storleks\u00E4ndring (nord)
+AWT.SResizeCursor=Mark\u00F6r f\u00F6r storleks\u00E4ndring (syd)
+AWT.WResizeCursor=Mark\u00F6r f\u00F6r storleks\u00E4ndring (v\u00E4st)
+AWT.EResizeCursor=Mark\u00F6r f\u00F6r storleks\u00E4ndring (\u00F6st)
+AWT.HandCursor=Handmark\u00F6r
+AWT.MoveCursor=Flyttmark\u00F6r
+AWT.DefaultDragCursor=Standarddragmark\u00F6r
+AWT.DefaultNoDropCursor=Standardmark\u00F6r (ej drag)
+AWT.DefaultDropCursor=Standardsl\u00E4ppmark\u00F6r
 
 # Input method related strings
-AWT.CompositionWindowTitle=Inmatningsf\u00f6nster
-AWT.InputMethodSelectionMenu=V\u00e4lj indatametod
-AWT.HostInputMethodDisplayName=Systemindatametoder
-AWT.InputMethodLanguage.ja=japanska
-AWT.InputMethodLanguage.ko=koreanska
-AWT.InputMethodLanguage.zh=kinesiska
-AWT.InputMethodLanguage.zh_CN=f\u00f6renklad kinesiska
-AWT.InputMethodLanguage.zh_TW=traditionell kinesiska
+AWT.CompositionWindowTitle=Inmatningsf\u00F6nster
+AWT.InputMethodSelectionMenu=V\u00E4lj inmatningsmetod
+AWT.HostInputMethodDisplayName=Systeminmatningsmetoder
+AWT.InputMethodLanguage.ja=Japanska
+AWT.InputMethodLanguage.ko=Koreanska
+AWT.InputMethodLanguage.zh=Kinesiska
+AWT.InputMethodLanguage.zh_CN=F\u00F6renklad kinesiska
+AWT.InputMethodLanguage.zh_TW=Traditionell kinesiska
 AWT.InputMethodCreationFailed=Kan inte skapa {0}.  Orsak: {1}
 
 # Property to select between on-the-spot and below-the-spot
 # composition with input methods. Valid values:
 # "on-the-spot", "below-the-spot".
 # May be overridden from command line.
-java.awt.im.style=p\u00e5 st\u00e4llet
+java.awt.im.style=p\u00E5 st\u00E4llet
 java.awt.def.delay=30
 
 # Warnings
-AWT.InconsistentDLLsWarning=Det \u00e4r m\u00f6jligt att textbaserade operationer inte fungerar korrekt p\u00e5 grund av inkonsekvent m\u00e4ngd av dynamiskt l\u00e4nkade bibliotek (DLL) som \u00e4r installerade p\u00e5 ditt system. F\u00f6r mer information om detta problem och en ett f\u00f6reslaget s\u00e4tt att arbeta runt det se Java(TM) 2 SDK, Standard Edition Release Notes p\u00e5 java.sun.com.
+AWT.InconsistentDLLsWarning=Textbaserade \u00E5tg\u00E4rder kanske inte fungerar korrekt p\u00E5 grund av en inkonsekvent upps\u00E4ttning dynamiskt l\u00E4nkade bibliotek (DLL) som \u00E4r installerade i systemet. F\u00F6r mer information om detta problem och en tillf\u00E4llig l\u00F6sning, se Java(TM) 2 SDK, Standard Edition Release Notes p\u00E5 java.sun.com.
 
--- a/jdk/src/share/classes/sun/awt/resources/awt_zh_CN.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/awt/resources/awt_zh_CN.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -18,25 +18,25 @@
 AWT.clear=Clear
 AWT.pause=Pause
 AWT.capsLock=Caps Lock
-AWT.escape=Escape
-AWT.space=Space
+AWT.escape=Esc
+AWT.space=\u7A7A\u683C
 AWT.pgup=Page Up
 AWT.pgdn=Page Down
 AWT.end=End
 AWT.home=Home
-AWT.left=Left
-AWT.up=Up
-AWT.right=Right
-AWT.down=Down
-AWT.begin=Begin
-AWT.comma=Comma
-AWT.period=Period
-AWT.slash=Slash
-AWT.semicolon=Semicolon
-AWT.equals=Equals
-AWT.openBracket=Open Bracket
-AWT.backSlash=Back Slash
-AWT.closeBracket=Close Bracket
+AWT.left=\u5411\u5DE6\u7BAD\u5934
+AWT.up=\u5411\u4E0A\u7BAD\u5934
+AWT.right=\u5411\u53F3\u7BAD\u5934
+AWT.down=\u5411\u4E0B\u7BAD\u5934
+AWT.begin=\u5F00\u59CB
+AWT.comma=\u9017\u53F7
+AWT.period=\u53E5\u70B9
+AWT.slash=\u659C\u6760
+AWT.semicolon=\u5206\u53F7
+AWT.equals=\u7B49\u53F7
+AWT.openBracket=\u5DE6\u65B9\u62EC\u53F7
+AWT.backSlash=\u53CD\u659C\u6760
+AWT.closeBracket=\u53F3\u65B9\u62EC\u53F7
 AWT.multiply=NumPad *
 AWT.add=NumPad +
 AWT.separator=NumPad ,
@@ -73,120 +73,120 @@
 AWT.f24=F24
 AWT.printScreen=Print Screen
 AWT.insert=Insert
-AWT.help=Help
+AWT.help=\u5E2E\u52A9
 AWT.windows=Windows
-AWT.context=Context Menu
-AWT.backQuote=Back Quote
-AWT.quote=Quote
-AWT.deadGrave=Dead Grave
-AWT.deadAcute=Dead Acute
-AWT.deadCircumflex=Dead Circumflex
-AWT.deadTilde=Dead Tilde
-AWT.deadMacron=Dead Macron
-AWT.deadBreve=Dead Breve
-AWT.deadAboveDot=Dead Above Dot
-AWT.deadDiaeresis=Dead Diaeresis
-AWT.deadAboveRing=Dead Above Ring
-AWT.deadDoubleAcute=Dead Double Acute
-AWT.deadCaron=Dead Caron
-AWT.deadCedilla=Dead Cedilla
-AWT.deadOgonek=Dead Ogonek
-AWT.deadIota=Dead Iota
-AWT.deadVoicedSound=Dead Voiced Sound
-AWT.deadSemivoicedSound=Dead Semivoiced Sound
-AWT.ampersand=Ampersand
-AWT.asterisk=Asterisk
-AWT.quoteDbl=Double Quote
-AWT.Less=Less
-AWT.greater=Greater
-AWT.braceLeft=Left Brace
-AWT.braceRight=Right Brace
-AWT.at=At
-AWT.colon=Colon
-AWT.circumflex=Circumflex
-AWT.dollar=Dollar
-AWT.euro=Euro
-AWT.exclamationMark=Exclamation Mark
-AWT.invertedExclamationMark=Inverted Exclamation Mark
-AWT.leftParenthesis=Left Parenthesis
-AWT.numberSign=Number Sign
-AWT.plus=Plus
-AWT.minus=Minus
-AWT.rightParenthesis=Right Parenthesis
-AWT.underscore=Underscore
-AWT.final=Final
-AWT.convert=Convert
-AWT.noconvert=No Convert
-AWT.accept=Accept
-AWT.modechange=Mode Change
-AWT.kana=Kana
-AWT.kanji=Kanji
-AWT.alphanumeric=Alphanumeric
-AWT.katakana=Katakana
-AWT.hiragana=Hiragana
-AWT.fullWidth=Full-Width
-AWT.halfWidth=Half-Width
-AWT.romanCharacters=Roman Characters
-AWT.allCandidates=All Candidates
-AWT.previousCandidate=Previous Candidate
-AWT.codeInput=Code Input
-AWT.japaneseKatakana=Japanese Katakana
-AWT.japaneseHiragana=Japanese Hiragana
-AWT.japaneseRoman=Japanese Roman
+AWT.context=\u4E0A\u4E0B\u6587\u83DC\u5355
+AWT.backQuote=\u540E\u5F15\u53F7
+AWT.quote=\u5F15\u53F7
+AWT.deadGrave=\u6291\u97F3\u7B26\u53F7
+AWT.deadAcute=\u5E26\u5C16\u97F3\u7B26\u53F7
+AWT.deadCircumflex=\u5E26\u6291\u626C\u7B26\u53F7
+AWT.deadTilde=\u816D\u5316\u7B26\u53F7
+AWT.deadMacron=\u957F\u97F3\u7B26\u53F7
+AWT.deadBreve=\u77ED\u97F3\u7B26\u53F7
+AWT.deadAboveDot=\u4E0A\u6807\u70B9
+AWT.deadDiaeresis=\u5206\u97F3\u7B26\u53F7
+AWT.deadAboveRing=\u4E0A\u6807\u5706\u5708
+AWT.deadDoubleAcute=\u53CC\u5C16\u97F3\u7B26\u53F7
+AWT.deadCaron=\u5012\u7F6E\u97F3\u8C03\u7B26\u53F7
+AWT.deadCedilla=\u53D8\u97F3\u7B26\u53F7
+AWT.deadOgonek=\u53CD\u5C3E\u5F62\u7B26
+AWT.deadIota=\u963F\u5C14\u5854\u7B26\u53F7
+AWT.deadVoicedSound=\u6D4A\u97F3\u7B26\u53F7
+AWT.deadSemivoicedSound=\u534A\u6D4A\u97F3\u7B26\u53F7
+AWT.ampersand=& \u7B26\u53F7
+AWT.asterisk=\u661F\u53F7
+AWT.quoteDbl=\u53CC\u5F15\u53F7
+AWT.Less=\u5C0F\u4E8E\u53F7
+AWT.greater=\u5927\u4E8E\u53F7
+AWT.braceLeft=\u5DE6\u82B1\u62EC\u53F7
+AWT.braceRight=\u53F3\u82B1\u62EC\u53F7
+AWT.at=@ \u7B26\u53F7
+AWT.colon=\u5192\u53F7
+AWT.circumflex=\u6291\u626C\u7B26\u53F7
+AWT.dollar=\u7F8E\u5143
+AWT.euro=\u6B27\u5143
+AWT.exclamationMark=\u611F\u53F9\u53F7
+AWT.invertedExclamationMark=\u5012\u7F6E\u611F\u53F9\u53F7
+AWT.leftParenthesis=\u5DE6\u62EC\u53F7
+AWT.numberSign=\u4E95\u53F7
+AWT.plus=\u52A0\u53F7
+AWT.minus=\u51CF\u53F7
+AWT.rightParenthesis=\u53F3\u62EC\u53F7
+AWT.underscore=\u4E0B\u5212\u7EBF
+AWT.final=\u6700\u7EC8
+AWT.convert=\u8F6C\u6362
+AWT.noconvert=\u4E0D\u8F6C\u6362
+AWT.accept=\u63A5\u53D7
+AWT.modechange=\u6A21\u5F0F\u66F4\u6539
+AWT.kana=\u5047\u540D
+AWT.kanji=\u65E5\u672C\u6C49\u5B57
+AWT.alphanumeric=\u5B57\u6BCD\u6570\u5B57
+AWT.katakana=\u7247\u5047\u540D
+AWT.hiragana=\u5E73\u5047\u540D
+AWT.fullWidth=\u5168\u89D2
+AWT.halfWidth=\u534A\u89D2
+AWT.romanCharacters=\u7F57\u9A6C\u5B57\u7B26
+AWT.allCandidates=\u6240\u6709\u5019\u9009\u9879
+AWT.previousCandidate=\u4E0A\u4E00\u4E2A\u5019\u9009\u9879
+AWT.codeInput=\u4EE3\u7801\u8F93\u5165
+AWT.japaneseKatakana=\u65E5\u8BED\u7247\u5047\u540D
+AWT.japaneseHiragana=\u65E5\u8BED\u5E73\u5047\u540D
+AWT.japaneseRoman=\u65E5\u8BED\u7F57\u9A6C\u5B57\u7B26
 AWT.kanaLock=Kana Lock
-AWT.inputMethodOnOff=Input Method On/Off
-AWT.again=Again
-AWT.undo=Undo
-AWT.copy=Copy
-AWT.paste=Paste
-AWT.cut=Cut
-AWT.find=Find
-AWT.props=Props
-AWT.stop=Stop
-AWT.compose=Compose
+AWT.inputMethodOnOff=\u6253\u5F00/\u5173\u95ED\u8F93\u5165\u65B9\u6CD5
+AWT.again=\u91CD\u65B0
+AWT.undo=\u64A4\u6D88
+AWT.copy=\u590D\u5236
+AWT.paste=\u7C98\u8D34
+AWT.cut=\u526A\u5207
+AWT.find=\u67E5\u627E
+AWT.props=\u5C0F\u9053\u5177
+AWT.stop=\u505C\u6B62
+AWT.compose=\u7F16\u5199
 
 # Numeric Keypad
 AWT.numpad=NumPad
-AWT.unknown=Unknown
-AWT.undefined=Undefined
+AWT.unknown=\u672A\u77E5
+AWT.undefined=\u672A\u5B9A\u4E49
 
 # Predefined cursor names
-AWT.DefaultCursor=Default Cursor
-AWT.CrosshairCursor=Crosshair Cursor
-AWT.TextCursor=Text Cursor
-AWT.WaitCursor=Wait Cursor
-AWT.SWResizeCursor=Southwest Resize Cursor
-AWT.SEResizeCursor=Southeast Resize Cursor
-AWT.NWResizeCursor=Northwest Resize Cursor
-AWT.NEResizeCursor=Northeast Resize Cursor
-AWT.NResizeCursor=North Resize Cursor
-AWT.SResizeCursor=South Resize Cursor
-AWT.WResizeCursor=West Resize Cursor
-AWT.EResizeCursor=East Resize Cursor
-AWT.HandCursor=Hand Cursor
-AWT.MoveCursor=Move Cursor
-AWT.DefaultDragCursor=Default Drag Cursor
-AWT.DefaultNoDropCursor=Default NoDrag Cursor
-AWT.DefaultDropCursor=Default Drop Cursor
+AWT.DefaultCursor=\u9ED8\u8BA4\u5149\u6807
+AWT.CrosshairCursor=\u5341\u5B57\u5149\u6807
+AWT.TextCursor=\u6587\u672C\u5149\u6807
+AWT.WaitCursor=\u6C99\u6F0F\u5149\u6807
+AWT.SWResizeCursor=\u201C\u5411\u897F\u5357\u65B9\u5411\u8C03\u6574\u5927\u5C0F\u201D\u5149\u6807
+AWT.SEResizeCursor=\u201C\u5411\u4E1C\u5357\u65B9\u5411\u8C03\u6574\u5927\u5C0F\u201D\u5149\u6807
+AWT.NWResizeCursor=\u201C\u5411\u897F\u5317\u65B9\u5411\u8C03\u6574\u5927\u5C0F\u201D\u5149\u6807
+AWT.NEResizeCursor=\u201C\u5411\u4E1C\u5317\u65B9\u5411\u8C03\u6574\u5927\u5C0F\u201D\u5149\u6807
+AWT.NResizeCursor=\u201C\u5411\u5317\u8C03\u6574\u5927\u5C0F\u201D\u5149\u6807
+AWT.SResizeCursor=\u201C\u5411\u5357\u8C03\u6574\u5927\u5C0F\u201D\u5149\u6807
+AWT.WResizeCursor=\u201C\u5411\u897F\u8C03\u6574\u5927\u5C0F\u201D\u5149\u6807
+AWT.EResizeCursor=\u201C\u5411\u4E1C\u8C03\u6574\u5927\u5C0F\u201D\u5149\u6807
+AWT.HandCursor=\u624B\u578B\u5149\u6807
+AWT.MoveCursor=\u79FB\u52A8\u5149\u6807
+AWT.DefaultDragCursor=\u9ED8\u8BA4\u62D6\u52A8\u5149\u6807
+AWT.DefaultNoDropCursor=\u9ED8\u8BA4\u65E0\u62D6\u52A8\u5149\u6807
+AWT.DefaultDropCursor=\u9ED8\u8BA4\u653E\u7F6E\u5149\u6807
 
 # Input method related strings
-AWT.CompositionWindowTitle=\u8f93\u5165\u7a97\u53e3
-AWT.InputMethodSelectionMenu=\u9009\u62e9\u8f93\u5165\u7a97\u53e3
-AWT.HostInputMethodDisplayName=\u7cfb\u7edf\u8f93\u5165\u6cd5
-AWT.InputMethodLanguage.ja=\u65e5\u6587
-AWT.InputMethodLanguage.ko=\u97e9\u6587
-AWT.InputMethodLanguage.zh=\u4e2d\u6587
-AWT.InputMethodLanguage.zh_CN=\u7b80\u4f53\u4e2d\u6587
-AWT.InputMethodLanguage.zh_TW=\u7e41\u4f53\u4e2d\u6587
-AWT.InputMethodCreationFailed=\u4e0d\u80fd\u521b\u5efa {0}\u3002\u539f\u56e0\uff1a{1}
+AWT.CompositionWindowTitle=\u8F93\u5165\u7A97\u53E3
+AWT.InputMethodSelectionMenu=\u9009\u62E9\u8F93\u5165\u7A97\u53E3
+AWT.HostInputMethodDisplayName=\u7CFB\u7EDF\u8F93\u5165\u6CD5
+AWT.InputMethodLanguage.ja=\u65E5\u6587
+AWT.InputMethodLanguage.ko=\u97E9\u6587
+AWT.InputMethodLanguage.zh=\u4E2D\u6587
+AWT.InputMethodLanguage.zh_CN=\u7B80\u4F53\u4E2D\u6587
+AWT.InputMethodLanguage.zh_TW=\u7E41\u4F53\u4E2D\u6587
+AWT.InputMethodCreationFailed=\u65E0\u6CD5\u521B\u5EFA{0}\u3002\u539F\u56E0: {1}
 
 # Property to select between on-the-spot and below-the-spot
 # composition with input methods. Valid values:
 # "on-the-spot", "below-the-spot".
 # May be overridden from command line.
-java.awt.im.style=below-the-spot
+java.awt.im.style=on-the-spot
 java.awt.def.delay=30
 
 # Warnings
-AWT.InconsistentDLLsWarning=\u57fa\u4e8e\u6587\u672c\u7684\u64cd\u4f5c\u53ef\u80fd\u4e0d\u80fd\u6b63\u5e38\u8fd0\u884c \u56e0\u4e3a\u7cfb\u7edf\u4e0a\u5b89\u88c5\u4e86\u4e00\u5957\u4e0d\u4e00\u81f4\u7684\u52a8\u6001\u94fe\u63a5\u5e93 (DLLs) \u3002 \u6709\u5173\u6b64\u95ee\u9898\u7684\u66f4\u591a\u4fe1\u606f\u548c\u5efa\u8bae\u7684\u89e3\u51b3\u65b9\u6848 \u8bf7\u53c2\u89c1 java.sun.com \u7f51\u7ad9\u4e0a\u7684 Java(TM) 2 SDK, Standard Edition \u53d1\u884c\u8bf4\u660e\u3002
+AWT.InconsistentDLLsWarning=\u57FA\u4E8E\u6587\u672C\u7684\u64CD\u4F5C\u53EF\u80FD\u4E0D\u80FD\u6B63\u5E38\u8FD0\u884C, \u56E0\u4E3A\u7CFB\u7EDF\u4E0A\u5B89\u88C5\u4E86\u4E00\u5957\u4E0D\u4E00\u81F4\u7684\u52A8\u6001\u94FE\u63A5\u5E93 (DLL)\u3002\u6709\u5173\u6B64\u95EE\u9898\u7684\u8BE6\u7EC6\u4FE1\u606F\u548C\u5EFA\u8BAE\u7684\u89E3\u51B3\u65B9\u6848, \u8BF7\u53C2\u9605 java.sun.com \u7F51\u7AD9\u4E0A\u7684 Java(TM) 2 SDK, \u6807\u51C6\u7248\u53D1\u884C\u8BF4\u660E\u3002
 
--- a/jdk/src/share/classes/sun/awt/resources/awt_zh_TW.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/awt/resources/awt_zh_TW.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -170,15 +170,15 @@
 AWT.DefaultDropCursor=Default Drop Cursor
 
 # Input method related strings
-AWT.CompositionWindowTitle=\u8f38\u5165\u8996\u7a97
-AWT.InputMethodSelectionMenu=\u9078\u64c7\u8f38\u5165\u6cd5
-AWT.HostInputMethodDisplayName=\u7cfb\u7d71\u8f38\u5165\u6cd5
-AWT.InputMethodLanguage.ja=\u65e5\u6587
-AWT.InputMethodLanguage.ko=\u97d3\u6587
-AWT.InputMethodLanguage.zh=\u4e2d\u6587
-AWT.InputMethodLanguage.zh_CN=\u7c21\u9ad4\u4e2d\u6587
-AWT.InputMethodLanguage.zh_TW=\u7e41\u9ad4\u4e2d\u6587
-AWT.InputMethodCreationFailed=\u7121\u6cd5\u5efa\u7acb {0}\u3002\u539f\u56e0\uff1a {1}
+AWT.CompositionWindowTitle=\u8F38\u5165\u8996\u7A97
+AWT.InputMethodSelectionMenu=\u9078\u64C7\u8F38\u5165\u6CD5
+AWT.HostInputMethodDisplayName=\u7CFB\u7D71\u8F38\u5165\u6CD5
+AWT.InputMethodLanguage.ja=\u65E5\u6587
+AWT.InputMethodLanguage.ko=\u97D3\u6587
+AWT.InputMethodLanguage.zh=\u4E2D\u6587
+AWT.InputMethodLanguage.zh_CN=\u7C21\u9AD4\u4E2D\u6587
+AWT.InputMethodLanguage.zh_TW=\u7E41\u9AD4\u4E2D\u6587
+AWT.InputMethodCreationFailed=\u7121\u6CD5\u5EFA\u7ACB {0}\u3002\u539F\u56E0: {1}
 
 # Property to select between on-the-spot and below-the-spot
 # composition with input methods. Valid values:
@@ -188,5 +188,5 @@
 java.awt.def.delay=30
 
 # Warnings
-AWT.InconsistentDLLsWarning=\u4ee5\u6587\u5b57\u70ba\u57fa\u790e\u7684\u4f5c\u696d\u53ef\u80fd\u7121\u6cd5\u6b63\u78ba\u904b\u4f5c \u56e0\u70ba\u60a8\u7cfb\u7d71\u4e0a\u6709\u4e00\u7d44\u52d5\u614b\u9023\u7d50\u7a0b\u5f0f\u5eab (DLL)\u4e0d\u4e00\u81f4\u3002\u82e5\u8981\u53d6\u5f97\u6709\u95dc\u6b64\u554f\u984c\u53ca\u5efa\u8b70\u89e3\u6c7a\u65b9\u6cd5\u7684\u5176\u4ed6\u8cc7\u8a0a\uff0c\u8acb\u53c3\u95b1 java.sun.com \u7db2\u7ad9\u4e0a\u7684 Java(TM) 2 SDK, Standard Edition Release Notes
+AWT.InconsistentDLLsWarning=\u4EE5\u6587\u5B57\u70BA\u57FA\u790E\u7684\u4F5C\u696D\u53EF\u80FD\u7121\u6CD5\u6B63\u78BA\u904B\u4F5C\uFF0C\u56E0\u70BA\u60A8\u7CFB\u7D71\u4E0A\u6709\u4E00\u7D44\u52D5\u614B\u9023\u7D50\u7A0B\u5F0F\u5EAB (DLL) \u4E0D\u4E00\u81F4\u3002\u82E5\u8981\u53D6\u5F97\u6709\u95DC\u6B64\u554F\u984C\u53CA\u5EFA\u8B70\u89E3\u6C7A\u65B9\u6CD5\u7684\u5176\u4ED6\u8CC7\u8A0A\uFF0C\u8ACB\u53C3\u95B1 java.sun.com \u7DB2\u7AD9\u4E0A\u7684 Java(TM) 2 SDK, Standard Edition Release Notes
 
--- a/jdk/src/share/classes/sun/java2d/SunGraphicsEnvironment.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/java2d/SunGraphicsEnvironment.java	Wed Jul 05 17:35:13 2017 +0200
@@ -95,6 +95,22 @@
                             String line = br.readLine();
                             if (line.indexOf("OpenSolaris") >= 0) {
                                 isOpenSolaris = true;
+                            } else {
+                                /* We are using isOpenSolaris as meaning
+                                 * we know the Solaris commercial fonts aren't
+                                 * present. "Solaris Next" (03/10) did not
+                                 * include these even though its was not
+                                 * OpenSolaris. Need to revisit how this is
+                                 * handled but for now as in 6ux, we'll use
+                                 * the test for a standard font resource as
+                                 * being an indicator as to whether we need
+                                 * to treat this as OpenSolaris from a font
+                                 * config perspective.
+                                 */
+                                String courierNew =
+                                    "/usr/openwin/lib/X11/fonts/TrueType/CourierNew.ttf";
+                                File courierFile = new File(courierNew);
+                                isOpenSolaris = !courierFile.exists();
                             }
                             fis.close();
                         }
--- a/jdk/src/share/classes/sun/java2d/pisces/Curve.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/java2d/pisces/Curve.java	Wed Jul 05 17:35:13 2017 +0200
@@ -27,7 +27,7 @@
 
 import java.util.Iterator;
 
-class Curve {
+final class Curve {
 
     float ax, ay, bx, by, cx, cy, dx, dy;
     float dax, day, dbx, dby;
@@ -101,14 +101,6 @@
         return t * (t * day + dby) + cy;
     }
 
-    private float ddxat(float t) {
-        return 2 * dax * t + dbx;
-    }
-
-    private float ddyat(float t) {
-        return 2 * day * t + dby;
-    }
-
     int dxRoots(float[] roots, int off) {
         return Helpers.quadraticRoots(dax, dbx, cx, roots, off);
     }
@@ -131,17 +123,17 @@
     // finds points where the first and second derivative are
     // perpendicular. This happens when g(t) = f'(t)*f''(t) == 0 (where
     // * is a dot product). Unfortunately, we have to solve a cubic.
-    private int perpendiculardfddf(float[] pts, int off, final float err) {
+    private int perpendiculardfddf(float[] pts, int off) {
         assert pts.length >= off + 4;
 
-        // these are the coefficients of g(t):
+        // these are the coefficients of some multiple of g(t) (not g(t),
+        // because the roots of a polynomial are not changed after multiplication
+        // by a constant, and this way we save a few multiplications).
         final float a = 2*(dax*dax + day*day);
         final float b = 3*(dax*dbx + day*dby);
         final float c = 2*(dax*cx + day*cy) + dbx*dbx + dby*dby;
         final float d = dbx*cx + dby*cy;
-        // TODO: We might want to divide the polynomial by a to make the
-        // coefficients smaller. This won't change the roots.
-        return Helpers.cubicRootsInAB(a, b, c, d, pts, off, err, 0f, 1f);
+        return Helpers.cubicRootsInAB(a, b, c, d, pts, off, 0f, 1f);
     }
 
     // Tries to find the roots of the function ROC(t)-w in [0, 1). It uses
@@ -161,7 +153,7 @@
         // no OOB exception, because by now off<=6, and roots.length >= 10
         assert off <= 6 && roots.length >= 10;
         int ret = off;
-        int numPerpdfddf = perpendiculardfddf(roots, off, err);
+        int numPerpdfddf = perpendiculardfddf(roots, off);
         float t0 = 0, ft0 = ROCsq(t0) - w*w;
         roots[off + numPerpdfddf] = 1f; // always check interval end points
         numPerpdfddf++;
@@ -189,8 +181,9 @@
     // A slight modification of the false position algorithm on wikipedia.
     // This only works for the ROCsq-x functions. It might be nice to have
     // the function as an argument, but that would be awkward in java6.
-    // It is something to consider for java7, depending on how closures
-    // and function objects turn out. Same goes for the newton's method
+    // TODO: It is something to consider for java8 (or whenever lambda
+    // expressions make it into the language), depending on how closures
+    // and turn out. Same goes for the newton's method
     // algorithm in Helpers.java
     private float falsePositionROCsqMinusX(float x0, float x1,
                                            final float x, final float err)
@@ -203,7 +196,7 @@
         for (int i = 0; i < iterLimit && Math.abs(t - s) > err * Math.abs(t + s); i++) {
             r = (fs * t - ft * s) / (fs - ft);
             fr = ROCsq(r) - x;
-            if (fr * ft > 0) {// have the same sign
+            if (sameSign(fr, ft)) {
                 ft = fr; t = r;
                 if (side < 0) {
                     fs /= (1 << (-side));
@@ -226,55 +219,65 @@
         return r;
     }
 
+    private static boolean sameSign(double x, double y) {
+        // another way is to test if x*y > 0. This is bad for small x, y.
+        return (x < 0 && y < 0) || (x > 0 && y > 0);
+    }
+
     // returns the radius of curvature squared at t of this curve
     // see http://en.wikipedia.org/wiki/Radius_of_curvature_(applications)
     private float ROCsq(final float t) {
-        final float dx = dxat(t);
-        final float dy = dyat(t);
-        final float ddx = ddxat(t);
-        final float ddy = ddyat(t);
+        // dx=xat(t) and dy=yat(t). These calls have been inlined for efficiency
+        final float dx = t * (t * dax + dbx) + cx;
+        final float dy = t * (t * day + dby) + cy;
+        final float ddx = 2 * dax * t + dbx;
+        final float ddy = 2 * day * t + dby;
         final float dx2dy2 = dx*dx + dy*dy;
         final float ddx2ddy2 = ddx*ddx + ddy*ddy;
         final float ddxdxddydy = ddx*dx + ddy*dy;
-        float ret = ((dx2dy2*dx2dy2) / (dx2dy2 * ddx2ddy2 - ddxdxddydy*ddxdxddydy))*dx2dy2;
-        return ret;
+        return dx2dy2*((dx2dy2*dx2dy2) / (dx2dy2 * ddx2ddy2 - ddxdxddydy*ddxdxddydy));
     }
 
-    // curve to be broken should be in pts[0]
-    // this will change the contents of both pts and Ts
+    // curve to be broken should be in pts
+    // this will change the contents of pts but not Ts
     // TODO: There's no reason for Ts to be an array. All we need is a sequence
     // of t values at which to subdivide. An array statisfies this condition,
     // but is unnecessarily restrictive. Ts should be an Iterator<Float> instead.
     // Doing this will also make dashing easier, since we could easily make
     // LengthIterator an Iterator<Float> and feed it to this function to simplify
     // the loop in Dasher.somethingTo.
-    static Iterator<float[]> breakPtsAtTs(final float[][] pts, final int type,
+    static Iterator<Integer> breakPtsAtTs(final float[] pts, final int type,
                                           final float[] Ts, final int numTs)
     {
-        assert pts.length >= 2 && pts[0].length >= 8 && numTs <= Ts.length;
-        return new Iterator<float[]>() {
-            int nextIdx = 0;
+        assert pts.length >= 2*type && numTs <= Ts.length;
+        return new Iterator<Integer>() {
+            // these prevent object creation and destruction during autoboxing.
+            // Because of this, the compiler should be able to completely
+            // eliminate the boxing costs.
+            final Integer i0 = 0;
+            final Integer itype = type;
             int nextCurveIdx = 0;
+            Integer curCurveOff = i0;
             float prevT = 0;
 
             @Override public boolean hasNext() {
                 return nextCurveIdx < numTs + 1;
             }
 
-            @Override public float[] next() {
-                float[] ret;
+            @Override public Integer next() {
+                Integer ret;
                 if (nextCurveIdx < numTs) {
                     float curT = Ts[nextCurveIdx];
                     float splitT = (curT - prevT) / (1 - prevT);
                     Helpers.subdivideAt(splitT,
-                                        pts[nextIdx], 0,
-                                        pts[nextIdx], 0,
-                                        pts[1-nextIdx], 0, type);
-                    updateTs(Ts, Ts[nextCurveIdx], nextCurveIdx + 1, numTs - nextCurveIdx - 1);
-                    ret = pts[nextIdx];
-                    nextIdx = 1 - nextIdx;
+                                        pts, curCurveOff,
+                                        pts, 0,
+                                        pts, type, type);
+                    prevT = curT;
+                    ret = i0;
+                    curCurveOff = itype;
                 } else {
-                    ret = pts[nextIdx];
+                    ret = curCurveOff;
                 }
                 nextCurveIdx++;
                 return ret;
@@ -283,12 +286,5 @@
             @Override public void remove() {}
         };
     }
-
-    // precondition: ts[off]...ts[off+len-1] must all be greater than t.
-    private static void updateTs(float[] ts, final float t, final int off, final int len) {
-        for (int i = off; i < off + len; i++) {
-            ts[i] = (ts[i] - t) / (1 - t);
-        }
-    }
 }
 
--- a/jdk/src/share/classes/sun/java2d/pisces/Dasher.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/java2d/pisces/Dasher.java	Wed Jul 05 17:35:13 2017 +0200
@@ -38,7 +38,7 @@
  * semantics are unclear.
  *
  */
-public class Dasher implements sun.awt.geom.PathConsumer2D {
+final class Dasher implements sun.awt.geom.PathConsumer2D {
 
     private final PathConsumer2D out;
     private final float[] dash;
@@ -169,7 +169,7 @@
         float dx = x1 - x0;
         float dy = y1 - y0;
 
-        float len = (float) Math.hypot(dx, dy);
+        float len = (float) Math.sqrt(dx*dx + dy*dy);
 
         if (len == 0) {
             return;
@@ -226,7 +226,7 @@
             return;
         }
         if (li == null) {
-            li = new LengthIterator(4, 0.0001f);
+            li = new LengthIterator(4, 0.01f);
         }
         li.initializeIterationOnCurve(curCurvepts, type);
 
@@ -237,9 +237,9 @@
         while ((t = li.next(leftInThisDashSegment)) < 1) {
             if (t != 0) {
                 Helpers.subdivideAt((t - lastSplitT) / (1 - lastSplitT),
-                        curCurvepts, curCurveoff,
-                        curCurvepts, 0,
-                        curCurvepts, type, type);
+                                    curCurvepts, curCurveoff,
+                                    curCurvepts, 0,
+                                    curCurvepts, type, type);
                 lastSplitT = t;
                 goTo(curCurvepts, 2, type);
                 curCurveoff = type;
@@ -307,6 +307,11 @@
         private int recLevel;
         private boolean done;
 
+        // the lengths of the lines of the control polygon. Only its first
+        // curveType/2 - 1 elements are valid. This is an optimization. See
+        // next(float) for more detail.
+        private float[] curLeafCtrlPolyLengths = new float[3];
+
         public LengthIterator(int reclimit, float err) {
             this.limit = reclimit;
             this.minTincrement = 1f / (1 << limit);
@@ -344,11 +349,52 @@
             this.lastSegLen = 0;
         }
 
+        // 0 == false, 1 == true, -1 == invalid cached value.
+        private int cachedHaveLowAcceleration = -1;
+
+        private boolean haveLowAcceleration(float err) {
+            if (cachedHaveLowAcceleration == -1) {
+                final float len1 = curLeafCtrlPolyLengths[0];
+                final float len2 = curLeafCtrlPolyLengths[1];
+                // the test below is equivalent to !within(len1/len2, 1, err).
+                // It is using a multiplication instead of a division, so it
+                // should be a bit faster.
+                if (!Helpers.within(len1, len2, err*len2)) {
+                    cachedHaveLowAcceleration = 0;
+                    return false;
+                }
+                if (curveType == 8) {
+                    final float len3 = curLeafCtrlPolyLengths[2];
+                    // if len1 is close to 2 and 2 is close to 3, that probably
+                    // means 1 is close to 3 so the second part of this test might
+                    // not be needed, but it doesn't hurt to include it.
+                    if (!(Helpers.within(len2, len3, err*len3) &&
+                          Helpers.within(len1, len3, err*len3))) {
+                        cachedHaveLowAcceleration = 0;
+                        return false;
+                    }
+                }
+                cachedHaveLowAcceleration = 1;
+                return true;
+            }
+
+            return (cachedHaveLowAcceleration == 1);
+        }
+
+        // we want to avoid allocations/gc so we keep this array so we
+        // can put roots in it,
+        private float[] nextRoots = new float[4];
+
+        // caches the coefficients of the current leaf in its flattened
+        // form (see inside next() for what that means). The cache is
+        // invalid when it's third element is negative, since in any
+        // valid flattened curve, this would be >= 0.
+        private float[] flatLeafCoefCache = new float[] {0, 0, -1, 0};
         // returns the t value where the remaining curve should be split in
         // order for the left subdivided curve to have length len. If len
         // is >= than the length of the uniterated curve, it returns 1.
-        public float next(float len) {
-            float targetLength = lenAtLastSplit + len;
+        public float next(final float len) {
+            final float targetLength = lenAtLastSplit + len;
             while(lenAtNextT < targetLength) {
                 if (done) {
                     lastSegLen = lenAtNextT - lenAtLastSplit;
@@ -357,8 +403,46 @@
                 goToNextLeaf();
             }
             lenAtLastSplit = targetLength;
-            float t = binSearchForLen(lenAtLastSplit - lenAtLastT,
-                    recCurveStack[recLevel], curveType, lenAtNextT - lenAtLastT, ERR);
+            final float leaflen = lenAtNextT - lenAtLastT;
+            float t = (targetLength - lenAtLastT) / leaflen;
+
+            // cubicRootsInAB is a fairly expensive call, so we just don't do it
+            // if the acceleration in this section of the curve is small enough.
+            if (!haveLowAcceleration(0.05f)) {
+                // We flatten the current leaf along the x axis, so that we're
+                // left with a, b, c which define a 1D Bezier curve. We then
+                // solve this to get the parameter of the original leaf that
+                // gives us the desired length.
+
+                if (flatLeafCoefCache[2] < 0) {
+                    float x = 0+curLeafCtrlPolyLengths[0],
+                          y = x+curLeafCtrlPolyLengths[1];
+                    if (curveType == 8) {
+                        float z = y + curLeafCtrlPolyLengths[2];
+                        flatLeafCoefCache[0] = 3*(x - y) + z;
+                        flatLeafCoefCache[1] = 3*(y - 2*x);
+                        flatLeafCoefCache[2] = 3*x;
+                        flatLeafCoefCache[3] = -z;
+                    } else if (curveType == 6) {
+                        flatLeafCoefCache[0] = 0f;
+                        flatLeafCoefCache[1] = y - 2*x;
+                        flatLeafCoefCache[2] = 2*x;
+                        flatLeafCoefCache[3] = -y;
+                    }
+                }
+                float a = flatLeafCoefCache[0];
+                float b = flatLeafCoefCache[1];
+                float c = flatLeafCoefCache[2];
+                float d = t*flatLeafCoefCache[3];
+
+                // we use cubicRootsInAB here, because we want only roots in 0, 1,
+                // and our quadratic root finder doesn't filter, so it's just a
+                // matter of convenience.
+                int n = Helpers.cubicRootsInAB(a, b, c, d, nextRoots, 0, 0, 1);
+                if (n == 1 && !Float.isNaN(nextRoots[0])) {
+                    t = nextRoots[0];
+                }
+            }
             // t is relative to the current leaf, so we must make it a valid parameter
             // of the original curve.
             t = t * (nextT - lastT) + lastT;
@@ -379,36 +463,6 @@
             return lastSegLen;
         }
 
-        // Returns t such that if leaf is subdivided at t the left
-        // curve will have length len. leafLen must be the length of leaf.
-        private static Curve bsc = new Curve();
-        private static float binSearchForLen(float len, float[] leaf, int type,
-                                             float leafLen, float err)
-        {
-            assert len <= leafLen;
-            bsc.set(leaf, type);
-            float errBound = err*len;
-            float left = 0, right = 1;
-            while (left < right) {
-                float m = (left + right) / 2;
-                if (m == left || m == right) {
-                    return m;
-                }
-                float x = bsc.xat(m);
-                float y = bsc.yat(m);
-                float leftLen = Helpers.linelen(leaf[0], leaf[1], x, y);
-                if (Math.abs(leftLen - len) < errBound) {
-                    return m;
-                }
-                if (leftLen < len) {
-                    left = m;
-                } else {
-                    right = m;
-                }
-            }
-            return left;
-        }
-
         // go to the next leaf (in an inorder traversal) in the recursion tree
         // preconditions: must be on a leaf, and that leaf must not be the root.
         private void goToNextLeaf() {
@@ -437,6 +491,9 @@
                 lenAtLastT = lenAtNextT;
                 nextT += (1 << (limit - recLevel)) * minTincrement;
                 lenAtNextT += len;
+                // invalidate caches
+                flatLeafCoefCache[2] = -1;
+                cachedHaveLowAcceleration = -1;
             } else {
                 Helpers.subdivide(recCurveStack[recLevel], 0,
                                   recCurveStack[recLevel+1], 0,
@@ -450,11 +507,24 @@
         // this is a bit of a hack. It returns -1 if we're not on a leaf, and
         // the length of the leaf if we are on a leaf.
         private float onLeaf() {
-            float polylen = Helpers.polyLineLength(recCurveStack[recLevel], 0, curveType);
-            float linelen = Helpers.linelen(recCurveStack[recLevel][0], recCurveStack[recLevel][1],
-                    recCurveStack[recLevel][curveType - 2], recCurveStack[recLevel][curveType - 1]);
-            return (polylen - linelen < ERR || recLevel == limit) ?
-                   (polylen + linelen)/2 : -1;
+            float[] curve = recCurveStack[recLevel];
+            float polyLen = 0;
+
+            float x0 = curve[0], y0 = curve[1];
+            for (int i = 2; i < curveType; i += 2) {
+                final float x1 = curve[i], y1 = curve[i+1];
+                final float len = Helpers.linelen(x0, y0, x1, y1);
+                polyLen += len;
+                curLeafCtrlPolyLengths[i/2 - 1] = len;
+                x0 = x1;
+                y0 = y1;
+            }
+
+            final float lineLen = Helpers.linelen(curve[0], curve[1], curve[curveType-2], curve[curveType-1]);
+            if (polyLen - lineLen < ERR || recLevel == limit) {
+                return (polyLen + lineLen)/2;
+            }
+            return -1;
         }
     }
 
--- a/jdk/src/share/classes/sun/java2d/pisces/Helpers.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/java2d/pisces/Helpers.java	Wed Jul 05 17:35:13 2017 +0200
@@ -26,6 +26,12 @@
 package sun.java2d.pisces;
 
 import java.util.Arrays;
+import static java.lang.Math.PI;
+import static java.lang.Math.cos;
+import static java.lang.Math.sqrt;
+import static java.lang.Math.cbrt;
+import static java.lang.Math.acos;
+
 
 final class Helpers {
     private Helpers() {
@@ -75,100 +81,74 @@
         return ret - off;
     }
 
-    // find the roots of g(t) = a*t^3 + b*t^2 + c*t + d in [A,B)
-    // We will not use Cardano's method, since it is complicated and
-    // involves too many square and cubic roots. We will use Newton's method.
-    // TODO: this should probably return ALL roots. Then the user can do
-    // his own filtering of roots outside [A,B).
-    static int cubicRootsInAB(final float a, final float b,
-                              final float c, final float d,
-                              float[] pts, final int off, final float E,
+    // find the roots of g(t) = d*t^3 + a*t^2 + b*t + c in [A,B)
+    static int cubicRootsInAB(float d, float a, float b, float c,
+                              float[] pts, final int off,
                               final float A, final float B)
     {
-        if (a == 0) {
-            return quadraticRoots(b, c, d, pts, off);
+        if (d == 0) {
+            int num = quadraticRoots(a, b, c, pts, off);
+            return filterOutNotInAB(pts, off, num, A, B) - off;
         }
-        // the coefficients of g'(t). no dc variable because dc=c
-        // we use these to get the critical points of g(t), which
-        // we then use to chose starting points for Newton's method. These
-        // should be very close to the actual roots.
-        final float da = 3 * a;
-        final float db = 2 * b;
-        int numCritPts = quadraticRoots(da, db, c, pts, off+1);
-        numCritPts = filterOutNotInAB(pts, off+1, numCritPts, A, B) - off - 1;
-        // need them sorted.
-        if (numCritPts == 2 && pts[off+1] > pts[off+2]) {
-            float tmp = pts[off+1];
-            pts[off+1] = pts[off+2];
-            pts[off+2] = tmp;
+        // From Graphics Gems:
+        // http://tog.acm.org/resources/GraphicsGems/gems/Roots3And4.c
+        // (also from awt.geom.CubicCurve2D. But here we don't need as
+        // much accuracy and we don't want to create arrays so we use
+        // our own customized version).
+
+        /* normal form: x^3 + ax^2 + bx + c = 0 */
+        a /= d;
+        b /= d;
+        c /= d;
+
+        //  substitute x = y - A/3 to eliminate quadratic term:
+        //     x^3 +Px + Q = 0
+        //
+        // Since we actually need P/3 and Q/2 for all of the
+        // calculations that follow, we will calculate
+        // p = P/3
+        // q = Q/2
+        // instead and use those values for simplicity of the code.
+        double sq_A = a * a;
+        double p = 1.0/3 * (-1.0/3 * sq_A + b);
+        double q = 1.0/2 * (2.0/27 * a * sq_A - 1.0/3 * a * b + c);
+
+        /* use Cardano's formula */
+
+        double cb_p = p * p * p;
+        double D = q * q + cb_p;
+
+        int num;
+        if (D < 0) {
+            // see: http://en.wikipedia.org/wiki/Cubic_function#Trigonometric_.28and_hyperbolic.29_method
+            final double phi = 1.0/3 * acos(-q / sqrt(-cb_p));
+            final double t = 2 * sqrt(-p);
+
+            pts[ off+0 ] =  (float)( t * cos(phi));
+            pts[ off+1 ] =  (float)(-t * cos(phi + PI / 3));
+            pts[ off+2 ] =  (float)(-t * cos(phi - PI / 3));
+            num = 3;
+        } else {
+            final double sqrt_D = sqrt(D);
+            final double u = cbrt(sqrt_D - q);
+            final double v = - cbrt(sqrt_D + q);
+
+            pts[ off ] = (float)(u + v);
+            num = 1;
+
+            if (within(D, 0, 1e-8)) {
+                pts[off+1] = -(pts[off] / 2);
+                num = 2;
+            }
         }
 
-        int ret = off;
-
-        // we don't actually care much about the extrema themselves. We
-        // only use them to ensure that g(t) is monotonic in each
-        // interval [pts[i],pts[i+1] (for i in off...off+numCritPts+1).
-        // This will allow us to determine intervals containing exactly
-        // one root.
-        // The end points of the interval are always local extrema.
-        pts[off] = A;
-        pts[off + numCritPts + 1] = B;
-        numCritPts += 2;
-
-        float x0 = pts[off], fx0 = evalCubic(a, b, c, d, x0);
-        for (int i = off; i < off + numCritPts - 1; i++) {
-            float x1 = pts[i+1], fx1 = evalCubic(a, b, c, d, x1);
-            if (fx0 == 0f) {
-                pts[ret++] = x0;
-            } else if (fx1 * fx0 < 0f) { // have opposite signs
-                pts[ret++] = CubicNewton(a, b, c, d,
-                        x0 + fx0 * (x1 - x0) / (fx0 - fx1), E);
-            }
-            x0 = x1;
-            fx0 = fx1;
-        }
-        return ret - off;
-    }
+        final float sub = 1.0f/3 * a;
 
-    // precondition: the polynomial to be evaluated must not be 0 at x0.
-    static float CubicNewton(final float a, final float b,
-                             final float c, final float d,
-                             float x0, final float err)
-    {
-        // considering how this function is used, 10 should be more than enough
-        final int itlimit = 10;
-        float fx0 = evalCubic(a, b, c, d, x0);
-        float x1;
-        int count = 0;
-        while(true) {
-            x1 = x0 - (fx0 / evalCubic(0, 3 * a, 2 * b, c, x0));
-            if (Math.abs(x1 - x0) < err * Math.abs(x1 + x0) || count == itlimit) {
-                break;
-            }
-            x0 = x1;
-            fx0 = evalCubic(a, b, c, d, x0);
-            count++;
+        for (int i = 0; i < num; ++i) {
+            pts[ off+i ] -= sub;
         }
-        return x1;
-    }
 
-    // fills the input array with numbers 0, INC, 2*INC, ...
-    static void fillWithIdxes(final float[] data, final int[] idxes) {
-        if (idxes.length > 0) {
-            idxes[0] = 0;
-            for (int i = 1; i < idxes.length; i++) {
-                idxes[i] = idxes[i-1] + (int)data[idxes[i-1]];
-            }
-        }
-    }
-
-    static void fillWithIdxes(final int[] idxes, final int inc) {
-        if (idxes.length > 0) {
-            idxes[0] = 0;
-            for (int i = 1; i < idxes.length; i++) {
-                idxes[i] = idxes[i-1] + inc;
-            }
-        }
+        return filterOutNotInAB(pts, off, num, A, B) - off;
     }
 
     // These use a hardcoded factor of 2 for increasing sizes. Perhaps this
@@ -182,6 +162,7 @@
         }
         return Arrays.copyOf(in, 2 * (cursize + numToAdd));
     }
+
     static int[] widenArray(int[] in, final int cursize, final int numToAdd) {
         if (in.length >= cursize + numToAdd) {
             return in;
@@ -208,7 +189,7 @@
     {
         int ret = off;
         for (int i = off; i < off + len; i++) {
-            if (nums[i] > a && nums[i] < b) {
+            if (nums[i] >= a && nums[i] < b) {
                 nums[ret++] = nums[i];
             }
         }
@@ -225,7 +206,9 @@
     }
 
     static float linelen(float x1, float y1, float x2, float y2) {
-        return (float)Math.hypot(x2 - x1, y2 - y1);
+        final float dx = x2 - x1;
+        final float dy = y2 - y1;
+        return (float)Math.sqrt(dx*dx + dy*dy);
     }
 
     static void subdivide(float[] src, int srcoff, float[] left, int leftoff,
--- a/jdk/src/share/classes/sun/java2d/pisces/PiscesCache.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/java2d/pisces/PiscesCache.java	Wed Jul 05 17:35:13 2017 +0200
@@ -32,7 +32,7 @@
  *
  * @see PiscesRenderer#render
  */
-public final class PiscesCache {
+final class PiscesCache {
 
     final int bboxX0, bboxY0, bboxX1, bboxY1;
 
--- a/jdk/src/share/classes/sun/java2d/pisces/PiscesRenderingEngine.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/java2d/pisces/PiscesRenderingEngine.java	Wed Jul 05 17:35:13 2017 +0200
@@ -27,7 +27,6 @@
 
 import java.awt.Shape;
 import java.awt.BasicStroke;
-import java.awt.geom.NoninvertibleTransformException;
 import java.awt.geom.Path2D;
 import java.awt.geom.AffineTransform;
 import java.awt.geom.PathIterator;
@@ -250,7 +249,7 @@
                   float dashphase,
                   PathConsumer2D pc2d)
     {
-        // We use inat and outat so that in Stroker and Dasher we can work only
+        // We use strokerat and outat so that in Stroker and Dasher we can work only
         // with the pre-transformation coordinates. This will repeat a lot of
         // computations done in the path iterator, but the alternative is to
         // work with transformed paths and compute untransformed coordinates
@@ -265,7 +264,7 @@
         // transformation after the path processing has been done.
         // We can't do this if normalization is on, because it isn't a good
         // idea to normalize before the transformation is applied.
-        AffineTransform inat = null;
+        AffineTransform strokerat = null;
         AffineTransform outat = null;
 
         PathIterator pi = null;
@@ -284,9 +283,9 @@
                 // again so, nothing can be drawn.
 
                 // Every path needs an initial moveTo and a pathDone. If these
-                // aren't there this causes a SIGSEV in libawt.so (at the time
+                // are not there this causes a SIGSEGV in libawt.so (at the time
                 // of writing of this comment (September 16, 2010)). Actually,
-                // I'm not sure if the moveTo is necessary to avoid the SIGSEV
+                // I am not sure if the moveTo is necessary to avoid the SIGSEGV
                 // but the pathDone is definitely needed.
                 pc2d.moveTo(0, 0);
                 pc2d.pathDone();
@@ -313,25 +312,32 @@
                 if (normalize != NormMode.OFF) {
                     pi = new NormalizingPathIterator(pi, normalize);
                 }
-                // leave inat and outat null.
+                // by now strokerat == null && outat == null. Input paths to
+                // stroker (and maybe dasher) will have the full transform at
+                // applied to them and nothing will happen to the output paths.
             } else {
-                // We only need the inverse if normalization is on. Otherwise
-                // we just don't transform the input paths, do all the stroking
-                // and then transform out output (instead of making PathIterator
-                // apply the transformation, us applying the inverse, and then
-                // us applying the transform again to our output).
-                outat = at;
                 if (normalize != NormMode.OFF) {
-                    try {
-                        inat = outat.createInverse();
-                    } catch (NoninvertibleTransformException e) {
-                        // we made sure this can't happen
-                        e.printStackTrace();
-                    }
+                    strokerat = at;
                     pi = src.getPathIterator(at);
                     pi = new NormalizingPathIterator(pi, normalize);
+                    // by now strokerat == at && outat == null. Input paths to
+                    // stroker (and maybe dasher) will have the full transform at
+                    // applied to them, then they will be normalized, and then
+                    // the inverse of *only the non translation part of at* will
+                    // be applied to the normalized paths. This won't cause problems
+                    // in stroker, because, suppose at = T*A, where T is just the
+                    // translation part of at, and A is the rest. T*A has already
+                    // been applied to Stroker/Dasher's input. Then Ainv will be
+                    // applied. Ainv*T*A is not equal to T, but it is a translation,
+                    // which means that none of stroker's assumptions about its
+                    // input will be violated. After all this, A will be applied
+                    // to stroker's output.
                 } else {
+                    outat = at;
                     pi = src.getPathIterator(null);
+                    // outat == at && strokerat == null. This is because if no
+                    // normalization is done, we can just apply all our
+                    // transformations to stroker's output.
                 }
             }
         } else {
@@ -343,13 +349,17 @@
             }
         }
 
+        // by now, at least one of outat and strokerat will be null. Unless at is not
+        // a constant multiple of an orthogonal transformation, they will both be
+        // null. In other cases, outat == at if normalization is off, and if
+        // normalization is on, strokerat == at.
         pc2d = TransformingPathConsumer2D.transformConsumer(pc2d, outat);
+        pc2d = TransformingPathConsumer2D.deltaTransformConsumer(pc2d, strokerat);
         pc2d = new Stroker(pc2d, width, caps, join, miterlimit);
         if (dashes != null) {
             pc2d = new Dasher(pc2d, dashes, dashphase);
         }
-        pc2d = TransformingPathConsumer2D.transformConsumer(pc2d, inat);
-
+        pc2d = TransformingPathConsumer2D.inverseDeltaTransformConsumer(pc2d, strokerat);
         pathTo(pi, pc2d);
     }
 
@@ -588,9 +598,9 @@
         }
 
         Renderer r = new Renderer(3, 3,
-                                  clip.getLoX(), clip.getLoY(),
-                                  clip.getWidth(), clip.getHeight(),
-                                  PathIterator.WIND_EVEN_ODD);
+                clip.getLoX(), clip.getLoY(),
+                clip.getWidth(), clip.getHeight(),
+                PathIterator.WIND_EVEN_ODD);
 
         r.moveTo((float) x, (float) y);
         r.lineTo((float) (x+dx1), (float) (y+dy1));
--- a/jdk/src/share/classes/sun/java2d/pisces/PiscesTileGenerator.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/java2d/pisces/PiscesTileGenerator.java	Wed Jul 05 17:35:13 2017 +0200
@@ -30,7 +30,7 @@
 
 import sun.java2d.pipe.AATileGenerator;
 
-public final class PiscesTileGenerator implements AATileGenerator {
+final class PiscesTileGenerator implements AATileGenerator {
     public static final int TILE_SIZE = PiscesCache.TILE_SIZE;
 
     // perhaps we should be using weak references here, but right now
--- a/jdk/src/share/classes/sun/java2d/pisces/Renderer.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/java2d/pisces/Renderer.java	Wed Jul 05 17:35:13 2017 +0200
@@ -25,12 +25,9 @@
 
 package sun.java2d.pisces;
 
-import java.util.Arrays;
-import java.util.Iterator;
-
 import sun.awt.geom.PathConsumer2D;
 
-public class Renderer implements PathConsumer2D {
+final class Renderer implements PathConsumer2D {
 
     private class ScanlineIterator {
 
@@ -39,115 +36,81 @@
         // crossing bounds. The bounds are not necessarily tight (the scan line
         // at minY, for example, might have no crossings). The x bounds will
         // be accumulated as crossings are computed.
-        private int minY, maxY;
+        private final int maxY;
         private int nextY;
 
         // indices into the segment pointer lists. They indicate the "active"
         // sublist in the segment lists (the portion of the list that contains
         // all the segments that cross the next scan line).
-        private int elo, ehi;
-        private final int[] edgePtrs;
-        private int qlo, qhi;
-        private final int[] quadPtrs;
-        private int clo, chi;
-        private final int[] curvePtrs;
+        private int edgeCount;
+        private int[] edgePtrs;
 
         private static final int INIT_CROSSINGS_SIZE = 10;
 
         private ScanlineIterator() {
             crossings = new int[INIT_CROSSINGS_SIZE];
-
-            edgePtrs = new int[numEdges];
-            Helpers.fillWithIdxes(edgePtrs, SIZEOF_EDGE);
-            qsort(edges, edgePtrs, YMIN, 0, numEdges - 1);
-
-            quadPtrs = new int[numQuads];
-            Helpers.fillWithIdxes(quadPtrs, SIZEOF_QUAD);
-            qsort(quads, quadPtrs, YMIN, 0, numQuads - 1);
-
-            curvePtrs = new int[numCurves];
-            Helpers.fillWithIdxes(curvePtrs, SIZEOF_CURVE);
-            qsort(curves, curvePtrs, YMIN, 0, numCurves - 1);
+            edgePtrs = new int[INIT_CROSSINGS_SIZE];
 
             // We don't care if we clip some of the line off with ceil, since
             // no scan line crossings will be eliminated (in fact, the ceil is
             // the y of the first scan line crossing).
-            nextY = minY = Math.max(boundsMinY, (int)Math.ceil(edgeMinY));
-            maxY = Math.min(boundsMaxY, (int)Math.ceil(edgeMaxY));
-
-            for (elo = 0; elo < numEdges && edges[edgePtrs[elo]+YMAX] <= minY; elo++)
-                ;
-            // the active list is *edgePtrs[lo] (inclusive) *edgePtrs[hi] (exclusive)
-            for (ehi = elo; ehi < numEdges && edges[edgePtrs[ehi]+YMIN] <= minY; ehi++)
-                edgeSetCurY(edgePtrs[ehi], minY);// TODO: make minY a float to avoid casts
-
-            for (qlo = 0; qlo < numQuads && quads[quadPtrs[qlo]+YMAX] <= minY; qlo++)
-                ;
-            for (qhi = qlo; qhi < numQuads && quads[quadPtrs[qhi]+YMIN] <= minY; qhi++)
-                quadSetCurY(quadPtrs[qhi], minY);
-
-            for (clo = 0; clo < numCurves && curves[curvePtrs[clo]+YMAX] <= minY; clo++)
-                ;
-            for (chi = clo; chi < numCurves && curves[curvePtrs[chi]+YMIN] <= minY; chi++)
-                curveSetCurY(curvePtrs[chi], minY);
+            final int minY = getFirstScanLineCrossing();
+            nextY = minY;
+            maxY = getScanLineCrossingEnd()-1;
+            edgeCount = 0;
         }
 
         private int next() {
-            // we go through the active lists and remove segments that don't cross
-            // the nextY scanline.
-            int crossingIdx = 0;
-            for (int i = elo; i < ehi; i++) {
-                if (edges[edgePtrs[i]+YMAX] <= nextY) {
-                    edgePtrs[i] = edgePtrs[elo++];
+            int cury = nextY++;
+            int bucket = cury - boundsMinY;
+            int count = this.edgeCount;
+            int ptrs[] = this.edgePtrs;
+            int bucketcount = edgeBucketCounts[bucket];
+            if ((bucketcount & 0x1) != 0) {
+                int newCount = 0;
+                for (int i = 0; i < count; i++) {
+                    int ecur = ptrs[i];
+                    if (edges[ecur+YMAX] > cury) {
+                        ptrs[newCount++] = ecur;
+                    }
                 }
+                count = newCount;
             }
-            for (int i = qlo; i < qhi; i++) {
-                if (quads[quadPtrs[i]+YMAX] <= nextY) {
-                    quadPtrs[i] = quadPtrs[qlo++];
-                }
-            }
-            for (int i = clo; i < chi; i++) {
-                if (curves[curvePtrs[i]+YMAX] <= nextY) {
-                    curvePtrs[i] = curvePtrs[clo++];
-                }
+            ptrs = Helpers.widenArray(ptrs, count, bucketcount >> 1);
+            for (int ecur = edgeBuckets[bucket]; ecur != NULL; ecur = (int)edges[ecur+NEXT]) {
+                ptrs[count++] = ecur;
+                // REMIND: Adjust start Y if necessary
             }
-
-            crossings = Helpers.widenArray(crossings, 0, ehi-elo+qhi-qlo+chi-clo);
-
-            // Now every edge between lo and hi crosses nextY. Compute it's
-            // crossing and put it in the crossings array.
-            for (int i = elo; i < ehi; i++) {
-                int ptr = edgePtrs[i];
-                addCrossing(nextY, (int)edges[ptr+CURX], edges[ptr+OR], crossingIdx);
-                edgeGoToNextY(ptr);
-                crossingIdx++;
-            }
-            for (int i = qlo; i < qhi; i++) {
-                int ptr = quadPtrs[i];
-                addCrossing(nextY, (int)quads[ptr+CURX], quads[ptr+OR], crossingIdx);
-                quadGoToNextY(ptr);
-                crossingIdx++;
+            this.edgePtrs = ptrs;
+            this.edgeCount = count;
+//            if ((count & 0x1) != 0) {
+//                System.out.println("ODD NUMBER OF EDGES!!!!");
+//            }
+            int xings[] = this.crossings;
+            if (xings.length < count) {
+                this.crossings = xings = new int[ptrs.length];
             }
-            for (int i = clo; i < chi; i++) {
-                int ptr = curvePtrs[i];
-                addCrossing(nextY, (int)curves[ptr+CURX], curves[ptr+OR], crossingIdx);
-                curveGoToNextY(ptr);
-                crossingIdx++;
+            for (int i = 0; i < count; i++) {
+                int ecur = ptrs[i];
+                float curx = edges[ecur+CURX];
+                int cross = ((int) curx) << 1;
+                edges[ecur+CURX] = curx + edges[ecur+SLOPE];
+                if (edges[ecur+OR] > 0) {
+                    cross |= 1;
+                }
+                int j = i;
+                while (--j >= 0) {
+                    int jcross = xings[j];
+                    if (jcross <= cross) {
+                        break;
+                    }
+                    xings[j+1] = jcross;
+                    ptrs[j+1] = ptrs[j];
+                }
+                xings[j+1] = cross;
+                ptrs[j+1] = ecur;
             }
-
-            nextY++;
-            // Expand active lists to include new edges.
-            for (; ehi < numEdges && edges[edgePtrs[ehi]+YMIN] <= nextY; ehi++) {
-                edgeSetCurY(edgePtrs[ehi], nextY);
-            }
-            for (; qhi < numQuads && quads[quadPtrs[qhi]+YMIN] <= nextY; qhi++) {
-                quadSetCurY(quadPtrs[qhi], nextY);
-            }
-            for (; chi < numCurves && curves[curvePtrs[chi]+YMIN] <= nextY; chi++) {
-                curveSetCurY(curvePtrs[chi], nextY);
-            }
-            Arrays.sort(crossings, 0, crossingIdx);
-            return crossingIdx;
+            return count;
         }
 
         private boolean hasNext() {
@@ -157,51 +120,7 @@
         private int curY() {
             return nextY - 1;
         }
-
-        private void addCrossing(int y, int x, float or, int idx) {
-            x <<= 1;
-            crossings[idx] = ((or > 0) ? (x | 0x1) : x);
-        }
     }
-    // quicksort implementation for sorting the edge indices ("pointers")
-    // by increasing y0. first, last are indices into the "pointer" array
-    // It sorts the pointer array from first (inclusive) to last (inclusive)
-    private static void qsort(final float[] data, final int[] ptrs,
-                              final int fieldForCmp, int first, int last)
-    {
-        if (last > first) {
-            int p = partition(data, ptrs, fieldForCmp, first, last);
-            if (first < p - 1) {
-                qsort(data, ptrs, fieldForCmp, first, p - 1);
-            }
-            if (p < last) {
-                qsort(data, ptrs, fieldForCmp, p, last);
-            }
-        }
-    }
-
-    // i, j are indices into edgePtrs.
-    private static int partition(final float[] data, final int[] ptrs,
-                                 final int fieldForCmp, int i, int j)
-    {
-        int pivotValFieldForCmp = ptrs[i]+fieldForCmp;
-        while (i <= j) {
-            // edges[edgePtrs[i]+1] is equivalent to (*(edgePtrs[i])).y0 in C
-            while (data[ptrs[i]+fieldForCmp] < data[pivotValFieldForCmp])
-                i++;
-            while (data[ptrs[j]+fieldForCmp] > data[pivotValFieldForCmp])
-                j--;
-            if (i <= j) {
-                int tmp = ptrs[i];
-                ptrs[i] = ptrs[j];
-                ptrs[j] = tmp;
-                i++;
-                j--;
-            }
-        }
-        return i;
-    }
-//============================================================================
 
 
 //////////////////////////////////////////////////////////////////////////////
@@ -209,269 +128,89 @@
 //////////////////////////////////////////////////////////////////////////////
 // TODO(maybe): very tempting to use fixed point here. A lot of opportunities
 // for shifts and just removing certain operations altogether.
-// TODO: it might be worth it to make an EdgeList class. It would probably
-// clean things up a bit and not impact performance much.
 
     // common to all types of input path segments.
-    private static final int YMIN = 0;
-    private static final int YMAX = 1;
-    private static final int CURX = 2;
-    // this and OR are meant to be indeces into "int" fields, but arrays must
+    private static final int YMAX = 0;
+    private static final int CURX = 1;
+    // NEXT and OR are meant to be indices into "int" fields, but arrays must
     // be homogenous, so every field is a float. However floats can represent
     // exactly up to 26 bit ints, so we're ok.
-    private static final int CURY = 3;
-    private static final int OR   = 4;
-
-    // for straight lines only:
-    private static final int SLOPE = 5;
-
-    // for quads and cubics:
-    private static final int X0 = 5;
-    private static final int Y0 = 6;
-    private static final int XL = 7;
-    private static final int COUNT = 8;
-    private static final int CURSLOPE = 9;
-    private static final int DX = 10;
-    private static final int DY = 11;
-    private static final int DDX = 12;
-    private static final int DDY = 13;
-
-    // for cubics only
-    private static final int DDDX = 14;
-    private static final int DDDY = 15;
+    private static final int OR   = 2;
+    private static final int SLOPE = 3;
+    private static final int NEXT = 4;
 
     private float edgeMinY = Float.POSITIVE_INFINITY;
     private float edgeMaxY = Float.NEGATIVE_INFINITY;
     private float edgeMinX = Float.POSITIVE_INFINITY;
     private float edgeMaxX = Float.NEGATIVE_INFINITY;
 
-    private static final int SIZEOF_EDGE = 6;
+    private static final int SIZEOF_EDGE = 5;
+    // don't just set NULL to -1, because we want NULL+NEXT to be negative.
+    private static final int NULL = -SIZEOF_EDGE;
     private float[] edges = null;
+    private int[] edgeBuckets = null;
+    private int[] edgeBucketCounts = null; // 2*newedges + (1 if pruning needed)
     private int numEdges;
-    // these are static because we need them to be usable from ScanlineIterator
-    private void edgeSetCurY(final int idx, int y) {
-        edges[idx+CURX] += (y - edges[idx+CURY]) * edges[idx+SLOPE];
-        edges[idx+CURY] = y;
-    }
-    private void edgeGoToNextY(final int idx) {
-        edges[idx+CURY] += 1;
-        edges[idx+CURX] += edges[idx+SLOPE];
-    }
-
-
-    private static final int SIZEOF_QUAD = 14;
-    private float[] quads = null;
-    private int numQuads;
-    // This function should be called exactly once, to set the first scanline
-    // of the curve. Before it is called, the curve should think its first
-    // scanline is CEIL(YMIN).
-    private void quadSetCurY(final int idx, final int y) {
-        assert y < quads[idx+YMAX];
-        assert (quads[idx+CURY] > y);
-        assert (quads[idx+CURY] == Math.ceil(quads[idx+CURY]));
-
-        while (quads[idx+CURY] < ((float)y)) {
-            quadGoToNextY(idx);
-        }
-    }
-    private void quadGoToNextY(final int idx) {
-        quads[idx+CURY] += 1;
-        // this will get overriden if the while executes.
-        quads[idx+CURX] += quads[idx+CURSLOPE];
-        int count = (int)quads[idx+COUNT];
-        // this loop should never execute more than once because our
-        // curve is monotonic in Y. Still we put it in because you can
-        // never be too sure when dealing with floating point.
-        while(quads[idx+CURY] >= quads[idx+Y0] && count > 0) {
-            float x0 = quads[idx+X0], y0 = quads[idx+Y0];
-            count = executeQuadAFDIteration(idx);
-            float x1 = quads[idx+X0], y1 = quads[idx+Y0];
-            // our quads are monotonic, so this shouldn't happen, but
-            // it is conceivable that for very flat quads with different
-            // y values at their endpoints AFD might give us a horizontal
-            // segment.
-            if (y1 == y0) {
-                continue;
-            }
-            quads[idx+CURSLOPE] = (x1 - x0) / (y1 - y0);
-            quads[idx+CURX] = x0 + (quads[idx+CURY] - y0) * quads[idx+CURSLOPE];
-        }
-    }
-
-
-    private static final int SIZEOF_CURVE = 16;
-    private float[] curves = null;
-    private int numCurves;
-    private void curveSetCurY(final int idx, final int y) {
-        assert y < curves[idx+YMAX];
-        assert (curves[idx+CURY] > y);
-        assert (curves[idx+CURY] == Math.ceil(curves[idx+CURY]));
-
-        while (curves[idx+CURY] < ((float)y)) {
-            curveGoToNextY(idx);
-        }
-    }
-    private void curveGoToNextY(final int idx) {
-        curves[idx+CURY] += 1;
-        // this will get overriden if the while executes.
-        curves[idx+CURX] += curves[idx+CURSLOPE];
-        int count = (int)curves[idx+COUNT];
-        // this loop should never execute more than once because our
-        // curve is monotonic in Y. Still we put it in because you can
-        // never be too sure when dealing with floating point.
-        while(curves[idx+CURY] >= curves[idx+Y0] && count > 0) {
-            float x0 = curves[idx+X0], y0 = curves[idx+Y0];
-            count = executeCurveAFDIteration(idx);
-            float x1 = curves[idx+X0], y1 = curves[idx+Y0];
-            // our curves are monotonic, so this shouldn't happen, but
-            // it is conceivable that for very flat curves with different
-            // y values at their endpoints AFD might give us a horizontal
-            // segment.
-            if (y1 == y0) {
-                continue;
-            }
-            curves[idx+CURSLOPE] = (x1 - x0) / (y1 - y0);
-            curves[idx+CURX] = x0 + (curves[idx+CURY] - y0) * curves[idx+CURSLOPE];
-        }
-    }
-
 
     private static final float DEC_BND = 20f;
     private static final float INC_BND = 8f;
+
+    // each bucket is a linked list. this method adds eptr to the
+    // start "bucket"th linked list.
+    private void addEdgeToBucket(final int eptr, final int bucket) {
+        edges[eptr+NEXT] = edgeBuckets[bucket];
+        edgeBuckets[bucket] = eptr;
+        edgeBucketCounts[bucket] += 2;
+    }
+
     // Flattens using adaptive forward differencing. This only carries out
     // one iteration of the AFD loop. All it does is update AFD variables (i.e.
     // X0, Y0, D*[X|Y], COUNT; not variables used for computing scanline crossings).
-    private int executeQuadAFDIteration(int idx) {
-        int count = (int)quads[idx+COUNT];
-        float ddx = quads[idx+DDX];
-        float ddy = quads[idx+DDY];
-        float dx = quads[idx+DX];
-        float dy = quads[idx+DY];
-
-        while (Math.abs(ddx) > DEC_BND || Math.abs(ddy) > DEC_BND) {
-            ddx = ddx / 4;
-            ddy = ddy / 4;
-            dx = (dx - ddx) / 2;
-            dy = (dy - ddy) / 2;
+    private void quadBreakIntoLinesAndAdd(float x0, float y0,
+                                          final Curve c,
+                                          final float x2, final float y2) {
+        final float QUAD_DEC_BND = 32;
+        final int countlg = 4;
+        int count = 1 << countlg;
+        int countsq = count * count;
+        float maxDD = Math.max(c.dbx / countsq, c.dby / countsq);
+        while (maxDD > QUAD_DEC_BND) {
+            maxDD /= 4;
             count <<= 1;
         }
-        // can only do this on even "count" values, because we must divide count by 2
-        while (count % 2 == 0 && Math.abs(dx) <= INC_BND && Math.abs(dy) <= INC_BND) {
-            dx = 2 * dx + ddx;
-            dy = 2 * dy + ddy;
-            ddx = 4 * ddx;
-            ddy = 4 * ddy;
-            count >>= 1;
-        }
-        count--;
-        if (count > 0) {
-            quads[idx+X0] += dx;
-            dx += ddx;
-            quads[idx+Y0] += dy;
-            dy += ddy;
-        } else {
-            quads[idx+X0] = quads[idx+XL];
-            quads[idx+Y0] = quads[idx+YMAX];
-        }
-        quads[idx+COUNT] = count;
-        quads[idx+DDX] = ddx;
-        quads[idx+DDY] = ddy;
-        quads[idx+DX] = dx;
-        quads[idx+DY] = dy;
-        return count;
-    }
-    private int executeCurveAFDIteration(int idx) {
-        int count = (int)curves[idx+COUNT];
-        float ddx = curves[idx+DDX];
-        float ddy = curves[idx+DDY];
-        float dx = curves[idx+DX];
-        float dy = curves[idx+DY];
-        float dddx = curves[idx+DDDX];
-        float dddy = curves[idx+DDDY];
+
+        countsq = count * count;
+        final float ddx = c.dbx / countsq;
+        final float ddy = c.dby / countsq;
+        float dx = c.bx / countsq + c.cx / count;
+        float dy = c.by / countsq + c.cy / count;
 
-        while (Math.abs(ddx) > DEC_BND || Math.abs(ddy) > DEC_BND) {
-            dddx /= 8;
-            dddy /= 8;
-            ddx = ddx/4 - dddx;
-            ddy = ddy/4 - dddy;
-            dx = (dx - ddx) / 2;
-            dy = (dy - ddy) / 2;
-            count <<= 1;
-        }
-        // can only do this on even "count" values, because we must divide count by 2
-        while (count % 2 == 0 && Math.abs(dx) <= INC_BND && Math.abs(dy) <= INC_BND) {
-            dx = 2 * dx + ddx;
-            dy = 2 * dy + ddy;
-            ddx = 4 * (ddx + dddx);
-            ddy = 4 * (ddy + dddy);
-            dddx = 8 * dddx;
-            dddy = 8 * dddy;
-            count >>= 1;
+        while (count-- > 1) {
+            float x1 = x0 + dx;
+            dx += ddx;
+            float y1 = y0 + dy;
+            dy += ddy;
+            addLine(x0, y0, x1, y1);
+            x0 = x1;
+            y0 = y1;
         }
-        count--;
-        if (count > 0) {
-            curves[idx+X0] += dx;
-            dx += ddx;
-            ddx += dddx;
-            curves[idx+Y0] += dy;
-            dy += ddy;
-            ddy += dddy;
-        } else {
-            curves[idx+X0] = curves[idx+XL];
-            curves[idx+Y0] = curves[idx+YMAX];
-        }
-        curves[idx+COUNT] = count;
-        curves[idx+DDDX] = dddx;
-        curves[idx+DDDY] = dddy;
-        curves[idx+DDX] = ddx;
-        curves[idx+DDY] = ddy;
-        curves[idx+DX] = dx;
-        curves[idx+DY] = dy;
-        return count;
+        addLine(x0, y0, x2, y2);
     }
 
-
-    private void initLine(final int idx, float[] pts, int or) {
-        edges[idx+SLOPE] = (pts[2] - pts[0]) / (pts[3] - pts[1]);
-        edges[idx+CURX] = pts[0] + (edges[idx+CURY] - pts[1]) * edges[idx+SLOPE];
-    }
-
-    private void initQuad(final int idx, float[] points, int or) {
+    // x0, y0 and x3,y3 are the endpoints of the curve. We could compute these
+    // using c.xat(0),c.yat(0) and c.xat(1),c.yat(1), but this might introduce
+    // numerical errors, and our callers already have the exact values.
+    // Another alternative would be to pass all the control points, and call c.set
+    // here, but then too many numbers are passed around.
+    private void curveBreakIntoLinesAndAdd(float x0, float y0,
+                                           final Curve c,
+                                           final float x3, final float y3) {
         final int countlg = 3;
-        final int count = 1 << countlg;
+        int count = 1 << countlg;
 
         // the dx and dy refer to forward differencing variables, not the last
         // coefficients of the "points" polynomial
-        final float ddx, ddy, dx, dy;
-        c.set(points, 6);
-
-        ddx = c.dbx / (1 << (2 * countlg));
-        ddy = c.dby / (1 << (2 * countlg));
-        dx = c.bx / (1 << (2 * countlg)) + c.cx / (1 << countlg);
-        dy = c.by / (1 << (2 * countlg)) + c.cy / (1 << countlg);
-
-        quads[idx+DDX] = ddx;
-        quads[idx+DDY] = ddy;
-        quads[idx+DX] = dx;
-        quads[idx+DY] = dy;
-        quads[idx+COUNT] = count;
-        quads[idx+XL] = points[4];
-        quads[idx+X0] = points[0];
-        quads[idx+Y0] = points[1];
-        executeQuadAFDIteration(idx);
-        float x1 = quads[idx+X0], y1 = quads[idx+Y0];
-        quads[idx+CURSLOPE] = (x1 - points[0]) / (y1 - points[1]);
-        quads[idx+CURX] = points[0] + (quads[idx+CURY] - points[1])*quads[idx+CURSLOPE];
-    }
-
-    private void initCurve(final int idx, float[] points, int or) {
-        final int countlg = 3;
-        final int count = 1 << countlg;
-
-        // the dx and dy refer to forward differencing variables, not the last
-        // coefficients of the "points" polynomial
-        final float dddx, dddy, ddx, ddy, dx, dy;
-        c.set(points, 8);
+        float dddx, dddy, ddx, ddy, dx, dy;
         dddx = 2f * c.dax / (1 << (3 * countlg));
         dddy = 2f * c.day / (1 << (3 * countlg));
 
@@ -480,93 +219,100 @@
         dx = c.ax / (1 << (3 * countlg)) + c.bx / (1 << (2 * countlg)) + c.cx / (1 << countlg);
         dy = c.ay / (1 << (3 * countlg)) + c.by / (1 << (2 * countlg)) + c.cy / (1 << countlg);
 
-        curves[idx+DDDX] = dddx;
-        curves[idx+DDDY] = dddy;
-        curves[idx+DDX] = ddx;
-        curves[idx+DDY] = ddy;
-        curves[idx+DX] = dx;
-        curves[idx+DY] = dy;
-        curves[idx+COUNT] = count;
-        curves[idx+XL] = points[6];
-        curves[idx+X0] = points[0];
-        curves[idx+Y0] = points[1];
-        executeCurveAFDIteration(idx);
-        float x1 = curves[idx+X0], y1 = curves[idx+Y0];
-        curves[idx+CURSLOPE] = (x1 - points[0]) / (y1 - points[1]);
-        curves[idx+CURX] = points[0] + (curves[idx+CURY] - points[1])*curves[idx+CURSLOPE];
-    }
-
-    private void addPathSegment(float[] pts, final int type, final int or) {
-        int idx;
-        float[] addTo;
-        switch (type) {
-        case 4:
-            idx = numEdges * SIZEOF_EDGE;
-            addTo = edges = Helpers.widenArray(edges, numEdges*SIZEOF_EDGE, SIZEOF_EDGE);
-            numEdges++;
-            break;
-        case 6:
-            idx = numQuads * SIZEOF_QUAD;
-            addTo = quads = Helpers.widenArray(quads, numQuads*SIZEOF_QUAD, SIZEOF_QUAD);
-            numQuads++;
-            break;
-        case 8:
-            idx = numCurves * SIZEOF_CURVE;
-            addTo = curves = Helpers.widenArray(curves, numCurves*SIZEOF_CURVE, SIZEOF_CURVE);
-            numCurves++;
-            break;
-        default:
-            throw new InternalError();
-        }
-        // set the common fields, except CURX, for which we must know the kind
-        // of curve. NOTE: this must be done before the type specific fields
-        // are initialized, because those depend on the common ones.
-        addTo[idx+YMIN] = pts[1];
-        addTo[idx+YMAX] = pts[type-1];
-        addTo[idx+OR] = or;
-        addTo[idx+CURY] = (float)Math.ceil(pts[1]);
-        switch (type) {
-        case 4:
-            initLine(idx, pts, or);
-            break;
-        case 6:
-            initQuad(idx, pts, or);
-            break;
-        case 8:
-            initCurve(idx, pts, or);
-            break;
-        default:
-            throw new InternalError();
+        // we use x0, y0 to walk the line
+        float x1 = x0, y1 = y0;
+        while (count > 0) {
+            while (Math.abs(ddx) > DEC_BND || Math.abs(ddy) > DEC_BND) {
+                dddx /= 8;
+                dddy /= 8;
+                ddx = ddx/4 - dddx;
+                ddy = ddy/4 - dddy;
+                dx = (dx - ddx) / 2;
+                dy = (dy - ddy) / 2;
+                count <<= 1;
+            }
+            // can only do this on even "count" values, because we must divide count by 2
+            while (count % 2 == 0 && Math.abs(dx) <= INC_BND && Math.abs(dy) <= INC_BND) {
+                dx = 2 * dx + ddx;
+                dy = 2 * dy + ddy;
+                ddx = 4 * (ddx + dddx);
+                ddy = 4 * (ddy + dddy);
+                dddx = 8 * dddx;
+                dddy = 8 * dddy;
+                count >>= 1;
+            }
+            count--;
+            if (count > 0) {
+                x1 += dx;
+                dx += ddx;
+                ddx += dddx;
+                y1 += dy;
+                dy += ddy;
+                ddy += dddy;
+            } else {
+                x1 = x3;
+                y1 = y3;
+            }
+            addLine(x0, y0, x1, y1);
+            x0 = x1;
+            y0 = y1;
         }
     }
 
-    // precondition: the curve in pts must be monotonic and increasing in y.
-    private void somethingTo(float[] pts, final int type, final int or) {
-        // NOTE: it's very important that we check for or >= 0 below (as
-        // opposed to or == 1, or or > 0, or anything else). That's
-        // because if we check for or==1, when the curve being added
-        // is a horizontal line, or will be 0 so or==1 will be false and
-        // x0 and y0 will be updated to pts[0] and pts[1] instead of pts[type-2]
-        // and pts[type-1], which is the correct thing to do.
-        this.x0 = or >= 0 ? pts[type - 2] : pts[0];
-        this.y0 = or >= 0 ? pts[type - 1] : pts[1];
-
-        float minY = pts[1], maxY = pts[type - 1];
-        if (Math.ceil(minY) >= Math.ceil(maxY) ||
-            Math.ceil(minY) >= boundsMaxY || maxY < boundsMinY)
-        {
+    // Preconditions: y2 > y1 and the curve must cross some scanline
+    // i.e.: y1 <= y < y2 for some y such that boundsMinY <= y < boundsMaxY
+    private void addLine(float x1, float y1, float x2, float y2) {
+        float or = 1; // orientation of the line. 1 if y increases, 0 otherwise.
+        if (y2 < y1) {
+            or = y2; // no need to declare a temp variable. We have or.
+            y2 = y1;
+            y1 = or;
+            or = x2;
+            x2 = x1;
+            x1 = or;
+            or = 0;
+        }
+        final int firstCrossing = Math.max((int) Math.ceil(y1), boundsMinY);
+        final int lastCrossing = Math.min((int)Math.ceil(y2), boundsMaxY);
+        if (firstCrossing >= lastCrossing) {
             return;
         }
 
-        if (minY < edgeMinY) { edgeMinY = minY; }
-        if (maxY > edgeMaxY) { edgeMaxY = maxY; }
+        if (y1 < edgeMinY) { edgeMinY = y1; }
+        if (y2 > edgeMaxY) { edgeMaxY = y2; }
+
+        final float slope = (x2 - x1) / (y2 - y1);
+
+        if (slope > 0) { // <==> x1 < x2
+            if (x1 < edgeMinX) { edgeMinX = x1; }
+            if (x2 > edgeMaxX) { edgeMaxX = x2; }
+        } else {
+            if (x2 < edgeMinX) { edgeMinX = x2; }
+            if (x1 > edgeMaxX) { edgeMaxX = x1; }
+        }
 
-        int minXidx = (pts[0] < pts[type-2] ? 0 : type - 2);
-        float minX = pts[minXidx];
-        float maxX = pts[type - 2 - minXidx];
-        if (minX < edgeMinX) { edgeMinX = minX; }
-        if (maxX > edgeMaxX) { edgeMaxX = maxX; }
-        addPathSegment(pts, type, or);
+        final int ptr = numEdges * SIZEOF_EDGE;
+        edges = Helpers.widenArray(edges, ptr, SIZEOF_EDGE);
+        numEdges++;
+        edges[ptr+OR] = or;
+        edges[ptr+CURX] = x1 + (firstCrossing - y1) * slope;
+        edges[ptr+SLOPE] = slope;
+        edges[ptr+YMAX] = y2;
+        final int bucketIdx = firstCrossing - boundsMinY;
+        addEdgeToBucket(ptr, bucketIdx);
+        if (lastCrossing < boundsMaxY) {
+            edgeBucketCounts[lastCrossing - boundsMinY] |= 1;
+        }
+    }
+
+    // preconditions: should not be called before the last line has been added
+    // to the edge list (even though it will return a correct answer at that
+    // point in time, it's not meant to be used that way).
+    private int getFirstScanLineCrossing() {
+        return Math.max(boundsMinY, (int)Math.ceil(edgeMinY));
+    }
+    private int getScanLineCrossingEnd() {
+        return Math.min(boundsMaxY, (int)Math.ceil(edgeMaxY));
     }
 
 // END EDGE LIST
@@ -619,6 +365,10 @@
         this.boundsMinY = pix_boundsY * SUBPIXEL_POSITIONS_Y;
         this.boundsMaxX = (pix_boundsX + pix_boundsWidth) * SUBPIXEL_POSITIONS_X;
         this.boundsMaxY = (pix_boundsY + pix_boundsHeight) * SUBPIXEL_POSITIONS_Y;
+
+        edgeBuckets = new int[boundsMaxY - boundsMinY];
+        java.util.Arrays.fill(edgeBuckets, NULL);
+        edgeBucketCounts = new int[edgeBuckets.length];
     }
 
     private float tosubpixx(float pix_x) {
@@ -636,74 +386,34 @@
         this.x0 = tosubpixx(pix_x0);
     }
 
-    public void lineJoin() { /* do nothing */ }
-
-    private final float[][] pts = new float[2][8];
-    private final float[] ts = new float[4];
-
-    private static void invertPolyPoints(float[] pts, int off, int type) {
-        for (int i = off, j = off + type - 2; i < j; i += 2, j -= 2) {
-            float tmp = pts[i];
-            pts[i] = pts[j];
-            pts[j] = tmp;
-            tmp = pts[i+1];
-            pts[i+1] = pts[j+1];
-            pts[j+1] = tmp;
-        }
-    }
-
-    // return orientation before making the curve upright.
-    private static int makeMonotonicCurveUpright(float[] pts, int off, int type) {
-        float y0 = pts[off + 1];
-        float y1 = pts[off + type - 1];
-        if (y0 > y1) {
-            invertPolyPoints(pts, off, type);
-            return -1;
-        } else if (y0 < y1) {
-            return 1;
-        }
-        return 0;
-    }
-
     public void lineTo(float pix_x1, float pix_y1) {
-        pts[0][0] = x0; pts[0][1] = y0;
-        pts[0][2] = tosubpixx(pix_x1); pts[0][3] = tosubpixy(pix_y1);
-        int or = makeMonotonicCurveUpright(pts[0], 0, 4);
-        somethingTo(pts[0], 4, or);
+        float x1 = tosubpixx(pix_x1);
+        float y1 = tosubpixy(pix_y1);
+        addLine(x0, y0, x1, y1);
+        x0 = x1;
+        y0 = y1;
     }
 
     Curve c = new Curve();
-    private void curveOrQuadTo(int type) {
-        c.set(pts[0], type);
-        int numTs = c.dxRoots(ts, 0);
-        numTs += c.dyRoots(ts, numTs);
-        numTs = Helpers.filterOutNotInAB(ts, 0, numTs, 0, 1);
-        Helpers.isort(ts, 0, numTs);
-
-        Iterator<float[]> it = Curve.breakPtsAtTs(pts, type, ts, numTs);
-        while(it.hasNext()) {
-            float[] curCurve = it.next();
-            int or = makeMonotonicCurveUpright(curCurve, 0, type);
-            somethingTo(curCurve, type, or);
-        }
-    }
-
     @Override public void curveTo(float x1, float y1,
                                   float x2, float y2,
                                   float x3, float y3)
     {
-        pts[0][0] = x0; pts[0][1] = y0;
-        pts[0][2] = tosubpixx(x1); pts[0][3] = tosubpixy(y1);
-        pts[0][4] = tosubpixx(x2); pts[0][5] = tosubpixy(y2);
-        pts[0][6] = tosubpixx(x3); pts[0][7] = tosubpixy(y3);
-        curveOrQuadTo(8);
+        final float xe = tosubpixx(x3);
+        final float ye = tosubpixy(y3);
+        c.set(x0, y0, tosubpixx(x1), tosubpixy(y1), tosubpixx(x2), tosubpixy(y2), xe, ye);
+        curveBreakIntoLinesAndAdd(x0, y0, c, xe, ye);
+        x0 = xe;
+        y0 = ye;
     }
 
     @Override public void quadTo(float x1, float y1, float x2, float y2) {
-        pts[0][0] = x0; pts[0][1] = y0;
-        pts[0][2] = tosubpixx(x1); pts[0][3] = tosubpixy(y1);
-        pts[0][4] = tosubpixx(x2); pts[0][5] = tosubpixy(y2);
-        curveOrQuadTo(6);
+        final float xe = tosubpixx(x2);
+        final float ye = tosubpixy(y2);
+        c.set(x0, y0, tosubpixx(x1), tosubpixy(y1), xe, ye);
+        quadBreakIntoLinesAndAdd(x0, y0, c, xe, ye);
+        x0 = xe;
+        y0 = ye;
     }
 
     public void closePath() {
@@ -728,9 +438,9 @@
         // 0x1 if EVEN_ODD, all bits if NON_ZERO
         int mask = (windingRule == WIND_EVEN_ODD) ? 0x1 : ~0x0;
 
-        // add 1 to better deal with the last pixel in a pixel row.
-        int width = pix_bboxx1 - pix_bboxx0 + 1;
-        int[] alpha = new int[width+1];
+        // add 2 to better deal with the last pixel in a pixel row.
+        int width = pix_bboxx1 - pix_bboxx0;
+        int[] alpha = new int[width+2];
 
         int bboxx0 = pix_bboxx0 << SUBPIXEL_LG_POSITIONS_X;
         int bboxx1 = pix_bboxx1 << SUBPIXEL_LG_POSITIONS_X;
@@ -766,7 +476,8 @@
             for (int i = 0; i < numCrossings; i++) {
                 int curxo = crossings[i];
                 int curx = curxo >> 1;
-                int crorientation = ((curxo & 0x1) == 0x1) ? 1 : -1;
+                // to turn {0, 1} into {-1, 1}, multiply by 2 and subtract 1.
+                int crorientation = ((curxo & 0x1) << 1) -1;
                 if ((sum & mask) != 0) {
                     int x0 = Math.max(prev, bboxx0);
                     int x1 = Math.min(curx, bboxx1);
@@ -811,26 +522,26 @@
     }
 
     public void endRendering() {
-        final int bminx = boundsMinX >> SUBPIXEL_LG_POSITIONS_X;
-        final int bmaxx = boundsMaxX >> SUBPIXEL_LG_POSITIONS_X;
-        final int bminy = boundsMinY >> SUBPIXEL_LG_POSITIONS_Y;
-        final int bmaxy = boundsMaxY >> SUBPIXEL_LG_POSITIONS_Y;
-        final int eminx = ((int)Math.floor(edgeMinX)) >> SUBPIXEL_LG_POSITIONS_X;
-        final int emaxx = ((int)Math.ceil(edgeMaxX)) >> SUBPIXEL_LG_POSITIONS_X;
-        final int eminy = ((int)Math.floor(edgeMinY)) >> SUBPIXEL_LG_POSITIONS_Y;
-        final int emaxy = ((int)Math.ceil(edgeMaxY)) >> SUBPIXEL_LG_POSITIONS_Y;
+        int spminX = Math.max((int)Math.ceil(edgeMinX), boundsMinX);
+        int spmaxX = Math.min((int)Math.ceil(edgeMaxX), boundsMaxX);
+        int spminY = Math.max((int)Math.ceil(edgeMinY), boundsMinY);
+        int spmaxY = Math.min((int)Math.ceil(edgeMaxY), boundsMaxY);
 
-        final int minX = Math.max(bminx, eminx);
-        final int maxX = Math.min(bmaxx, emaxx);
-        final int minY = Math.max(bminy, eminy);
-        final int maxY = Math.min(bmaxy, emaxy);
-        if (minX > maxX || minY > maxY) {
-            this.cache = new PiscesCache(bminx, bminy, bmaxx, bmaxy);
+        int pminX = spminX >> SUBPIXEL_LG_POSITIONS_X;
+        int pmaxX = (spmaxX + SUBPIXEL_MASK_X) >> SUBPIXEL_LG_POSITIONS_X;
+        int pminY = spminY >> SUBPIXEL_LG_POSITIONS_Y;
+        int pmaxY = (spmaxY + SUBPIXEL_MASK_Y) >> SUBPIXEL_LG_POSITIONS_Y;
+
+        if (pminX > pmaxX || pminY > pmaxY) {
+            this.cache = new PiscesCache(boundsMinX >> SUBPIXEL_LG_POSITIONS_X,
+                                         boundsMinY >> SUBPIXEL_LG_POSITIONS_Y,
+                                         boundsMaxX >> SUBPIXEL_LG_POSITIONS_X,
+                                         boundsMaxY >> SUBPIXEL_LG_POSITIONS_Y);
             return;
         }
 
-        this.cache = new PiscesCache(minX, minY, maxX, maxY);
-        _endRendering(minX, minY, maxX, maxY);
+        this.cache = new PiscesCache(pminX, pminY, pmaxX, pmaxY);
+        _endRendering(pminX, pminY, pmaxX, pmaxY);
     }
 
     public PiscesCache getCache() {
--- a/jdk/src/share/classes/sun/java2d/pisces/Stroker.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/java2d/pisces/Stroker.java	Wed Jul 05 17:35:13 2017 +0200
@@ -33,7 +33,7 @@
 // TODO: some of the arithmetic here is too verbose and prone to hard to
 // debug typos. We should consider making a small Point/Vector class that
 // has methods like plus(Point), minus(Point), dot(Point), cross(Point)and such
-public class Stroker implements PathConsumer2D {
+final class Stroker implements PathConsumer2D {
 
     private static final int MOVE_TO = 0;
     private static final int DRAWING_OP_TO = 1; // ie. curve, line, or quad
@@ -130,7 +130,7 @@
     private static void computeOffset(final float lx, final float ly,
                                       final float w, final float[] m)
     {
-        final float len = (float)Math.hypot(lx, ly);
+        final float len = (float)Math.sqrt(lx*lx + ly*ly);
         if (len == 0) {
             m[0] = m[1] = 0;
         } else {
@@ -758,7 +758,7 @@
     // This is where the curve to be processed is put. We give it
     // enough room to store 2 curves: one for the current subdivision, the
     // other for the rest of the curve.
-    private float[][] middle = new float[2][8];
+    private float[] middle = new float[2*8];
     private float[] lp = new float[8];
     private float[] rp = new float[8];
     private static final int MAX_N_CURVES = 11;
@@ -766,55 +766,55 @@
 
     private void somethingTo(final int type) {
         // need these so we can update the state at the end of this method
-        final float xf = middle[0][type-2], yf = middle[0][type-1];
-        float dxs = middle[0][2] - middle[0][0];
-        float dys = middle[0][3] - middle[0][1];
-        float dxf = middle[0][type - 2] - middle[0][type - 4];
-        float dyf = middle[0][type - 1] - middle[0][type - 3];
+        final float xf = middle[type-2], yf = middle[type-1];
+        float dxs = middle[2] - middle[0];
+        float dys = middle[3] - middle[1];
+        float dxf = middle[type - 2] - middle[type - 4];
+        float dyf = middle[type - 1] - middle[type - 3];
         switch(type) {
         case 6:
             if ((dxs == 0f && dys == 0f) ||
                 (dxf == 0f && dyf == 0f)) {
-               dxs = dxf = middle[0][4] - middle[0][0];
-               dys = dyf = middle[0][5] - middle[0][1];
+               dxs = dxf = middle[4] - middle[0];
+               dys = dyf = middle[5] - middle[1];
             }
             break;
         case 8:
             boolean p1eqp2 = (dxs == 0f && dys == 0f);
             boolean p3eqp4 = (dxf == 0f && dyf == 0f);
             if (p1eqp2) {
-                dxs = middle[0][4] - middle[0][0];
-                dys = middle[0][5] - middle[0][1];
+                dxs = middle[4] - middle[0];
+                dys = middle[5] - middle[1];
                 if (dxs == 0f && dys == 0f) {
-                    dxs = middle[0][6] - middle[0][0];
-                    dys = middle[0][7] - middle[0][1];
+                    dxs = middle[6] - middle[0];
+                    dys = middle[7] - middle[1];
                 }
             }
             if (p3eqp4) {
-                dxf = middle[0][6] - middle[0][2];
-                dyf = middle[0][7] - middle[0][3];
+                dxf = middle[6] - middle[2];
+                dyf = middle[7] - middle[3];
                 if (dxf == 0f && dyf == 0f) {
-                    dxf = middle[0][6] - middle[0][0];
-                    dyf = middle[0][7] - middle[0][1];
+                    dxf = middle[6] - middle[0];
+                    dyf = middle[7] - middle[1];
                 }
             }
         }
         if (dxs == 0f && dys == 0f) {
             // this happens iff the "curve" is just a point
-            lineTo(middle[0][0], middle[0][1]);
+            lineTo(middle[0], middle[1]);
             return;
         }
         // if these vectors are too small, normalize them, to avoid future
         // precision problems.
         if (Math.abs(dxs) < 0.1f && Math.abs(dys) < 0.1f) {
-            double len = Math.hypot(dxs, dys);
-            dxs = (float)(dxs / len);
-            dys = (float)(dys / len);
+            float len = (float)Math.sqrt(dxs*dxs + dys*dys);
+            dxs /= len;
+            dys /= len;
         }
         if (Math.abs(dxf) < 0.1f && Math.abs(dyf) < 0.1f) {
-            double len = Math.hypot(dxf, dyf);
-            dxf = (float)(dxf / len);
-            dyf = (float)(dyf / len);
+            float len = (float)Math.sqrt(dxf*dxf + dyf*dyf);
+            dxf /= len;
+            dyf /= len;
         }
 
         computeOffset(dxs, dys, lineWidth2, offset[0]);
@@ -822,20 +822,20 @@
         final float my = offset[0][1];
         drawJoin(cdx, cdy, cx0, cy0, dxs, dys, cmx, cmy, mx, my);
 
-        int nSplits = findSubdivPoints(middle[0], subdivTs, type,lineWidth2);
+        int nSplits = findSubdivPoints(middle, subdivTs, type, lineWidth2);
 
         int kind = 0;
-        Iterator<float[]> it = Curve.breakPtsAtTs(middle, type, subdivTs, nSplits);
+        Iterator<Integer> it = Curve.breakPtsAtTs(middle, type, subdivTs, nSplits);
         while(it.hasNext()) {
-            float[] curCurve = it.next();
+            int curCurveOff = it.next();
 
             kind = 0;
             switch (type) {
             case 8:
-                kind = computeOffsetCubic(curCurve, 0, lp, rp);
+                kind = computeOffsetCubic(middle, curCurveOff, lp, rp);
                 break;
             case 6:
-                kind = computeOffsetQuad(curCurve, 0, lp, rp);
+                kind = computeOffsetQuad(middle, curCurveOff, lp, rp);
                 break;
             }
             if (kind != 0) {
@@ -871,8 +871,7 @@
     // to get good offset curves a distance of w away from the middle curve.
     // Stores the points in ts, and returns how many of them there were.
     private static Curve c = new Curve();
-    private static int findSubdivPoints(float[] pts, float[] ts,
-                                        final int type, final float w)
+    private static int findSubdivPoints(float[] pts, float[] ts, final int type, final float w)
     {
         final float x12 = pts[2] - pts[0];
         final float y12 = pts[3] - pts[1];
@@ -919,6 +918,7 @@
         // now we must subdivide at points where one of the offset curves will have
         // a cusp. This happens at ts where the radius of curvature is equal to w.
         ret += c.rootsOfROCMinusW(ts, ret, w, 0.0001f);
+
         ret = Helpers.filterOutNotInAB(ts, 0, ret, 0.0001f, 0.9999f);
         Helpers.isort(ts, 0, ret);
         return ret;
@@ -928,10 +928,10 @@
                                   float x2, float y2,
                                   float x3, float y3)
     {
-        middle[0][0] = cx0; middle[0][1] = cy0;
-        middle[0][2] = x1; middle[0][3] = y1;
-        middle[0][4] = x2; middle[0][5] = y2;
-        middle[0][6] = x3; middle[0][7] = y3;
+        middle[0] = cx0; middle[1] = cy0;
+        middle[2] = x1;  middle[3] = y1;
+        middle[4] = x2;  middle[5] = y2;
+        middle[6] = x3;  middle[7] = y3;
         somethingTo(8);
     }
 
@@ -940,9 +940,9 @@
     }
 
     @Override public void quadTo(float x1, float y1, float x2, float y2) {
-        middle[0][0] = cx0; middle[0][1] = cy0;
-        middle[0][2] = x1; middle[0][3] = y1;
-        middle[0][4] = x2; middle[0][5] = y2;
+        middle[0] = cx0; middle[1] = cy0;
+        middle[2] = x1;  middle[3] = y1;
+        middle[4] = x2;  middle[5] = y2;
         somethingTo(6);
     }
 
--- a/jdk/src/share/classes/sun/java2d/pisces/TransformingPathConsumer2D.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/java2d/pisces/TransformingPathConsumer2D.java	Wed Jul 05 17:35:13 2017 +0200
@@ -28,7 +28,7 @@
 import sun.awt.geom.PathConsumer2D;
 import java.awt.geom.AffineTransform;
 
-public class TransformingPathConsumer2D {
+final class TransformingPathConsumer2D {
     public static PathConsumer2D
         transformConsumer(PathConsumer2D out,
                           AffineTransform at)
@@ -50,17 +50,72 @@
                     return new TranslateFilter(out, Mxt, Myt);
                 }
             } else {
-                return new ScaleFilter(out, Mxx, Myy, Mxt, Myt);
+                if (Mxt == 0f && Myt == 0f) {
+                    return new DeltaScaleFilter(out, Mxx, Myy);
+                } else {
+                    return new ScaleFilter(out, Mxx, Myy, Mxt, Myt);
+                }
             }
+        } else if (Mxt == 0f && Myt == 0f) {
+            return new DeltaTransformFilter(out, Mxx, Mxy, Myx, Myy);
         } else {
             return new TransformFilter(out, Mxx, Mxy, Mxt, Myx, Myy, Myt);
         }
     }
 
-    static class TranslateFilter implements PathConsumer2D {
-        PathConsumer2D out;
-        float tx;
-        float ty;
+    public static PathConsumer2D
+        deltaTransformConsumer(PathConsumer2D out,
+                               AffineTransform at)
+    {
+        if (at == null) {
+            return out;
+        }
+        float Mxx = (float) at.getScaleX();
+        float Mxy = (float) at.getShearX();
+        float Myx = (float) at.getShearY();
+        float Myy = (float) at.getScaleY();
+        if (Mxy == 0f && Myx == 0f) {
+            if (Mxx == 1f && Myy == 1f) {
+                return out;
+            } else {
+                return new DeltaScaleFilter(out, Mxx, Myy);
+            }
+        } else {
+            return new DeltaTransformFilter(out, Mxx, Mxy, Myx, Myy);
+        }
+    }
+
+    public static PathConsumer2D
+        inverseDeltaTransformConsumer(PathConsumer2D out,
+                                      AffineTransform at)
+    {
+        if (at == null) {
+            return out;
+        }
+        float Mxx = (float) at.getScaleX();
+        float Mxy = (float) at.getShearX();
+        float Myx = (float) at.getShearY();
+        float Myy = (float) at.getScaleY();
+        if (Mxy == 0f && Myx == 0f) {
+            if (Mxx == 1f && Myy == 1f) {
+                return out;
+            } else {
+                return new DeltaScaleFilter(out, 1.0f/Mxx, 1.0f/Myy);
+            }
+        } else {
+            float det = Mxx * Myy - Mxy * Myx;
+            return new DeltaTransformFilter(out,
+                                            Myy / det,
+                                            -Mxy / det,
+                                            -Myx / det,
+                                            Mxx / det);
+        }
+    }
+
+    static final class TranslateFilter implements PathConsumer2D {
+        private final PathConsumer2D out;
+        private final float tx;
+        private final float ty;
 
         TranslateFilter(PathConsumer2D out,
                         float tx, float ty)
@@ -107,12 +162,12 @@
         }
     }
 
-    static class ScaleFilter implements PathConsumer2D {
-        PathConsumer2D out;
-        float sx;
-        float sy;
-        float tx;
-        float ty;
+    static final class ScaleFilter implements PathConsumer2D {
+        private final PathConsumer2D out;
+        private final float sx;
+        private final float sy;
+        private final float tx;
+        private final float ty;
 
         ScaleFilter(PathConsumer2D out,
                     float sx, float sy, float tx, float ty)
@@ -161,14 +216,14 @@
         }
     }
 
-    static class TransformFilter implements PathConsumer2D {
-        PathConsumer2D out;
-        float Mxx;
-        float Mxy;
-        float Mxt;
-        float Myx;
-        float Myy;
-        float Myt;
+    static final class TransformFilter implements PathConsumer2D {
+        private final PathConsumer2D out;
+        private final float Mxx;
+        private final float Mxy;
+        private final float Mxt;
+        private final float Myx;
+        private final float Myy;
+        private final float Myt;
 
         TransformFilter(PathConsumer2D out,
                         float Mxx, float Mxy, float Mxt,
@@ -226,4 +281,113 @@
             return 0;
         }
     }
+
+    static final class DeltaScaleFilter implements PathConsumer2D {
+        private final float sx, sy;
+        private final PathConsumer2D out;
+
+        public DeltaScaleFilter(PathConsumer2D out, float Mxx, float Myy) {
+            sx = Mxx;
+            sy = Myy;
+            this.out = out;
+        }
+
+        public void moveTo(float x0, float y0) {
+            out.moveTo(x0 * sx, y0 * sy);
+        }
+
+        public void lineTo(float x1, float y1) {
+            out.lineTo(x1 * sx, y1 * sy);
+        }
+
+        public void quadTo(float x1, float y1,
+                           float x2, float y2)
+        {
+            out.quadTo(x1 * sx, y1 * sy,
+                       x2 * sx, y2 * sy);
+        }
+
+        public void curveTo(float x1, float y1,
+                            float x2, float y2,
+                            float x3, float y3)
+        {
+            out.curveTo(x1 * sx, y1 * sy,
+                        x2 * sx, y2 * sy,
+                        x3 * sx, y3 * sy);
+        }
+
+        public void closePath() {
+            out.closePath();
+        }
+
+        public void pathDone() {
+            out.pathDone();
+        }
+
+        public long getNativeConsumer() {
+            return 0;
+        }
+    }
+
+    static final class DeltaTransformFilter implements PathConsumer2D {
+        private PathConsumer2D out;
+        private final float Mxx;
+        private final float Mxy;
+        private final float Myx;
+        private final float Myy;
+
+        DeltaTransformFilter(PathConsumer2D out,
+                             float Mxx, float Mxy,
+                             float Myx, float Myy)
+        {
+            this.out = out;
+            this.Mxx = Mxx;
+            this.Mxy = Mxy;
+            this.Myx = Myx;
+            this.Myy = Myy;
+        }
+
+        public void moveTo(float x0, float y0) {
+            out.moveTo(x0 * Mxx + y0 * Mxy,
+                       x0 * Myx + y0 * Myy);
+        }
+
+        public void lineTo(float x1, float y1) {
+            out.lineTo(x1 * Mxx + y1 * Mxy,
+                       x1 * Myx + y1 * Myy);
+        }
+
+        public void quadTo(float x1, float y1,
+                           float x2, float y2)
+        {
+            out.quadTo(x1 * Mxx + y1 * Mxy,
+                       x1 * Myx + y1 * Myy,
+                       x2 * Mxx + y2 * Mxy,
+                       x2 * Myx + y2 * Myy);
+        }
+
+        public void curveTo(float x1, float y1,
+                            float x2, float y2,
+                            float x3, float y3)
+        {
+            out.curveTo(x1 * Mxx + y1 * Mxy,
+                        x1 * Myx + y1 * Myy,
+                        x2 * Mxx + y2 * Mxy,
+                        x2 * Myx + y2 * Myy,
+                        x3 * Mxx + y3 * Mxy,
+                        x3 * Myx + y3 * Myy);
+        }
+
+        public void closePath() {
+            out.closePath();
+        }
+
+        public void pathDone() {
+            out.pathDone();
+        }
+
+        public long getNativeConsumer() {
+            return 0;
+        }
+    }
 }
--- a/jdk/src/share/classes/sun/jkernel/BackgroundDownloader.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,209 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.jkernel;
-
-import java.io.*;
-
-/**
- * Invoked by DownloadManager to begin (in a new JRE) the process of downloading
- * all remaining JRE components in the background.  A mutex is used to ensure
- * that only one BackgroundDownloader can be active at a time.
- *
- */
-public class BackgroundDownloader {
-    public static final String BACKGROUND_DOWNLOAD_PROPERTY = "kernel.background.download";
-    // relative to the bundle directory
-    public static final String PID_PATH = "tmp" + File.separator + "background.pid";
-
-    // Time to wait before beginning to download components.  Gives the JRE
-    // which spawned this one a chance to get its downloads going.
-    private static final int WAIT_TIME = 10000;
-
-    private static Mutex backgroundMutex;
-
-    static synchronized Mutex getBackgroundMutex() {
-        if (backgroundMutex == null)
-            backgroundMutex = Mutex.create(DownloadManager.MUTEX_PREFIX + "background");
-        return backgroundMutex;
-    }
-
-    private static void doBackgroundDownloads() {
-        if (DownloadManager.isJREComplete())
-            return;
-        if (getBackgroundMutex().acquire(0)) { // give up and exit immediately if we can't acquire mutex
-            try {
-                writePid();
-                Thread.sleep(WAIT_TIME);
-                DownloadManager.doBackgroundDownloads(false);
-                DownloadManager.performCompletionIfNeeded();
-            }
-            catch (InterruptedException e) {
-            }
-            finally {
-                getBackgroundMutex().release();
-            }
-        }
-        else {
-            System.err.println("Unable to acquire background download mutex.");
-            System.exit(1);
-        }
-    }
-
-
-    /**
-     * Writes the current process ID to a file, so that the uninstaller can
-     * find and kill this process if needed.
-     */
-    private static void writePid() {
-        try {
-            File pid = new File(DownloadManager.getBundlePath(), PID_PATH);
-            pid.getParentFile().mkdirs();
-            PrintStream out = new PrintStream(new FileOutputStream(pid));
-            pid.deleteOnExit();
-            out.println(DownloadManager.getCurrentProcessId());
-            out.close();
-        }
-        catch (IOException e) {
-            e.printStackTrace();
-            System.exit(1);
-        }
-    }
-
-
-    /**
-     * Reads from an InputStream until exhausted, writing all data to the
-     * specified OutputStream.
-     */
-    private static void send(InputStream in, OutputStream out)
-                                throws IOException {
-        int c;
-        byte[] buffer = new byte[2048];
-        while ((c = in.read(buffer)) > 0)
-            out.write(buffer, 0, c);
-    }
-
-     /*
-      * Returns the value of the BACKGROUND_DOWNLOAD_PROPERTY.
-      * Checks if system property has been set first
-      * then checks if registry key to disable background download
-      * has been set.
-      */
-     public static boolean  getBackgroundDownloadProperty(){
-         /*
-          * Check registry key value
-          */
-         boolean bgDownloadEnabled = getBackgroundDownloadKey();
-
-         /*
-          * Check system property - it should override the registry
-          * key value.
-          */
-         if (System.getProperty(BACKGROUND_DOWNLOAD_PROPERTY) != null){
-             bgDownloadEnabled = Boolean.valueOf(
-                      System.getProperty(BACKGROUND_DOWNLOAD_PROPERTY));
-         }
-         return bgDownloadEnabled;
-
-    }
-
-    // This method is to retrieve the value of registry key
-    // that disables background download.
-    static native boolean getBackgroundDownloadKey();
-
-
-    static void startBackgroundDownloads() {
-        if (!getBackgroundDownloadProperty()){
-            // If getBackgroundDownloadProperty() returns false
-            // we're doing the downloads from this VM; we don't want to
-            // spawn another one
-            return;
-        }
-
-        // if System.err isn't initialized yet, it means the charsets aren't
-        // available yet and we're going to run into trouble down below.  Wait
-        // until it's ready.
-        while (System.err == null) {
-            try {
-                Thread.sleep(1000);
-            }
-            catch (InterruptedException e) {
-                return;
-            }
-        }
-
-        try {
-            String args = "-D" + BACKGROUND_DOWNLOAD_PROPERTY + "=false -Xmx256m";
-            String backgroundDownloadURL = DownloadManager.getBaseDownloadURL();
-
-            // only set KERNEL_DOWNLOAD_URL_PROPERTY if we override
-            // the default download url
-            if (backgroundDownloadURL != null &&
-                    backgroundDownloadURL.equals(
-                    DownloadManager.DEFAULT_DOWNLOAD_URL) == false) {
-                args += " -D" + DownloadManager.KERNEL_DOWNLOAD_URL_PROPERTY +
-                        "=" + backgroundDownloadURL;
-            };
-            args += " sun.jkernel.BackgroundDownloader";
-            final Process jvm = Runtime.getRuntime().exec("\"" + new File(System.getProperty("java.home"), "bin" +
-                   File.separator + "java.exe") + "\" " + args);
-            Thread outputReader = new Thread("kernelOutputReader") {
-                public void run() {
-                    try {
-                        InputStream in = jvm.getInputStream();
-                        send(in, new PrintStream(new ByteArrayOutputStream()));
-                    }
-                    catch (IOException e) {
-                        e.printStackTrace();
-                    }
-                }
-            };
-            outputReader.setDaemon(true);
-            outputReader.start();
-
-            Thread errorReader = new Thread("kernelErrorReader") {
-                public void run() {
-                    try {
-                        InputStream in = jvm.getErrorStream();
-                        send(in, new PrintStream(new ByteArrayOutputStream()));
-                    }
-                    catch (IOException e) {
-                        e.printStackTrace();
-                    }
-                }
-            };
-            errorReader.setDaemon(true);
-            errorReader.start();
-        }
-        catch (Exception e) {
-            e.printStackTrace();
-            // TODO: error handling
-        }
-    }
-
-
-    public static void main(String[] arg) {
-        doBackgroundDownloads();
-    }
-}
--- a/jdk/src/share/classes/sun/jkernel/Bundle.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,922 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.jkernel;
-
-import java.io.*;
-import java.net.HttpRetryException;
-import java.util.*;
-import java.util.concurrent.*;
-import java.util.jar.*;
-import java.util.zip.GZIPInputStream;
-
-/**
- * Represents a bundle which may or may not currently be installed.
- *
- *@author Ethan Nicholas
- */
-public class Bundle {
-    static {
-        if (!DownloadManager.jkernelLibLoaded) {
-            // This code can be invoked directly by the deploy build.
-            System.loadLibrary("jkernel");
-        }
-    }
-    /**
-     * Compress file sourcePath with "extra" algorithm (e.g. 7-Zip LZMA)
-     * if available, put the uncompressed data into file destPath and
-     * return true. If not available return false and do nothing with destPath.
-     *
-     * @param srcPath path to existing uncompressed file
-     * @param destPath path for the compressed file to be created
-     * @returns true if extra algorithm used, false if not
-     * @throws IOException if the extra compression code should be available
-     *     but cannot be located or linked to, the destination file already
-     *     exists or cannot be opened for writing, or the compression fails
-     */
-    public static native boolean extraCompress(String srcPath,
-        String destPath) throws IOException;
-
-    /**
-     * Decompress file sourcePath with "extra" algorithm (e.g. 7-Zip LZMA)
-     * if available, put the uncompressed data into file destPath and
-     * return true. If not available return false and do nothing with
-     * destPath.
-     * @param srcPath path to existing compressed file
-     * @param destPath path to uncompressed file to be created
-     * @returns true if extra algorithm used, false if not
-     * @throws IOException if the extra uncompression code should be available
-     *     but cannot be located or linked to, the destination file already
-     *     exists or cannot be opened for writing, or the uncompression fails
-     */
-    public static native boolean extraUncompress(String srcPath,
-        String destPath) throws IOException;
-
-    private static final String BUNDLE_JAR_ENTRY_NAME = "classes.jar";
-
-    /** The bundle is not present. */
-    protected static final int NOT_DOWNLOADED = 0;
-
-    /**
-     * The bundle is in the download queue but has not finished downloading.
-     */
-    protected static final int QUEUED = 1;
-
-    /** The bundle has finished downloading but is not installed. */
-    protected static final int DOWNLOADED = 2;
-
-    /** The bundle is fully installed and functional. */
-    protected static final int INSTALLED = 3;
-
-    /** Thread pool used to manage dependency downloads. */
-    private static ExecutorService threadPool;
-
-    /** Size of thread pool. */
-    static final int THREADS;
-
-    static {
-        String downloads = System.getProperty(
-                DownloadManager.KERNEL_SIMULTANEOUS_DOWNLOADS_PROPERTY);
-        if (downloads != null)
-            THREADS = Integer.parseInt(downloads.trim());
-        else
-            THREADS = 1;
-    }
-
-    /** Mutex used to safely access receipts file. */
-    private static Mutex receiptsMutex;
-
-    /** Maps bundle names to known bundle instances. */
-    private static Map<String, Bundle> bundles =
-            new HashMap<String, Bundle>();
-
-    /** Contains the names of currently-installed bundles. */
-    static Set<String> receipts = new HashSet<String>();
-
-    private static int bytesDownloaded;
-
-    /** Path where bundle receipts are written. */
-    private static File receiptPath = new File(DownloadManager.getBundlePath(),
-            "receipts");
-
-    /** The size of the receipts file the last time we saw it. */
-    private static int receiptsSize;
-
-    /** The bundle name, e.g. "java_awt". */
-    private String name;
-
-    /** The path to which we are saving the downloaded bundle file. */
-    private File localPath;
-
-    /**
-     * The path of the extracted JAR file containing the bundle's classes.
-     */
-    private File jarPath;
-
-    // for vista IE7 protected mode
-    private File lowJarPath;
-    private File lowJavaPath = null;
-
-    /** The current state (DOWNLOADED, INSTALLED, etc.). */
-    protected int state;
-
-    /**
-     * True if we should delete the downloaded bundle after installing it.
-     */
-    protected boolean deleteOnInstall = true;
-
-    private static Mutex getReceiptsMutex() {
-        if (receiptsMutex == null)
-            receiptsMutex = Mutex.create(DownloadManager.MUTEX_PREFIX +
-                    "receipts");
-        return receiptsMutex;
-    }
-
-
-    /**
-     * Reads the receipts file in order to seed the list of currently
-     * installed bundles.
-     */
-    static synchronized void loadReceipts() {
-        getReceiptsMutex().acquire();
-        try {
-            if (receiptPath.exists()) {
-                int size = (int) receiptPath.length();
-                if (size != receiptsSize) { // ensure that it has actually
-                                            // been modified
-                    DataInputStream in = null;
-                    try {
-                        receipts.clear();
-                        for (String bundleName : DownloadManager.getBundleNames()) {
-                            if ("true".equals(DownloadManager.getBundleProperty(bundleName,
-                                    DownloadManager.INSTALL_PROPERTY)))
-                                receipts.add(bundleName);
-                        }
-                        if (receiptPath.exists()) {
-                            in = new DataInputStream(new BufferedInputStream(
-                                    new FileInputStream(receiptPath)));
-                            String line;
-                            while ((line = in.readLine()) != null) {
-                                receipts.add(line.trim());
-                            }
-                        }
-                        receiptsSize = size;
-                    }
-                    catch (IOException e) {
-                        DownloadManager.log(e);
-                        // safe to continue, as the worst that happens is
-                        // we re-download existing bundles
-                    } finally {
-                        if (in != null) {
-                            try {
-                                in.close();
-                            } catch (IOException ioe) {
-                                DownloadManager.log(ioe);
-                            }
-                        }
-                    }
-                }
-            }
-        }
-        finally {
-            getReceiptsMutex().release();
-        }
-    }
-
-
-    /** Returns the bundle corresponding to the specified name. */
-    public static synchronized Bundle getBundle(String bundleId)
-            throws IOException {
-        Bundle result =(Bundle) bundles.get(bundleId);
-        if (result == null && (bundleId.equals("merged") ||
-                Arrays.asList(DownloadManager.getBundleNames()).contains(bundleId))) {
-            result = new Bundle();
-            result.name = bundleId;
-
-            if (DownloadManager.isWindowsVista()) {
-                result.localPath =
-                        new File(DownloadManager.getLocalLowTempBundlePath(),
-                                 bundleId + ".zip");
-                result.lowJavaPath = new File(
-                        DownloadManager.getLocalLowKernelJava() + bundleId);
-            } else {
-                result.localPath = new File(DownloadManager.getBundlePath(),
-                        bundleId + ".zip");
-            }
-
-            String jarPath = DownloadManager.getBundleProperty(bundleId,
-                    DownloadManager.JAR_PATH_PROPERTY);
-            if (jarPath != null) {
-                if (DownloadManager.isWindowsVista()) {
-                    result.lowJarPath = new File(
-                        DownloadManager.getLocalLowKernelJava() + bundleId,
-                        jarPath);
-                }
-                result.jarPath = new File(DownloadManager.JAVA_HOME,
-                        jarPath);
-
-            } else {
-
-                if (DownloadManager.isWindowsVista()) {
-                    result.lowJarPath = new File(
-                        DownloadManager.getLocalLowKernelJava() + bundleId +
-                            "\\lib\\bundles",
-                        bundleId + ".jar");
-                }
-
-                result.jarPath = new File(DownloadManager.getBundlePath(),
-                        bundleId + ".jar");
-
-            }
-
-            bundles.put(bundleId, result);
-        }
-        return result;
-    }
-
-
-    /**
-     * Returns the name of this bundle.  The name is typically defined by
-     * the bundles.xml file.
-     */
-    public String getName() {
-        return name;
-    }
-
-
-    /**
-     * Sets the name of this bundle.
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-
-    /**
-     * Returns the path to the bundle file on the local filesystem.  The file
-     * will only exist if the bundle has already been downloaded;  otherwise
-     * it will be created when download() is called.
-     */
-    public File getLocalPath() {
-        return localPath;
-    }
-
-
-    /**
-     * Sets the location of the bundle file on the local filesystem.  If the
-     * file already exists, the bundle will be considered downloaded;
-     * otherwise the file will be created when download() is called.
-     */
-    public void setLocalPath(File localPath) {
-        this.localPath = localPath;
-    }
-
-
-    /**
-     * Returns the path to the extracted JAR file containing this bundle's
-     * classes.  This file should only exist after the bundle has been
-     * installed.
-     */
-    public File getJarPath() {
-        return jarPath;
-    }
-
-
-    /**
-     * Sets the path to the extracted JAR file containing this bundle's
-     * classes.  This file will be created as part of installing the bundle.
-     */
-    public void setJarPath(File jarPath) {
-        this.jarPath = jarPath;
-    }
-
-
-    /**
-     * Returns the size of the bundle download in bytes.
-     */
-    public int getSize() {
-        return Integer.valueOf(DownloadManager.getBundleProperty(getName(),
-                DownloadManager.SIZE_PROPERTY));
-    }
-
-
-    /**
-     * Returns true if the bundle file (getLocalPath()) should be deleted
-     * when the bundle is successfully installed.  Defaults to true.
-     */
-    public boolean getDeleteOnInstall() {
-        return deleteOnInstall;
-    }
-
-
-    /**
-     * Sets whether the bundle file (getLocalPath()) should be deleted
-     * when the bundle is successfully installed.  Defaults to true.
-     */
-    public void setDeleteOnInstall(boolean deleteOnInstall) {
-        this.deleteOnInstall = deleteOnInstall;
-    }
-
-
-    /** Sets the current state of this bundle to match reality. */
-    protected void updateState() {
-        synchronized(Bundle.class) {
-            loadReceipts();
-            if (receipts.contains(name) ||
-                    "true".equals(DownloadManager.getBundleProperty(name,
-                    DownloadManager.INSTALL_PROPERTY)))
-                state = Bundle.INSTALLED;
-            else if (localPath.exists())
-                state = Bundle.DOWNLOADED;
-        }
-    }
-
-
-    private String getURL(boolean showUI) throws IOException {
-        Properties urls = DownloadManager.getBundleURLs(showUI);
-        String result = urls.getProperty(name + ".zip");
-        if (result == null) {
-            result = urls.getProperty(name);
-            if (result == null) {
-                DownloadManager.log("Unable to determine bundle URL for " + this);
-                DownloadManager.log("Bundle URLs: " + urls);
-                DownloadManager.sendErrorPing(DownloadManager.ERROR_NO_SUCH_BUNDLE);
-
-                throw new NullPointerException("Unable to determine URL " +
-                        "for bundle: " + this);
-            }
-        }
-        return result;
-    }
-
-
-    /**
-     * Downloads the bundle.  This method blocks until the download is
-     * complete.
-     *
-     *@param showProgress true to display a progress dialog
-     */
-    private void download(boolean showProgress) {
-        if (DownloadManager.isJREComplete())
-            return;
-        Mutex mutex = Mutex.create(DownloadManager.MUTEX_PREFIX + name +
-                ".download");
-        mutex.acquire();
-        try {
-            long start = System.currentTimeMillis();
-
-            boolean retry;
-
-            do {
-                retry = false;
-                updateState();
-                if (state == DOWNLOADED || state == INSTALLED) {
-                    return;
-                }
-                File tmp = null;
-                try {
-                    tmp = new File(localPath + ".tmp");
-
-                    // tmp.deleteOnExit();
-
-                    if (DownloadManager.getBaseDownloadURL().equals(
-                            DownloadManager.RESOURCE_URL)) {
-                        // RESOURCE_URL is used during build process, to
-                        // avoid actual network traffic.  This is called in
-                        // the SplitJRE DownloadTest to determine which
-                        // classes are needed to support downloads, but we
-                        // bypass the actual HTTP download to simplify the
-                        // build process (it's all native code, so from
-                        // DownloadTest's standpoint it doesn't matter if we
-                        // really call it or not).
-                        String path = "/" + name + ".zip";
-                        InputStream in =
-                                getClass().getResourceAsStream(path);
-                        if (in == null)
-                            throw new IOException("could not locate " +
-                                    "resource: " + path);
-                        FileOutputStream out = new FileOutputStream(tmp);
-                        DownloadManager.send(in, out);
-                        in.close();
-                        out.close();
-                    }
-                    else {
-                        try {
-                            String bundleURL = getURL(showProgress);
-                            DownloadManager.log("Downloading from: " +
-                                        bundleURL);
-                            DownloadManager.downloadFromURL(bundleURL, tmp,
-                                    name.replace('_', '.'), showProgress);
-                        }
-                        catch (HttpRetryException e) {
-                            // Akamai returned a 403, get new URL
-                            DownloadManager.flushBundleURLs();
-                            String bundleURL = getURL(showProgress);
-                            DownloadManager.log("Retrying at new " +
-                                        "URL: " + bundleURL);
-                            DownloadManager.downloadFromURL(bundleURL, tmp,
-                                    name.replace('_', '.'),
-                                    showProgress);
-                            // we intentionally don't do a 403 retry
-                            // again, to avoid infinite retries
-                        }
-                    }
-                    if (!tmp.exists() || tmp.length() == 0) {
-                        if (showProgress) {
-                            // since showProgress = true, native code should
-                            // have offered to retry.  Since we ended up here,
-                            // we conclude that download failed & user opted to
-                            // cancel.  Set complete to true to stop bugging
-                            // him in the future (if one bundle fails, the
-                            // rest are virtually certain to).
-                            DownloadManager.complete = true;
-                        }
-                        DownloadManager.fatalError(DownloadManager.ERROR_UNSPECIFIED);
-                    }
-
-                    /**
-                     * Bundle security
-                     *
-                     * Check for corruption/spoofing
-                     */
-
-
-                    /* Create a bundle check from the tmp file */
-                    BundleCheck gottenCheck = BundleCheck.getInstance(tmp);
-
-                    /* Get the check expected for the Bundle */
-                    BundleCheck expectedCheck = BundleCheck.getInstance(name);
-
-                    // Do they match?
-
-                    if (expectedCheck.equals(gottenCheck)) {
-
-                        // Security check OK, uncompress the bundle file
-                        // into the local path
-
-                        long uncompressedLength = tmp.length();
-                        localPath.delete();
-
-                        File uncompressedPath = new File(tmp.getPath() +
-                            ".jar0");
-                        if (! extraUncompress(tmp.getPath(),
-                            uncompressedPath.getPath())) {
-                            // Extra uncompression not available, fall
-                            // back to alternative if it is enabled.
-                            if (DownloadManager.debug) {
-                                DownloadManager.log("Uncompressing with GZIP");
-                            }
-                            GZIPInputStream in = new GZIPInputStream( new
-                                BufferedInputStream(new FileInputStream(tmp),
-                                DownloadManager.BUFFER_SIZE));
-                            BufferedOutputStream out = new BufferedOutputStream(
-                                new FileOutputStream(uncompressedPath),
-                                DownloadManager.BUFFER_SIZE);
-                            DownloadManager.send(in,out);
-                            in.close();
-                            out.close();
-                            if (! uncompressedPath.renameTo(localPath)) {
-                                throw new IOException("unable to rename " +
-                                    uncompressedPath + " to " + localPath);
-                            }
-                        } else {
-                            if (DownloadManager.debug) {
-                                DownloadManager.log("Uncompressing with LZMA");
-                            }
-                            if (! uncompressedPath.renameTo(localPath)) {
-                                throw new IOException("unable to rename " +
-                                    uncompressedPath + " to " + localPath);
-                            }
-                        }
-                        state = DOWNLOADED;
-                        bytesDownloaded += uncompressedLength;
-                        long time = (System.currentTimeMillis() -
-                                start);
-                        DownloadManager.log("Downloaded " + name +
-                                " in " + time + "ms.  Downloaded " +
-                                bytesDownloaded + " bytes this session.");
-
-                        // Normal completion
-                    } else {
-
-                        // Security check not OK: remove the temp file
-                        // and consult the user
-
-                        tmp.delete();
-
-                        DownloadManager.log(
-                                "DownloadManager: Security check failed for " +
-                                "bundle " + name);
-
-                        // only show dialog if we are not in silent mode
-                        if (showProgress) {
-                            retry = DownloadManager.askUserToRetryDownloadOrQuit(
-                                    DownloadManager.ERROR_UNSPECIFIED);
-                        }
-
-                        if (!retry) {
-                            // User wants to give up
-                            throw new RuntimeException(
-                                "Failed bundle security check and user " +
-                                "canceled");
-                        }
-                    }
-                }
-                catch (IOException e) {
-                    // Look for "out of space" using File.getUsableSpace()
-                    // here when downloadFromURL starts throwing IOException
-                    // (or preferably a distinct exception for this case).
-                    DownloadManager.log(e);
-                }
-            } while (retry);
-        } finally {
-            mutex.release();
-        }
-    }
-
-
-    /**
-     * Calls {@link #queueDownload()} on all of this bundle's dependencies.
-     */
-    void queueDependencies(boolean showProgress) {
-        try {
-            String dependencies =
-                    DownloadManager.getBundleProperty(name,
-                    DownloadManager.DEPENDENCIES_PROPERTY);
-            if (dependencies != null) {
-                StringTokenizer st = new StringTokenizer(dependencies,
-                        " ,");
-                while (st.hasMoreTokens()) {
-                    Bundle b = getBundle(st.nextToken());
-                    if (b != null && !b.isInstalled()) {
-                        if (DownloadManager.debug) {
-                            DownloadManager.log("Queueing " + b.name +
-                                    " as a dependency of " + name + "...");
-                        }
-                        b.install(showProgress, true, false);
-                    }
-                }
-            }
-        } catch (IOException e) {
-            // shouldn't happen
-            DownloadManager.log(e);
-        }
-    }
-
-
-    static synchronized ExecutorService getThreadPool() {
-        if (threadPool == null) {
-            threadPool = Executors.newFixedThreadPool(THREADS,
-                            new ThreadFactory () {
-                                public Thread newThread(Runnable r) {
-                                    Thread result = new Thread(r);
-                                    result.setDaemon(true);
-                                    return result;
-                                }
-                            }
-                        );
-        }
-        return threadPool;
-    }
-
-
-    private void unpackBundle() throws IOException {
-        File useJarPath = null;
-        if (DownloadManager.isWindowsVista()) {
-            useJarPath = lowJarPath;
-            File jarDir = useJarPath.getParentFile();
-            if (jarDir != null) {
-                jarDir.mkdirs();
-            }
-        } else {
-            useJarPath = jarPath;
-        }
-
-        DownloadManager.log("Unpacking " + this + " to " + useJarPath);
-
-        InputStream rawStream = new FileInputStream(localPath);
-        JarInputStream in = new JarInputStream(rawStream) {
-            public void close() throws IOException {
-                // prevent any sub-processes here from actually closing the
-                // input stream; we'll use rawsStream.close() when we're
-                // done with it
-            }
-        };
-
-        try {
-            File jarTmp = null;
-            JarEntry entry;
-            while ((entry = in.getNextJarEntry()) != null) {
-                String entryName = entry.getName();
-                if (entryName.equals("classes.pack")) {
-                    File packTmp = new File(useJarPath + ".pack");
-                    packTmp.getParentFile().mkdirs();
-                    DownloadManager.log("Writing temporary .pack file " + packTmp);
-                    OutputStream tmpOut = new FileOutputStream(packTmp);
-                    try {
-                        DownloadManager.send(in, tmpOut);
-                    } finally {
-                        tmpOut.close();
-                    }
-                    // we unpack to a temporary file and then, towards the end
-                    // of this method, use a (hopefully atomic) rename to put it
-                    // into its final location; this should avoid the problem of
-                    // partially-completed downloads.  Doing the rename last
-                    // allows us to check for the presence of the JAR file to
-                    // see whether the bundle has in fact been downloaded.
-                    jarTmp = new File(useJarPath + ".tmp");
-                    DownloadManager.log("Writing temporary .jar file " + jarTmp);
-                    unpack(packTmp, jarTmp);
-                    packTmp.delete();
-                } else if (!entryName.startsWith("META-INF")) {
-                    File dest;
-                    if (DownloadManager.isWindowsVista()) {
-                        dest = new File(lowJavaPath,
-                            entryName.replace('/', File.separatorChar));
-                    } else {
-                        dest = new File(DownloadManager.JAVA_HOME,
-                            entryName.replace('/', File.separatorChar));
-                    }
-                    if (entryName.equals(BUNDLE_JAR_ENTRY_NAME))
-                        dest = useJarPath;
-                    File destTmp = new File(dest + ".tmp");
-                    boolean exists = dest.exists();
-                    if (!exists) {
-                        DownloadManager.log(dest + ".mkdirs()");
-                        dest.getParentFile().mkdirs();
-                    }
-                    try {
-                        DownloadManager.log("Using temporary file " + destTmp);
-                        FileOutputStream out =
-                                new FileOutputStream(destTmp);
-                        try {
-                            byte[] buffer = new byte[2048];
-                            int c;
-                            while ((c = in.read(buffer)) > 0)
-                                out.write(buffer, 0, c);
-                        } finally {
-                            out.close();
-                        }
-                        if (exists)
-                            dest.delete();
-                        DownloadManager.log("Renaming from " + destTmp + " to " + dest);
-                        if (!destTmp.renameTo(dest)) {
-                            throw new IOException("unable to rename " +
-                                    destTmp + " to " + dest);
-                        }
-
-                    } catch (IOException e) {
-                        if (!exists)
-                            throw e;
-                        // otherwise the file already existed and the fact
-                        // that we failed to re-write it probably just
-                        // means that it was in use
-                    }
-                }
-            }
-
-            // rename the temporary jar into its final location
-            if (jarTmp != null) {
-                if (useJarPath.exists())
-                    jarTmp.delete();
-                else if (!jarTmp.renameTo(useJarPath)) {
-                    throw new IOException("unable to rename " + jarTmp +
-                            " to " + useJarPath);
-                }
-            }
-            if (DownloadManager.isWindowsVista()) {
-                // move bundle to real location
-                DownloadManager.log("Using broker to move " + name);
-                if (!DownloadManager.moveDirWithBroker(
-                        DownloadManager.getKernelJREDir() + name)) {
-                    throw new IOException("unable to create " + name);
-                }
-                DownloadManager.log("Broker finished " + name);
-            }
-            DownloadManager.log("Finished unpacking " + this);
-        } finally {
-            rawStream.close();
-        }
-        if (deleteOnInstall) {
-            localPath.delete();
-        }
-
-    }
-
-
-    public static void unpack(File pack, File jar) throws IOException {
-        Process p = Runtime.getRuntime().exec(DownloadManager.JAVA_HOME + File.separator +
-                "bin" + File.separator + "unpack200 -Hoff \"" + pack + "\" \"" + jar + "\"");
-        try {
-            p.waitFor();
-        }
-        catch (InterruptedException e) {
-        }
-    }
-
-
-    /**
-     * Unpacks and installs the bundle.  The bundle's classes are not
-     * immediately added to the boot class path; this happens when the VM
-     * attempts to load a class and calls getBootClassPathEntryForClass().
-     */
-    public void install() throws IOException {
-        install(true, false, true);
-    }
-
-
-    /**
-     * Unpacks and installs the bundle, optionally hiding the progress
-     * indicator.  The bundle's classes are not immediately added to the
-     * boot class path; this happens when the VM attempts to load a class
-     * and calls getBootClassPathEntryForClass().
-     *
-     *@param showProgress true to display a progress dialog
-     *@param downloadOnly true to download but not install
-     *@param block true to wait until the operation is complete before returning
-     */
-    public synchronized void install(final boolean showProgress,
-            final boolean downloadOnly, boolean block) throws IOException {
-        if (DownloadManager.isJREComplete())
-            return;
-        if (state == NOT_DOWNLOADED || state == QUEUED) {
-            // we allow an already-queued bundle to be placed into the queue
-            // again, to handle the case where the bundle is queued with
-            // downloadOnly true and then we try to queue it again with
-            // downloadOnly false -- the second queue entry will actually
-            // install it.
-            if (state != QUEUED) {
-                DownloadManager.addToTotalDownloadSize(getSize());
-                state = QUEUED;
-            }
-            if (getThreadPool().isShutdown()) {
-                if (state == NOT_DOWNLOADED || state == QUEUED)
-                    doInstall(showProgress, downloadOnly);
-            }
-            else {
-                Future task = getThreadPool().submit(new Runnable() {
-                    public void run() {
-                        try {
-                            if (state == NOT_DOWNLOADED || state == QUEUED ||
-                                    (!downloadOnly && state == DOWNLOADED)) {
-                                doInstall(showProgress, downloadOnly);
-                            }
-                        }
-                        catch (IOException e) {
-                            // ignore
-                        }
-                    }
-                });
-                queueDependencies(showProgress);
-                if (block) {
-                    try {
-                        task.get();
-                    }
-                    catch (Exception e) {
-                        throw new Error(e);
-                    }
-                }
-            }
-        }
-        else if (state == DOWNLOADED && !downloadOnly)
-            doInstall(showProgress, false);
-    }
-
-
-    private void doInstall(boolean showProgress, boolean downloadOnly)
-            throws IOException {
-        Mutex mutex = Mutex.create(DownloadManager.MUTEX_PREFIX + name +
-                ".install");
-        DownloadManager.bundleInstallStart();
-        try {
-            mutex.acquire();
-            updateState();
-            if (state == NOT_DOWNLOADED || state == QUEUED) {
-                download(showProgress);
-            }
-
-            if (state == DOWNLOADED && downloadOnly) {
-                return;
-            }
-
-            if (state == INSTALLED) {
-                return;
-            }
-            if (state != DOWNLOADED) {
-                DownloadManager.fatalError(DownloadManager.ERROR_UNSPECIFIED);
-            }
-
-            DownloadManager.log("Calling unpackBundle for " + this);
-            unpackBundle();
-            DownloadManager.log("Writing receipt for " + this);
-            writeReceipt();
-            updateState();
-            DownloadManager.log("Finished installing " + this + ", state=" + state);
-        } finally {
-            if (lowJavaPath != null) {
-                lowJavaPath.delete();
-            }
-            mutex.release();
-            DownloadManager.bundleInstallComplete();
-        }
-    }
-
-
-    synchronized void setState(int state) {
-        this.state = state;
-    }
-
-
-    /** Returns <code>true</code> if this bundle has been installed. */
-    public boolean isInstalled() {
-        synchronized (Bundle.class) {
-            updateState();
-            return state == INSTALLED;
-        }
-    }
-
-
-    /**
-     * Adds an entry to the receipts file indicating that this bundle has
-     * been successfully downloaded.
-     */
-    private void writeReceipt() {
-        getReceiptsMutex().acquire();
-        File useReceiptPath = null;
-        try {
-
-            try {
-
-                receipts.add(name);
-
-                if (DownloadManager.isWindowsVista()) {
-                    // write out receipts to locallow
-                    useReceiptPath = new File(
-                            DownloadManager.getLocalLowTempBundlePath(),
-                            "receipts");
-
-                    if (receiptPath.exists()) {
-                        // copy original file to locallow location
-                        DownloadManager.copyReceiptFile(receiptPath,
-                                useReceiptPath);
-                    }
-
-                    // update receipt in locallow path
-                    // only append if original receipt path exists
-                    FileOutputStream out = new FileOutputStream(useReceiptPath,
-                            receiptPath.exists());
-                    out.write((name + System.getProperty("line.separator")).getBytes("utf-8"));
-                    out.close();
-
-                    // use broker to move back to real path
-                    if (!DownloadManager.moveFileWithBroker(
-                            DownloadManager.getKernelJREDir()
-                        + "-bundles" + File.separator + "receipts")) {
-                        throw new IOException("failed to write receipts");
-                    }
-                } else {
-                    useReceiptPath = receiptPath;
-                    FileOutputStream out = new FileOutputStream(useReceiptPath,
-                            true);
-                    out.write((name + System.getProperty("line.separator")).getBytes("utf-8"));
-                    out.close();
-                }
-
-
-            } catch (IOException e) {
-                DownloadManager.log(e);
-                // safe to continue, as the worst that happens is we
-                // re-download existing bundles
-            }
-        }
-        finally {
-            getReceiptsMutex().release();
-        }
-    }
-
-
-    public String toString() {
-        return "Bundle[" + name + "]";
-    }
-}
--- a/jdk/src/share/classes/sun/jkernel/BundleCheck.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,330 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-/*
- *
- * The Java Kernel Bundle security check.
- *
- * This class is responsible for detail of creating, storing, dispensing, and
- * updating bundle security checks and security checks for all the files
- * extracted from a bundle. Security checks are cryptographic
- * hashcodes that make it impractical to counterfeit a file. The security
- * check algorithm is defined by peer class StandaloneMessageDigest. The
- * cryptographic
- * hashcodes are held in instances of this class as byte arrays and externally
- * as hexidecimal string values for Bundle name Property keys. The properties
- * are a resource in the Java Kernel core JRE rt.jar and accessed after a
- * real or simulated bundle download by peer classes DownloadManager and
- * Bundle. Build-time deployment class SplitJRE uses this class to create file
- * security checks directly and via a special execution of DownloadManager.
- * The main method of this class can be used to create a
- * new set of security codes and updated properties for a given JRE path
- * and set of bundle names (CWD assume to contain bundle files as <name>.zip).
- *
- * This is a Sun internal class defined by the Sun implementation and
- * intended for JRE/JDK release deployment.
- *
- * @see sun.jkernel.DownloadManager
- * @see sun.jkernel.Bundle
- * @see sun.jkernel.StandaloneSHA
- * @see sun.jkernel.ByteArrayToFromHexDigits
- * See also deploy/src/kernel/share/classes/sun/kernel/SplitJRE.java
- */
-
-package sun.jkernel;
-
-import java.io.File;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.Properties;
-
-
-public class BundleCheck {
-
-    /* File buffer size */
-
-    private static final int DIGEST_STREAM_BUFFER_SIZE = 2048;
-
-    /* The bundle filename suffix */
-
-    private static final String BUNDLE_SUFFIX = ".zip";
-
-    /* Mutable static state. */
-
-    /* Properties (Bundle name/check hex String pairs) for a set of Bundles.
-       Guarded by this class' object. */
-
-    private static volatile Properties properties;
-
-    /* Mutable instance state. */
-
-    /**
-     * The bytes of the check value. Guarded by the bundle Mutex (in
-     * sun.jkernel.DownloadManager) or the fact that sun.kernel.SplitJRE
-     * and/or DownloadManager with "-download all" runs a single thread.
-     */
-
-    private byte[] checkBytes;
-
-    /* Prevent instantiation by default constructor */
-
-    private BundleCheck(){}
-
-    /**
-     * Store the bundle check values as properties to the path specified.
-     * Only invoked by SplitJRE.
-     */
-
-    public static void storeProperties(String fullPath)  {
-
-        try {
-            File f = new File(fullPath);
-            f.getParentFile().mkdirs();
-            OutputStream out = new FileOutputStream(f);
-            properties.store(out, null);
-            out.close();
-        } catch (Exception e) {
-            throw new RuntimeException(
-                "BundleCheck: storing properties threw: " + e);
-        }
-    }
-
-    /**
-     * Fetch the check value properties as a DownloadManager resource.
-     */
-
-    private static void loadProperties()  {
-        properties = new Properties();
-        try {
-            InputStream in = new BufferedInputStream(
-                DownloadManager.class.getResourceAsStream(
-                DownloadManager.CHECK_VALUES_FILE));
-            if (in == null)
-                throw new RuntimeException("BundleCheck: unable to locate " +
-                    DownloadManager.CHECK_VALUES_FILE + " as resource");
-            properties.load(in);
-            in.close();
-        } catch (Exception e) {
-            throw new RuntimeException("BundleCheck: loadProperties threw " +
-                e);
-        }
-    }
-
-    /* Get the check value Properties object */
-
-    private synchronized static Properties getProperties() {
-        if (properties == null) {
-            // If this fails it means addProperty has been used inappropriately
-            loadProperties();
-        }
-        return properties;
-    }
-
-    /* Reset the properties with an empty Properties object */
-
-    public static void resetProperties() {
-        properties = null;
-    }
-
-    /* The BundleCheck expressed as a String */
-
-    public String toString() {
-        return ByteArrayToFromHexDigits.bytesToHexString(checkBytes);
-    }
-
-    /* Add the given BundleCheck as a property to bundleCheckvalueProperties */
-
-    private void addProperty(String name) {
-        // When first called by SplitJRE just start with empty object
-        // rather than allowing a load to happen, as it does at install time.
-        if (properties == null) {
-           properties = new Properties();
-        }
-        getProperties().put(name, toString());
-    }
-
-    /* private ctor for creating/initializing a BundleCheck */
-
-    private BundleCheck(byte[] checkBytes) {
-        this.checkBytes = checkBytes;
-    }
-
-    /* private ctor for creating a BundleCheck with a given name and known
-       Property value. */
-
-    private BundleCheck(String name) {
-        String hexString = getProperties().getProperty(name);
-        if  (hexString == null) {
-            throw new RuntimeException(
-                "BundleCheck: no check property for bundle: " + name);
-        }
-        this.checkBytes = ByteArrayToFromHexDigits.hexStringToBytes(hexString);
-    }
-
-    /* Make a BundleCheck from the contents of the given file or a Bundle
-       name. Save the new object's value as a property if saveProperty is
-       true. Behavior is only defined for name or file being null, but not
-       both, and for saveProperty to be true only when both name and file
-       are not null.
-       Any IO or other exception implies an unexpected and fatal internal
-       error and results in a RuntimeException.  */
-
-    private static BundleCheck getInstance(String name,
-        File file, boolean saveProperty) {
-        if (file == null ) {
-            return new BundleCheck(name);
-
-        } else {
-            StandaloneMessageDigest checkDigest = null;
-            try {
-                FileInputStream checkFileStream = new FileInputStream(file);
-                checkDigest = StandaloneMessageDigest.getInstance("SHA-1");
-
-                // Compute a check code across all of the file bytes.
-                // NOTE that every time a bundle is created, even from
-                // the "same bits", it may be different wrt to the security
-                // code because of slight variations build to build. For
-                // example, the JVM build normally contains an
-                // auto-incrementing build number, built archives might have
-                // timestamps, etc.
-
-                int readCount;
-                byte[] messageStreamBuff =
-                    new byte[DIGEST_STREAM_BUFFER_SIZE];
-                do {
-                    readCount = checkFileStream.read(messageStreamBuff);
-                    if (readCount > 0) {
-                        checkDigest.update(messageStreamBuff,0,readCount);
-                    }
-                } while (readCount != -1);
-                checkFileStream.close();
-
-            } catch (Exception e) {
-                throw new RuntimeException(
-                    "BundleCheck.addProperty() caught: " + e);
-            }
-            BundleCheck bc = new BundleCheck(checkDigest.digest());
-            if (saveProperty) {
-                bc.addProperty(name);
-            }
-            return bc;
-        }
-    }
-
-    /* Create a BundleCheck from the given file */
-
-    public static BundleCheck getInstance(File file) {
-        return getInstance(null, file, false);
-    }
-
-    /* Create a BundleCheck from the given bundle name */
-
-    static BundleCheck getInstance(String name) {
-        return getInstance(name, null, false);
-    }
-
-    /* Create a BundleCheck from the given bundle name and file and
-       use it to make and save a security check Property value. */
-
-    public static void addProperty(String name,  File file) {
-        getInstance(name, file, true);
-    }
-
-    /* Create a bundlecheck from the given bundle name and file and
-       add a Property value for it. */
-
-    static void add(String name, File file) {
-        getInstance(name, file, true).addProperty(name);
-    }
-
-    /* Compare two BundkCheck instances for equal check values */
-
-    boolean equals(BundleCheck b) {
-        if ((checkBytes == null) || (b.checkBytes == null)) {
-            return false;
-        }
-        if (checkBytes.length != b.checkBytes.length) {
-            return false;
-        }
-        for (int i = 0; i < checkBytes.length; i++) {
-            if (checkBytes[i] != b.checkBytes[i]) {
-                if (DownloadManager.debug) {
-                    System.out.println(
-                        "BundleCheck.equals mismatch between this: " +
-                        toString() + " and param: " + b.toString());
-                }
-                return false;
-            }
-         }
-         return true;
-    }
-
-    /* After SplitJRE is used to restructure the JRE into a "core JRE" and
-       a set of Java Kernel "bundles", if extra compression is available
-       the bundles are extracted and rearchived with zero compression by
-       deploy build make steps. The newly compressed bundle names are then
-       passed to this main with the path of the kernel core JRE to have new
-       bundle security check values computed and the corresponding properties
-       updated in rt.jar. If extra compression isn't available then this main is
-       never used and the default jar/zip bundle compression and security
-       codes created by SplitJRE are left in place and ready to use. */
-
-    public static void main(String[] args) {
-        if (args.length < 2) {
-            System.err.println("Usage: java BundleCheck <jre path> " +
-                "<bundle 1 name> ... <bundle N name>");
-            return;
-        }
-
-        // Make a security check code for each bundle file
-        for (int arg = 1; arg < args.length; arg++) {
-            BundleCheck.addProperty(args[arg],
-                new File(args[arg] + BUNDLE_SUFFIX));
-        }
-
-        // Store the new check code properties below the current directory
-        BundleCheck.storeProperties(DownloadManager.CHECK_VALUES_DIR);
-
-        // Now swap the new properties file into the core rt.jar
-        try {
-            int status = Runtime.getRuntime().exec(
-                "jar uf " + args[0] + "\\lib\\rt.jar " +
-                DownloadManager.CHECK_VALUES_DIR).waitFor();
-            if (status != 0) {
-                System.err.println(
-                    "BundleCheck: exec of jar uf gave nonzero status");
-                return;
-            }
-        } catch (Exception e) {
-            System.err.println("BundleCheck: exec of jar uf threw: " + e);
-            return;
-        }
-    } // main
-}
--- a/jdk/src/share/classes/sun/jkernel/ByteArrayToFromHexDigits.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.jkernel;
-
-/**
- * TODO: The JRE and deploy build code (SplitJRE) can be made a bit smarter
- * then cryto hashcode byte arrays can be used directly, eliminating the need
- * for this class altogether. So just leave this alone until it can be removed.
- * TODO: Change "Digits" to "String" for uniformity and more intuitive names.
- * A lightweight class to provide convert between hex digits and
- * <code>byte[]</code>.
- *<p>
- * TODO: Try to get this built without the -source 1.3 -target -1.3 options,
- * which prevent use of java.text.Format, assuming this wouldn't bloat the
- * JK rt.jar. Also, there still might be equivalent code hiding in the JDK
- * already, but preliminary searches havn't found it.
- */
-
-public final class ByteArrayToFromHexDigits {
-
-    private static final char [] chars = new char[]
-        {'0','1','2','3','4','5','6','7','8','9', 'A','B','C','D','E','F'};
-
-    private static final boolean debug = false;
-
-    /**
-     * Converts the <code>byte[] b</code> into a <code>String</code> of
-     * hex digits representing the integer values of all the bytes.
-     *
-     * @param b byte array to be converted
-     * @return String representing <code>b</code> in hexadecimal
-     * @throws IllegalArgumentException if <code>b</code> is null or zero length
-     */
-    public static String bytesToHexString(byte[] b) {
-        if (debug ) {
-            System.out.print("I: ");
-            for(int i=0;i<b.length;i++) {
-                System.out.format("%02X",b[i]);
-            }
-            System.out.println();
-        }
-        if ((b == null) || (b.length == 0)) {
-            throw new IllegalArgumentException("argument null or zero length");
-        }
-        StringBuffer buff = new StringBuffer(b.length * 2);
-        for (int i = 0; i < b.length; i++ ) {
-            buff.insert(i*2,chars[(b[i] >> 4) & 0xf]);
-            buff.insert(i*2+1,chars[b[i] & 0xf]);
-        }
-        if (debug ) {
-            System.out.println("O: " + buff.toString());
-        }
-        return buff.toString();
-    }
-
-    // Convert one hex character to a 4 bit byte value
-
-    private static byte hexCharToByte(char c) throws IllegalArgumentException {
-        if ((c < '0') ||
-            ( ((c < 'A') && (c > 'F')) && ((c < 'a') && (c > 'f'))) ) {
-
-            throw new IllegalArgumentException("not a hex digit");
-        }
-
-        if (c > '9') {
-            if (c > 'F') {
-                return (byte) ((c - 'a' + 10) & 0xf);
-            } else {
-                return (byte) ((c - 'A' + 10) & 0xf);
-            }
-        } else {
-            return (byte) ((c - '0') & 0xf);
-        }
-
-    }
-
-    /**
-     * Converts the <code>String d</code> assumed to contain a sequence
-     * of hexadecimal digit characters into a <code>byte[]</code>.
-     *
-     * @param d String to be converted
-     * @return  byte array representing the hex string
-     * @throws IllegalArgumentException if <code>d</code> is odd length,
-     *     contains a character outside the ranges of 0-9, a-f, and A-F,
-     *     or is zero length or null
-     */
-
-    public static byte[] hexStringToBytes(String d) throws IllegalArgumentException {
-        if (d == null) {
-            throw new IllegalArgumentException(
-                "parameter cannot be null");
-        }
-
-        if (d.length() == 0) {
-            throw new IllegalArgumentException(
-                "parameter cannot be zero length");
-        }
-
-        if ((d.length() & 1) != 0) {
-            throw new IllegalArgumentException(
-                "odd length string");
-        }
-
-        byte[] b = new byte[d.length() / 2];
-
-        // TODO Might be code in the JK initial bundle to do this better (i.e.
-        // method that tests for a hex char?)
-
-        for (int i=0;i<d.length();i+=2) {
-            b[i/2] =  (byte) (( (byte) (hexCharToByte(d.charAt(i))) << 4) +
-                (byte) hexCharToByte(d.charAt(i+1)));
-        }
-        return b;
-    }
-}
--- a/jdk/src/share/classes/sun/jkernel/DigestOutputStream.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,255 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.jkernel;
-
-import java.io.FilterOutputStream;
-import java.io.OutputStream;
-import java.io.IOException;
-import java.security.NoSuchAlgorithmException;
-import sun.jkernel.StandaloneMessageDigest;
-
-
-/*
- * This class provides the main functionality of <code>FilterOutputStream</code>,
- * and accumulates a check value as bytes are written to
- * it. The check value is available by method <code>getCheckValue</code>.
- *<p>
- * Operations on the public <code>out</code> field of this class should be
- * avoided to prevent an invalid check code being generated.
- *
- * TODO: The javadoc HTML hasn't been generated and eyeballed for yet.
- * TODO: There is a javadoc trick to cause the parent class javadoc to be
- *       automagically used: try to take advantage of this.
- * TODO: Add javadoc links instead of <code>API</code> where it would be useful.
- * TODO: Go visit the Docs style guide again and get the periods right and
- *       consistent for all sun.* classes.
- * @author Pete Soper
- * @see java.lang.FilterOutputStream
- * @see getCheckValue
- */
-
-public class DigestOutputStream extends FilterOutputStream {
-    private static final String DEFAULT_ALGORITHM = "SHA-1";
-
-    private final boolean debug = false;
-
-    private StandaloneMessageDigest smd = null;
-
-    private void initDigest(String algorithm) throws NoSuchAlgorithmException {
-        smd = StandaloneMessageDigest.getInstance(algorithm);
-    }
-
-    // The underlying stream.
-
-    protected volatile OutputStream out;
-
-    /**
-     * Creates a <code>DigestOutputStream</code> with stream <code>s</code>
-     * to be checked with using <code>algorithm</code>.
-     * <p>
-     * If <code>algorithm</code> is not supported then
-     * <code>NoSuchAlgorithm</code> is thrown.
-     * <p>
-     * See {linkplain sun.security.provider.StandaloneMessageDigest} for an
-     * implementation-specific list of supported algorithms.
-     *
-     * @throws NoSuchAlgorithm if <code>algorithm</code> is not supported
-     * @see sun.security.provider.StandaloneMessageDigest
-     */
-
-    /**
-     * Creates an output stream filter built on top of
-     * underlying output stream <code>out</code> for checking with
-     * algorithm <code>algorithm</code>.
-     * <p>
-     * If <code>algorithm</code> is not supported then
-     * <code>NoSuchAlgorithm</code> is thrown.
-     * <p>
-     * See {linkplain sun.security.provider.StandaloneMessageDigest} for an
-     * implementation-specific list of supported algorithms.
-     *
-     * @param out the underlying output stream to be assigned to
-     *     the field <tt>this.out</tt> for later use, or
-     *     <code>null</code> if this instance is to be
-     *     created without an underlying stream.
-     * @param algorithm the check algorithm to use.
-     * @throws NoSuchAlgorithm if <code>algorithm</code> is not supported
-     * @see sun.security.provider.StandaloneMessageDigest
-     * @see DigestInputStream(InputStream, String)
-     */
-
-    public DigestOutputStream(OutputStream out, String algorithm) throws NoSuchAlgorithmException {
-        super(out);
-        initDigest(algorithm);
-        this.out = out;
-    }
-
-    /**
-     * Creates an output stream filter built on top of
-     * underlying output stream <code>out</code> for the default checking
-     * algorithm.
-     * <p>
-     * This implemention provides "SHA-1" as the default checking algorithm.
-     *
-     * @param out the underlying output stream to be assigned to
-     *     the field <tt>this.out</tt> for later use, or
-     *     <code>null</code> if this instance is to be
-     *     created without an underlying stream.
-     * @see DigestInputStream(InputStream)
-     */
-
-    public DigestOutputStream(OutputStream out) {
-        super(out);
-        try {
-            initDigest(DEFAULT_ALGORITHM);
-        } catch (NoSuchAlgorithmException e) {
-            // Impossible to get here, but stranger things have happened...
-            throw new RuntimeException("DigestOutputStream() unknown algorithm");
-        }
-        // superstition from a test failure this.out = out;
-    }
-
-    /**
-     * Writes a byte specified by <code>v</code> to this stream
-     * and updates the check information.
-     *
-     *
-     * @param v the byte to be written.
-     * @throws IOException if an I/O error occurs.
-     */
-    public void write(int v) throws IOException {
-        super.write(v);
-        // TODO Could create this array once
-        byte[] b = new byte[] {(byte) (v & 0xff)};
-        smd.update(b,0,1);
-    }
-
-    /**
-     * Writes the bytes in array <code>data</code>
-     * to this stream and updates the check information.
-     *
-     * @param data the data.
-     * @throws IOException  if an I/O error occurs.
-     * @throws NullPointerException  if <code>data</code> is <code>null</code>
-     */
-    public void write(byte[] data) throws IOException {
-        write(data,0,data.length);
-    }
-
-    /**
-     * Writes a sub array as a sequence of bytes to this output stream and
-     * updates the check information.
-     * @param data the data to be written
-     * @param ofs the start offset in the data
-     * @param len the number of bytes that are written
-     * @throws IOException If an I/O error has occurred.
-     * @throws NullPointerException  if <code>data</code> is <code>null</code>
-     * @throws IndexOutOfBoundsException If <code>ofs</code> is negative,
-     *     <code>len</code> is negative, or <code>len</code> is greater than
-     *     <code>b.length - ofs</code>
-     */
-    public void write(byte[] data, int ofs, int len) throws IOException {
-        if (debug) {
-            System.out.print("DigestOutputStream.write: ");
-            for (int i=ofs; i<(len - ofs); i++) {
-                System.out.format("%02X",data[i]);
-            }
-            System.out.println();
-        }
-        if (data == null) {
-            throw new NullPointerException("null array in DigestOutputStream.write");
-        } else if (ofs < 0 || len < 0 || len > data.length - ofs) {
-            throw new IndexOutOfBoundsException();
-        }
-        //super.write(data,ofs,len);
-        // WATCH OUT: FilterOutputStream does a byte at a time write(byte)
-        // TODO: Will this work all the time, or is there another caveat
-        // to publish
-        out.write(data,ofs,len);
-        if (debug) {
-            System.out.println("DigestOutputStream.write before");
-        }
-        smd.update(data,ofs,len);
-        if (debug) {
-            System.out.println("DigestOutputStream.write after");
-        }
-    }
-
-    /**
-     * Closes this file output stream and releases any system resources
-     * associated with this stream and makes the check value for the stream
-     * available via <code>getCheckValue</code>. This file output stream may
-     * no longer be used for writing bytes.
-     *
-     * @throws  IOException  if an I/O error occurs.
-     * @see getCheckValue
-     */
-    public void close() throws IOException {
-        super.close();
-    }
-
-    /**
-     * Return the check value computed for the stream and reset the state of
-     * check value generation.
-     *
-     * @return the check value bytes
-     */
-    public byte[] getCheckValue() {
-        byte[] b = smd.digest();
-        if (debug) {
-            System.out.print("DigestOutputStream.getCheckValue: ");
-            for (int i=0; i<b.length; i++) {
-                System.out.format("%02X",b[i]);
-            }
-            System.out.println();
-        }
-        smd.reset();
-        return b;
-    }
-
-    /**
-     * Flushes this output stream.
-     *
-     * @throws IOException if an I/O error occurs.
-     * @see java.io.FilterOutputStream#flush()
-     */
-    public void flush() throws IOException {
-        super.flush();
-    }
-
-    /**
-     * Compares two digests for equality. Does a simple byte compare.
-     *
-     * @param digesta one of the digests to compare.
-     *
-     * @param digestb the other digest to compare.
-     *
-     * @return true if the digests are equal, false otherwise.
-     */
-//    public static boolean isEqual(byte digesta[], byte digestb[]) {
-//        return StandaloneMessageDigest.isEqual(digesta, digestb);
-//    }
-
-}
--- a/jdk/src/share/classes/sun/jkernel/DownloadManager.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1786 +0,0 @@
-/*
- * Copyright (c) 2008, 2010, 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.jkernel;
-
-import java.io.*;
-import java.net.URLStreamHandlerFactory;
-import java.net.URL;
-import java.net.MalformedURLException;
-import java.security.*;
-import java.util.*;
-import java.util.concurrent.*;
-import java.util.jar.*;
-import java.util.zip.*;
-import sun.misc.BootClassLoaderHook;
-import sun.misc.Launcher;
-import sun.misc.URLClassPath;
-import sun.net.www.ParseUtil;
-
-/**
- * Handles the downloading of additional JRE components.  The bootstrap class
- * loader automatically invokes DownloadManager when it comes across a resource
- * that can't be located.
- *
- *@author Ethan Nicholas
- */
-public class DownloadManager extends BootClassLoaderHook {
-    public static final String KERNEL_DOWNLOAD_URL_PROPERTY =
-            "kernel.download.url";
-    public static final String KERNEL_DOWNLOAD_ENABLED_PROPERTY =
-            "kernel.download.enabled";
-
-    public static final String KERNEL_DOWNLOAD_DIALOG_PROPERTY =
-            "kernel.download.dialog";
-
-    public static final String KERNEL_DEBUG_PROPERTY = "kernel.debug";
-    // disables JRE completion when set to true, used as part of the build
-    // process
-    public static final String KERNEL_NOMERGE_PROPERTY = "kernel.nomerge";
-
-    public static final String KERNEL_SIMULTANEOUS_DOWNLOADS_PROPERTY =
-            "kernel.simultaneous.downloads";
-
-    // used to bypass some problems with JAR entry modtimes not matching.
-    // originally was set to zero, but apparently the epochs are different
-    // for zip and pack so the pack/unpack cycle was causing the modtimes
-    // to change.  With some recent changes to the reconstruction, I'm
-    // not sure if this is actually necessary anymore.
-    public static final int KERNEL_STATIC_MODTIME = 10000000;
-
-    // indicates that bundles should be grabbed using getResource(), rather
-    // than downloaded from a network path -- this is used during the build
-    // process
-    public static final String RESOURCE_URL = "internal-resource/";
-    public static final String REQUESTED_BUNDLES_PATH = "lib" + File.separator +
-            "bundles" + File.separator + "requested.list";
-
-    private static final boolean disableDownloadDialog = "false".equals(
-            System.getProperty(KERNEL_DOWNLOAD_DIALOG_PROPERTY));
-
-    static boolean debug = "true".equals(
-            System.getProperty(KERNEL_DEBUG_PROPERTY));
-    // points to stderr in case we need to println before System.err is
-    // initialized
-    private static OutputStream errorStream;
-    private static OutputStream logStream;
-
-    static String MUTEX_PREFIX;
-
-    static boolean complete;
-
-    // 1 if jbroker started; 0 otherwise
-    private static int _isJBrokerStarted = -1;
-
-    // maps bundle names to URL strings
-    private static Properties bundleURLs;
-
-    public static final String JAVA_HOME = System.getProperty("java.home");
-    public static final String USER_HOME = System.getProperty("user.home");
-    public static final String JAVA_VERSION =
-            System.getProperty("java.version");
-    static final int BUFFER_SIZE = 2048;
-
-    static volatile boolean jkernelLibLoaded = false;
-
-    public static String DEFAULT_DOWNLOAD_URL =
-        "http://javadl.sun.com/webapps/download/GetList/"
-        +  System.getProperty("java.runtime.version") + "-kernel/windows-i586/";
-
-    private static final String CUSTOM_PREFIX = "custom";
-    private static final String KERNEL_PATH_SUFFIX = "-kernel";
-
-    public static final String JAR_PATH_PROPERTY = "jarpath";
-    public static final String SIZE_PROPERTY = "size";
-    public static final String DEPENDENCIES_PROPERTY = "dependencies";
-    public static final String INSTALL_PROPERTY = "install";
-
-    private static boolean reportErrors = true;
-
-    static final int ERROR_UNSPECIFIED = 0;
-    static final int ERROR_DISK_FULL   = 1;
-    static final int ERROR_MALFORMED_BUNDLE_PROPERTIES = 2;
-    static final int ERROR_DOWNLOADING_BUNDLE_PROPERTIES = 3;
-    static final int ERROR_MALFORMED_URL = 4;
-    static final int ERROR_RETRY_CANCELLED = 5;
-    static final int ERROR_NO_SUCH_BUNDLE = 6;
-
-
-    // tracks whether the current thread is downloading.  A count of zero means
-    // not currently downloading, >0 means the current thread is downloading or
-    // installing a bundle.
-    static ThreadLocal<Integer> downloading = new ThreadLocal<Integer>() {
-        protected Integer initialValue() {
-            return 0;
-        }
-    };
-
-    private static File[] additionalBootStrapPaths = { };
-
-    private static String[] bundleNames;
-    private static String[] criticalBundleNames;
-
-    private static String downloadURL;
-
-    private static boolean visitorIdDetermined;
-    private static String visitorId;
-
-    /**
-     * File and path where the Check value properties are gotten from
-     */
-    public static String CHECK_VALUES_FILE = "check_value.properties";
-    static String CHECK_VALUES_DIR = "sun/jkernel/";
-    static String CHECK_VALUES_PATH = CHECK_VALUES_DIR + CHECK_VALUES_FILE;
-
-    /**
-     * The contents of the bundle.properties file, which contains various
-     * information about individual bundles.
-     */
-    private static Map<String, Map<String, String>> bundleProperties;
-
-
-    /**
-     * The contents of the resource_map file, which maps resources
-     * to their respective bundles.
-     */
-    private static Map<String, String> resourceMap;
-
-
-    /**
-     * The contents of the file_map file, which maps files
-     * to their respective bundles.
-     */
-    private static Map<String, String> fileMap;
-
-    private static boolean extDirDetermined;
-    private static boolean extDirIncluded;
-
-    static {
-        AccessController.doPrivileged(new PrivilegedAction() {
-            public Object run() {
-                if (debug)
-                    println("DownloadManager startup");
-
-                 // this mutex is global and will apply to all different
-                // version of java kernel installed on the local machine
-                MUTEX_PREFIX = "jkernel";
-                boolean downloadEnabled = !"false".equals(
-                        System.getProperty(KERNEL_DOWNLOAD_ENABLED_PROPERTY));
-                complete = !getBundlePath().exists() ||
-                        !downloadEnabled;
-
-                // only load jkernel.dll if we are not "complete".
-                // DownloadManager will be loaded during build time, before
-                // jkernel.dll is built.  We only need to load jkernel.dll
-                // when DownloadManager needs to download something, which is
-                // not necessary during build time
-                if (!complete) {
-                    loadJKernelLibrary();
-                    log("Log opened");
-
-                    if (isWindowsVista()) {
-                        getLocalLowTempBundlePath().mkdirs();
-                    }
-
-                    new Thread() {
-                        public void run() {
-                            startBackgroundDownloads();
-                        }
-                    }.start();
-
-                    try {
-                        String dummyPath;
-                        if (isWindowsVista()) {
-                            dummyPath = USER_HOME +
-                                    "\\appdata\\locallow\\dummy.kernel";
-                        } else {
-                            dummyPath = USER_HOME + "\\dummy.kernel";
-                        }
-
-                        File f = new File(dummyPath);
-                        FileOutputStream out = new FileOutputStream(f, true);
-                        out.close();
-                        f.deleteOnExit();
-
-                    } catch (IOException e) {
-                        log(e);
-                    }
-                    // end of warm up code
-
-                    new Thread("BundleDownloader") {
-                        public void run() {
-                            downloadRequestedBundles();
-                        }
-                    }.start();
-                }
-                return null;
-            }
-        });
-    }
-
-
-    static synchronized void loadJKernelLibrary() {
-        if (!jkernelLibLoaded) {
-            try {
-                System.loadLibrary("jkernel");
-                jkernelLibLoaded = true;
-                debug = getDebugProperty();
-            } catch (Exception e) {
-                throw new Error(e);
-            }
-        }
-    }
-
-    static String appendTransactionId(String url) {
-        StringBuilder result = new StringBuilder(url);
-        String visitorId = DownloadManager.getVisitorId();
-        if (visitorId != null) {
-            if (url.indexOf("?") == -1)
-                result.append('?');
-            else
-                result.append('&');
-            result.append("transactionId=");
-            result.append(DownloadManager.getVisitorId());
-        }
-        return result.toString();
-    }
-
-
-    /**
-     * Returns the URL for the directory from which bundles should be
-     * downloaded.
-     */
-    static synchronized String getBaseDownloadURL() {
-        if (downloadURL == null) {
-            log("Determining download URL...");
-            loadJKernelLibrary();
-
-            /*
-             * First check if system property has been set - system
-             * property should take over registry key setting.
-             */
-            downloadURL = System.getProperty(
-                          DownloadManager.KERNEL_DOWNLOAD_URL_PROPERTY);
-            log("System property kernel.download.url = " + downloadURL);
-
-            /*
-             * Now check if registry key has been set
-             */
-            if (downloadURL == null){
-                downloadURL = getUrlFromRegistry();
-                log("getUrlFromRegistry = " + downloadURL);
-            }
-
-            /*
-             * Use default download url
-             */
-            if (downloadURL == null)
-                downloadURL = DEFAULT_DOWNLOAD_URL;
-            log("Final download URL: " + downloadURL);
-        }
-        return downloadURL;
-    }
-
-
-    /**
-     * Loads a file representing a node tree.  The format is described in
-     * SplitJRE.writeTreeMap().  The node paths (such as
-     * core/java/lang/Object.class) are interpreted with the root node as the
-     * value and the remaining nodes as
-     * the key, so the mapping for this entry would be java/lang/Object.class =
-     * core.
-     */
-    static Map<String, String> readTreeMap(InputStream rawIn)
-            throws IOException {
-        // "token level" refers to the 0-31 byte that occurs prior to every
-        // token in the stream, and would be e.g. <0> core <1> java <2> lang
-        // <3> Object.class <3> String.class, which gives us two mappings:
-        // java/lang/Object.class = core, and java/lang/String.class = core.
-        // See the format description in SplitJRE.writeTreeMap for more details.
-        Map<String, String> result = new HashMap<String, String>();
-        InputStream in = new BufferedInputStream(rawIn);
-        // holds the current token sequence,
-        // e.g. {"core", "java", "lang", "Object.class"}
-        List<String> tokens = new ArrayList<String>();
-        StringBuilder currentToken = new StringBuilder();
-        for (;;) {
-            int c = in.read();
-            if (c  == -1) // eof
-                break;
-            if (c < 32) { // new token level
-                if (tokens.size() > 0) {
-                    // replace the null at the end of the list with the token
-                    // we just finished reading
-                    tokens.set(tokens.size() - 1, currentToken.toString());
-                }
-
-                currentToken.setLength(0);
-
-                if (c > tokens.size()) {
-                    // can't increase by more than one token level at a step
-                    throw new InternalError("current token level is " +
-                            (tokens.size() - 1) + " but encountered token " +
-                            "level " + c);
-                }
-                else if (c == tokens.size()) {
-                    // token level increased by 1; this means we are still
-                    // adding tokens for the current mapping -- e.g. we have
-                    // read "core", "java", "lang" and are just about to read
-                    // "Object.class"
-                    // add a placeholder for the new token
-                    tokens.add(null);
-                }
-                else {
-                    // we just stayed at the same level or backed up one or more
-                    // token levels; this means that the current sequence is
-                    // complete and needs to be added to the result map
-                    StringBuilder key = new StringBuilder();
-                    // combine all tokens except the first into a single string
-                    for (int i = 1; i < tokens.size(); i++) {
-                        if (i > 1)
-                            key.append('/');
-                        key.append(tokens.get(i));
-                    }
-                    // map the combined string to the first token, e.g.
-                    // java/lang/Object.class = core
-                    result.put(key.toString(), tokens.get(0));
-                    // strip off tokens until we get back to the current token
-                    // level
-                    while (c < tokens.size())
-                        tokens.remove(c);
-                    // placeholder for upcoming token
-                    tokens.add(null);
-                }
-            }
-            else if (c < 254) // character
-                currentToken.append((char) c);
-            else if (c == 255)
-                currentToken.append(".class");
-            else { // out-of-band value
-                throw new InternalError("internal error processing " +
-                        "resource_map (can't-happen error)");
-            }
-        }
-        if (tokens.size() > 0) // add token we just finished reading
-            tokens.set(tokens.size() - 1, currentToken.toString());
-        StringBuilder key = new StringBuilder();
-        // add the last entry to the map
-        for (int i = 1; i < tokens.size(); i++) {
-            if (i > 1)
-                key.append('/');
-            key.append(tokens.get(i));
-        }
-        if (!tokens.isEmpty())
-            result.put(key.toString(), tokens.get(0));
-        in.close();
-        return Collections.unmodifiableMap(result);
-    }
-
-
-    /**
-     * Returns the contents of the resource_map file, which maps
-     * resources names to their respective bundles.
-     */
-    public static Map<String, String> getResourceMap() throws IOException {
-        if (resourceMap == null) {
-            InputStream in = DownloadManager.class.getResourceAsStream("resource_map");
-            if (in != null) {
-                in = new BufferedInputStream(in);
-                try {
-                    resourceMap = readTreeMap(in);
-                    in.close();
-                }
-                catch (IOException e) {
-                    // turns out we can be returned a broken stream instead of
-                    // just null
-                    resourceMap = new HashMap<String, String>();
-                    complete = true;
-                    log("Can't find resource_map, forcing complete to true");
-                }
-                in.close();
-            }
-            else {
-                resourceMap = new HashMap<String, String>();
-                complete = true;
-                log("Can't find resource_map, forcing complete to true");
-            }
-
-            for (int i = 1; ; i++) { // run through the numbered custom bundles
-                String name = CUSTOM_PREFIX + i;
-                File customPath = new File(getBundlePath(), name + ".jar");
-                if (customPath.exists()) {
-                    JarFile custom = new JarFile(customPath);
-                    Enumeration entries = custom.entries();
-                    while (entries.hasMoreElements()) {
-                        JarEntry entry = (JarEntry) entries.nextElement();
-                        if (!entry.isDirectory())
-                            resourceMap.put(entry.getName(), name);
-                    }
-                }
-                else
-                    break;
-            }
-        }
-        return resourceMap;
-    }
-
-
-    /**
-     * Returns the contents of the file_map file, which maps
-     * file names to their respective bundles.
-     */
-    public static Map<String, String> getFileMap() throws IOException {
-        if (fileMap == null) {
-            InputStream in = DownloadManager.class.getResourceAsStream("file_map");
-            if (in != null) {
-                in = new BufferedInputStream(in);
-                try {
-                    fileMap = readTreeMap(in);
-                    in.close();
-                }
-                catch (IOException e) {
-                    // turns out we can be returned a broken stream instead of
-                    // just null
-                    fileMap = new HashMap<String, String>();
-                    complete = true;
-                    log("Can't find file_map, forcing complete to true");
-                }
-                in.close();
-            }
-            else {
-                fileMap = new HashMap<String, String>();
-                complete = true;
-                log("Can't find file_map, forcing complete to true");
-            }
-        }
-        return fileMap;
-    }
-
-
-    /**
-     * Returns the contents of the bundle.properties file, which maps
-     * bundle names to a pipe-separated list of their properties.  Properties
-     * include:
-     * jarpath - By default, the JAR files (unpacked from classes.pack in the
-     *           bundle) are stored under lib/bundles.  The jarpath property
-     *           overrides this default setting, causing the JAR to be unpacked
-     *           at the specified location.  This is used to preserve the
-     *           identity of JRE JAR files such as lib/deploy.jar.
-     * size    - The size of the download in bytes.
-     */
-    private static synchronized Map<String, Map<String, String>> getBundleProperties()
-            throws IOException {
-        if (bundleProperties == null) {
-            InputStream in = DownloadManager.class.getResourceAsStream("bundle.properties");
-            if (in == null) {
-                complete = true;
-                log("Can't find bundle.properties, forcing complete to true");
-                return null;
-            }
-            in = new BufferedInputStream(in);
-            Properties tmp = new Properties();
-            tmp.load(in);
-            bundleProperties = new HashMap<String, Map<String, String>>();
-            for (Map.Entry e : tmp.entrySet()) {
-                String key = (String) e.getKey();
-                String[] properties = ((String) e.getValue()).split("\\|");
-                Map<String, String> map = new HashMap<String, String>();
-                for (String entry : properties) {
-                    int equals = entry.indexOf("=");
-                    if (equals == -1)
-                        throw new InternalError("error parsing bundle.properties: " +
-                            entry);
-                    map.put(entry.substring(0, equals).trim(),
-                        entry.substring(equals + 1).trim());
-                }
-                bundleProperties.put(key, map);
-            }
-            in.close();
-        }
-        return bundleProperties;
-    }
-
-
-    /**
-     * Returns a single bundle property value loaded from the bundle.properties
-     * file.
-     */
-    static String getBundleProperty(String bundleName, String property) {
-        try {
-            Map<String, Map<String, String>> props = getBundleProperties();
-            Map/*<String, String>*/ map = props != null ? props.get(bundleName) : null;
-            return map != null ? (String) map.get(property) : null;
-        }
-        catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-
-    /** Returns an array of all supported bundle names. */
-    static String[] getBundleNames() throws IOException {
-        if (bundleNames == null) {
-            Set<String> result = new HashSet<String>();
-            Map<String, String> resourceMap = getResourceMap();
-            if (resourceMap != null)
-                result.addAll(resourceMap.values());
-            Map<String, String> fileMap = getFileMap();
-            if (fileMap != null)
-                result.addAll(fileMap.values());
-            bundleNames = result.toArray(new String[result.size()]);
-        }
-        return bundleNames;
-    }
-
-
-    /**
-     * Returns an array of all "critical" (must be downloaded prior to
-     * completion) bundle names.
-     */
-    private static String[] getCriticalBundleNames() throws IOException {
-        if (criticalBundleNames == null) {
-            Set<String> result = new HashSet<String>();
-            Map<String, String> fileMap = getFileMap();
-            if (fileMap != null)
-                result.addAll(fileMap.values());
-            criticalBundleNames = result.toArray(new String[result.size()]);
-        }
-        return criticalBundleNames;
-    }
-
-
-    public static void send(InputStream in, OutputStream out)
-            throws IOException {
-        byte[] buffer = new byte[BUFFER_SIZE];
-        int c;
-        while ((c = in.read(buffer)) > 0)
-            out.write(buffer, 0, c);
-    }
-
-
-    /**
-     * Determine whether all bundles have been downloaded, and if so create
-     * the merged jars that will eventually replace rt.jar and resoures.jar.
-     * IMPORTANT: this method should only be called from the background
-     * download process.
-     */
-    static void performCompletionIfNeeded() {
-        if (debug)
-            log("DownloadManager.performCompletionIfNeeded: checking (" +
-                    complete + ", " + System.getProperty(KERNEL_NOMERGE_PROPERTY)
-                    + ")");
-        if (complete ||
-                "true".equals(System.getProperty(KERNEL_NOMERGE_PROPERTY)))
-            return;
-        Bundle.loadReceipts();
-        try {
-            if (debug) {
-                List critical = new ArrayList(Arrays.asList(getCriticalBundleNames()));
-                critical.removeAll(Bundle.receipts);
-                log("DownloadManager.performCompletionIfNeeded: still need " +
-                        critical.size() + " bundles (" + critical + ")");
-            }
-            if (Bundle.receipts.containsAll(Arrays.asList(getCriticalBundleNames()))) {
-                log("DownloadManager.performCompletionIfNeeded: running");
-                // all done!
-                new Thread("JarMerger") {
-                    public void run() {
-                        createMergedJars();
-                    }
-                }.start();
-            }
-        }
-        catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-
-    /**
-     * Returns the bundle corresponding to a given resource path (e.g.
-     * "java/lang/Object.class").  If the resource does not appear in a bundle,
-     * null is returned.
-     */
-    public static Bundle getBundleForResource(String resource)
-            throws IOException {
-        String bundleName = getResourceMap().get(resource);
-        return bundleName != null ? Bundle.getBundle(bundleName) : null;
-    }
-
-
-    /**
-     * Returns the bundle corresponding to a given JRE file path (e.g.
-     * "bin/awt.dll").  If the file does not appear in a bundle, null is
-     * returned.
-     */
-    private static Bundle getBundleForFile(String file) throws IOException {
-        String bundleName = getFileMap().get(file);
-        return bundleName != null ? Bundle.getBundle(bundleName) : null;
-    }
-
-
-    /**
-     * Returns the path to the lib/bundles directory.
-     */
-    static File getBundlePath() {
-        return new File(JAVA_HOME, "lib" + File.separatorChar + "bundles");
-    }
-
-    private static String getAppDataLocalLow() {
-        return USER_HOME + "\\appdata\\locallow\\";
-    }
-
-    public static String getKernelJREDir() {
-        return "kerneljre" + JAVA_VERSION;
-    }
-
-    static File getLocalLowTempBundlePath() {
-        return new File(getLocalLowKernelJava() + "-bundles");
-    }
-
-    static String getLocalLowKernelJava() {
-        return getAppDataLocalLow() + getKernelJREDir();
-    }
-
-    // To be revisited:
-    // How DownloadManager maintains its bootstrap class path.
-    // sun.misc.Launcher.getBootstrapClassPath() returns
-    // DownloadManager.getBootstrapClassPath() instead.
-    //
-    // So should no longer need to lock the Launcher.class.
-    // In addition, additionalBootStrapPaths is not really needed
-    // if it obtains the initial bootclasspath during DownloadManager's
-    // initialization.
-    private static void addEntryToBootClassPath(File path) {
-        // Must acquire these locks in this order
-        synchronized(Launcher.class) {
-            synchronized(DownloadManager.class) {
-                File[] newBootStrapPaths = new File[
-                    additionalBootStrapPaths.length + 1];
-                System.arraycopy(additionalBootStrapPaths, 0, newBootStrapPaths,
-                        0, additionalBootStrapPaths.length);
-                newBootStrapPaths[newBootStrapPaths.length - 1] = path;
-                additionalBootStrapPaths = newBootStrapPaths;
-                if (bootstrapClassPath != null)
-                    bootstrapClassPath.addURL(getFileURL(path));
-           }
-       }
-    }
-
-    /**
-     * Returns the kernel's bootstrap class path which includes the additional
-     * JARs downloaded
-     */
-    private static URLClassPath bootstrapClassPath = null;
-    private synchronized static
-           URLClassPath getBootClassPath(URLClassPath bcp,
-                                         URLStreamHandlerFactory factory)
-    {
-        if (bootstrapClassPath == null) {
-            bootstrapClassPath = new URLClassPath(bcp.getURLs(), factory);
-            for (File path : additionalBootStrapPaths) {
-                bootstrapClassPath.addURL(getFileURL(path));
-            }
-        }
-        return bootstrapClassPath;
-    }
-
-    private static URL getFileURL(File file) {
-        try {
-            file = file.getCanonicalFile();
-        } catch (IOException e) {}
-
-        try {
-            return ParseUtil.fileToEncodedURL(file);
-        } catch (MalformedURLException e) {
-            // Should never happen since we specify the protocol...
-            throw new InternalError();
-        }
-    }
-
-    /**
-     * Scan through java.ext.dirs to see if the lib/ext directory is included.
-     * If not, we shouldn't be "finding" lib/ext jars for download.
-     */
-    private static synchronized boolean extDirIsIncluded() {
-        if (!extDirDetermined) {
-            extDirDetermined = true;
-            String raw = System.getProperty("java.ext.dirs");
-            String ext = JAVA_HOME + File.separator + "lib" + File.separator + "ext";
-            int index = 0;
-            while (index < raw.length()) {
-                int newIndex = raw.indexOf(File.pathSeparator, index);
-                if (newIndex == -1)
-                    newIndex = raw.length();
-                String path = raw.substring(index, newIndex);
-                if (path.equals(ext)) {
-                    extDirIncluded = true;
-                    break;
-                }
-                index = newIndex + 1;
-            }
-        }
-        return extDirIncluded;
-    }
-
-
-    private static String doGetBootClassPathEntryForResource(
-            String resourceName) {
-        boolean retry = false;
-        do {
-            Bundle bundle = null;
-            try {
-                bundle = getBundleForResource(resourceName);
-                if (bundle != null) {
-                    File path = bundle.getJarPath();
-                    boolean isExt = path.getParentFile().getName().equals("ext");
-                    if (isExt && !extDirIsIncluded()) // this is a lib/ext jar, but
-                        return null;                  // lib/ext isn't in the path
-                    if (getBundleProperty(bundle.getName(), JAR_PATH_PROPERTY) == null) {
-                        // if the bundle doesn't have its own JAR path, that means it's
-                        // going to be merged into rt.jar.  If we already have the
-                        // merged rt.jar, we can simply point to that.
-                        Bundle merged = Bundle.getBundle("merged");
-                        if (merged != null && merged.isInstalled()) {
-                            File jar;
-                            if (resourceName.endsWith(".class"))
-                                jar = merged.getJarPath();
-                            else
-                                jar = new File(merged.getJarPath().getPath().replaceAll("merged-rt.jar",
-                                        "merged-resources.jar"));
-                            addEntryToBootClassPath(jar);
-                            return jar.getPath();
-                        }
-                    }
-                    if (!bundle.isInstalled()) {
-                        bundle.queueDependencies(true);
-                        log("On-demand downloading " +
-                                bundle.getName() + " for resource " +
-                                resourceName + "...");
-                        bundle.install();
-                        log(bundle + " install finished.");
-                    }
-                    log("Double-checking " + bundle + " state...");
-                    if (!bundle.isInstalled()) {
-                        throw new IllegalStateException("Expected state of " +
-                                bundle + " to be INSTALLED");
-                    }
-                    if (isExt) {
-                        // don't add lib/ext entries to the boot class path, add
-                        // them to the extension classloader instead
-                        Launcher.addURLToExtClassLoader(path.toURL());
-                        return null;
-                    }
-
-                    if ("javaws".equals(bundle.getName())) {
-                        Launcher.addURLToAppClassLoader(path.toURL());
-                        log("Returning null for javaws");
-                        return null;
-                    }
-
-                    if ("core".equals(bundle.getName()))
-                        return null;
-
-                    // else add to boot class path
-                    addEntryToBootClassPath(path);
-
-                    return path.getPath();
-                }
-                return null; // not one of the JRE's classes
-            }
-            catch (Throwable e) {
-                retry = handleException(e);
-                log("Error downloading bundle for " +
-                        resourceName + ":");
-                log(e);
-                if (e instanceof IOException) {
-                    // bundle did not get installed correctly, remove incomplete
-                    // bundle files
-                    if (bundle != null) {
-                        if (bundle.getJarPath() != null) {
-                            File packTmp = new File(bundle.getJarPath() + ".pack");
-                            packTmp.delete();
-                            bundle.getJarPath().delete();
-                        }
-                        if (bundle.getLocalPath() != null) {
-                            bundle.getLocalPath().delete();
-                        }
-                        bundle.setState(Bundle.NOT_DOWNLOADED);
-                    }
-                }
-            }
-        } while (retry);
-        sendErrorPing(ERROR_RETRY_CANCELLED); // bundle failed to install, user cancelled
-
-        return null; // failed, user chose not to retry
-    }
-
-    static synchronized void sendErrorPing(int code) {
-        try {
-            File bundlePath;
-            if (isWindowsVista()) {
-                bundlePath = getLocalLowTempBundlePath();
-            } else {
-                bundlePath = getBundlePath();
-            }
-            File tmp = new File(bundlePath, "tmp");
-            File errors = new File(tmp, "errors");
-            String errorString = String.valueOf(code);
-            if (errors.exists()) {
-                BufferedReader in = new BufferedReader(new FileReader(errors));
-                String line = in.readLine();
-                while (line != null) {
-                    if (line.equals(errorString))
-                        return; // we have already pinged this error
-                    line = in.readLine();
-                }
-            }
-            tmp.mkdirs();
-            Writer out = new FileWriter(errors, true);
-            out.write(errorString + System.getProperty("line.separator"));
-            out.close();
-            postDownloadError(code);
-        }
-        catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-
-
-    /**
-     * Displays an error dialog and prompts the user to retry or cancel.
-     * Returns true if the user chose to retry, false if he chose to cancel.
-     */
-    static boolean handleException(Throwable e) {
-        if (e instanceof IOException) {
-            // I don't know of a better method to determine the root cause of
-            // the exception, unfortunately...
-            int code = ERROR_UNSPECIFIED;
-            if (e.getMessage().indexOf("not enough space") != -1)
-                code = ERROR_DISK_FULL;
-            return askUserToRetryDownloadOrQuit(code);
-        }
-        else
-            return false;
-    }
-
-
-    static synchronized void flushBundleURLs() {
-        bundleURLs = null;
-    }
-
-
-    static synchronized Properties getBundleURLs(boolean showUI)
-            throws IOException {
-        if (bundleURLs == null) {
-            log("Entering DownloadManager.getBundleURLs");
-            String base = getBaseDownloadURL();
-            String url = appendTransactionId(base);
-            // use PID instead of createTempFile or other random filename so as
-            // to avoid dependencies on the random number generator libraries
-            File bundlePath = null;
-            // write temp file to locallow directory on vista
-            if (isWindowsVista()) {
-                bundlePath = getLocalLowTempBundlePath();
-            } else {
-                bundlePath = getBundlePath();
-            }
-            File tmp = new File(bundlePath, "urls." + getCurrentProcessId() +
-                    ".properties");
-            try {
-                log("Downloading from " + url + " to " + tmp);
-                downloadFromURL(url, tmp, "", showUI);
-                bundleURLs = new Properties();
-                if (tmp.exists()) {
-                    addToTotalDownloadSize((int) tmp.length()); // better late than never
-                    InputStream in = new FileInputStream(tmp);
-                    in = new BufferedInputStream(in);
-                    bundleURLs.load(in);
-                    in.close();
-                    if (bundleURLs.isEmpty()) {
-                        fatalError(ERROR_MALFORMED_BUNDLE_PROPERTIES);
-                    }
-                } else {
-                    fatalError(ERROR_DOWNLOADING_BUNDLE_PROPERTIES);
-                }
-            } finally {
-                // delete the temp file
-                if (!debug)
-                    tmp.delete();
-            }
-            log("Leaving DownloadManager.getBundleURLs");
-            // else an error occurred and user chose not to retry; leave
-            // bundleURLs empty so we don't continually try to re-download it
-        }
-        return bundleURLs;
-    }
-
-    /**
-     * Checks to see if the specified resource is part of a bundle, and if so
-     * downloads it.  Returns either a string which should be added to the boot
-     * class path (the newly-downloaded JAR's location), or null to indicate
-     * that it isn't one of the JRE's resources or could not be downloaded.
-     */
-    public static String getBootClassPathEntryForResource(
-            final String resourceName) {
-        if (debug)
-            log("Entering getBootClassPathEntryForResource(" + resourceName + ")");
-        if (isJREComplete() || downloading == null ||
-                resourceName.startsWith("sun/jkernel")) {
-            if (debug)
-                log("Bailing: " + isJREComplete() + ", " + (downloading == null));
-            return null;
-        }
-        incrementDownloadCount();
-        try {
-            String result = (String) AccessController.doPrivileged(
-                new PrivilegedAction() {
-                    public Object run() {
-                        return (String) doGetBootClassPathEntryForResource(
-                                resourceName);
-                    }
-                }
-            );
-            log("getBootClassPathEntryForResource(" + resourceName + ") == " + result);
-            return result;
-        }
-        finally {
-            decrementDownloadCount();
-        }
-    }
-
-
-    /**
-     * Called by the boot class loader when it encounters a class it can't find.
-     * This method will check to see if the class is part of a bundle, and if so
-     * download it.  Returns either a string which should be added to the boot
-     * class path (the newly-downloaded JAR's location), or null to indicate
-     * that it isn't one of the JRE's classes or could not be downloaded.
-     */
-    public static String getBootClassPathEntryForClass(final String className) {
-        return getBootClassPathEntryForResource(className.replace('.', '/') +
-                ".class");
-    }
-
-
-    private static boolean doDownloadFile(String relativePath)
-            throws IOException {
-        Bundle bundle = getBundleForFile(relativePath);
-        if (bundle != null) {
-            bundle.queueDependencies(true);
-            log("On-demand downloading " + bundle.getName() +
-                    " for file " + relativePath + "...");
-            bundle.install();
-            return true;
-        }
-        return false;
-    }
-
-
-    /**
-     * Locates the bundle for the specified JRE file (e.g. "bin/awt.dll") and
-     * installs it.  Returns true if the file is indeed part of the JRE and has
-     * now been installed, false if the file is not part of the JRE, and throws
-     * an IOException if the file is part of the JRE but could not be
-     * downloaded.
-     */
-    public static boolean downloadFile(final String relativePath)
-            throws IOException {
-        if (isJREComplete() || downloading == null)
-            return false;
-
-        incrementDownloadCount();
-        try {
-            Object result =
-                    AccessController.doPrivileged(new PrivilegedAction() {
-                public Object run() {
-                    File path = new File(JAVA_HOME,
-                            relativePath.replace('/', File.separatorChar));
-                    if (path.exists())
-                        return true;
-                    try {
-                        return new Boolean(doDownloadFile(relativePath));
-                    }
-                    catch (IOException e) {
-                        return e;
-                    }
-                }
-            });
-            if (result instanceof Boolean)
-                return ((Boolean) result).booleanValue();
-            else
-                throw (IOException) result;
-        }
-        finally {
-            decrementDownloadCount();
-        }
-    }
-
-
-    // increments the counter that tracks whether the current thread is involved
-    // in any download-related activities.  A non-zero count indicates that the
-    // thread is currently downloading or installing a bundle.
-    static void incrementDownloadCount() {
-        downloading.set(downloading.get() + 1);
-    }
-
-
-    // increments the counter that tracks whether the current thread is involved
-    // in any download-related activities.  A non-zero count indicates that the
-    // thread is currently downloading or installing a bundle.
-    static void decrementDownloadCount() {
-        // will generate an exception if incrementDownloadCount() hasn't been
-        // called first, this is intentional
-        downloading.set(downloading.get() - 1);
-    }
-
-
-    /**
-     * Returns <code>true</code> if the current thread is in the process of
-     * downloading a bundle.  This is called by DownloadManager.loadLibrary()
-     * that is called by System.loadLibrary(), so
-     * that when we run into a library required by the download process itself,
-     * we don't call back into DownloadManager in an attempt to download it
-     * (which would lead to infinite recursion).
-     *
-     * All classes and libraries required to download classes must by
-     * definition already be present.  So if this method returns true, we are
-     * currently in the middle of performing a download, and the class or
-     * library load must be happening due to the download itself.  We can
-     * immediately abort such requests -- the class or library should already
-     * be present.  If it isn't, we're not going to be able to download it,
-     * since we have just established that it is required to perform a
-     * download, and we might as well just let the NoClassDefFoundError /
-     * UnsatisfiedLinkError occur.
-     */
-    public static boolean isCurrentThreadDownloading() {
-        return downloading != null ? downloading.get() > 0 : false;
-    }
-
-
-    /**
-     * Returns true if everything is downloaded and the JRE has been
-     * reconstructed.  Also returns true if kernel functionality is disabled
-     * for any other reason.
-     */
-    public static boolean isJREComplete() {
-        return complete;
-    }
-
-
-    // called by BackgroundDownloader
-    static void doBackgroundDownloads(boolean showProgress) {
-        if (!complete) {
-            if (!showProgress && !debug)
-                reportErrors = false;
-            try {
-                // install swing first for ergonomic reasons
-                Bundle swing = Bundle.getBundle("javax_swing_core");
-                if (!swing.isInstalled())
-                    swing.install(showProgress, false, false);
-                // install remaining bundles
-                for (String name : getCriticalBundleNames()) {
-                    Bundle bundle = Bundle.getBundle(name);
-                    if (!bundle.isInstalled()) {
-                        bundle.install(showProgress, false, true);
-                    }
-                }
-                shutdown();
-            }
-            catch (IOException e) {
-                log(e);
-            }
-        }
-    }
-
-    // copy receipt file to destination path specified
-    static void copyReceiptFile(File from, File to) throws IOException {
-        DataInputStream in = new DataInputStream(
-                new BufferedInputStream(new FileInputStream(from)));
-        OutputStream out = new FileOutputStream(to);
-        String line = in.readLine();
-        while (line != null) {
-            out.write((line + '\n').getBytes("utf-8"));
-            line = in.readLine();
-        }
-        in.close();
-        out.close();
-    }
-
-
-    private static void downloadRequestedBundles() {
-        log("Checking for requested bundles...");
-        try {
-            File list = new File(JAVA_HOME, REQUESTED_BUNDLES_PATH);
-            if (list.exists()) {
-                FileInputStream in = new FileInputStream(list);
-                ByteArrayOutputStream buffer = new ByteArrayOutputStream();
-                send(in, buffer);
-                in.close();
-
-                // split string manually to avoid relying on regexes or
-                // StringTokenizer
-                String raw = new String(buffer.toByteArray(), "utf-8");
-                List/*<String>*/ bundles = new ArrayList/*<String>*/();
-                StringBuilder token = new StringBuilder();
-                for (int i = 0; i < raw.length(); i++) {
-                    char c = raw.charAt(i);
-                    if (c == ',' || Character.isWhitespace(c)) {
-                        if (token.length() > 0) {
-                            bundles.add(token.toString());
-                            token.setLength(0);
-                        }
-                    }
-                    else
-                        token.append(c);
-                }
-                if (token.length() > 0)
-                    bundles.add(token.toString());
-                log("Requested bundles: " + bundles);
-                for (int i = 0; i < bundles.size(); i++) {
-                    Bundle bundle = Bundle.getBundle((String) bundles.get(i));
-                    if (bundle != null && !bundle.isInstalled()) {
-                        log("Downloading " + bundle + " due to requested.list");
-                        bundle.install(true, false, false);
-                    }
-                }
-            }
-        }
-        catch (IOException e) {
-            log(e);
-        }
-    }
-
-
-    static void fatalError(int code) {
-        fatalError(code, null);
-    }
-
-
-    /**
-     * Called to cleanly shut down the VM when a fatal download error has
-     * occurred.  Calls System.exit() if outside of the Java Plug-In, otherwise
-     * throws an error.
-     */
-    static void fatalError(int code, String arg) {
-        sendErrorPing(code);
-
-        for (int i = 0; i < Bundle.THREADS; i++)
-            bundleInstallComplete();
-        if (reportErrors)
-            displayError(code, arg);
-        // inPlugIn check isn't 100% reliable but should be close enough.
-        // headless is for the browser side of things in the out-of-process
-        // plug-in
-        boolean inPlugIn = (Boolean.getBoolean("java.awt.headless") ||
-           System.getProperty("javaplugin.version") != null);
-        KernelError error = new KernelError("Java Kernel bundle download failed");
-        if (inPlugIn)
-            throw error;
-        else {
-            log(error);
-            System.exit(1);
-        }
-    }
-
-
-    // start the background download process using the jbroker broker process
-    // the method will first launch the broker process, if it is not already
-    // running
-    // it will then send the command necessary to start the background download
-    // process to the broker process
-    private static void startBackgroundDownloadWithBroker() {
-
-        if (!BackgroundDownloader.getBackgroundDownloadProperty()) {
-            // If getBackgroundDownloadProperty() returns false
-            // we're doing the downloads from this VM; we don't want to
-            // spawn another one
-            return;
-        }
-
-        // launch broker process if necessary
-        if (!launchBrokerProcess()) {
-            return;
-        }
-
-
-        String kernelDownloadURLProperty = getBaseDownloadURL();
-
-        String kernelDownloadURL;
-
-        // only set KERNEL_DOWNLOAD_URL_PROPERTY if we override
-        // the default download url
-        if (kernelDownloadURLProperty == null ||
-                kernelDownloadURLProperty.equals(DEFAULT_DOWNLOAD_URL)) {
-            kernelDownloadURL = " ";
-        } else {
-            kernelDownloadURL = kernelDownloadURLProperty;
-        }
-
-        startBackgroundDownloadWithBrokerImpl(kernelDownloadURLProperty);
-    }
-
-    private static void startBackgroundDownloads() {
-        if (!complete) {
-            if (BackgroundDownloader.getBackgroundMutex().acquire(0)) {
-                // we don't actually need to hold the mutex -- it was just a
-                // quick check to see if there is any point in even attempting
-                // to start the background downloader
-                BackgroundDownloader.getBackgroundMutex().release();
-                if (isWindowsVista()) {
-                    // use broker process to start background download
-                    // at high integrity
-                    startBackgroundDownloadWithBroker();
-                } else {
-                    BackgroundDownloader.startBackgroundDownloads();
-                }
-            }
-        }
-    }
-
-
-    /**
-     * Increases the total download size displayed in the download progress
-     * dialog.
-     */
-    static native void addToTotalDownloadSize(int size);
-
-
-    /**
-     * Displays a progress dialog while downloading from the specified URL.
-     *
-     *@param url the URL string from which to download
-     *@param file the destination path
-     *@param name the user-visible name of the component we are downloading
-     */
-    static void downloadFromURL(String url, File file, String name,
-            boolean showProgress) {
-        // do not show download dialog if kernel.download.dialog is false
-        downloadFromURLImpl(url, file, name,
-                disableDownloadDialog ? false : showProgress);
-    }
-
-    private static native void downloadFromURLImpl(String url, File file,
-            String name, boolean showProgress);
-
-    // This is for testing purposes only - allows to specify URL
-    // to download kernel bundles from through the registry key.
-    static native String getUrlFromRegistry();
-
-    static native String getVisitorId0();
-
-    static native void postDownloadComplete();
-
-    static native void postDownloadError(int code);
-
-    // Returns the visitor ID set by the installer, will be sent to the server
-    // during bundle downloads for logging purposes.
-    static synchronized String getVisitorId() {
-        if (!visitorIdDetermined) {
-            visitorIdDetermined = true;
-            visitorId = getVisitorId0();
-        }
-        return visitorId;
-    }
-
-    // display an error message using a native dialog
-    public static native void displayError(int code, String arg);
-
-    // prompt user whether to retry download, or quit
-    // returns true if the user chose to retry
-    public static native boolean askUserToRetryDownloadOrQuit(int code);
-
-    // returns true if we are running Windows Vista; false otherwise
-    static native boolean isWindowsVista();
-
-    private static native void startBackgroundDownloadWithBrokerImpl(
-            String command);
-
-    private static int isJBrokerStarted() {
-        if (_isJBrokerStarted == -1) {
-            // initialize state of jbroker
-            _isJBrokerStarted = isJBrokerRunning() ? 1 : 0;
-        }
-        return _isJBrokerStarted;
-    }
-
-    // returns true if broker process (jbroker) is running; false otherwise
-    private static native boolean isJBrokerRunning();
-
-    // returns true if we are running in IE protected mode; false otherwise
-    private static native boolean isIEProtectedMode();
-
-    private static native boolean launchJBroker(String jbrokerPath);
-
-    static native void bundleInstallStart();
-
-    static native void bundleInstallComplete();
-
-    private static native boolean moveFileWithBrokerImpl(String fromPath,
-            String userHome);
-
-    private static native boolean moveDirWithBrokerImpl(String fromPath,
-            String userHome);
-
-    static boolean moveFileWithBroker(String fromPath) {
-        // launch jbroker if necessary
-        if (!launchBrokerProcess()) {
-            return false;
-        }
-
-        return moveFileWithBrokerImpl(fromPath, USER_HOME);
-    }
-
-    static boolean moveDirWithBroker(String fromPath) {
-        // launch jbroker if necessary
-        if (!launchBrokerProcess()) {
-            return false;
-        }
-
-        return moveDirWithBrokerImpl(fromPath, USER_HOME);
-    }
-
-    private static synchronized boolean launchBrokerProcess() {
-        // launch jbroker if necessary
-        if (isJBrokerStarted() == 0) {
-            // launch jbroker if needed
-            boolean ret = launchJBroker(JAVA_HOME);
-            // set state of jbroker
-            _isJBrokerStarted = ret ? 1 : 0;
-            return ret;
-        }
-        return true;
-    }
-
-    private static class StreamMonitor implements Runnable {
-        private InputStream istream;
-        public StreamMonitor(InputStream stream) {
-            istream = new BufferedInputStream(stream);
-            new Thread(this).start();
-        }
-        public void run() {
-            byte[] buffer = new byte[4096];
-            try {
-                int ret = istream.read(buffer);
-                while (ret != -1) {
-                    ret = istream.read(buffer);
-                }
-            } catch (IOException e) {
-                try {
-                    istream.close();
-                } catch (IOException e2) {
-                } // Should allow clean exit when process shuts down
-            }
-        }
-    }
-
-
-    /** Copy a file tree, excluding certain named files. */
-    private static void copyAll(File src, File dest, Set/*<String>*/ excludes)
-                            throws IOException {
-        if (!excludes.contains(src.getName())) {
-            if (src.isDirectory()) {
-                File[] children = src.listFiles();
-                if (children != null) {
-                    for (int i = 0; i < children.length; i++)
-                        copyAll(children[i],
-                                new File(dest, children[i].getName()),
-                                excludes);
-                }
-            }
-            else {
-                dest.getParentFile().mkdirs();
-                FileInputStream in = new FileInputStream(src);
-                FileOutputStream out = new FileOutputStream(dest);
-                send(in, out);
-                in.close();
-                out.close();
-            }
-        }
-    }
-
-
-    public static void dumpOutput(final Process p) {
-        Thread outputReader = new Thread("outputReader") {
-            public void run() {
-                try {
-                    InputStream in = p.getInputStream();
-                    DownloadManager.send(in, System.out);
-                } catch (IOException e) {
-                    log(e);
-                }
-            }
-        };
-        outputReader.start();
-        Thread errorReader = new Thread("errorReader") {
-            public void run() {
-                try {
-                    InputStream in = p.getErrorStream();
-                    DownloadManager.send(in, System.err);
-                } catch (IOException e) {
-                    log(e);
-                }
-            }
-        };
-        errorReader.start();
-    }
-
-
-    /**
-     * Creates the merged rt.jar and resources.jar files.
-     */
-    private static void createMergedJars() {
-        log("DownloadManager.createMergedJars");
-        File bundlePath;
-        if (isWindowsVista()) {
-            bundlePath = getLocalLowTempBundlePath();
-        } else {
-            bundlePath = getBundlePath();
-        }
-        File tmp = new File(bundlePath, "tmp");
-        // explicitly check the final location, not the (potentially) local-low
-        // location -- a local-low finished isn't good enough to call it done
-        if (new File(getBundlePath(), "tmp" + File.separator + "finished").exists())
-            return; // already done
-        log("DownloadManager.createMergedJars: running");
-        tmp.mkdirs();
-        boolean retry = false;
-        do {
-            try {
-                Bundle.getBundle("merged").install(false, false, true);
-                postDownloadComplete();
-                // done, write an empty "finished" file to flag completion
-                File finished = new File(tmp, "finished");
-                new FileOutputStream(finished).close();
-                if (isWindowsVista()) {
-                    if (!moveFileWithBroker(getKernelJREDir() +
-                            "-bundles\\tmp\\finished")) {
-                        throw new IOException("unable to create 'finished' file");
-                    }
-                }
-                log("DownloadManager.createMergedJars: created " + finished);
-                // next JRE startup will move these files into their final
-                // locations, as long as no other JREs are running
-
-                // clean up the local low bundle directory on vista
-                if (isWindowsVista()) {
-                    File tmpDir = getLocalLowTempBundlePath();
-                    File[] list = tmpDir.listFiles();
-                    if (list != null) {
-                        for (int i = 0; i < list.length; i++) {
-                            list[i].delete();
-                        }
-                    }
-                    tmpDir.delete();
-                    log("Finished cleanup, " + tmpDir + ".exists(): " + tmpDir.exists());
-                }
-            }
-            catch (IOException e) {
-                log(e);
-            }
-        }
-        while (retry);
-        log("DownloadManager.createMergedJars: finished");
-    }
-
-
-    private static void shutdown() {
-        try {
-            ExecutorService e = Bundle.getThreadPool();
-            e.shutdown();
-            e.awaitTermination(60 * 60 * 24, TimeUnit.SECONDS);
-        }
-        catch (InterruptedException e) {
-        }
-    }
-
-
-    // returns the registry key for kernel.debug
-    static native boolean getDebugKey();
-
-
-    // returns the final value for the kernel debug property
-    public static boolean getDebugProperty(){
-         /*
-          * Check registry key value
-          */
-         boolean debugEnabled = getDebugKey();
-
-         /*
-          * Check system property - it should override the registry
-          * key value.
-          */
-         if (System.getProperty(KERNEL_DEBUG_PROPERTY) != null) {
-             debugEnabled = Boolean.valueOf(
-                      System.getProperty(KERNEL_DEBUG_PROPERTY));
-         }
-         return debugEnabled;
-
-    }
-
-
-    /**
-     * Outputs to the error stream even when System.err has not yet been
-     * initialized.
-     */
-    static void println(String msg) {
-        if (System.err != null)
-            System.err.println(msg);
-        else {
-            try {
-                if (errorStream == null)
-                    errorStream = new FileOutputStream(FileDescriptor.err);
-                errorStream.write((msg +
-                        System.getProperty("line.separator")).getBytes("utf-8"));
-            }
-            catch (IOException e) {
-                throw new RuntimeException(e);
-            }
-        }
-    }
-
-
-    static void log(String msg) {
-        if (debug) {
-            println(msg);
-            try {
-                if (logStream == null) {
-                    loadJKernelLibrary();
-                    File path = isWindowsVista() ? getLocalLowTempBundlePath() :
-                            getBundlePath();
-                    path = new File(path, "kernel." + getCurrentProcessId() + ".log");
-                    logStream = new FileOutputStream(path);
-                }
-                logStream.write((msg +
-                        System.getProperty("line.separator")).getBytes("utf-8"));
-                logStream.flush();
-            }
-            catch (IOException e) {
-                // ignore
-            }
-        }
-    }
-
-
-    static void log(Throwable e) {
-        ByteArrayOutputStream buffer = new ByteArrayOutputStream();
-        PrintStream p = new PrintStream(buffer);
-        e.printStackTrace(p);
-        p.close();
-        log(buffer.toString(0));
-    }
-
-
-    /** Dump the contents of a map to System.out. */
-    private static void printMap(Map/*<String, String>*/ map) {
-        int size = 0;
-        Set<Integer> identityHashes = new HashSet<Integer>();
-        Iterator/*<Map.Entry<String, String>>*/ i = map.entrySet().iterator();
-        while (i.hasNext()) {
-            Map.Entry/*<String, String>*/ e = (Map.Entry) i.next();
-            String key = (String) e.getKey();
-            String value = (String) e.getValue();
-            System.out.println(key + ": " + value);
-            Integer keyHash = Integer.valueOf(System.identityHashCode(key));
-            if (!identityHashes.contains(keyHash)) {
-                identityHashes.add(keyHash);
-                size += key.length();
-            }
-            Integer valueHash = Integer.valueOf(System.identityHashCode(value));
-            if (!identityHashes.contains(valueHash)) {
-                identityHashes.add(valueHash);
-                size += value.length();
-            }
-        }
-        System.out.println(size + " bytes");
-    }
-
-
-    /** Process the "-dumpmaps" command-line argument. */
-    private static void dumpMaps() throws IOException {
-        System.out.println("Resources:");
-        System.out.println("----------");
-        printMap(getResourceMap());
-        System.out.println();
-        System.out.println("Files:");
-        System.out.println("----------");
-        printMap(getFileMap());
-    }
-
-
-    /** Process the "-download" command-line argument. */
-    private static void processDownload(String bundleName) throws IOException {
-        if (bundleName.equals("all")) {
-            debug = true;
-            doBackgroundDownloads(true);
-            performCompletionIfNeeded();
-        }
-        else {
-            Bundle bundle = Bundle.getBundle(bundleName);
-            if (bundle == null) {
-                println("Unknown bundle: " + bundleName);
-                System.exit(1);
-            }
-            else
-                bundle.install();
-        }
-    }
-
-
-    static native int getCurrentProcessId();
-
-    private DownloadManager() {
-    }
-
-    // Invoked by jkernel VM after the VM is initialized
-    static void setBootClassLoaderHook() {
-        if (!isJREComplete()) {
-            sun.misc.BootClassLoaderHook.setHook(new DownloadManager());
-        }
-    }
-
-    // Implementation of the BootClassLoaderHook interface
-    public String loadBootstrapClass(String name) {
-        // Check for download before we look for it.  If
-        // DownloadManager ends up downloading it, it will add it to
-        // our search path before we proceed to the findClass().
-        return DownloadManager.getBootClassPathEntryForClass(name);
-    }
-
-    public boolean loadLibrary(String name) {
-       try {
-            if (!DownloadManager.isJREComplete() &&
-                    !DownloadManager.isCurrentThreadDownloading()) {
-                return DownloadManager.downloadFile("bin/" +
-                    System.mapLibraryName(name));
-                // it doesn't matter if the downloadFile call returns false --
-                // it probably just means that this is a user library, as
-                // opposed to a JRE library
-            }
-        } catch (IOException e) {
-            throw new UnsatisfiedLinkError("Error downloading library " +
-                                                name + ": " + e);
-        } catch (NoClassDefFoundError e) {
-            // This happens while Java itself is being compiled; DownloadManager
-            // isn't accessible when this code is first invoked.  It isn't an
-            // issue, as if we can't find DownloadManager, we can safely assume
-            // that additional code is not available for download.
-        }
-        return false;
-    }
-
-    public boolean prefetchFile(String name) {
-        try {
-            return sun.jkernel.DownloadManager.downloadFile(name);
-        } catch (IOException ioe) {
-            return false;
-        }
-    }
-
-    public String getBootstrapResource(String name) {
-        try {
-            // If this is a known JRE resource, ensure that its bundle is
-            // downloaded.  If it isn't known, we just ignore the download
-            // failure and check to see if we can find the resource anyway
-            // (which is possible if the boot class path has been modified).
-            return DownloadManager.getBootClassPathEntryForResource(name);
-        } catch (NoClassDefFoundError e) {
-            // This happens while Java itself is being compiled; DownloadManager
-            // isn't accessible when this code is first invoked.  It isn't an
-            // issue, as if we can't find DownloadManager, we can safely assume
-            // that additional code is not available for download.
-            return null;
-        }
-    }
-
-    public URLClassPath getBootstrapClassPath(URLClassPath bcp,
-                                              URLStreamHandlerFactory factory)
-    {
-        return DownloadManager.getBootClassPath(bcp, factory);
-    }
-
-    public boolean isCurrentThreadPrefetching() {
-        return DownloadManager.isCurrentThreadDownloading();
-    }
-
-    public static void main(String[] arg) throws Exception {
-        AccessController.checkPermission(new AllPermission());
-
-        boolean valid = false;
-        if (arg.length == 2 && arg[0].equals("-install")) {
-            valid = true;
-            Bundle bundle = new Bundle() {
-                protected void updateState() {
-                    // the bundle path was provided on the command line, so we
-                    // just claim it has already been "downloaded" to the local
-                    // filesystem
-                    state = DOWNLOADED;
-                }
-            };
-
-            File jarPath;
-            int index = 0;
-            do {
-                index++;
-                jarPath = new File(getBundlePath(),
-                        CUSTOM_PREFIX + index + ".jar");
-            }
-            while (jarPath.exists());
-            bundle.setName(CUSTOM_PREFIX + index);
-            bundle.setLocalPath(new File(arg[1]));
-            bundle.setJarPath(jarPath);
-            bundle.setDeleteOnInstall(false);
-            bundle.install();
-        }
-        else if (arg.length == 2 && arg[0].equals("-download")) {
-            valid = true;
-            processDownload(arg[1]);
-        }
-        else if (arg.length == 1 && arg[0].equals("-dumpmaps")) {
-            valid = true;
-            dumpMaps();
-        }
-        else if (arg.length == 2 && arg[0].equals("-sha1")) {
-            valid = true;
-            System.out.println(BundleCheck.getInstance(new File(arg[1])));
-        }
-        else if (arg.length == 1 && arg[0].equals("-downloadtest")) {
-            valid = true;
-            File file = File.createTempFile("download", ".test");
-            for (;;) {
-                file.delete();
-                downloadFromURL(getBaseDownloadURL(), file, "URLS", true);
-                System.out.println("Downloaded " + file.length() + " bytes");
-            }
-        }
-        if (!valid) {
-            System.out.println("usage: DownloadManager -install <path>.zip |");
-            System.out.println("       DownloadManager -download " +
-                    "<bundle_name> |");
-            System.out.println("       DownloadManager -dumpmaps");
-            System.exit(1);
-        }
-    }
-}
--- a/jdk/src/share/classes/sun/jkernel/KernelError.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.jkernel;
-
-/**
- * Thrown to indicate that Java Kernel is unable to install a required bundle
- * and the JRE is therefore not adhering to specifications.
- */
-public class KernelError extends VirtualMachineError {
-    /**
-     * Constructs a <code>KernelError</code> with no detail message.
-     */
-    public KernelError() {
-        super();
-    }
-
-    /**
-     * Constructs a <code>KernelError</code> with the specified
-     * detail message.
-     *
-     * @param   s   the detail message.
-     */
-    public KernelError(String s) {
-        super(s);
-    }
-}
--- a/jdk/src/share/classes/sun/jkernel/Mutex.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.jkernel;
-
-/**
- * A mutex which works even between different processes.  Currently implemented
- * only on Win32.
- *
- *@author Ethan Nicholas
- */
-public class Mutex {
-    static {
-        try {
-            System.loadLibrary("jkernel");
-        }
-        catch (Exception e) {
-            throw new Error(e);
-        }
-    }
-
-    private String uniqueId;
-    private long handle;
-
-    public static Mutex create(String uniqueId) {
-        return new Mutex(uniqueId);
-    }
-
-
-    private Mutex(String uniqueId) {
-        this.uniqueId = uniqueId;
-        this.handle = createNativeMutex(uniqueId);
-    }
-
-
-    private static native long createNativeMutex(String uniqueId);
-
-
-    public native void acquire();
-
-
-    public native boolean acquire(int timeout);
-
-
-    public native void release();
-
-
-    public native void destroyNativeMutex();
-
-
-    public void dispose() {
-        destroyNativeMutex();
-        handle = 0;
-    }
-
-
-    public void finalize() {
-        dispose();
-    }
-
-
-    public String toString() {
-        return "Mutex[" + uniqueId + "]";
-    }
-}
--- a/jdk/src/share/classes/sun/jkernel/StandaloneByteArrayAccess.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,155 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-/*
- * This is a pure subset of package-private class
- * sun.security.provider.ByteArrayAccess. The subset consists of only the simple
- * shift and boolean operations needed for the one current client of this
- * class (sun.jkernel.StandaloneSHA) and omits optimization code and comments
- * not relevant to the subset.  No semantic changes have been made.
- * A few long lines were broken to conform to JDK coding style.
- * Pete Soper, August, 2007.
- */
-
-package sun.jkernel;
-
-/**
- * Methods for converting between byte[] and int[]/long[].
- *
- * @since   1.6
- * @version 1.1, 05/26/06
- * @author  Andreas Sterbenz
- */
-final class StandaloneByteArrayAccess {
-
-    private StandaloneByteArrayAccess() {
-        // empty
-    }
-
-    /**
-     * byte[] to int[] conversion, little endian byte order.
-     */
-    static void b2iLittle(byte[] in, int inOfs, int[] out, int outOfs,
-        int len) {
-        len += inOfs;
-        while (inOfs < len) {
-            out[outOfs++] = ((in[inOfs    ] & 0xff)      )
-                          | ((in[inOfs + 1] & 0xff) <<  8)
-                          | ((in[inOfs + 2] & 0xff) << 16)
-                          | ((in[inOfs + 3]       ) << 24);
-            inOfs += 4;
-        }
-    }
-
-    /**
-     * int[] to byte[] conversion, little endian byte order.
-     */
-    static void i2bLittle(int[] in, int inOfs, byte[] out, int outOfs,
-        int len) {
-        len += outOfs;
-        while (outOfs < len) {
-            int i = in[inOfs++];
-            out[outOfs++] = (byte)(i      );
-            out[outOfs++] = (byte)(i >>  8);
-            out[outOfs++] = (byte)(i >> 16);
-            out[outOfs++] = (byte)(i >> 24);
-        }
-    }
-
-    /**
-     * byte[] to int[] conversion, big endian byte order.
-     */
-    static void b2iBig(byte[] in, int inOfs, int[] out, int outOfs, int len) {
-        len += inOfs;
-        while (inOfs < len) {
-            out[outOfs++] = ((in[inOfs + 3] & 0xff)      )
-                          | ((in[inOfs + 2] & 0xff) <<  8)
-                          | ((in[inOfs + 1] & 0xff) << 16)
-                          | ((in[inOfs    ]       ) << 24);
-            inOfs += 4;
-        }
-    }
-
-    /**
-     * int[] to byte[] conversion, big endian byte order.
-     */
-    static void i2bBig(int[] in, int inOfs, byte[] out, int outOfs, int len) {
-        len += outOfs;
-        while (outOfs < len) {
-            int i = in[inOfs++];
-            out[outOfs++] = (byte)(i >> 24);
-            out[outOfs++] = (byte)(i >> 16);
-            out[outOfs++] = (byte)(i >>  8);
-            out[outOfs++] = (byte)(i      );
-        }
-    }
-
-    // Store one 32-bit value into out[outOfs..outOfs+3] in big endian order.
-    static void i2bBig4(int val, byte[] out, int outOfs) {
-        out[outOfs    ] = (byte)(val >> 24);
-        out[outOfs + 1] = (byte)(val >> 16);
-        out[outOfs + 2] = (byte)(val >>  8);
-        out[outOfs + 3] = (byte)(val      );
-    }
-
-    /**
-     * byte[] to long[] conversion, big endian byte order.
-     */
-    static void b2lBig(byte[] in, int inOfs, long[] out, int outOfs, int len) {
-        len += inOfs;
-        while (inOfs < len) {
-            int i1 = ((in[inOfs + 3] & 0xff)      )
-                   | ((in[inOfs + 2] & 0xff) <<  8)
-                   | ((in[inOfs + 1] & 0xff) << 16)
-                   | ((in[inOfs    ]       ) << 24);
-            inOfs += 4;
-            int i2 = ((in[inOfs + 3] & 0xff)      )
-                   | ((in[inOfs + 2] & 0xff) <<  8)
-                   | ((in[inOfs + 1] & 0xff) << 16)
-                   | ((in[inOfs    ]       ) << 24);
-            out[outOfs++] = ((long)i1 << 32) | (i2 & 0xffffffffL);
-            inOfs += 4;
-        }
-    }
-
-    /**
-     * long[] to byte[] conversion
-     */
-    static void l2bBig(long[] in, int inOfs, byte[] out, int outOfs, int len) {
-        len += outOfs;
-        while (outOfs < len) {
-            long i = in[inOfs++];
-            out[outOfs++] = (byte)(i >> 56);
-            out[outOfs++] = (byte)(i >> 48);
-            out[outOfs++] = (byte)(i >> 40);
-            out[outOfs++] = (byte)(i >> 32);
-            out[outOfs++] = (byte)(i >> 24);
-            out[outOfs++] = (byte)(i >> 16);
-            out[outOfs++] = (byte)(i >>  8);
-            out[outOfs++] = (byte)(i      );
-        }
-    }
-
-}
--- a/jdk/src/share/classes/sun/jkernel/StandaloneMessageDigest.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,395 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-/*
- * This is a combination and adaptation of subsets of
- * <code>java.security.MessageDigest</code> and
- * <code>sun.security.provider.DigestBase</code> to provide a class offering
- * most of the same public methods of <code>MessageDigest</code> while not
- * depending on the Java Security Framework.
- * <p>
- * One algorithm is currently supported: "SHA-1".
- * <p>
- * NOTE If <code>java.security.MessageDigest</code>,
- * <code>sun.security.provider.DigestBase</code> or
- * <code>sun.security.provider.SHA</code> are modified, review of those
- * modifications should be done to determine any possible implications for this
- * class and <code>StandaloneSHA</code>.
- */
-
-package sun.jkernel;
-
-import java.security.DigestException;
-import java.security.ProviderException;
-import java.security.NoSuchAlgorithmException;
-
-/**
- * (Adapted from the <code>sun.security.provider.DigestBase</code> doc).
- * This is a simple subset of the Common base message digest implementation
- * for the Sun provider.
- * It implements most of the JCA methods as suitable for a Java message
- * digest
- * implementation of an algorithm based on a compression function (as all
- * commonly used algorithms are). The individual digest subclasses only need to
- * implement the following methods:
- *
- *  . abstract void implCompress(byte[] b, int ofs);
- *  . abstract void implDigest(byte[] out, int ofs);
- *  . abstract void implReset();
- * <p>
- * No support for a clone() method is provided.
- * <p>
- * See the inline documentation for details.
- *
- * @since   1.5
- * @version 1.3, 08/08/07
- * @author  Andreas Sterbenz (MessageDigest)
- * @author  Pete Soper (this derived class)
- */
-public abstract class StandaloneMessageDigest {
-
-     public static final boolean debug = false;
-
-    /*
-     * (Copied/adapted from <code>java.security.MessageDigest</code>
-     *
-     * This is a subset/simplification <code>java.security.MessageDigest</code>
-     * that supports a fixed set of hashcode mechanisms (currently just
-     * SHA-1) while preserving the following MessageDigest methods:
-     *
-     * public MessageDigest getInstance(String algorithm)
-     * public final int getDigestLength()
-     * public void reset()
-     * public byte[] digest()
-     * public void update(byte[] input, int offset, int len)
-     * public final String getAlgorithm()
-     * <p>
-     * NOTE that the clone() method is not provided.
-     */
-
-    /**
-     * Prevent direct instantiation except via the factory method.
-     */
-
-    private StandaloneMessageDigest() {
-        // Keep javac happy.
-        digestLength = 0;
-        blockSize = 0;
-        algorithm = null;
-        buffer = null;
-    }
-
-    private String algorithm;
-
-    // The state of this digest
-    private static final int INITIAL = 0;
-    private static final int IN_PROGRESS = 1;
-    private int state = INITIAL;
-
-    /**
-     * Returns a StandaloneMessageDigest object that implements the specified
-     * digest algorithm.
-     *
-     * <p> This method returns a new StandaloneMessageDigest for a single
-     * algorithm provider.
-     *
-     * @param algorithm the name of the algorithm requested.
-     *
-     * @return a standalone Message Digest object that implements the specified algorithm.
-     *
-     * @exception NoSuchAlgorithmException if algorithm not supported
-     *
-     */
-    public static StandaloneMessageDigest getInstance(String algorithm)
-        throws NoSuchAlgorithmException {
-        if (! algorithm.equals("SHA-1")) {
-            throw new NoSuchAlgorithmException(algorithm + " not found");
-        } else {
-            return new StandaloneSHA();
-        }
-    }
-
-    /**
-     * Updates the digest using the specified array of bytes, starting
-     * at the specified offset.
-     *
-     * @param input the array of bytes.
-     *
-     * @param offset the offset to start from in the array of bytes.
-     *
-     * @param len the number of bytes to use, starting at
-     * <code>offset</code>.
-     */
-    public void update(byte[] input, int offset, int len) {
-        if (debug) {
-            System.out.println("StandaloneMessageDigest.update");
-            (new Exception()).printStackTrace();
-        }
-        if (input == null) {
-            throw new IllegalArgumentException("No input buffer given");
-        }
-        if (input.length - offset < len) {
-            throw new IllegalArgumentException("Input buffer too short");
-        }
-        // No need to check for negative offset: engineUpdate does this
-
-        engineUpdate(input, offset, len);
-        state = IN_PROGRESS;
-    }
-
-    /**
-     * Completes the hash computation by performing final operations
-     * such as padding. The digest is reset after this call is made.
-     *
-     * @return the array of bytes for the resulting hash value.
-     */
-    public byte[] digest() {
-        if (debug) {
-            System.out.println("StandaloneMessageDigest.digest");
-        }
-        /* Resetting is the responsibility of implementors. */
-        byte[] result = engineDigest();
-        state = INITIAL;
-        return result;
-    }
-
-    /**
-     * Compares two digests for equality. Does a simple byte compare.
-     *
-     * @param digesta one of the digests to compare.
-     *
-     * @param digestb the other digest to compare.
-     *
-     * @return true if the digests are equal, false otherwise.
-     */
-    public static boolean isEqual(byte digesta[], byte digestb[]) {
-        if (digesta.length != digestb.length)
-            return false;
-
-        for (int i = 0; i < digesta.length; i++) {
-            if (digesta[i] != digestb[i]) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Resets the digest for further use.
-     */
-    public void reset() {
-        if (debug) {
-            System.out.println("StandaloneMessageDigest.reset");
-        }
-        engineReset();
-        state = INITIAL;
-    }
-
-    /**
-     * Returns a string that identifies the algorithm, independent of
-     * implementation details. The name should be a standard
-     * Java Security name (such as "SHA", "MD5", and so on).
-     * See Appendix A in the <a href=
-     * "../../../technotes/guides/security/crypto/CryptoSpec.html#AppA">
-     * Java Cryptography Architecture API Specification &amp; Reference </a>
-     * for information about standard algorithm names.
-     *
-     * @return the name of the algorithm
-     */
-    public final String getAlgorithm() {
-        return this.algorithm;
-    }
-
-    /**
-     * Returns the length of the digest in bytes.
-     *
-     * @return the digest length in bytes.
-     *
-     * @since 1.2
-     */
-    public final int getDigestLength() {
-        return engineGetDigestLength();
-    }
-
-    //* End of copied/adapted <code>java.security.MessageDigest</code>
-
-    // Start of copied/adapted <code>sun.security.provider.DigestBase</code>
-
-    // one element byte array, temporary storage for update(byte)
-    private byte[] oneByte;
-
-    // length of the message digest in bytes
-    private final int digestLength;
-
-    // size of the input to the compression function in bytes
-    private final int blockSize;
-    // buffer to store partial blocks, blockSize bytes large
-    // Subclasses should not access this array directly except possibly in their
-    // implDigest() method. See MD5.java as an example.
-    final byte[] buffer;
-    // offset into buffer
-    private int bufOfs;
-
-    // number of bytes processed so far. subclasses should not modify
-    // this value.
-    // also used as a flag to indicate reset status
-    // -1: need to call engineReset() before next call to update()
-    //  0: is already reset
-    long bytesProcessed;
-
-    /**
-     * Main constructor.
-     */
-    StandaloneMessageDigest(String algorithm, int digestLength, int blockSize) {
-        // super();
-        this.algorithm = algorithm;
-        this.digestLength = digestLength;
-        this.blockSize = blockSize;
-        buffer = new byte[blockSize];
-    }
-
-    // return digest length. See JCA doc.
-    protected final int engineGetDigestLength() {
-        return digestLength;
-    }
-
-    // single byte update. See JCA doc.
-    protected final void engineUpdate(byte b) {
-        if (oneByte == null) {
-            oneByte = new byte[1];
-        }
-        oneByte[0] = b;
-        engineUpdate(oneByte, 0, 1);
-    }
-
-    // array update. See JCA doc.
-    protected final void engineUpdate(byte[] b, int ofs, int len) {
-        if (len == 0) {
-            return;
-        }
-        if ((ofs < 0) || (len < 0) || (ofs > b.length - len)) {
-            throw new ArrayIndexOutOfBoundsException();
-        }
-        if (bytesProcessed < 0) {
-            engineReset();
-        }
-        bytesProcessed += len;
-        // if buffer is not empty, we need to fill it before proceeding
-        if (bufOfs != 0) {
-            int n = Math.min(len, blockSize - bufOfs);
-            System.arraycopy(b, ofs, buffer, bufOfs, n);
-            bufOfs += n;
-            ofs += n;
-            len -= n;
-            if (bufOfs >= blockSize) {
-                // compress completed block now
-                implCompress(buffer, 0);
-                bufOfs = 0;
-            }
-        }
-        // compress complete blocks
-        while (len >= blockSize) {
-            implCompress(b, ofs);
-            len -= blockSize;
-            ofs += blockSize;
-        }
-        // copy remainder to buffer
-        if (len > 0) {
-            System.arraycopy(b, ofs, buffer, 0, len);
-            bufOfs = len;
-        }
-    }
-
-    // reset this object. See JCA doc.
-    protected final void engineReset() {
-        if (bytesProcessed == 0) {
-            // already reset, ignore
-            return;
-        }
-        implReset();
-        bufOfs = 0;
-        bytesProcessed = 0;
-    }
-
-    // return the digest. See JCA doc.
-    protected final byte[] engineDigest() throws ProviderException {
-        byte[] b = new byte[digestLength];
-        try {
-            engineDigest(b, 0, b.length);
-        } catch (DigestException e) {
-            throw (ProviderException)
-                new ProviderException("Internal error").initCause(e);
-        }
-        return b;
-    }
-
-    // return the digest in the specified array. See JCA doc.
-    protected final int engineDigest(byte[] out, int ofs, int len)
-            throws DigestException {
-        if (len < digestLength) {
-            throw new DigestException("Length must be at least "
-                + digestLength + " for " + algorithm + "digests");
-        }
-        if ((ofs < 0) || (len < 0) || (ofs > out.length - len)) {
-            throw new DigestException("Buffer too short to store digest");
-        }
-        if (bytesProcessed < 0) {
-            engineReset();
-        }
-        implDigest(out, ofs);
-        bytesProcessed = -1;
-        return digestLength;
-    }
-
-    /**
-     * Core compression function. Processes blockSize bytes at a time
-     * and updates the state of this object.
-     */
-    abstract void implCompress(byte[] b, int ofs);
-
-    /**
-     * Return the digest. Subclasses do not need to reset() themselves,
-     * StandaloneMessageDigest calls implReset() when necessary.
-     */
-    abstract void implDigest(byte[] out, int ofs);
-
-    /**
-     * Reset subclass specific state to their initial values. StandaloneMessageDigest
-     * calls this method when necessary.
-     */
-    abstract void implReset();
-
-    // padding used for the MD5, and SHA-* message digests
-    static final byte[] padding;
-
-    static {
-        // we need 128 byte padding for SHA-384/512
-        // and an additional 8 bytes for the high 8 bytes of the 16
-        // byte bit counter in SHA-384/512
-        padding = new byte[136];
-        padding[0] = (byte)0x80;
-    }
-
-}
--- a/jdk/src/share/classes/sun/jkernel/StandaloneSHA.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.jkernel;
-
-import static sun.jkernel.StandaloneByteArrayAccess.*;
-
-/**
- * This is a slightly modified subset of the
- * <code>sun.security.provider.SHA</code> class that
- * is not dependent on the regular Java Security framework classes. It
- * implements the Secure Hash Algorithm (SHA-1) developed by
- * the National Institute of Standards and Technology along with the
- * National Security Agency.  This is the updated version of SHA
- * fip-180 as superseded by fip-180-1.
- * <p>
- * The <code>sun.security.provider.SHA.clonde()</code> method is not
- * implemented and other, formerly public methods, are package private.
- *
- */
-final class StandaloneSHA extends StandaloneMessageDigest {
-
-    static final boolean debug = false;
-
-    // Buffer of int's and count of characters accumulated
-    // 64 bytes are included in each hash block so the low order
-    // bits of count are used to know how to pack the bytes into ints
-    // and to know when to compute the block and start the next one.
-    private final int[] W;
-
-    // state of this
-    private final int[] state;
-
-    /**
-     * Creates a new StandaloneSHA object.
-     */
-    StandaloneSHA() {
-        super("SHA-1", 20, 64);
-        state = new int[5];
-        W = new int[80];
-        implReset();
-    }
-
-    /**
-     * Resets the buffers and hash value to start a new hash.
-     */
-    void implReset() {
-        if (debug) {
-            System.out.print("StandaloneSHA.implR: " );
-        }
-        state[0] = 0x67452301;
-        state[1] = 0xefcdab89;
-        state[2] = 0x98badcfe;
-        state[3] = 0x10325476;
-        state[4] = 0xc3d2e1f0;
-    }
-
-    /**
-     * Computes the final hash and copies the 20 bytes to the output array.
-     */
-    void implDigest(byte[] out, int ofs) {
-        if (debug) {
-            System.out.print("StandaloneSHA.implD: " );
-        }
-        long bitsProcessed = bytesProcessed << 3;
-
-        int index = (int)bytesProcessed & 0x3f;
-        int padLen = (index < 56) ? (56 - index) : (120 - index);
-
-        engineUpdate(padding, 0, padLen);
-
-        // System.out.println("Inserting: " + bitsProcessed);
-        StandaloneByteArrayAccess.i2bBig4((int)(bitsProcessed >>> 32), buffer, 56);
-        StandaloneByteArrayAccess.i2bBig4((int)bitsProcessed, buffer, 60);
-        implCompress(buffer, 0);
-
-        StandaloneByteArrayAccess.i2bBig(state, 0, out, ofs, 20);
-    }
-
-    // Constants for each round
-    private final static int round1_kt = 0x5a827999;
-    private final static int round2_kt = 0x6ed9eba1;
-    private final static int round3_kt = 0x8f1bbcdc;
-    private final static int round4_kt = 0xca62c1d6;
-
-    /**
-     * Compute a the hash for the current block.
-     *
-     * This is in the same vein as Peter Gutmann's algorithm listed in
-     * the back of Applied Cryptography, Compact implementation of
-     * "old" NIST Secure Hash Algorithm.
-     */
-    void implCompress(byte[] buf, int ofs) {
-
-        if (debug) {
-            System.out.print("StandaloneSHA.implC: " );
-            for (int i=ofs; i<buf.length; i++) {
-                System.out.format("%02X",buf[i]);
-            }
-            System.out.println();
-        }
-
-        StandaloneByteArrayAccess.b2iBig(buf, ofs, W, 0, 64);
-
-        // The first 16 ints have the byte stream, compute the rest of
-        // the buffer
-        for (int t = 16; t <= 79; t++) {
-            int temp = W[t-3] ^ W[t-8] ^ W[t-14] ^ W[t-16];
-            W[t] = (temp << 1) | (temp >>> 31);
-        }
-
-        int a = state[0];
-        int b = state[1];
-        int c = state[2];
-        int d = state[3];
-        int e = state[4];
-
-        // Round 1
-        for (int i = 0; i < 20; i++) {
-            int temp = ((a<<5) | (a>>>(32-5))) +
-                ((b&c)|((~b)&d))+ e + W[i] + round1_kt;
-            e = d;
-            d = c;
-            c = ((b<<30) | (b>>>(32-30)));
-            b = a;
-            a = temp;
-        }
-
-        // Round 2
-        for (int i = 20; i < 40; i++) {
-            int temp = ((a<<5) | (a>>>(32-5))) +
-                (b ^ c ^ d) + e + W[i] + round2_kt;
-            e = d;
-            d = c;
-            c = ((b<<30) | (b>>>(32-30)));
-            b = a;
-            a = temp;
-        }
-
-        // Round 3
-        for (int i = 40; i < 60; i++) {
-            int temp = ((a<<5) | (a>>>(32-5))) +
-                ((b&c)|(b&d)|(c&d)) + e + W[i] + round3_kt;
-            e = d;
-            d = c;
-            c = ((b<<30) | (b>>>(32-30)));
-            b = a;
-            a = temp;
-        }
-
-        // Round 4
-        for (int i = 60; i < 80; i++) {
-            int temp = ((a<<5) | (a>>>(32-5))) +
-                (b ^ c ^ d) + e + W[i] + round4_kt;
-            e = d;
-            d = c;
-            c = ((b<<30) | (b>>>(32-30)));
-            b = a;
-            a = temp;
-        }
-        state[0] += a;
-        state[1] += b;
-        state[2] += c;
-        state[3] += d;
-        state[4] += e;
-    }
-
-}
--- a/jdk/src/share/classes/sun/jvmstat/monitor/MonitoredVmUtil.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/jvmstat/monitor/MonitoredVmUtil.java	Wed Jul 05 17:35:13 2017 +0200
@@ -179,18 +179,4 @@
         }
     }
 
-    /**
-     * Returns true if the target VM is a kernel VM
-     *
-     * @param vm the target MonitoredVm
-     */
-    public static boolean isKernelVM(MonitoredVm vm) throws MonitorException {
-        StringMonitor jvmCapabilities =
-               (StringMonitor)vm.findByName("sun.rt.jvmCapabilities");
-        if (jvmCapabilities == null) {
-             return false;
-        } else {
-             return jvmCapabilities.stringValue().charAt(IS_KERNEL_VM) == '1';
-        }
-    }
 }
--- a/jdk/src/share/classes/sun/launcher/LauncherHelper.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/launcher/LauncherHelper.java	Wed Jul 05 17:35:13 2017 +0200
@@ -63,8 +63,6 @@
 
 public enum LauncherHelper {
     INSTANCE;
-    private static final String defaultBundleName =
-            "sun.launcher.resources.launcher";
     private static final String MAIN_CLASS = "Main-Class";
 
     private static StringBuilder outBuf = new StringBuilder();
@@ -76,11 +74,14 @@
     private static final String PROP_SETTINGS   = "Property settings:";
     private static final String LOCALE_SETTINGS = "Locale settings:";
 
-    private static synchronized ResourceBundle getLauncherResourceBundle() {
-        if (javarb == null) {
-            javarb = ResourceBundle.getBundle(defaultBundleName);
-        }
-        return javarb;
+    // sync with java.c and sun.misc.VM
+    private static final String diagprop = "sun.java.launcher.diag";
+
+    private static final String defaultBundleName =
+            "sun.launcher.resources.launcher";
+    private static class ResourceBundleHolder {
+        private static final ResourceBundle RB =
+                ResourceBundle.getBundle(defaultBundleName);
     }
 
     /*
@@ -308,7 +309,7 @@
      * apply any arguments that we might pass.
      */
     private static String getLocalizedMessage(String key, Object... args) {
-        String msg = getLauncherResourceBundle().getString(key);
+        String msg = ResourceBundleHolder.RB.getString(key);
         return (args != null) ? MessageFormat.format(msg, args) : msg;
     }
 
@@ -380,25 +381,29 @@
                 File.pathSeparator));
     }
 
-    static String getMainClassFromJar(String jarname) throws IOException {
-        JarFile jarFile = null;
+    static String getMainClassFromJar(PrintStream ostream, String jarname) {
         try {
-            jarFile = new JarFile(jarname);
-            Manifest manifest = jarFile.getManifest();
-            if (manifest == null) {
-                throw new IOException("manifest not found in " + jarname);
+            JarFile jarFile = null;
+            try {
+                jarFile = new JarFile(jarname);
+                Manifest manifest = jarFile.getManifest();
+                if (manifest == null) {
+                    abort(ostream, null, "java.launcher.jar.error2", jarname);
+                }
+                Attributes mainAttrs = manifest.getMainAttributes();
+                if (mainAttrs == null) {
+                    abort(ostream, null, "java.launcher.jar.error3", jarname);
+                }
+                return mainAttrs.getValue(MAIN_CLASS).trim();
+            } finally {
+                if (jarFile != null) {
+                    jarFile.close();
+                }
             }
-            Attributes mainAttrs = manifest.getMainAttributes();
-            if (mainAttrs == null) {
-                throw new IOException("no main mainifest attributes, in " +
-                        jarname);
-            }
-            return mainAttrs.getValue(MAIN_CLASS).trim();
-        } finally {
-            if (jarFile != null) {
-                jarFile.close();
-            }
+        } catch (IOException ioe) {
+            abort(ostream, ioe, "java.launcher.jar.error1", jarname);
         }
+        return null;
     }
 
 
@@ -409,6 +414,20 @@
     private static final int LM_CLASS   = 1;
     private static final int LM_JAR     = 2;
 
+    static void abort(PrintStream ostream, Throwable t, String msgKey, Object... args) {
+        if (msgKey != null) {
+            ostream.println(getLocalizedMessage(msgKey, args));
+        }
+        if (sun.misc.VM.getSavedProperty(diagprop) != null) {
+            if (t != null) {
+                t.printStackTrace();
+            } else {
+                Thread.currentThread().dumpStack();
+            }
+        }
+        System.exit(1);
+    }
+
     /**
      * This method does the following:
      * 1. gets the classname from a Jar's manifest, if necessary
@@ -426,39 +445,31 @@
      * @param isJar
      * @param name
      * @return
-     * @throws java.io.IOException
      */
     public static Class<?> checkAndLoadMain(boolean printToStderr,
                                             int mode,
-                                            String what) throws IOException
-    {
-
-        ClassLoader ld = ClassLoader.getSystemClassLoader();
-
+                                            String what) {
+        final PrintStream ostream = (printToStderr) ? System.err : System.out;
+        final ClassLoader ld = ClassLoader.getSystemClassLoader();
         // get the class name
         String cn = null;
         switch (mode) {
-        case LM_CLASS:
-            cn = what;
-            break;
-        case LM_JAR:
-            cn = getMainClassFromJar(what);
-            break;
-        default:
-            throw new InternalError("" + mode + ": Unknown launch mode");
+            case LM_CLASS:
+                cn = what;
+                break;
+            case LM_JAR:
+                cn = getMainClassFromJar(ostream, what);
+                break;
+            default:
+                // should never happen
+                throw new InternalError("" + mode + ": Unknown launch mode");
         }
         cn = cn.replace('/', '.');
-
-        PrintStream ostream = (printToStderr) ? System.err : System.out;
         Class<?> c = null;
         try {
             c = ld.loadClass(cn);
         } catch (ClassNotFoundException cnfe) {
-            ostream.println(getLocalizedMessage("java.launcher.cls.error1",
-                                                cn));
-            NoClassDefFoundError ncdfe = new NoClassDefFoundError(cn);
-            ncdfe.initCause(cnfe);
-            throw ncdfe;
+            abort(ostream, cnfe, "java.launcher.cls.error1", cn);
         }
         signatureDiagnostic(ostream, c);
         return c;
@@ -470,9 +481,7 @@
         try {
             method = clazz.getMethod("main", String[].class);
         } catch (NoSuchMethodException nsme) {
-            ostream.println(getLocalizedMessage("java.launcher.cls.error4",
-                    classname));
-            throw new RuntimeException("Main method not found in " + classname);
+            abort(ostream, null, "java.launcher.cls.error4", classname);
         }
         /*
          * getMethod (above) will choose the correct method, based
@@ -481,17 +490,10 @@
          */
         int mod = method.getModifiers();
         if (!Modifier.isStatic(mod)) {
-            ostream.println(getLocalizedMessage("java.launcher.cls.error2",
-                    "static", classname));
-            throw new RuntimeException("Main method is not static in class " +
-                    classname);
+            abort(ostream, null, "java.launcher.cls.error2", "static", classname);
         }
         if (method.getReturnType() != java.lang.Void.TYPE) {
-            ostream.println(getLocalizedMessage("java.launcher.cls.error3",
-                    classname));
-            throw new RuntimeException("Main method must return a value" +
-                    " of type void in class " +
-                    classname);
+            abort(ostream, null, "java.launcher.cls.error3", classname);
         }
         return;
     }
--- a/jdk/src/share/classes/sun/launcher/resources/launcher.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/launcher/resources/launcher.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -84,6 +84,7 @@
 \                      append to end of bootstrap class path\n\
 \    -Xbootclasspath/p:<directories and zip/jar files separated by {0}>\n\
 \                      prepend in front of bootstrap class path\n\
+\    -Xdiag            show additional diagnostic messages\n\
 \    -Xnoclassgc       disable class garbage collection\n\
 \    -Xincgc           enable incremental garbage collection\n\
 \    -Xloggc:<file>    log GC status to a file with time stamps\n\
@@ -109,7 +110,7 @@
 The -X options are non-standard and subject to change without notice.\n
 
 java.launcher.cls.error1=\
-    Error: Could not find main class {0}
+    Error: Could not find or load main class {0}
 java.launcher.cls.error2=\
     Error: Main method is not {0} in class {1}, please define the main method as:\n\
 \   public static void main(String[] args)
@@ -120,5 +121,7 @@
 java.launcher.cls.error4=\
     Error: Main method not found in class {0}, please define the main method as:\n\
 \   public static void main(String[] args)
-
-
+java.launcher.jar.error1=\
+    Error: An unexpected error occurred while trying to open file {0}
+java.launcher.jar.error2=manifest not found in {0}
+java.launcher.jar.error3=no main manifest attribute, in {0}
--- a/jdk/src/share/classes/sun/management/resources/agent_de.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/management/resources/agent_de.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2005, 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
@@ -28,65 +28,65 @@
 # these are the same as the non-localized level name.
 
 agent.err.error			   = Fehler
-agent.err.exception                = Agent-Ausnahmefehler 
+agent.err.exception                = Ausnahme von Agent ausgel\u00F6st 
 agent.err.warning		   = Warnung
 
-agent.err.configfile.notfound      = Konfigurationsdatei wurde nicht gefunden.
-agent.err.configfile.failed        = Konfigurationsdatei konnte nicht gelesen werden.
-agent.err.configfile.closed.failed = Konfigurationsdatei konnte nicht geschlossen werden.
-agent.err.configfile.access.denied = Zugriff auf Konfigurationsdatei wurde verweigert.
+agent.err.configfile.notfound      = Konfigurationsdatei wurde nicht gefunden
+agent.err.configfile.failed        = Konfigurationsdatei konnte nicht gelesen werden
+agent.err.configfile.closed.failed = Konfigurationsdatei konnte nicht geschlossen werden
+agent.err.configfile.access.denied = Zugriff auf Konfigurationsdatei wurde abgelehnt
 
-agent.err.exportaddress.failed	   = Export der JMX-Anschlussadresse an Instrumentierungspuffer schlug fehl.
+agent.err.exportaddress.failed	   = Export der JMX-Connector-Adresse in Instrumentierungspuffer nicht erfolgreich
 
-agent.err.agentclass.notfound      = Verwaltungsagentenklasse nicht gefunden
-agent.err.agentclass.failed        = Verwaltungsagentenklasse fehlgeschlagen 
-agent.err.premain.notfound         = premain(String) ist in Agentenklasse nicht vorhanden.
-agent.err.agentclass.access.denied = Zugriff auf premain(String) wurde verweigert.
-agent.err.invalid.agentclass       = Ung\u00fcltiger Eigenschaftswert f\u00fcr com.sun.management.agent.class
+agent.err.agentclass.notfound      = Management Agent-Klasse nicht gefunden
+agent.err.agentclass.failed        = Management Agent-Klasse nicht erfolgreich
+agent.err.premain.notfound         = premain(String) ist in Agentklasse nicht vorhanden
+agent.err.agentclass.access.denied = Zugriff auf premain(String) wurde abgelehnt
+agent.err.invalid.agentclass       = Ung\u00FCltiger Eigenschaftswert f\u00FCr com.sun.management.agent.class
 
-agent.err.invalid.jmxremote.port   = Ung\u00fcltige Nummer f\u00fcr com.sun.management.jmxremote.port
+agent.err.invalid.jmxremote.port   = Ung\u00FCltige Nummer f\u00FCr com.sun.management.jmxremote.port
 
 agent.err.file.not.set               = Datei nicht angegeben
 agent.err.file.not.readable          = Datei nicht lesbar
 agent.err.file.read.failed           = Datei konnte nicht gelesen werden
-agent.err.file.not.found             = Datei wurde nicht gefunden 
-agent.err.file.access.not.restricted = Lesezugriff auf die Datei muss eingeschr\u00e4nkt sein
+agent.err.file.not.found             = Datei wurde nicht gefunden
+agent.err.file.access.not.restricted = Lesezugriff auf Datei muss eingeschr\u00E4nkt werden
 
-agent.err.password.file.notset     = Es wurde keine Passwortdatei angegeben, obwohl com.sun.management.jmxremote.authenticate auf \"true\" gesetzt ist.
-agent.err.password.file.not.readable = Passwortdatei kann nicht gelesen werden.
-agent.err.password.file.read.failed = Passwortdatei konnte nicht gelesen werden.
-agent.err.password.file.notfound   = Passwortdatei konnte nicht gefunden werden.
-agent.err.password.file.access.notrestricted = Lesezugriff auf Passwortdatei muss eingeschr\u00e4nkt sein.
+agent.err.password.file.notset     = Es wurde keine Kennwortdatei angegeben, obwohl com.sun.management.jmxremote.authenticate auf \"true\" gesetzt ist
+agent.err.password.file.not.readable = Kennwortdatei nicht lesbar
+agent.err.password.file.read.failed = Kennwortdatei konnte nicht gelesen werden
+agent.err.password.file.notfound   = Kennwortdatei nicht gefunden
+agent.err.password.file.access.notrestricted = Lesezugriff auf Kennwortdatei muss eingeschr\u00E4nkt werden
 
-agent.err.access.file.notset       = Es wurde keine Zugriffsdatei angegeben, obwohl com.sun.management.jmxremote.authenticate auf \"true\" gesetzt ist.
-agent.err.access.file.not.readable = Zugriffsdatei kann nicht gelesen werden.
-agent.err.access.file.read.failed  = Zugriffsdatei konnte nicht gelesen werden.
-agent.err.access.file.notfound     = Zugriffsdatei konnte nicht gefunden werden.
+agent.err.access.file.notset       = Es wurde keine Zugriffsdatei angegeben, obwohl com.sun.management.jmxremote.authenticate auf \"true\" gesetzt ist
+agent.err.access.file.not.readable = Zugriffsdatei kann nicht gelesen werden
+agent.err.access.file.read.failed  = Zugriffsdatei konnte nicht gelesen werden
+agent.err.access.file.notfound     = Zugriffsdatei nicht gefunden
 
-agent.err.connector.server.io.error = Fehler bei der JMX-Anschlussserver-Kommunikation
+agent.err.connector.server.io.error = Fehler bei JMX-Connector-Serverkommunikation
 
-agent.err.invalid.option	   = Ung\u00fcltige Option angegeben
-agent.err.invalid.snmp.port        = Ung\u00fcltige Nummer f\u00fcr com.sun.management.snmp.port
-agent.err.invalid.snmp.trap.port   = Ung\u00fcltige Nummer f\u00fcr com.sun.management.snmp.trap
+agent.err.invalid.option	   = Ung\u00FCltige Option angegeben
+agent.err.invalid.snmp.port        = Ung\u00FCltige Nummer f\u00FCr com.sun.management.snmp.port
+agent.err.invalid.snmp.trap.port   = Ung\u00FCltige Nummer f\u00FCr com.sun.management.snmp.trap
 agent.err.unknown.snmp.interface   = Unbekannte SNMP-Schnittstelle
-agent.err.acl.file.notset          = Es wurde keine SNMP-ACL-Datei angegeben, obwohl com.sun.management.snmp.acl auf \"true\" gesetzt ist.
-agent.err.acl.file.notfound        = SNMP-ACL-Datei konnte nicht gefunden werden.
-agent.err.acl.file.not.readable    = SNMP-ACL-Datei kann nicht gelesen werden.
-agent.err.acl.file.read.failed     = SNMP-ACL-Datei konnte nicht gelesen werden.
-agent.err.acl.file.access.notrestricted = Lesezugriff auf Passwortdatei muss eingeschr\u00e4nkt sein.
+agent.err.acl.file.notset          = Es wurde keine SNMP-ACL-Datei angegeben, obwohl com.sun.management.snmp.acl auf \"true\" gesetzt ist
+agent.err.acl.file.notfound        = SNMP-ACL-Datei konnte nicht gefunden werden
+agent.err.acl.file.not.readable    = SNMP-ACL-Datei kann nicht gelesen werden
+agent.err.acl.file.read.failed     = SNMP-ACL-Datei konnte nicht gelesen werden
+agent.err.acl.file.access.notrestricted = Lesezugriff auf Kennwortdatei muss eingeschr\u00E4nkt werden
 
-agent.err.snmp.adaptor.start.failed = Fehler beim Starten des SNMP-Adapters mit Adresse
-agent.err.snmp.mib.init.failed     = Initialisierung von SNMP-MIB fehlgeschlagen mit Fehler
+agent.err.snmp.adaptor.start.failed = Fehler beim Starten des SNMP-Adaptors mit Adresse
+agent.err.snmp.mib.init.failed     = Initialisierung von SNMP-MIB nicht erfolgreich mit Fehler
 
-jmxremote.ConnectorBootstrap.initialize = JMX-Anschlussserver starten:
+jmxremote.ConnectorBootstrap.initialize = JMX-Connector-Server starten:
 jmxremote.ConnectorBootstrap.initialize.noAuthentication = Keine Authentifizierung
-jmxremote.ConnectorBootstrap.initialize.ready = JMX-Anschluss bereit unter: {0}
-jmxremote.ConnectorBootstrap.initialize.password.readonly = Lesezugriff auf Passwortdatei muss eingeschr\u00e4nkt sein. {0}
-jmxremote.ConnectorBootstrap.initialize.file.readonly = Lesezugriff auf die Datei muss eingeschr\u00e4nkt sein: {0}
+jmxremote.ConnectorBootstrap.initialize.ready = JMX-Connector bereit unter: {0}
+jmxremote.ConnectorBootstrap.initialize.password.readonly = Lesezugriff auf Kennwortdatei muss eingeschr\u00E4nkt werden: {0}
+jmxremote.ConnectorBootstrap.initialize.file.readonly = Lesezugriff auf Datei muss eingeschr\u00E4nkt werden: {0}
 
-jmxremote.AdaptorBootstrap.getTargetList.processing = ACL verarbeiten
-jmxremote.AdaptorBootstrap.getTargetList.adding = Ziel hinzuf\u00fcgen: {0}
-jmxremote.AdaptorBootstrap.getTargetList.starting = Adapterserver starten:
-jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adapter bereit.
-jmxremote.AdaptorBootstrap.getTargetList.initialize2 = SNMP-Adapter bereit unter: {0}:{1}
+jmxremote.AdaptorBootstrap.getTargetList.processing = ACL wird verarbeitet
+jmxremote.AdaptorBootstrap.getTargetList.adding = Ziel hinzuf\u00FCgen: {0}
+jmxremote.AdaptorBootstrap.getTargetList.starting = Adaptor-Server starten:
+jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adaptor bereit.
+jmxremote.AdaptorBootstrap.getTargetList.initialize2 = SNMP-Adaptor bereit unter: {0}:{1}
 jmxremote.AdaptorBootstrap.getTargetList.terminate = {0} beenden
--- a/jdk/src/share/classes/sun/management/resources/agent_es.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/management/resources/agent_es.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2005, 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
@@ -28,65 +28,65 @@
 # these are the same as the non-localized level name.
 
 agent.err.error			   = Error
-agent.err.exception                = Excepci\u00f3n generada por el agente 
+agent.err.exception                = Excepci\u00F3n devuelta por el agente 
 agent.err.warning		   = Advertencia
 
-agent.err.configfile.notfound      = No se ha encontrado el archivo de configuraci\u00f3n
-agent.err.configfile.failed        = Error al leer el archivo de configuraci\u00f3n
-agent.err.configfile.closed.failed = Error al cerrar el archivo de configuraci\u00f3n
-agent.err.configfile.access.denied = Acceso denegado al archivo de configuraci\u00f3n
+agent.err.configfile.notfound      = No se ha encontrado el archivo de configuraci\u00F3n
+agent.err.configfile.failed        = Fallo al leer el archivo de configuraci\u00F3n
+agent.err.configfile.closed.failed = Fallo al cerrar el archivo de configuraci\u00F3n
+agent.err.configfile.access.denied = Acceso denegado al archivo de configuraci\u00F3n
 
-agent.err.exportaddress.failed	   = Error de exportaci\u00f3n de la direcci\u00f3n del conector JMX al b\u00fafer de instrumentaci\u00f3n
+agent.err.exportaddress.failed	   = Fallo al exportar la direcci\u00F3n del conector JMX al buffer de instrumentaci\u00F3n
 
-agent.err.agentclass.notfound      = Clase de agente de administraci\u00f3n no encontrada
-agent.err.agentclass.failed        = Error de clase de agente de administraci\u00f3n 
+agent.err.agentclass.notfound      = Clase de agente de gesti\u00F3n no encontrada
+agent.err.agentclass.failed        = Fallo de clase de agente de gesti\u00F3n 
 agent.err.premain.notfound         = premain(String) no existe en la clase del agente
 agent.err.agentclass.access.denied = Acceso denegado a premain(String)
-agent.err.invalid.agentclass       = Valor de propiedad com.sun.management.agent.class no v\u00e1lido
+agent.err.invalid.agentclass       = Valor de propiedad com.sun.management.agent.class no v\u00E1lido
 
-agent.err.invalid.jmxremote.port   = N\u00famero com.sun.management.jmxremote.port no v\u00e1lido
+agent.err.invalid.jmxremote.port   = N\u00FAmero com.sun.management.jmxremote.port no v\u00E1lido
 
 agent.err.file.not.set               = Archivo no especificado
 agent.err.file.not.readable          = Archivo ilegible
-agent.err.file.read.failed           = Error al leer el archivo
+agent.err.file.read.failed           = Fallo al leer el archivo
 agent.err.file.not.found             = Archivo no encontrado
-agent.err.file.access.not.restricted = Se debe restringir el acceso de lectura al archivo
+agent.err.file.access.not.restricted = El acceso de lectura al archivo debe ser restringido
 
-agent.err.password.file.notset     = El archivo de contrase\u00f1as no se ha especificado, pero com.sun.management.jmxremote.authenticate=true
-agent.err.password.file.not.readable = No se puede leer el archivo de contrase\u00f1as
-agent.err.password.file.read.failed = Error al leer el archivo de contrase\u00f1as
-agent.err.password.file.notfound   = Archivo de contrase\u00f1as no encontrado
-agent.err.password.file.access.notrestricted = Se debe restringir el acceso de lectura al archivo de contrase\u00f1as
+agent.err.password.file.notset     = El archivo de contrase\u00F1as no se ha especificado, pero com.sun.management.jmxremote.authenticate=true
+agent.err.password.file.not.readable = No se puede leer el archivo de contrase\u00F1as
+agent.err.password.file.read.failed = Fallo al leer el archivo de contrase\u00F1as
+agent.err.password.file.notfound   = Archivo de contrase\u00F1as no encontrado
+agent.err.password.file.access.notrestricted = Se debe restringir el acceso de lectura al archivo de contrase\u00F1as
 
 agent.err.access.file.notset       = El archivo de acceso no se ha especificado, pero com.sun.management.jmxremote.authenticate=true
 agent.err.access.file.not.readable = No se puede leer el archivo de acceso
-agent.err.access.file.read.failed  = Error al leer el archivo de acceso
+agent.err.access.file.read.failed  = Fallo al leer el archivo de acceso
 agent.err.access.file.notfound     = Archivo de acceso no encontrado
 
-agent.err.connector.server.io.error = Error de comunicaci\u00f3n con el servidor de conector JMX
+agent.err.connector.server.io.error = Error de comunicaci\u00F3n con el servidor de conector JMX
 
-agent.err.invalid.option	   = Opci\u00f3n especificada no v\u00e1lida
-agent.err.invalid.snmp.port        = N\u00famero com.sun.management.snmp.port no v\u00e1lido
-agent.err.invalid.snmp.trap.port   = N\u00famero com.sun.management.snmp.trap no v\u00e1lido
-agent.err.unknown.snmp.interface   = Interfaz SNMP desconocido
-agent.err.acl.file.notset          = No se ha especificado ning\u00fan archivo ACL de SNMP, pero com.sun.management.snmp.acl=true
+agent.err.invalid.option	   = Opci\u00F3n especificada no v\u00E1lida
+agent.err.invalid.snmp.port        = N\u00FAmero de com.sun.management.snmp.port no v\u00E1lido
+agent.err.invalid.snmp.trap.port   = N\u00FAmero de com.sun.management.snmp.trap no v\u00E1lido
+agent.err.unknown.snmp.interface   = Interfaz SNMP desconocida
+agent.err.acl.file.notset          = No se ha especificado ning\u00FAn archivo ACL de SNMP, pero com.sun.management.snmp.acl=true
 agent.err.acl.file.notfound        = Archivo ACL de SNMP no encontrado
 agent.err.acl.file.not.readable    = No se puede leer el archivo ACL de SNMP
-agent.err.acl.file.read.failed     = Error al leer el archivo ACL de SNMP
-agent.err.acl.file.access.notrestricted = Se debe restringir el acceso de lectura al archivo de contrase\u00f1as
+agent.err.acl.file.read.failed     = Fallo al leer el archivo ACL de SNMP
+agent.err.acl.file.access.notrestricted = Se debe restringir el acceso de lectura al archivo de contrase\u00F1as
 
-agent.err.snmp.adaptor.start.failed = No se ha podido iniciar el adaptador de SNMP con la direcci\u00f3n
-agent.err.snmp.mib.init.failed     = No se ha podido inicializar el MIB de SNMP con error
+agent.err.snmp.adaptor.start.failed = Fallo al iniciar el adaptador de SNMP con la direcci\u00F3n
+agent.err.snmp.mib.init.failed     = Fallo al inicializar el MIB de SNMP con error
 
 jmxremote.ConnectorBootstrap.initialize = Iniciando servidor de conector JMX:
-jmxremote.ConnectorBootstrap.initialize.noAuthentication = Sin autenticaci\u00f3n
+jmxremote.ConnectorBootstrap.initialize.noAuthentication = Sin autenticaci\u00F3n
 jmxremote.ConnectorBootstrap.initialize.ready = Conector JMX listo en: {0}
-jmxremote.ConnectorBootstrap.initialize.password.readonly = Se debe restringir el acceso de lectura al archivo de contrase\u00f1as: {0}
-jmxremote.ConnectorBootstrap.initialize.file.readonly = Se debe restringir el acceso de lectura al archivo: {0}
+jmxremote.ConnectorBootstrap.initialize.password.readonly = Se debe restringir el acceso de lectura al archivo de contrase\u00F1as: {0}
+jmxremote.ConnectorBootstrap.initialize.file.readonly = El acceso de lectura al archivo debe ser restringido: {0}
 
 jmxremote.AdaptorBootstrap.getTargetList.processing = Procesando ACL
 jmxremote.AdaptorBootstrap.getTargetList.adding = Agregando destino: {0}
-jmxremote.AdaptorBootstrap.getTargetList.starting = Iniciar servidor adaptador:
+jmxremote.AdaptorBootstrap.getTargetList.starting = Iniciando servidor de adaptador:
 jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adaptador listo.
 jmxremote.AdaptorBootstrap.getTargetList.initialize2 = Adaptador SNMP listo en: {0}:{1}
-jmxremote.AdaptorBootstrap.getTargetList.terminate = finalizar {0}
+jmxremote.AdaptorBootstrap.getTargetList.terminate = terminar {0}
--- a/jdk/src/share/classes/sun/management/resources/agent_fr.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/management/resources/agent_fr.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2005, 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
@@ -28,65 +28,65 @@
 # these are the same as the non-localized level name.
 
 agent.err.error			   = Erreur
-agent.err.exception                = Exception envoy\u00e9e par l'agent 
+agent.err.exception                = Exception envoy\u00E9e par l'agent 
 agent.err.warning		   = Avertissement
 
 agent.err.configfile.notfound      = Fichier de configuration introuvable
 agent.err.configfile.failed        = Impossible de lire le fichier de configuration
 agent.err.configfile.closed.failed = Impossible de fermer le fichier de configuration
-agent.err.configfile.access.denied = Acc\u00e8s au fichier de configuration refus\u00e9
+agent.err.configfile.access.denied = Acc\u00E8s refus\u00E9 au fichier de configuration
 
 agent.err.exportaddress.failed	   = Impossible d'exporter l'adresse du connecteur JMX dans le tampon d'instrumentation
 
 agent.err.agentclass.notfound      = Classe d'agents de gestion introuvable
-agent.err.agentclass.failed        = Une erreur s'est produite au niveau de la classe d'agents de gestion 
+agent.err.agentclass.failed        = Echec de la classe d'agents de gestion 
 agent.err.premain.notfound         = premain(String) n'existe pas dans la classe d'agents
-agent.err.agentclass.access.denied = Acc\u00e8s \u00e0 premain(String) refus\u00e9
-agent.err.invalid.agentclass       = Valeur de propri\u00e9t\u00e9 com.sun.management.agent.class incorrecte
+agent.err.agentclass.access.denied = Acc\u00E8s \u00E0 premain(String) refus\u00E9
+agent.err.invalid.agentclass       = Valeur de propri\u00E9t\u00E9 com.sun.management.agent.class incorrecte
 
-agent.err.invalid.jmxremote.port   = Num\u00e9ro com.sun.management.jmxremote.port incorrect
+agent.err.invalid.jmxremote.port   = Num\u00E9ro com.sun.management.jmxremote.port incorrect
 
-agent.err.file.not.set               = Fichier non sp\u00e9cifi\u00e9
+agent.err.file.not.set               = Fichier non sp\u00E9cifi\u00E9
 agent.err.file.not.readable          = Fichier illisible
 agent.err.file.read.failed           = Impossible de lire le fichier
 agent.err.file.not.found             = Fichier introuvable
-agent.err.file.access.not.restricted = L'acc\u00e8s \u00e0 la lecture du fichier doit \u00eatre limit\u00e9
+agent.err.file.access.not.restricted = L'acc\u00E8s en lecture au fichier doit \u00EAtre limit\u00E9
 
-agent.err.password.file.notset     = Le fichier de mots de passe n'est pas sp\u00e9cifi\u00e9 mais com.sun.management.jmxremote.authenticate=true
+agent.err.password.file.notset     = Le fichier de mots de passe n'est pas sp\u00E9cifi\u00E9 mais com.sun.management.jmxremote.authenticate=true
 agent.err.password.file.not.readable = Fichier de mots de passe illisible
 agent.err.password.file.read.failed = Impossible de lire le fichier de mots de passe
 agent.err.password.file.notfound   = Fichier de mots de passe introuvable
-agent.err.password.file.access.notrestricted = L'acc\u00e8s \u00e0 la lecture du fichier de mots de passe doit \u00eatre limit\u00e9
+agent.err.password.file.access.notrestricted = L'acc\u00E8s en lecture au fichier de mots de passe doit \u00EAtre limit\u00E9
 
-agent.err.access.file.notset       = Le fichier d'acc\u00e8s n'est pas sp\u00e9cifi\u00e9 mais com.sun.management.jmxremote.authenticate=true
-agent.err.access.file.not.readable = Fichier d'acc\u00e8s illisible
-agent.err.access.file.read.failed  = Impossible de lire le fichier d'acc\u00e8s
-agent.err.access.file.notfound     = Fichier d'acc\u00e8s introuvable
+agent.err.access.file.notset       = Le fichier d'acc\u00E8s n'est pas sp\u00E9cifi\u00E9 mais com.sun.management.jmxremote.authenticate=true
+agent.err.access.file.not.readable = Fichier d'acc\u00E8s illisible
+agent.err.access.file.read.failed  = Impossible de lire le fichier d'acc\u00E8s
+agent.err.access.file.notfound     = Fichier d'acc\u00E8s introuvable
 
 agent.err.connector.server.io.error = Erreur de communication avec le serveur du connecteur JMX
 
-agent.err.invalid.option	   = Option sp\u00e9cifi\u00e9e non valide
-agent.err.invalid.snmp.port        = Num\u00e9ro com.sun.management.snmp.port incorrect
-agent.err.invalid.snmp.trap.port   = Num\u00e9ro com.sun.management.snmp.trap incorrect
+agent.err.invalid.option	   = Option sp\u00E9cifi\u00E9e non valide
+agent.err.invalid.snmp.port        = Num\u00E9ro com.sun.management.snmp.port incorrect
+agent.err.invalid.snmp.trap.port   = Num\u00E9ro com.sun.management.snmp.trap incorrect
 agent.err.unknown.snmp.interface   = Interface SNMP inconnue
-agent.err.acl.file.notset          = Aucun fichier SNMP ACL n'est sp\u00e9cifi\u00e9 mais com.sun.management.snmp.acl=true
-agent.err.acl.file.notfound        = Fichier SNMP ACL introuvable
-agent.err.acl.file.not.readable    = Fichier SNMP ACL illisible
-agent.err.acl.file.read.failed     = Impossible de lire le fichier SNMP ACL
-agent.err.acl.file.access.notrestricted = L'acc\u00e8s \u00e0 la lecture du fichier de mots de passe doit \u00eatre limit\u00e9
+agent.err.acl.file.notset          = Aucun fichier de liste de contr\u00F4le d'acc\u00E8s (ACL) SNMP n'est sp\u00E9cifi\u00E9 mais com.sun.management.snmp.acl=true
+agent.err.acl.file.notfound        = Fichier de liste de contr\u00F4le d'acc\u00E8s (ACL) SNMP introuvable
+agent.err.acl.file.not.readable    = Fichier de liste de contr\u00F4le d'acc\u00E8s (ACL) SNMP illisible
+agent.err.acl.file.read.failed     = Impossible de lire le fichier de liste de contr\u00F4le d'acc\u00E8s (ACL) SNMP
+agent.err.acl.file.access.notrestricted = L'acc\u00E8s en lecture au fichier de mots de passe doit \u00EAtre limit\u00E9
 
-agent.err.snmp.adaptor.start.failed = Impossible de d\u00e9marrer l'adaptateur SNMP avec l'adresse
+agent.err.snmp.adaptor.start.failed = Impossible de d\u00E9marrer l'adaptateur SNMP avec l'adresse
 agent.err.snmp.mib.init.failed     = Impossible d'initialiser SNMP MIB avec l'erreur
 
-jmxremote.ConnectorBootstrap.initialize = D\u00e9marrage du serveur du connecteur JMX :
+jmxremote.ConnectorBootstrap.initialize = D\u00E9marrage du serveur du connecteur JMX :
 jmxremote.ConnectorBootstrap.initialize.noAuthentication = Pas d'authentification
-jmxremote.ConnectorBootstrap.initialize.ready = Connecteur JMX pr\u00eat \u00e0 : {0}
-jmxremote.ConnectorBootstrap.initialize.password.readonly = L''acc\u00e8s \u00e0 la lecture du fichier de mots de passe doit \u00eatre limit\u00e9 : {0}
-jmxremote.ConnectorBootstrap.initialize.file.readonly = L''acc\u00e8s \u00e0 la lecture du fichier doit \u00eatre limit\u00e9\u00a0: {0}
+jmxremote.ConnectorBootstrap.initialize.ready = Connecteur JMX pr\u00EAt \u00E0 : {0}
+jmxremote.ConnectorBootstrap.initialize.password.readonly = L''acc\u00E8s en lecture au fichier de mots de passe doit \u00EAtre limit\u00E9 : {0}
+jmxremote.ConnectorBootstrap.initialize.file.readonly = L''acc\u00E8s en lecture au fichier doit \u00EAtre limit\u00E9 : {0}
 
-jmxremote.AdaptorBootstrap.getTargetList.processing = Traitement d'ACL
+jmxremote.AdaptorBootstrap.getTargetList.processing = Traitement de la liste de contr\u00F4le d'acc\u00E8s (ACL)
 jmxremote.AdaptorBootstrap.getTargetList.adding = Ajout de la cible : {0}
-jmxremote.AdaptorBootstrap.getTargetList.starting = D\u00e9marrage du serveur de l'adaptateur :
-jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adaptateur pr\u00eat.
-jmxremote.AdaptorBootstrap.getTargetList.initialize2 = Adaptateur SNMP pr\u00eat sur : {0}:{1}
+jmxremote.AdaptorBootstrap.getTargetList.starting = D\u00E9marrage du serveur de l'adaptateur :
+jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adaptateur pr\u00EAt.
+jmxremote.AdaptorBootstrap.getTargetList.initialize2 = Adaptateur SNMP pr\u00EAt sur : {0}:{1}
 jmxremote.AdaptorBootstrap.getTargetList.terminate = terminer {0}
--- a/jdk/src/share/classes/sun/management/resources/agent_it.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/management/resources/agent_it.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2005, 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
@@ -29,7 +29,7 @@
 
 agent.err.error			   = Errore
 agent.err.exception                = Eccezione dell'agente 
-agent.err.warning		   = Avviso
+agent.err.warning		   = Avvertenza
 
 agent.err.configfile.notfound      = File di configurazione non trovato
 agent.err.configfile.failed        = Errore di lettura file di configurazione
@@ -42,23 +42,23 @@
 agent.err.agentclass.failed        = Errore classe agente gestione 
 agent.err.premain.notfound         = premain(String) non esiste nella classe agente
 agent.err.agentclass.access.denied = Accesso negato a premain(String)
-agent.err.invalid.agentclass       = Valore propriet\u00e0 com.sun.management.agent.class non valido
+agent.err.invalid.agentclass       = Valore propriet\u00E0 com.sun.management.agent.class non valido
 
 agent.err.invalid.jmxremote.port   = Numero com.sun.management.jmxremote.port non valido
 
 agent.err.file.not.set               = File non specificato
 agent.err.file.not.readable          = File non leggibile
-agent.err.file.read.failed           = Lettura del file non riuscita
+agent.err.file.read.failed           = Errore di lettura file
 agent.err.file.not.found             = File non trovato
-agent.err.file.access.not.restricted = L'accesso in lettura al file deve essere limitato
+agent.err.file.access.not.restricted = Limitare l'accesso in lettura al file
 
-agent.err.password.file.notset     = Il file password non \u00e8 specificato ma com.sun.management.jmxremote.authenticate=true
-agent.err.password.file.not.readable = File password non leggibile
-agent.err.password.file.read.failed = Errore di lettura file password
-agent.err.password.file.notfound   = File password non trovato
-agent.err.password.file.access.notrestricted = Limitare l'accesso in lettura al file password
+agent.err.password.file.notset     = Il password file non \u00E8 specificato ma com.sun.management.jmxremote.authenticate=true
+agent.err.password.file.not.readable = Password file non leggibile
+agent.err.password.file.read.failed = Errore di lettura password file
+agent.err.password.file.notfound   = Password file non trovato
+agent.err.password.file.access.notrestricted = Limitare l'accesso in lettura al password file
 
-agent.err.access.file.notset       = Il file di accesso non \u00e8 specificato ma com.sun.management.jmxremote.authenticate=true
+agent.err.access.file.notset       = Il file di accesso non \u00E8 specificato ma com.sun.management.jmxremote.authenticate=true
 agent.err.access.file.not.readable = File di accesso non leggibile
 agent.err.access.file.read.failed  = Errore di lettura file di accesso
 agent.err.access.file.notfound     = File di accesso non trovato
@@ -73,19 +73,19 @@
 agent.err.acl.file.notfound        = File SNMP ACL non trovato
 agent.err.acl.file.not.readable    = File SNMP ACL non leggibile
 agent.err.acl.file.read.failed     = Errore di lettura file SNMP ACL
-agent.err.acl.file.access.notrestricted = Limitare l'accesso in lettura al file password
+agent.err.acl.file.access.notrestricted = Limitare l'accesso in lettura al password file
 
 agent.err.snmp.adaptor.start.failed = Impossibile avviare l'adattatore SNMP con indirizzo
-agent.err.snmp.mib.init.failed     = Impossibile inizializzare MIB SNMP, errore
+agent.err.snmp.mib.init.failed     = Impossibile inizializzare MIB SNMP con errore
 
 jmxremote.ConnectorBootstrap.initialize = Avvio del server connettore JMX:
 jmxremote.ConnectorBootstrap.initialize.noAuthentication = Nessuna autenticazione
 jmxremote.ConnectorBootstrap.initialize.ready = Connettore JMX pronto in: {0}
-jmxremote.ConnectorBootstrap.initialize.password.readonly = Limitare l''accesso in lettura al file password: {0}
+jmxremote.ConnectorBootstrap.initialize.password.readonly = Limitare l''accesso in lettura al password file: {0}
 jmxremote.ConnectorBootstrap.initialize.file.readonly = Limitare l''accesso in lettura al file: {0}
 
 jmxremote.AdaptorBootstrap.getTargetList.processing = Elaborazione ACL
-jmxremote.AdaptorBootstrap.getTargetList.adding = Aggiunta della destinazione: {0}
+jmxremote.AdaptorBootstrap.getTargetList.adding = Aggiunta destinazione: {0}
 jmxremote.AdaptorBootstrap.getTargetList.starting = Avvio del server adattatore:
 jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adattatore pronto.
 jmxremote.AdaptorBootstrap.getTargetList.initialize2 = Adattatore SNMP pronto in: {0}:{1}
--- a/jdk/src/share/classes/sun/management/resources/agent_ja.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/management/resources/agent_ja.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2005, 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
@@ -27,66 +27,66 @@
 # Localizations for Level names.  For the US locale
 # these are the same as the non-localized level name.
 
-agent.err.error			   = \u30a8\u30e9\u30fc
-agent.err.exception                = \u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u304c\u4f8b\u5916\u3092\u30b9\u30ed\u30fc\u3057\u307e\u3057\u305f\u3002 
-agent.err.warning		   = \u8b66\u544a
+agent.err.error			   = \u30A8\u30E9\u30FC
+agent.err.exception                = \u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u304C\u4F8B\u5916\u3092\u30B9\u30ED\u30FC\u3057\u307E\u3057\u305F 
+agent.err.warning		   = \u8B66\u544A
 
-agent.err.configfile.notfound      = \u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
-agent.err.configfile.failed        = \u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u53d6\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
-agent.err.configfile.closed.failed = \u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3092\u30af\u30ed\u30fc\u30ba\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
-agent.err.configfile.access.denied = \u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30a2\u30af\u30bb\u30b9\u304c\u62d2\u5426\u3055\u308c\u307e\u3057\u305f\u3002
+agent.err.configfile.notfound      = \u69CB\u6210\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
+agent.err.configfile.failed        = \u69CB\u6210\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u306B\u5931\u6557\u3057\u307E\u3057\u305F
+agent.err.configfile.closed.failed = \u69CB\u6210\u30D5\u30A1\u30A4\u30EB\u3092\u9589\u3058\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
+agent.err.configfile.access.denied = \u69CB\u6210\u30D5\u30A1\u30A4\u30EB\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F
 
-agent.err.exportaddress.failed	   = JMX \u30b3\u30cd\u30af\u30bf\u30a2\u30c9\u30ec\u30b9\u306e\u8a08\u6e2c\u30d0\u30c3\u30d5\u30a1\u30fc\u3078\u306e\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u306b\u5931\u6557\u3057\u307e\u3057\u305f
+agent.err.exportaddress.failed	   = JMX\u30B3\u30CD\u30AF\u30BF\u30FB\u30A2\u30C9\u30EC\u30B9\u306E\u8A08\u6E2C\u30D0\u30C3\u30D5\u30A1\u3078\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u306B\u5931\u6557\u3057\u307E\u3057\u305F
 
-agent.err.agentclass.notfound      = \u7ba1\u7406\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u30af\u30e9\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
-agent.err.agentclass.failed        = \u7ba1\u7406\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u30af\u30e9\u30b9\u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002 
-agent.err.premain.notfound         = premain(String) \u304c\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u30af\u30e9\u30b9\u306b\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
-agent.err.agentclass.access.denied = premain(String) \u3078\u306e\u30a2\u30af\u30bb\u30b9\u304c\u62d2\u5426\u3055\u308c\u307e\u3057\u305f\u3002
-agent.err.invalid.agentclass       = com.sun.management.agent.class \u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u306e\u5024\u304c\u4e0d\u6b63\u3067\u3059\u3002
+agent.err.agentclass.notfound      = \u7BA1\u7406\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30FB\u30AF\u30E9\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
+agent.err.agentclass.failed        = \u7BA1\u7406\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30FB\u30AF\u30E9\u30B9\u304C\u5931\u6557\u3057\u307E\u3057\u305F 
+agent.err.premain.notfound         = premain(String)\u304C\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30FB\u30AF\u30E9\u30B9\u306B\u5B58\u5728\u3057\u307E\u305B\u3093
+agent.err.agentclass.access.denied = premain(String)\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F
+agent.err.invalid.agentclass       = com.sun.management.agent.class\u30D7\u30ED\u30D1\u30C6\u30A3\u306E\u5024\u304C\u7121\u52B9\u3067\u3059
 
-agent.err.invalid.jmxremote.port   = com.sun.management.jmxremote.port \u306e\u756a\u53f7\u304c\u4e0d\u6b63\u3067\u3059\u3002
+agent.err.invalid.jmxremote.port   = com.sun.management.jmxremote.port\u306E\u756A\u53F7\u304C\u7121\u52B9\u3067\u3059
 
-agent.err.file.not.set               = \u30d5\u30a1\u30a4\u30eb\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-agent.err.file.not.readable          = \u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u53d6\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002
-agent.err.file.read.failed           = \u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002
-agent.err.file.not.found             = \u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093
-agent.err.file.access.not.restricted = \u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u30a2\u30af\u30bb\u30b9\u306f\u5236\u9650\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+agent.err.file.not.set               = \u30D5\u30A1\u30A4\u30EB\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+agent.err.file.not.readable          = \u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u53D6\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093
+agent.err.file.read.failed           = \u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u306B\u5931\u6557\u3057\u307E\u3057\u305F
+agent.err.file.not.found             = \u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F
+agent.err.file.access.not.restricted = \u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u30A2\u30AF\u30BB\u30B9\u306F\u5236\u9650\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
 
-agent.err.password.file.notset     = \u30d1\u30b9\u30ef\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u304c\u3001com.sun.management.jmxremote.authenticate=true \u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
-agent.err.password.file.not.readable = \u30d1\u30b9\u30ef\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u53d6\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002
-agent.err.password.file.read.failed = \u30d1\u30b9\u30ef\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002
-agent.err.password.file.notfound   = \u30d1\u30b9\u30ef\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
-agent.err.password.file.access.notrestricted = \u30d1\u30b9\u30ef\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u30a2\u30af\u30bb\u30b9\u306f\u5236\u9650\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+agent.err.password.file.notset     = \u30D1\u30B9\u30EF\u30FC\u30C9\u30FB\u30D5\u30A1\u30A4\u30EB\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u304C\u3001com.sun.management.jmxremote.authenticate=true\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
+agent.err.password.file.not.readable = \u30D1\u30B9\u30EF\u30FC\u30C9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u53D6\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093
+agent.err.password.file.read.failed = \u30D1\u30B9\u30EF\u30FC\u30C9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u306B\u5931\u6557\u3057\u307E\u3057\u305F
+agent.err.password.file.notfound   = \u30D1\u30B9\u30EF\u30FC\u30C9\u30FB\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
+agent.err.password.file.access.notrestricted = \u30D1\u30B9\u30EF\u30FC\u30C9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u30A2\u30AF\u30BB\u30B9\u306F\u5236\u9650\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
 
-agent.err.access.file.notset       = \u30a2\u30af\u30bb\u30b9\u30d5\u30a1\u30a4\u30eb\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u304c\u3001com.sun.management.jmxremote.authenticate=true \u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
-agent.err.access.file.not.readable = \u30a2\u30af\u30bb\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u53d6\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002
-agent.err.access.file.read.failed  = \u30a2\u30af\u30bb\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002
-agent.err.access.file.notfound     = \u30a2\u30af\u30bb\u30b9\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
+agent.err.access.file.notset       = \u30A2\u30AF\u30BB\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u304C\u3001com.sun.management.jmxremote.authenticate=true\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
+agent.err.access.file.not.readable = \u30A2\u30AF\u30BB\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u53D6\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093
+agent.err.access.file.read.failed  = \u30A2\u30AF\u30BB\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u306B\u5931\u6557\u3057\u307E\u3057\u305F
+agent.err.access.file.notfound     = \u30A2\u30AF\u30BB\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
 
-agent.err.connector.server.io.error = JMX \u30b3\u30cd\u30af\u30bf\u30b5\u30fc\u30d0\u306e\u901a\u4fe1\u30a8\u30e9\u30fc
+agent.err.connector.server.io.error = JMX\u30B3\u30CD\u30AF\u30BF\u30FB\u30B5\u30FC\u30D0\u30FC\u306E\u901A\u4FE1\u30A8\u30E9\u30FC
 
-agent.err.invalid.option	   = \u7121\u52b9\u306a\u5f15\u6570\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f
-agent.err.invalid.snmp.port        = com.sun.management.snmp.port \u306e\u756a\u53f7\u304c\u4e0d\u6b63\u3067\u3059\u3002
-agent.err.invalid.snmp.trap.port   = com.sun.management.snmp.trap \u306e\u756a\u53f7\u304c\u4e0d\u6b63\u3067\u3059\u3002
-agent.err.unknown.snmp.interface   = \u4e0d\u660e\u306a SNMP \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002
-agent.err.acl.file.notset          = SNMP ACL \u30d5\u30a1\u30a4\u30eb\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u304c\u3001com.sun.management.snmp.acl=true \u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
-agent.err.acl.file.notfound        = SNMP ACL \u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
-agent.err.acl.file.not.readable    = SNMP ACL \u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u53d6\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002
-agent.err.acl.file.read.failed     = SNMP ACL \u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002
-agent.err.acl.file.access.notrestricted = \u30d1\u30b9\u30ef\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u30a2\u30af\u30bb\u30b9\u306f\u5236\u9650\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+agent.err.invalid.option	   = \u7121\u52B9\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F
+agent.err.invalid.snmp.port        = com.sun.management.snmp.port\u306E\u756A\u53F7\u304C\u7121\u52B9\u3067\u3059
+agent.err.invalid.snmp.trap.port   = com.sun.management.snmp.trap\u306E\u756A\u53F7\u304C\u7121\u52B9\u3067\u3059
+agent.err.unknown.snmp.interface   = \u4E0D\u660E\u306ASNMP\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059
+agent.err.acl.file.notset          = SNMP ACL\u30D5\u30A1\u30A4\u30EB\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u304C\u3001com.sun.management.snmp.acl=true\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
+agent.err.acl.file.notfound        = SNMP ACL\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
+agent.err.acl.file.not.readable    = SNMP ACL\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u53D6\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093
+agent.err.acl.file.read.failed     = SNMP ACL\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u306B\u5931\u6557\u3057\u307E\u3057\u305F
+agent.err.acl.file.access.notrestricted = \u30D1\u30B9\u30EF\u30FC\u30C9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u30A2\u30AF\u30BB\u30B9\u306F\u5236\u9650\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
 
-agent.err.snmp.adaptor.start.failed = \u3053\u306e\u30a2\u30c9\u30ec\u30b9\u3067 SNMP \u30a2\u30c0\u30d7\u30bf\u3092\u958b\u59cb\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
-agent.err.snmp.mib.init.failed     = \u30a8\u30e9\u30fc\u3067 SNMP MIB \u3092\u521d\u671f\u5316\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+agent.err.snmp.adaptor.start.failed = \u3053\u306E\u30A2\u30C9\u30EC\u30B9\u3067SNMP\u30A2\u30C0\u30D7\u30BF\u3092\u958B\u59CB\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
+agent.err.snmp.mib.init.failed     = \u30A8\u30E9\u30FC\u3067SNMP MIB\u3092\u521D\u671F\u5316\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
 
-jmxremote.ConnectorBootstrap.initialize = JMX \u30b3\u30cd\u30af\u30bf\u30b5\u30fc\u30d0\u3092\u8d77\u52d5\u3057\u3066\u3044\u307e\u3059:
-jmxremote.ConnectorBootstrap.initialize.noAuthentication = \u8a8d\u8a3c\u306a\u3057
-jmxremote.ConnectorBootstrap.initialize.ready = JMX \u30b3\u30cd\u30af\u30bf\u306e\u6e96\u5099\u304c\u3067\u304d\u307e\u3057\u305f: {0}
-jmxremote.ConnectorBootstrap.initialize.password.readonly = \u30d1\u30b9\u30ef\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u30a2\u30af\u30bb\u30b9\u306f\u5236\u9650\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059: {0}
-jmxremote.ConnectorBootstrap.initialize.file.readonly = \u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u30a2\u30af\u30bb\u30b9\u306f\u5236\u9650\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059: {0}
+jmxremote.ConnectorBootstrap.initialize = JMX\u30B3\u30CD\u30AF\u30BF\u30FB\u30B5\u30FC\u30D0\u30FC\u3092\u8D77\u52D5\u3057\u3066\u3044\u307E\u3059:
+jmxremote.ConnectorBootstrap.initialize.noAuthentication = \u8A8D\u8A3C\u306A\u3057
+jmxremote.ConnectorBootstrap.initialize.ready = JMX\u30B3\u30CD\u30AF\u30BF\u306E\u6E96\u5099\u304C\u3067\u304D\u307E\u3057\u305F: {0}
+jmxremote.ConnectorBootstrap.initialize.password.readonly = \u30D1\u30B9\u30EF\u30FC\u30C9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u30A2\u30AF\u30BB\u30B9\u306F\u5236\u9650\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059: {0}
+jmxremote.ConnectorBootstrap.initialize.file.readonly = \u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u30A2\u30AF\u30BB\u30B9\u306F\u5236\u9650\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059: {0}
 
-jmxremote.AdaptorBootstrap.getTargetList.processing = ACL \u3092\u51e6\u7406\u3057\u3066\u3044\u307e\u3059
-jmxremote.AdaptorBootstrap.getTargetList.adding = \u30bf\u30fc\u30b2\u30c3\u30c8\u3092\u8ffd\u52a0\u3057\u3066\u3044\u307e\u3059: {0}
-jmxremote.AdaptorBootstrap.getTargetList.starting = \u30a2\u30c0\u30d7\u30bf\u30b5\u30fc\u30d0\u3092\u8d77\u52d5\u3057\u3066\u3044\u307e\u3059:
-jmxremote.AdaptorBootstrap.getTargetList.initialize1 = \u30a2\u30c0\u30d7\u30bf\u306e\u6e96\u5099\u304c\u3067\u304d\u307e\u3057\u305f
-jmxremote.AdaptorBootstrap.getTargetList.initialize2 = SNMP \u30a2\u30c0\u30d7\u30bf\u306e\u6e96\u5099\u304c\u3067\u304d\u307e\u3057\u305f: {0}:{1}
-jmxremote.AdaptorBootstrap.getTargetList.terminate = {0} \u3092\u7d42\u4e86\u3057\u307e\u3059
+jmxremote.AdaptorBootstrap.getTargetList.processing = ACL\u3092\u51E6\u7406\u3057\u3066\u3044\u307E\u3059
+jmxremote.AdaptorBootstrap.getTargetList.adding = \u30BF\u30FC\u30B2\u30C3\u30C8\u3092\u8FFD\u52A0\u3057\u3066\u3044\u307E\u3059: {0}
+jmxremote.AdaptorBootstrap.getTargetList.starting = \u30A2\u30C0\u30D7\u30BF\u30FB\u30B5\u30FC\u30D0\u30FC\u3092\u8D77\u52D5\u3057\u3066\u3044\u307E\u3059:
+jmxremote.AdaptorBootstrap.getTargetList.initialize1 = \u30A2\u30C0\u30D7\u30BF\u306E\u6E96\u5099\u304C\u3067\u304D\u307E\u3057\u305F\u3002
+jmxremote.AdaptorBootstrap.getTargetList.initialize2 = SNMP\u30A2\u30C0\u30D7\u30BF\u306E\u6E96\u5099\u304C\u3067\u304D\u307E\u3057\u305F: {0}:{1}
+jmxremote.AdaptorBootstrap.getTargetList.terminate = {0}\u3092\u7D42\u4E86\u3057\u307E\u3059
--- a/jdk/src/share/classes/sun/management/resources/agent_ko.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/management/resources/agent_ko.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2005, 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
@@ -27,66 +27,66 @@
 # Localizations for Level names.  For the US locale
 # these are the same as the non-localized level name.
 
-agent.err.error			   = \uc624\ub958
-agent.err.exception                = \uc5d0\uc774\uc804\ud2b8\uc5d0 \uc608\uc678 \ubc1c\uc0dd 
-agent.err.warning		   = \uacbd\uace0
+agent.err.error			   = \uC624\uB958
+agent.err.exception                = \uC5D0\uC774\uC804\uD2B8\uC5D0 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. 
+agent.err.warning		   = \uACBD\uACE0
 
-agent.err.configfile.notfound      = \uad6c\uc131 \ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-agent.err.configfile.failed        = \uad6c\uc131 \ud30c\uc77c \uc77d\uae30\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
-agent.err.configfile.closed.failed = \uad6c\uc131\ud30c\uc77c\uc744 \ub2eb\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
-agent.err.configfile.access.denied = \uad6c\uc131 \ud30c\uc77c\uc5d0 \uc561\uc138\uc2a4\uac00 \uac70\ubd80\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+agent.err.configfile.notfound      = \uAD6C\uC131 \uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+agent.err.configfile.failed        = \uAD6C\uC131 \uD30C\uC77C \uC77D\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+agent.err.configfile.closed.failed = \uAD6C\uC131 \uD30C\uC77C \uB2EB\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+agent.err.configfile.access.denied = \uAD6C\uC131 \uD30C\uC77C\uC5D0 \uB300\uD55C \uC561\uC138\uC2A4\uAC00 \uAC70\uBD80\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
 
-agent.err.exportaddress.failed	   = \ubc84\ud37c \uad6c\ud604\uc744 \uc704\ud574 JMX \ucee4\ub125\ud130 \uc8fc\uc18c\ub97c \uac00\uc838\uc624\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
+agent.err.exportaddress.failed	   = \uAE30\uAE30 \uBC84\uD37C\uB85C JMX \uCEE4\uB125\uD130 \uC8FC\uC18C \uC775\uC2A4\uD3EC\uD2B8\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
 
-agent.err.agentclass.notfound      = \uad00\ub9ac \uc5d0\uc774\uc804\ud2b8 \ud074\ub798\uc2a4\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-agent.err.agentclass.failed        = \uad00\ub9ac \uc5d0\uc774\uc804\ud2b8 \ud074\ub798\uc2a4 \uc2e4\ud328 
-agent.err.premain.notfound         = \uc5d0\uc774\uc804\ud2b8 \ud074\ub798\uc2a4\uc5d0 premain(\ubb38\uc790\uc5f4)\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
-agent.err.agentclass.access.denied = premain(\ubb38\uc790\uc5f4)\uc5d0 \uc561\uc138\uc2a4\uac00 \uac70\ubd80\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
-agent.err.invalid.agentclass       = \uc798\ubabb\ub41c com.sun.management.agent.class \uc18d\uc131 \uac12
+agent.err.agentclass.notfound      = \uAD00\uB9AC \uC5D0\uC774\uC804\uD2B8 \uD074\uB798\uC2A4\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+agent.err.agentclass.failed        = \uAD00\uB9AC \uC5D0\uC774\uC804\uD2B8 \uD074\uB798\uC2A4\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. 
+agent.err.premain.notfound         = \uC5D0\uC774\uC804\uD2B8 \uD074\uB798\uC2A4\uC5D0 premain(\uBB38\uC790\uC5F4)\uC774 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+agent.err.agentclass.access.denied = premain(\uBB38\uC790\uC5F4)\uC5D0 \uB300\uD55C \uC561\uC138\uC2A4\uAC00 \uAC70\uBD80\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+agent.err.invalid.agentclass       = com.sun.management.agent.class \uC18D\uC131 \uAC12\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
 
-agent.err.invalid.jmxremote.port   = \uc798\ubabb\ub41c com.sun.management.jmxremote.port \ubc88\ud638
+agent.err.invalid.jmxremote.port   = com.sun.management.jmxremote.port \uBC88\uD638\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
 
-agent.err.file.not.set               = \ud30c\uc77c\uc774 \uc9c0\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
-agent.err.file.not.readable          = \ud30c\uc77c\uc744 \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-agent.err.file.read.failed           = \ud30c\uc77c\uc744 \uc77d\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4.
-agent.err.file.not.found             = \ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-agent.err.file.access.not.restricted = \ud30c\uc77c \uc77d\uae30 \uc561\uc138\uc2a4\ub294 \uc81c\ud55c\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.
+agent.err.file.not.set               = \uD30C\uC77C\uC774 \uC9C0\uC815\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
+agent.err.file.not.readable          = \uD30C\uC77C\uC744 \uC77D\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+agent.err.file.read.failed           = \uD30C\uC77C \uC77D\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+agent.err.file.not.found             = \uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+agent.err.file.access.not.restricted = \uD30C\uC77C \uC77D\uAE30 \uC561\uC138\uC2A4\uB294 \uC81C\uD55C\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
 
-agent.err.password.file.notset     = com.sun.management.jmxremote.authenticate=true\ub97c \uc81c\uc678\ud55c \ube44\ubc00\ubc88\ud638 \ud30c\uc77c\uc774 \uc9c0\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
-agent.err.password.file.not.readable = \ube44\ubc00\ubc88\ud638 \ud30c\uc77c\uc744 \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-agent.err.password.file.read.failed = \ube44\ubc00\ubc88\ud638 \ud30c\uc77c\uc744 \uc77d\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
-agent.err.password.file.notfound   = \ube44\ubc00\ubc88\ud638 \ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-agent.err.password.file.access.notrestricted = \ube44\ubc00\ubc88\ud638 \ud30c\uc77c \uc77d\uae30 \uc561\uc138\uc2a4\ub294 \uc81c\ud55c\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.
+agent.err.password.file.notset     = \uBE44\uBC00\uBC88\uD638 \uD30C\uC77C\uC774 \uC9C0\uC815\uB418\uC9C0 \uC54A\uC558\uC9C0\uB9CC com.sun.management.jmxremote.authenticate=true\uC785\uB2C8\uB2E4.
+agent.err.password.file.not.readable = \uBE44\uBC00\uBC88\uD638 \uD30C\uC77C\uC744 \uC77D\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+agent.err.password.file.read.failed = \uBE44\uBC00\uBC88\uD638 \uD30C\uC77C \uC77D\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+agent.err.password.file.notfound   = \uBE44\uBC00\uBC88\uD638 \uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+agent.err.password.file.access.notrestricted = \uBE44\uBC00\uBC88\uD638 \uD30C\uC77C \uC77D\uAE30 \uC561\uC138\uC2A4\uB294 \uC81C\uD55C\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
 
-agent.err.access.file.notset       = com.sun.management.jmxremote.authenticate=true\ub97c \uc81c\uc678\ud55c \uc561\uc138\uc2a4 \ud30c\uc77c\uc774 \uc9c0\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
-agent.err.access.file.not.readable = \uc561\uc138\uc2a4 \ud30c\uc77c\uc744 \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-agent.err.access.file.read.failed  = \uc561\uc138\uc2a4 \ud30c\uc77c\uc744 \uc77d\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
-agent.err.access.file.notfound     = \uc561\uc138\uc2a4 \ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+agent.err.access.file.notset       = \uC561\uC138\uC2A4 \uD30C\uC77C\uC774 \uC9C0\uC815\uB418\uC9C0 \uC54A\uC558\uC9C0\uB9CC com.sun.management.jmxremote.authenticate=true\uC785\uB2C8\uB2E4.
+agent.err.access.file.not.readable = \uC561\uC138\uC2A4 \uD30C\uC77C\uC744 \uC77D\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+agent.err.access.file.read.failed  = \uC561\uC138\uC2A4 \uD30C\uC77C \uC77D\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+agent.err.access.file.notfound     = \uC561\uC138\uC2A4 \uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
 
-agent.err.connector.server.io.error = JMX \ucee4\ub125\ud130 \uc11c\ubc84 \ud1b5\uc2e0 \uc624\ub958
+agent.err.connector.server.io.error = JMX \uCEE4\uB125\uD130 \uC11C\uBC84 \uD1B5\uC2E0 \uC624\uB958
 
-agent.err.invalid.option	   = \uc9c0\uc815\ub41c \uc635\uc158\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
-agent.err.invalid.snmp.port        = \uc798\ubabb\ub41c com.sun.management.snmp.port \ubc88\ud638
-agent.err.invalid.snmp.trap.port   = \uc798\ubabb\ub41c com.sun.management.snmp.trap \ubc88\ud638
-agent.err.unknown.snmp.interface   = \uc54c \uc218 \uc5c6\ub294 SNMP \uc778\ud130\ud398\uc774\uc2a4
-agent.err.acl.file.notset          = \uc9c0\uc815\ub41c SNMP ACL \ud30c\uc77c\uc774 \uc5c6\ub294\ub370 com.sun.management.snmp.acl=true\ub85c \uc124\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
-agent.err.acl.file.notfound        = SNMP ACL \ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-agent.err.acl.file.not.readable    = SNMP ACL \ud30c\uc77c\uc744 \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-agent.err.acl.file.read.failed     = SNMP ACL \ud30c\uc77c\uc744 \uc77d\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
-agent.err.acl.file.access.notrestricted = \ube44\ubc00\ubc88\ud638 \ud30c\uc77c \uc77d\uae30 \uc561\uc138\uc2a4\ub294 \uc81c\ud55c\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.
+agent.err.invalid.option	   = \uBD80\uC801\uD569\uD55C \uC635\uC158\uC774 \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+agent.err.invalid.snmp.port        = com.sun.management.snmp.port \uBC88\uD638\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
+agent.err.invalid.snmp.trap.port   = com.sun.management.snmp.trap \uBC88\uD638\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
+agent.err.unknown.snmp.interface   = \uC54C \uC218 \uC5C6\uB294 SNMP \uC778\uD130\uD398\uC774\uC2A4
+agent.err.acl.file.notset          = SNMP ACL \uD30C\uC77C\uC774 \uC9C0\uC815\uB418\uC9C0 \uC54A\uC558\uC9C0\uB9CC com.sun.management.snmp.acl=true\uC785\uB2C8\uB2E4.
+agent.err.acl.file.notfound        = SNMP ACL \uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+agent.err.acl.file.not.readable    = SNMP ACL \uD30C\uC77C\uC744 \uC77D\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+agent.err.acl.file.read.failed     = SNMP ACL \uD30C\uC77C \uC77D\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+agent.err.acl.file.access.notrestricted = \uBE44\uBC00\uBC88\uD638 \uD30C\uC77C \uC77D\uAE30 \uC561\uC138\uC2A4\uB294 \uC81C\uD55C\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
 
-agent.err.snmp.adaptor.start.failed = \uc8fc\uc18c\uac00 \uc788\ub294 SNMP \uc5b4\ub311\ud130\ub97c \uc2dc\uc791\ud558\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
-agent.err.snmp.mib.init.failed     = \uc624\ub958\uac00 \uc788\ub294 SNMP MIB\ub97c \ucd08\uae30\ud654\ud558\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
+agent.err.snmp.adaptor.start.failed = \uC8FC\uC18C\uAC00 \uC788\uB294 SNMP \uC5B4\uB311\uD130 \uC2DC\uC791\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+agent.err.snmp.mib.init.failed     = \uC624\uB958\uB85C \uC778\uD574 SNMP MIB \uCD08\uAE30\uD654\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
 
-jmxremote.ConnectorBootstrap.initialize = JMX \ucee4\ub125\ud130 \uc11c\ubc84 \uc2dc\uc791:
-jmxremote.ConnectorBootstrap.initialize.noAuthentication = \uc778\uc99d \uc5c6\uc74c
-jmxremote.ConnectorBootstrap.initialize.ready = \ub2e4\uc74c\uc5d0\uc11c JMX \ucee4\ub125\ud130 \uc900\ube44: {0}
-jmxremote.ConnectorBootstrap.initialize.password.readonly = \ube44\ubc00\ubc88\ud638 \ud30c\uc77c \uc77d\uae30 \uc561\uc138\uc2a4\ub294 \uc81c\ud55c\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4. {0}
-jmxremote.ConnectorBootstrap.initialize.file.readonly = \ud30c\uc77c \uc77d\uae30 \uc561\uc138\uc2a4\ub294 \uc81c\ud55c\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4. {0}
+jmxremote.ConnectorBootstrap.initialize = JMX \uCEE4\uB125\uD130 \uC11C\uBC84\uB97C \uC2DC\uC791\uD558\uB294 \uC911:
+jmxremote.ConnectorBootstrap.initialize.noAuthentication = \uC778\uC99D \uC5C6\uC74C
+jmxremote.ConnectorBootstrap.initialize.ready = {0}\uC5D0\uC11C JMX \uCEE4\uB125\uD130\uAC00 \uC900\uBE44\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+jmxremote.ConnectorBootstrap.initialize.password.readonly = \uBE44\uBC00\uBC88\uD638 \uD30C\uC77C \uC77D\uAE30 \uC561\uC138\uC2A4\uB294 \uC81C\uD55C\uB418\uC5B4\uC57C \uD568: {0}
+jmxremote.ConnectorBootstrap.initialize.file.readonly = \uD30C\uC77C \uC77D\uAE30 \uC561\uC138\uC2A4\uB294 \uC81C\uD55C\uB418\uC5B4\uC57C \uD568: {0}
 
-jmxremote.AdaptorBootstrap.getTargetList.processing = ACL \ucc98\ub9ac
-jmxremote.AdaptorBootstrap.getTargetList.adding = \ub300\uc0c1 \ucd94\uac00: {0}
-jmxremote.AdaptorBootstrap.getTargetList.starting = \uc5b4\ub311\ud130 \uc11c\ubc84 \uc2dc\uc791:
-jmxremote.AdaptorBootstrap.getTargetList.initialize1 = \uc5b4\ub311\ud130 \uc900\ube44
-jmxremote.AdaptorBootstrap.getTargetList.initialize2 = \ub2e4\uc74c\uc5d0 SNMP \uc5b4\ub311\ud130 \uc900\ube44: {0}:{1}
-jmxremote.AdaptorBootstrap.getTargetList.terminate = {0} \uc885\ub8cc
+jmxremote.AdaptorBootstrap.getTargetList.processing = ACL\uC744 \uCC98\uB9AC\uD558\uB294 \uC911
+jmxremote.AdaptorBootstrap.getTargetList.adding = \uB300\uC0C1\uC744 \uCD94\uAC00\uD558\uB294 \uC911: {0}
+jmxremote.AdaptorBootstrap.getTargetList.starting = \uC5B4\uB311\uD130 \uC11C\uBC84\uB97C \uC2DC\uC791\uD558\uB294 \uC911:
+jmxremote.AdaptorBootstrap.getTargetList.initialize1 = \uC5B4\uB311\uD130\uAC00 \uC900\uBE44\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+jmxremote.AdaptorBootstrap.getTargetList.initialize2 = {0}:{1}\uC5D0\uC11C SNMP \uC5B4\uB311\uD130\uAC00 \uC900\uBE44\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+jmxremote.AdaptorBootstrap.getTargetList.terminate = {0} \uC885\uB8CC
--- a/jdk/src/share/classes/sun/management/resources/agent_pt_BR.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/management/resources/agent_pt_BR.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2005, 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
@@ -28,65 +28,65 @@
 # these are the same as the non-localized level name.
 
 agent.err.error			   = Erro
-agent.err.exception                = Exce\u00e7\u00e3o lan\u00e7ada pelo agente 
-agent.err.warning		   = Aviso
+agent.err.exception                = Exce\u00E7\u00E3o gerada pelo agente 
+agent.err.warning		   = Advert\u00EAncia
 
-agent.err.configfile.notfound      = Arquivo de configura\u00e7\u00e3o n\u00e3o encontrado
-agent.err.configfile.failed        = Falha ao ler o arquivo de configura\u00e7\u00e3o
-agent.err.configfile.closed.failed = Falha ao fechar o arquivo de configura\u00e7\u00e3o
-agent.err.configfile.access.denied = Acesso negado ao arquivo de configura\u00e7\u00e3o
+agent.err.configfile.notfound      = Arquivo de configura\u00E7\u00E3o n\u00E3o encontrado
+agent.err.configfile.failed        = Falha ao ler o arquivo de configura\u00E7\u00E3o
+agent.err.configfile.closed.failed = Falha ao fechar o arquivo de configura\u00E7\u00E3o
+agent.err.configfile.access.denied = Acesso negado ao arquivo de configura\u00E7\u00E3o
 
-agent.err.exportaddress.failed	   = Falha na exporta\u00e7\u00e3o do endere\u00e7o do conector JMX para o buffer de instrumenta\u00e7\u00e3o
+agent.err.exportaddress.failed	   = Falha na exporta\u00E7\u00E3o do endere\u00E7o do conector JMX para o buffer de instrumenta\u00E7\u00E3o
 
-agent.err.agentclass.notfound      = Classe do agente de gerenciamento n\u00e3o encontrada
-agent.err.agentclass.failed        = Classe do agente de gerenciamento falha 
-agent.err.premain.notfound         = premain(String) n\u00e3o existe na classe do agente
+agent.err.agentclass.notfound      = Classe do agente de gerenciamento n\u00E3o encontrada
+agent.err.agentclass.failed        = Falha na classe do agente de gerenciamento 
+agent.err.premain.notfound         = premain(String) n\u00E3o existe na classe do agente
 agent.err.agentclass.access.denied = Acesso negado a premain(String)
-agent.err.invalid.agentclass       = Valor inv\u00e1lido da propriedade com.sun.management.agent.class
+agent.err.invalid.agentclass       = Valor inv\u00E1lido da propriedade com.sun.management.agent.class
 
-agent.err.invalid.jmxremote.port   = N\u00famero inv\u00e1lido de com.sun.management.jmxremote.port
+agent.err.invalid.jmxremote.port   = N\u00FAmero inv\u00E1lido de com.sun.management.jmxremote.port
 
-agent.err.file.not.set               = Arquivo n\u00e3o especificado
-agent.err.file.not.readable          = Arquivo ileg\u00edvel
+agent.err.file.not.set               = Arquivo n\u00E3o especificado
+agent.err.file.not.readable          = Arquivo ileg\u00EDvel
 agent.err.file.read.failed           = Falha ao ler o arquivo
-agent.err.file.not.found             = Arquivo n\u00e3o encontrado
+agent.err.file.not.found             = Arquivo n\u00E3o encontrado
 agent.err.file.access.not.restricted = O acesso de leitura do arquivo deve ser limitado
 
-agent.err.password.file.notset     = O arquivo de senha n\u00e3o est\u00e1 especificado, mas com.sun.management.jmxremote.authenticate=true
-agent.err.password.file.not.readable = Arquivo de senha ileg\u00edvel
+agent.err.password.file.notset     = O arquivo de senha n\u00E3o est\u00E1 especificado, mas com.sun.management.jmxremote.authenticate=true
+agent.err.password.file.not.readable = Arquivo de senha ileg\u00EDvel
 agent.err.password.file.read.failed = Falha ao ler o arquivo de senha
-agent.err.password.file.notfound   = Arquivo de senha n\u00e3o encontrado
+agent.err.password.file.notfound   = Arquivo de senha n\u00E3o encontrado
 agent.err.password.file.access.notrestricted = O acesso de leitura do arquivo de senha deve ser limitado
 
-agent.err.access.file.notset       = O arquivo de acesso n\u00e3o est\u00e1 especificado, mas com.sun.management.jmxremote.authenticate=true
-agent.err.access.file.not.readable = Arquivo de acesso ileg\u00edvel
+agent.err.access.file.notset       = O arquivo de acesso n\u00E3o est\u00E1 especificado, mas com.sun.management.jmxremote.authenticate=true
+agent.err.access.file.not.readable = Arquivo de acesso ileg\u00EDvel
 agent.err.access.file.read.failed  = Falha ao ler o arquivo de acesso
-agent.err.access.file.notfound     = Arquivo de acesso n\u00e3o encontrado
+agent.err.access.file.notfound     = Arquivo de acesso n\u00E3o encontrado
 
-agent.err.connector.server.io.error = Erro de comunica\u00e7\u00e3o do servidor do conector JMX
+agent.err.connector.server.io.error = Erro de comunica\u00E7\u00E3o do servidor do conector JMX
 
-agent.err.invalid.option	   = Op\u00e7\u00e3o especificada inv\u00e1lida
-agent.err.invalid.snmp.port        = N\u00famero inv\u00e1lido de com.sun.management.snmp.port
-agent.err.invalid.snmp.trap.port   = N\u00famero inv\u00e1lido de com.sun.management.snmp.trap
+agent.err.invalid.option	   = Op\u00E7\u00E3o especificada inv\u00E1lida
+agent.err.invalid.snmp.port        = N\u00FAmero inv\u00E1lido de com.sun.management.snmp.port
+agent.err.invalid.snmp.trap.port   = N\u00FAmero inv\u00E1lido de com.sun.management.snmp.trap
 agent.err.unknown.snmp.interface   = Interface SNMP desconhecida
-agent.err.acl.file.notset          = N\u00e3o h\u00e1 nenhum arquivo ACL SNMP especificado, mas com.sun.management.snmp.acl=true
-agent.err.acl.file.notfound        = Arquivo ACL SNMP n\u00e3o encontrado
-agent.err.acl.file.not.readable    = Arquivo ACL SNMP ileg\u00edvel
+agent.err.acl.file.notset          = N\u00E3o h\u00E1 um arquivo ACL SNMP especificado, mas com.sun.management.snmp.acl=true
+agent.err.acl.file.notfound        = Arquivo ACL SNMP n\u00E3o encontrado
+agent.err.acl.file.not.readable    = Arquivo ACL SNMP ileg\u00EDvel
 agent.err.acl.file.read.failed     = Falha ao ler o arquivo ACL SNMP
 agent.err.acl.file.access.notrestricted = O acesso de leitura do arquivo de senha deve ser limitado
 
-agent.err.snmp.adaptor.start.failed = Falha ao iniciar o adaptador SNMP com endere\u00e7o
+agent.err.snmp.adaptor.start.failed = Falha ao iniciar o adaptador SNMP com endere\u00E7o
 agent.err.snmp.mib.init.failed     = Falha ao inicializar o MIB SNMP com erro
 
-jmxremote.ConnectorBootstrap.initialize = Iniciando o servidor do conector JMX:
-jmxremote.ConnectorBootstrap.initialize.noAuthentication = Sem autentica\u00e7\u00e3o
+jmxremote.ConnectorBootstrap.initialize = Iniciando o Servidor do Conector JMX:
+jmxremote.ConnectorBootstrap.initialize.noAuthentication = Sem autentica\u00E7\u00E3o
 jmxremote.ConnectorBootstrap.initialize.ready = Conector JMX pronto em: {0}
 jmxremote.ConnectorBootstrap.initialize.password.readonly = O acesso de leitura do arquivo de senha deve ser limitado: {0}
 jmxremote.ConnectorBootstrap.initialize.file.readonly = O acesso de leitura do arquivo deve ser limitado: {0}
 
 jmxremote.AdaptorBootstrap.getTargetList.processing = Processando ACL
 jmxremote.AdaptorBootstrap.getTargetList.adding = Adicionando destino: {0}
-jmxremote.AdaptorBootstrap.getTargetList.starting = Iniciando o servidor do adaptador:
+jmxremote.AdaptorBootstrap.getTargetList.starting = Iniciando o Servidor do Adaptador:
 jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adaptador pronto.
 jmxremote.AdaptorBootstrap.getTargetList.initialize2 = Adaptador SNMP pronto em: {0}:{1}
-jmxremote.AdaptorBootstrap.getTargetList.terminate = conclu\u00eddo {0}
+jmxremote.AdaptorBootstrap.getTargetList.terminate = encerrar {0}
--- a/jdk/src/share/classes/sun/management/resources/agent_sv.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/management/resources/agent_sv.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2005, 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
@@ -29,64 +29,64 @@
 
 agent.err.error			   = Fel
 agent.err.exception                = Agenten orsakade ett undantag 
-agent.err.warning		   = Varning!
+agent.err.warning		   = Varning
 
 agent.err.configfile.notfound      = Konfigurationsfilen hittades inte
-agent.err.configfile.failed        = Det g\u00e5r inte att l\u00e4sa konfigurationsfilen
-agent.err.configfile.closed.failed = Det g\u00e5r inte att st\u00e4nga konfigurationsfilen
-agent.err.configfile.access.denied = \u00c5tkomst till konfigurationsfilen nekad
+agent.err.configfile.failed        = Kunde inte l\u00E4sa konfigurationsfilen
+agent.err.configfile.closed.failed = Kunde inte st\u00E4nga konfigurationsfilen
+agent.err.configfile.access.denied = \u00C5tkomst till konfigurationsfilen nekad
 
-agent.err.exportaddress.failed	   = Det g\u00e5r inte att exportera JMX-anslutningsadressen till instrumentbufferten
+agent.err.exportaddress.failed	   = Kunde inte exportera JMX-anslutningsadressen till instrumentbufferten
 
 agent.err.agentclass.notfound      = Administrationsagentklassen hittades inte
-agent.err.agentclass.failed        = Administrationsagentklassen misslyckades 
+agent.err.agentclass.failed        = Administrationsagentklassen utf\u00F6rdes inte 
 agent.err.premain.notfound         = premain(String) finns inte i agentklassen
-agent.err.agentclass.access.denied = \u00c5tkomst till premain(String) nekad
-agent.err.invalid.agentclass       = Ogiltigt egenskapsv\u00e4rde f\u00f6r com.sun.management.agent.class
+agent.err.agentclass.access.denied = \u00C5tkomst till premain(String) nekad
+agent.err.invalid.agentclass       = Ogiltigt egenskapsv\u00E4rde f\u00F6r com.sun.management.agent.class
 
 agent.err.invalid.jmxremote.port   = Ogiltigt com.sun.management.jmxremote.port-nummer
 
-agent.err.file.not.set               = Filen har inte angetts.
-agent.err.file.not.readable          = Filen g\u00e5r inte att l\u00e4sa.
-agent.err.file.read.failed           = Det gick inte att l\u00e4sa filen
+agent.err.file.not.set               = Filen \u00E4r inte angiven
+agent.err.file.not.readable          = Filen \u00E4r inte l\u00E4sbar
+agent.err.file.read.failed           = Kunde inte l\u00E4sa filen
 agent.err.file.not.found             = Filen hittades inte
-agent.err.file.access.not.restricted = L\u00e4sbeh\u00f6righeten f\u00f6r filen m\u00e5ste begr\u00e4nsas
+agent.err.file.access.not.restricted = Fill\u00E4snings\u00E5tkomst m\u00E5ste begr\u00E4nsas
 
-agent.err.password.file.notset     = L\u00f6senordsfilen har inte angetts men com.sun.management.jmxremote.authenticate=true
-agent.err.password.file.not.readable = L\u00f6senordsfilen \u00e4r inte l\u00e4sbar
-agent.err.password.file.read.failed = Det g\u00e5r inte att l\u00e4sa l\u00f6senordsfilen
-agent.err.password.file.notfound   = Det g\u00e5r inte att hitta l\u00f6senordsfilen
-agent.err.password.file.access.notrestricted = L\u00e4sbeh\u00f6righeten f\u00f6r filen m\u00e5ste begr\u00e4nsas
+agent.err.password.file.notset     = L\u00F6senordsfilen har inte angetts men com.sun.management.jmxremote.authenticate=true
+agent.err.password.file.not.readable = L\u00F6senordsfilen \u00E4r inte l\u00E4sbar
+agent.err.password.file.read.failed = Kunde inte l\u00E4sa l\u00F6senordsfilen
+agent.err.password.file.notfound   = Hittar inte l\u00F6senordsfilen
+agent.err.password.file.access.notrestricted = L\u00E4sbeh\u00F6righeten f\u00F6r filen m\u00E5ste begr\u00E4nsas
 
-agent.err.access.file.notset       = Access-filen har inte angetts men com.sun.management.jmxremote.authenticate=true
-agent.err.access.file.not.readable = Access-filen \u00e4r inte l\u00e4sbar
-agent.err.access.file.read.failed  = Det g\u00e5r inte att l\u00e4sa access-filen
+agent.err.access.file.notset       = \u00C5tkomstfilen har inte angetts men com.sun.management.jmxremote.authenticate=true
+agent.err.access.file.not.readable = Access-filen \u00E4r inte l\u00E4sbar
+agent.err.access.file.read.failed  = Kunde inte l\u00E4sa \u00E5tkomstfilen
 agent.err.access.file.notfound     = Access-filen hittades inte
 
-agent.err.connector.server.io.error = Serverkommunikationsfel f\u00f6r JMX-anslutning
+agent.err.connector.server.io.error = Serverkommunikationsfel f\u00F6r JMX-anslutning
 
-agent.err.invalid.option	   = Det angivna alternativet \u00e4r ogiltigt
+agent.err.invalid.option	   = Det angivna alternativet \u00E4r ogiltigt
 agent.err.invalid.snmp.port        = Ogiltigt com.sun.management.snmp.port-nummer
 agent.err.invalid.snmp.trap.port   = Ogiltigt com.sun.management.snmp.trap-nummer
-agent.err.unknown.snmp.interface   = Ok\u00e4nt SNMP-gr\u00e4nssnitt
+agent.err.unknown.snmp.interface   = Ok\u00E4nt SNMP-gr\u00E4nssnitt
 agent.err.acl.file.notset          = Ingen SNMP ACL-fil har angetts, men com.sun.management.snmp.acl=true
 agent.err.acl.file.notfound        = SNMP ACL-filen hittades inte
-agent.err.acl.file.not.readable    = SNMP ACL-filen \u00e4r inte l\u00e4sbar
-agent.err.acl.file.read.failed     = Det g\u00e5r inte att l\u00e4sa filen SNMP ACL
-agent.err.acl.file.access.notrestricted = L\u00e4sbeh\u00f6righeten f\u00f6r filen m\u00e5ste begr\u00e4nsas
+agent.err.acl.file.not.readable    = SNMP ACL-filen \u00E4r inte l\u00E4sbar
+agent.err.acl.file.read.failed     = Kunde inte l\u00E4sa filen SNMP ACL
+agent.err.acl.file.access.notrestricted = L\u00E4sbeh\u00F6righeten f\u00F6r filen m\u00E5ste begr\u00E4nsas
 
-agent.err.snmp.adaptor.start.failed = Det g\u00e5r inte att starta SNMP-adaptern med adressen
-agent.err.snmp.mib.init.failed     = Det g\u00e5r inte att initiera SNMP MIB med felet
+agent.err.snmp.adaptor.start.failed = Kunde inte starta SNMP-adaptern med adressen
+agent.err.snmp.mib.init.failed     = Kunde inte initiera SNMP MIB. Returnerade felet
 
-jmxremote.ConnectorBootstrap.initialize = Startar JMX Connector-servern:
+jmxremote.ConnectorBootstrap.initialize = Startar server f\u00F6r JMX-anslutning:
 jmxremote.ConnectorBootstrap.initialize.noAuthentication = Ingen autentisering
-jmxremote.ConnectorBootstrap.initialize.ready = JMX Connector redo p\u00e5: {0}
-jmxremote.ConnectorBootstrap.initialize.password.readonly = L\u00e4sbeh\u00f6righeten f\u00f6r l\u00f6senordsfilen m\u00e5ste begr\u00e4nsas: {0}
-jmxremote.ConnectorBootstrap.initialize.file.readonly = L\u00e4sbeh\u00f6righeten f\u00f6r filen m\u00e5ste begr\u00e4nsas: {0}
+jmxremote.ConnectorBootstrap.initialize.ready = JMX-anslutning redo p\u00E5: {0}
+jmxremote.ConnectorBootstrap.initialize.password.readonly = L\u00E4sbeh\u00F6righeten f\u00F6r l\u00F6senordsfilen m\u00E5ste begr\u00E4nsas: {0}
+jmxremote.ConnectorBootstrap.initialize.file.readonly = Fill\u00E4snings\u00E5tkomst m\u00E5ste begr\u00E4nsas {0}
 
 jmxremote.AdaptorBootstrap.getTargetList.processing = ACL bearbetas
-jmxremote.AdaptorBootstrap.getTargetList.adding = M\u00e5l l\u00e4ggs till: {0}
+jmxremote.AdaptorBootstrap.getTargetList.adding = M\u00E5l l\u00E4ggs till: {0}
 jmxremote.AdaptorBootstrap.getTargetList.starting = Adapterservern startas:
-jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adaptern klar.
-jmxremote.AdaptorBootstrap.getTargetList.initialize2 = SNMP-adaptern redo p\u00e5: {0}:{1}
+jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adaptern redo.
+jmxremote.AdaptorBootstrap.getTargetList.initialize2 = SNMP-adaptern redo p\u00E5: {0}:{1}
 jmxremote.AdaptorBootstrap.getTargetList.terminate = avsluta {0}
--- a/jdk/src/share/classes/sun/management/resources/agent_zh_CN.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/management/resources/agent_zh_CN.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2005, 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
@@ -27,66 +27,66 @@
 # Localizations for Level names.  For the US locale
 # these are the same as the non-localized level name.
 
-agent.err.error			   = \u9519\u8bef
-agent.err.exception                = \u4ee3\u7406\u629b\u51fa\u5f02\u5e38 
-agent.err.warning		   = \u8b66\u544a
+agent.err.error			   = \u9519\u8BEF
+agent.err.exception                = \u4EE3\u7406\u629B\u51FA\u5F02\u5E38\u9519\u8BEF
+agent.err.warning		   = \u8B66\u544A
 
-agent.err.configfile.notfound      = \u627e\u4e0d\u5230\u914d\u7f6e\u6587\u4ef6
-agent.err.configfile.failed        = \u8bfb\u53d6\u914d\u7f6e\u6587\u4ef6\u5931\u8d25
-agent.err.configfile.closed.failed = \u5173\u95ed\u914d\u7f6e\u6587\u4ef6\u5931\u8d25
-agent.err.configfile.access.denied = \u62d2\u7edd\u8bbf\u95ee\u914d\u7f6e\u6587\u4ef6
+agent.err.configfile.notfound      = \u627E\u4E0D\u5230\u914D\u7F6E\u6587\u4EF6
+agent.err.configfile.failed        = \u672A\u80FD\u8BFB\u53D6\u914D\u7F6E\u6587\u4EF6
+agent.err.configfile.closed.failed = \u672A\u80FD\u5173\u95ED\u914D\u7F6E\u6587\u4EF6
+agent.err.configfile.access.denied = \u62D2\u7EDD\u8BBF\u95EE\u914D\u7F6E\u6587\u4EF6
 
-agent.err.exportaddress.failed	   = \u5c06 JMX \u8fde\u63a5\u5668\u5730\u5740\u5bfc\u51fa\u5230\u6d4b\u8bd5\u8bbe\u5907\u7f13\u51b2\u533a\u5931\u8d25
+agent.err.exportaddress.failed	   = \u672A\u80FD\u5C06 JMX \u8FDE\u63A5\u5668\u5730\u5740\u5BFC\u51FA\u5230\u68C0\u6D4B\u7F13\u51B2\u533A
 
-agent.err.agentclass.notfound      = \u627e\u4e0d\u5230\u7ba1\u7406\u4ee3\u7406\u7c7b
-agent.err.agentclass.failed        = \u7ba1\u7406\u4ee3\u7406\u7c7b\u5931\u8d25 
-agent.err.premain.notfound         = \u4ee3\u7406\u7c7b\u4e2d\u4e0d\u5b58\u5728 premain(String)
-agent.err.agentclass.access.denied = \u62d2\u7edd\u8bbf\u95ee premain(String)
-agent.err.invalid.agentclass       = com.sun.management.agent.class \u5c5e\u6027\u503c\u65e0\u6548
+agent.err.agentclass.notfound      = \u627E\u4E0D\u5230\u7BA1\u7406\u4EE3\u7406\u7C7B
+agent.err.agentclass.failed        = \u7BA1\u7406\u4EE3\u7406\u7C7B\u5931\u8D25 
+agent.err.premain.notfound         = \u4EE3\u7406\u7C7B\u4E2D\u4E0D\u5B58\u5728 premain(String)
+agent.err.agentclass.access.denied = \u62D2\u7EDD\u8BBF\u95EE premain(String)
+agent.err.invalid.agentclass       = com.sun.management.agent.class \u5C5E\u6027\u503C\u65E0\u6548
 
-agent.err.invalid.jmxremote.port   = com.sun.management.jmxremote.port \u7f16\u53f7\u65e0\u6548
+agent.err.invalid.jmxremote.port   = com.sun.management.jmxremote.port \u7F16\u53F7\u65E0\u6548
 
-agent.err.file.not.set               = \u672a\u6307\u5b9a\u6587\u4ef6
-agent.err.file.not.readable          = \u65e0\u6cd5\u8bfb\u53d6\u6587\u4ef6
-agent.err.file.read.failed           = \u8bfb\u53d6\u6587\u4ef6\u5931\u8d25
-agent.err.file.not.found             = \u627e\u4e0d\u5230\u6587\u4ef6
-agent.err.file.access.not.restricted = \u5fc5\u987b\u9650\u5236\u6587\u4ef6\u8bfb\u53d6\u8bbf\u95ee
+agent.err.file.not.set               = \u672A\u6307\u5B9A\u6587\u4EF6
+agent.err.file.not.readable          = \u6587\u4EF6\u4E0D\u53EF\u8BFB\u53D6
+agent.err.file.read.failed           = \u672A\u80FD\u8BFB\u53D6\u6587\u4EF6
+agent.err.file.not.found             = \u627E\u4E0D\u5230\u6587\u4EF6
+agent.err.file.access.not.restricted = \u5FC5\u987B\u9650\u5236\u6587\u4EF6\u8BFB\u53D6\u8BBF\u95EE\u6743\u9650
 
-agent.err.password.file.notset     = \u672a\u6307\u5b9a\u53e3\u4ee4\u6587\u4ef6\uff0c\u4f46 com.sun.management.jmxremote.authenticate=true
-agent.err.password.file.not.readable = \u65e0\u6cd5\u8bfb\u53d6\u53e3\u4ee4\u6587\u4ef6
-agent.err.password.file.read.failed = \u8bfb\u53d6\u53e3\u4ee4\u6587\u4ef6\u5931\u8d25
-agent.err.password.file.notfound   = \u627e\u4e0d\u5230\u53e3\u4ee4\u6587\u4ef6
-agent.err.password.file.access.notrestricted = \u5fc5\u987b\u9650\u5236\u53e3\u4ee4\u6587\u4ef6\u8bfb\u53d6\u8bbf\u95ee
+agent.err.password.file.notset     = \u672A\u6307\u5B9A\u53E3\u4EE4\u6587\u4EF6, \u4F46 com.sun.management.jmxremote.authenticate=true
+agent.err.password.file.not.readable = \u53E3\u4EE4\u6587\u4EF6\u4E0D\u53EF\u8BFB\u53D6
+agent.err.password.file.read.failed = \u8BFB\u53D6\u53E3\u4EE4\u6587\u4EF6\u5931\u8D25
+agent.err.password.file.notfound   = \u627E\u4E0D\u5230\u53E3\u4EE4\u6587\u4EF6
+agent.err.password.file.access.notrestricted = \u5FC5\u987B\u9650\u5236\u53E3\u4EE4\u6587\u4EF6\u8BFB\u53D6\u8BBF\u95EE\u6743\u9650
 
-agent.err.access.file.notset       = \u672a\u6307\u5b9a\u8bbf\u95ee\u6587\u4ef6\uff0c\u4f46 com.sun.management.jmxremote.authenticate=true
-agent.err.access.file.not.readable = \u65e0\u6cd5\u8bfb\u53d6\u8bbf\u95ee\u6587\u4ef6
-agent.err.access.file.read.failed  = \u8bfb\u53d6\u8bbf\u95ee\u6587\u4ef6\u5931\u8d25
-agent.err.access.file.notfound     = \u627e\u4e0d\u5230\u8bbf\u95ee\u6587\u4ef6
+agent.err.access.file.notset       = \u672A\u6307\u5B9A\u8BBF\u95EE\u6587\u4EF6, \u4F46 com.sun.management.jmxremote.authenticate=true
+agent.err.access.file.not.readable = \u8BBF\u95EE\u6587\u4EF6\u4E0D\u53EF\u8BFB\u53D6
+agent.err.access.file.read.failed  = \u8BFB\u53D6\u8BBF\u95EE\u6587\u4EF6\u5931\u8D25
+agent.err.access.file.notfound     = \u627E\u4E0D\u5230\u8BBF\u95EE\u6587\u4EF6
 
-agent.err.connector.server.io.error = JMX \u8fde\u63a5\u5668\u670d\u52a1\u5668\u901a\u4fe1\u9519\u8bef
+agent.err.connector.server.io.error = JMX \u8FDE\u63A5\u5668\u670D\u52A1\u5668\u901A\u4FE1\u9519\u8BEF
 
-agent.err.invalid.option	   = \u6307\u5b9a\u7684\u9009\u9879\u65e0\u6548
-agent.err.invalid.snmp.port        = com.sun.management.snmp.port \u7f16\u53f7\u65e0\u6548
-agent.err.invalid.snmp.trap.port   = com.sun.management.snmp.trap \u7f16\u53f7\u65e0\u6548
-agent.err.unknown.snmp.interface   = \u672a\u77e5 SNMP \u63a5\u53e3
-agent.err.acl.file.notset          = \u672a\u6307\u5b9a SNMP ACL \u6587\u4ef6\uff0c\u4f46 com.sun.management.snmp.acl=true
-agent.err.acl.file.notfound        = \u627e\u4e0d\u5230 SNMP ACL \u6587\u4ef6
-agent.err.acl.file.not.readable    = \u65e0\u6cd5\u8bfb\u53d6 SNMP ACL \u6587\u4ef6
-agent.err.acl.file.read.failed     = \u8bfb\u53d6 SNMP ACL \u6587\u4ef6\u5931\u8d25
-agent.err.acl.file.access.notrestricted = \u5fc5\u987b\u9650\u5236\u53e3\u4ee4\u6587\u4ef6\u8bfb\u53d6\u8bbf\u95ee
+agent.err.invalid.option	   = \u6307\u5B9A\u7684\u9009\u9879\u65E0\u6548
+agent.err.invalid.snmp.port        = com.sun.management.snmp.port number \u65E0\u6548
+agent.err.invalid.snmp.trap.port   = com.sun.management.snmp.trap number \u65E0\u6548
+agent.err.unknown.snmp.interface   = \u672A\u77E5 SNMP \u63A5\u53E3
+agent.err.acl.file.notset          = \u672A\u6307\u5B9A SNMP ACL \u6587\u4EF6, \u4F46 com.sun.management.snmp.acl=true
+agent.err.acl.file.notfound        = \u627E\u4E0D\u5230 SNMP ACL \u6587\u4EF6
+agent.err.acl.file.not.readable    = SNMP ACL \u6587\u4EF6\u4E0D\u53EF\u8BFB\u53D6
+agent.err.acl.file.read.failed     = \u672A\u80FD\u8BFB\u53D6 SNMP ACL \u6587\u4EF6
+agent.err.acl.file.access.notrestricted = \u5FC5\u987B\u9650\u5236\u53E3\u4EE4\u6587\u4EF6\u8BFB\u53D6\u8BBF\u95EE\u6743\u9650
 
-agent.err.snmp.adaptor.start.failed = \u65e0\u6cd5\u542f\u52a8\u5e26\u6709\u5730\u5740\u7684 SNMP \u9002\u914d\u5668
-agent.err.snmp.mib.init.failed     = \u65e0\u6cd5\u521d\u59cb\u5316\u5e26\u6709\u9519\u8bef\u7684 SNMP MIB
+agent.err.snmp.adaptor.start.failed = \u65E0\u6CD5\u542F\u52A8\u5E26\u6709\u5730\u5740\u7684 SNMP \u9002\u914D\u5668
+agent.err.snmp.mib.init.failed     = \u65E0\u6CD5\u521D\u59CB\u5316\u5E26\u6709\u9519\u8BEF\u7684 SNMP MIB
 
-jmxremote.ConnectorBootstrap.initialize = \u6b63\u5728\u542f\u52a8 JMX \u8fde\u63a5\u5668\u670d\u52a1\u5668\uff1a
-jmxremote.ConnectorBootstrap.initialize.noAuthentication = \u65e0\u9a8c\u8bc1
-jmxremote.ConnectorBootstrap.initialize.ready = \u4f4d\u4e8e {0} \u7684 JMX \u8fde\u63a5\u5668\u5c31\u7eea
-jmxremote.ConnectorBootstrap.initialize.password.readonly = \u5fc5\u987b\u9650\u5236\u53e3\u4ee4\u6587\u4ef6\u8bfb\u53d6\u8bbf\u95ee\uff1a{0}
-jmxremote.ConnectorBootstrap.initialize.file.readonly = \u5fc5\u987b\u9650\u5236\u6587\u4ef6\u8bfb\u53d6\u8bbf\u95ee\uff1a{0}
+jmxremote.ConnectorBootstrap.initialize = \u6B63\u5728\u542F\u52A8 JMX \u8FDE\u63A5\u5668\u670D\u52A1\u5668: 
+jmxremote.ConnectorBootstrap.initialize.noAuthentication = \u65E0\u9A8C\u8BC1
+jmxremote.ConnectorBootstrap.initialize.ready = \u4F4D\u4E8E{0}\u7684 JMX \u8FDE\u63A5\u5668\u5DF2\u5C31\u7EEA
+jmxremote.ConnectorBootstrap.initialize.password.readonly = \u5FC5\u987B\u9650\u5236\u53E3\u4EE4\u6587\u4EF6\u8BFB\u53D6\u8BBF\u95EE\u6743\u9650: {0}
+jmxremote.ConnectorBootstrap.initialize.file.readonly = \u5FC5\u987B\u9650\u5236\u6587\u4EF6\u8BFB\u53D6\u8BBF\u95EE\u6743\u9650: {0}
 
-jmxremote.AdaptorBootstrap.getTargetList.processing = \u6b63\u5728\u5904\u7406 ACL
-jmxremote.AdaptorBootstrap.getTargetList.adding = \u6b63\u5728\u6dfb\u52a0\u76ee\u6807\uff1a{0}
-jmxremote.AdaptorBootstrap.getTargetList.starting = \u6b63\u5728\u542f\u52a8\u9002\u914d\u5668\u670d\u52a1\u5668\uff1a
-jmxremote.AdaptorBootstrap.getTargetList.initialize1 = \u9002\u914d\u5668\u5c31\u7eea\u3002
-jmxremote.AdaptorBootstrap.getTargetList.initialize2 = \u4f4d\u4e8e {0}:{1} \u7684 SNMP \u9002\u914d\u5668\u5c31\u7eea
-jmxremote.AdaptorBootstrap.getTargetList.terminate = \u7ec8\u6b62 {0}
+jmxremote.AdaptorBootstrap.getTargetList.processing = \u6B63\u5728\u5904\u7406 ACL
+jmxremote.AdaptorBootstrap.getTargetList.adding = \u6B63\u5728\u6DFB\u52A0\u76EE\u6807: {0}
+jmxremote.AdaptorBootstrap.getTargetList.starting = \u6B63\u5728\u542F\u52A8\u9002\u914D\u5668\u670D\u52A1\u5668: 
+jmxremote.AdaptorBootstrap.getTargetList.initialize1 = \u9002\u914D\u5668\u5C31\u7EEA\u3002
+jmxremote.AdaptorBootstrap.getTargetList.initialize2 = \u4F4D\u4E8E {0}:{1} \u7684 SNMP \u9002\u914D\u5668\u5C31\u7EEA
+jmxremote.AdaptorBootstrap.getTargetList.terminate = \u7EC8\u6B62{0}
--- a/jdk/src/share/classes/sun/management/resources/agent_zh_TW.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/management/resources/agent_zh_TW.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2005, 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
@@ -27,66 +27,66 @@
 # Localizations for Level names.  For the US locale
 # these are the same as the non-localized level name.
 
-agent.err.error			   = \u932f\u8aa4
-agent.err.exception                = \u4ee3\u7406\u7a0b\u5f0f\u4e1f\u51fa\u7570\u5e38 
-agent.err.warning		   = \u8b66\u544a
+agent.err.error			   = \u932F\u8AA4
+agent.err.exception                = \u4EE3\u7406\u7A0B\u5F0F\u767C\u751F\u7570\u5E38 
+agent.err.warning		   = \u8B66\u544A
 
-agent.err.configfile.notfound      = \u627e\u4e0d\u5230\u914d\u7f6e\u6a94\u6848
-agent.err.configfile.failed        = \u7121\u6cd5\u8b80\u53d6\u914d\u7f6e\u6a94\u6848
-agent.err.configfile.closed.failed = \u7121\u6cd5\u95dc\u9589\u914d\u7f6e\u6a94\u6848
-agent.err.configfile.access.denied = \u5b58\u53d6\u914d\u7f6e\u6a94\u6848\u906d\u5230\u62d2\u7d55
+agent.err.configfile.notfound      = \u627E\u4E0D\u5230\u914D\u7F6E\u6A94\u6848
+agent.err.configfile.failed        = \u7121\u6CD5\u8B80\u53D6\u914D\u7F6E\u6A94\u6848
+agent.err.configfile.closed.failed = \u7121\u6CD5\u95DC\u9589\u914D\u7F6E\u6A94\u6848
+agent.err.configfile.access.denied = \u5B58\u53D6\u914D\u7F6E\u6A94\u6848\u906D\u5230\u62D2\u7D55
 
-agent.err.exportaddress.failed	   = \u5c07 JMX \u9023\u63a5\u5668\u4f4d\u5740\u532f\u51fa\u81f3\u8a2d\u5099\u7de9\u885d\u5340\u5931\u6557
+agent.err.exportaddress.failed	   = \u5C07 JMX \u9023\u63A5\u5668\u4F4D\u5740\u532F\u51FA\u81F3\u8A2D\u5099\u7DE9\u885D\u5340\u5931\u6557
 
-agent.err.agentclass.notfound      = \u627e\u4e0d\u5230\u7ba1\u7406\u4ee3\u7406\u7a0b\u5f0f\u985e\u5225
-agent.err.agentclass.failed        = \u7ba1\u7406\u4ee3\u7406\u985e\u5225\u5931\u6557 
-agent.err.premain.notfound         = \u4ee3\u7406\u7a0b\u5f0f\u985e\u5225\u4e2d\u4e0d\u5b58\u5728 premain(String)
-agent.err.agentclass.access.denied = \u5b58\u53d6 premain(String) \u906d\u5230\u62d2\u7d55
-agent.err.invalid.agentclass       = com.sun.management.agent.class \u7279\u6027\u503c\u7121\u6548
+agent.err.agentclass.notfound      = \u627E\u4E0D\u5230\u7BA1\u7406\u4EE3\u7406\u7A0B\u5F0F\u985E\u5225
+agent.err.agentclass.failed        = \u7BA1\u7406\u4EE3\u7406\u7A0B\u5F0F\u985E\u5225\u5931\u6557 
+agent.err.premain.notfound         = \u4EE3\u7406\u7A0B\u5F0F\u985E\u5225\u4E2D\u4E0D\u5B58\u5728 premain(String)
+agent.err.agentclass.access.denied = \u5B58\u53D6 premain(String) \u906D\u5230\u62D2\u7D55
+agent.err.invalid.agentclass       = com.sun.management.agent.class \u5C6C\u6027\u503C\u7121\u6548
 
-agent.err.invalid.jmxremote.port   = com.sun.management.jmxremote.port \u7de8\u865f\u7121\u6548
+agent.err.invalid.jmxremote.port   = com.sun.management.jmxremote.port \u865F\u78BC\u7121\u6548
 
-agent.err.file.not.set               = \u672a\u6307\u5b9a\u6a94\u6848
-agent.err.file.not.readable          = \u6a94\u6848\u4e0d\u53ef\u8b80
-agent.err.file.read.failed           = \u7121\u6cd5\u8b80\u53d6\u6a94\u6848
-agent.err.file.not.found             = \u627e\u4e0d\u5230\u6a94\u6848
-agent.err.file.access.not.restricted = \u5fc5\u9808\u9650\u5236\u6a94\u6848\u8b80\u53d6\u5b58\u53d6
+agent.err.file.not.set               = \u672A\u6307\u5B9A\u6A94\u6848
+agent.err.file.not.readable          = \u6A94\u6848\u7121\u6CD5\u8B80\u53D6
+agent.err.file.read.failed           = \u7121\u6CD5\u8B80\u53D6\u6A94\u6848
+agent.err.file.not.found             = \u627E\u4E0D\u5230\u6A94\u6848
+agent.err.file.access.not.restricted = \u5FC5\u9808\u9650\u5236\u6A94\u6848\u8B80\u53D6\u5B58\u53D6\u6B0A
 
-agent.err.password.file.notset     = \u672a\u6307\u5b9a\u5bc6\u78bc\u6a94\u6848\uff0c\u4f46 com.sun.management.jmxremote.authenticate=true
-agent.err.password.file.not.readable = \u5bc6\u78bc\u6a94\u6848\u4e0d\u53ef\u8b80
-agent.err.password.file.read.failed = \u7121\u6cd5\u8b80\u53d6\u5bc6\u78bc\u6a94\u6848
-agent.err.password.file.notfound   = \u627e\u4e0d\u5230\u5bc6\u78bc\u6a94\u6848
-agent.err.password.file.access.notrestricted = \u5fc5\u9808\u9650\u5236\u5bc6\u78bc\u6a94\u6848\u8b80\u53d6\u5b58\u53d6
+agent.err.password.file.notset     = \u672A\u6307\u5B9A\u5BC6\u78BC\u6A94\u6848\uFF0C\u4F46 com.sun.management.jmxremote.authenticate=true
+agent.err.password.file.not.readable = \u5BC6\u78BC\u6A94\u6848\u7121\u6CD5\u8B80\u53D6
+agent.err.password.file.read.failed = \u7121\u6CD5\u8B80\u53D6\u5BC6\u78BC\u6A94\u6848
+agent.err.password.file.notfound   = \u627E\u4E0D\u5230\u5BC6\u78BC\u6A94\u6848
+agent.err.password.file.access.notrestricted = \u5FC5\u9808\u9650\u5236\u5BC6\u78BC\u6A94\u6848\u8B80\u53D6\u5B58\u53D6
 
-agent.err.access.file.notset       = \u672a\u6307\u5b9a\u5b58\u53d6\u6a94\u6848\uff0c\u4f46 com.sun.management.jmxremote.authenticate=true
-agent.err.access.file.not.readable = \u5b58\u53d6\u6a94\u6848\u4e0d\u53ef\u8b80
-agent.err.access.file.read.failed  = \u7121\u6cd5\u8b80\u53d6\u5b58\u53d6\u6a94\u6848
-agent.err.access.file.notfound     = \u627e\u4e0d\u5230\u5b58\u53d6\u6a94\u6848
+agent.err.access.file.notset       = \u672A\u6307\u5B9A\u5B58\u53D6\u6A94\u6848\uFF0C\u4F46 com.sun.management.jmxremote.authenticate=true
+agent.err.access.file.not.readable = \u5B58\u53D6\u6A94\u6848\u7121\u6CD5\u8B80\u53D6
+agent.err.access.file.read.failed  = \u7121\u6CD5\u8B80\u53D6\u5B58\u53D6\u6A94\u6848
+agent.err.access.file.notfound     = \u627E\u4E0D\u5230\u5B58\u53D6\u6A94\u6848
 
-agent.err.connector.server.io.error = JMX \u9023\u63a5\u5668\u4f3a\u670d\u5668\u901a\u8a0a\u932f\u8aa4
+agent.err.connector.server.io.error = JMX \u9023\u63A5\u5668\u4F3A\u670D\u5668\u901A\u8A0A\u932F\u8AA4
 
-agent.err.invalid.option	   = \u6307\u5b9a\u7684\u9078\u9805\u7121\u6548
-agent.err.invalid.snmp.port        = com.sun.management.snmp.port \u7de8\u865f\u7121\u6548
-agent.err.invalid.snmp.trap.port   = com.sun.management.snmp.trap \u7de8\u865f\u7121\u6548
-agent.err.unknown.snmp.interface   = \u4e0d\u660e\u7684 SNMP \u4ecb\u9762
-agent.err.acl.file.notset          = \u672a\u6307\u5b9a SNMP ACL \u6a94\u6848\uff0c\u4f46 com.sun.management.snmp.acl=true
-agent.err.acl.file.notfound        = \u627e\u4e0d\u5230 SNMP ACL \u6a94\u6848
-agent.err.acl.file.not.readable    = SNMP ACL \u6a94\u6848\u4e0d\u53ef\u8b80
-agent.err.acl.file.read.failed     = \u7121\u6cd5\u8b80\u53d6 SNMP ACL \u6a94\u6848
-agent.err.acl.file.access.notrestricted = \u5fc5\u9808\u9650\u5236\u5bc6\u78bc\u6a94\u6848\u8b80\u53d6\u5b58\u53d6
+agent.err.invalid.option	   = \u6307\u5B9A\u7684\u9078\u9805\u7121\u6548
+agent.err.invalid.snmp.port        = com.sun.management.snmp.port \u865F\u78BC\u7121\u6548
+agent.err.invalid.snmp.trap.port   = com.sun.management.snmp.trap \u7DE8\u865F\u7121\u6548
+agent.err.unknown.snmp.interface   = \u4E0D\u660E\u7684 SNMP \u4ECB\u9762
+agent.err.acl.file.notset          = \u672A\u6307\u5B9A SNMP ACL \u6A94\u6848\uFF0C\u4F46 com.sun.management.snmp.acl=true
+agent.err.acl.file.notfound        = \u627E\u4E0D\u5230 SNMP ACL \u6A94\u6848
+agent.err.acl.file.not.readable    = SNMP ACL \u6A94\u6848\u7121\u6CD5\u8B80\u53D6
+agent.err.acl.file.read.failed     = \u7121\u6CD5\u8B80\u53D6 SNMP ACL \u6A94\u6848
+agent.err.acl.file.access.notrestricted = \u5FC5\u9808\u9650\u5236\u5BC6\u78BC\u6A94\u6848\u8B80\u53D6\u5B58\u53D6
 
-agent.err.snmp.adaptor.start.failed = \u7121\u6cd5\u4f7f\u7528\u4f4d\u5740\u555f\u52d5 SNMP \u914d\u63a5\u5361
-agent.err.snmp.mib.init.failed     = \u7121\u6cd5\u521d\u59cb\u5316 SNMP MIB\uff0c\u51fa\u73fe\u932f\u8aa4
+agent.err.snmp.adaptor.start.failed = \u7121\u6CD5\u4F7F\u7528\u4F4D\u5740\u555F\u52D5 SNMP \u914D\u63A5\u5361
+agent.err.snmp.mib.init.failed     = \u7121\u6CD5\u521D\u59CB\u5316 SNMP MIB\uFF0C\u51FA\u73FE\u932F\u8AA4
 
-jmxremote.ConnectorBootstrap.initialize = \u6b63\u5728\u555f\u52d5 JMX \u9023\u63a5\u5668\u4f3a\u670d\u5668\ufe30
-jmxremote.ConnectorBootstrap.initialize.noAuthentication = \u7121\u8a8d\u8b49
-jmxremote.ConnectorBootstrap.initialize.ready = JMX \u9023\u63a5\u5668\u5c31\u7dd2\uff0c\u4f4d\u65bc\ufe30{0}
-jmxremote.ConnectorBootstrap.initialize.password.readonly = \u5fc5\u9808\u9650\u5236\u5bc6\u78bc\u6a94\u6848\u8b80\u53d6\u5b58\u53d6\ufe30{0}
-jmxremote.ConnectorBootstrap.initialize.file.readonly = \u5fc5\u9808\u9650\u5236\u6a94\u6848\u8b80\u53d6\u5b58\u53d6: {0}
+jmxremote.ConnectorBootstrap.initialize = \u6B63\u5728\u555F\u52D5 JMX \u9023\u63A5\u5668\u4F3A\u670D\u5668:
+jmxremote.ConnectorBootstrap.initialize.noAuthentication = \u7121\u8A8D\u8B49
+jmxremote.ConnectorBootstrap.initialize.ready = JMX \u9023\u63A5\u5668\u5C31\u7DD2\uFF0C\u4F4D\u65BC: {0}
+jmxremote.ConnectorBootstrap.initialize.password.readonly = \u5FC5\u9808\u9650\u5236\u5BC6\u78BC\u6A94\u6848\u8B80\u53D6\u5B58\u53D6: {0}
+jmxremote.ConnectorBootstrap.initialize.file.readonly = \u5FC5\u9808\u9650\u5236\u6A94\u6848\u8B80\u53D6\u5B58\u53D6\u6B0A: {0}
 
-jmxremote.AdaptorBootstrap.getTargetList.processing = \u6b63\u5728\u8655\u7406 ACL
-jmxremote.AdaptorBootstrap.getTargetList.adding = \u6b63\u5728\u589e\u52a0\u76ee\u6a19\ufe30{0}
-jmxremote.AdaptorBootstrap.getTargetList.starting = \u6b63\u5728\u555f\u52d5\u914d\u63a5\u5361\u4f3a\u670d\u5668\ufe30
-jmxremote.AdaptorBootstrap.getTargetList.initialize1 = \u914d\u63a5\u5361\u5c31\u7dd2\u3002
-jmxremote.AdaptorBootstrap.getTargetList.initialize2 = SNMP \u914d\u63a5\u5361\u5c31\u7dd2\uff0c\u4f4d\u65bc\ufe30{0}:{1}
-jmxremote.AdaptorBootstrap.getTargetList.terminate = \u7d42\u6b62 {0}
+jmxremote.AdaptorBootstrap.getTargetList.processing = \u6B63\u5728\u8655\u7406 ACL
+jmxremote.AdaptorBootstrap.getTargetList.adding = \u6B63\u5728\u65B0\u589E\u76EE\u6A19: {0}
+jmxremote.AdaptorBootstrap.getTargetList.starting = \u6B63\u5728\u555F\u52D5\u914D\u63A5\u5361\u4F3A\u670D\u5668:
+jmxremote.AdaptorBootstrap.getTargetList.initialize1 = \u914D\u63A5\u5361\u5C31\u7DD2\u3002
+jmxremote.AdaptorBootstrap.getTargetList.initialize2 = SNMP \u914D\u63A5\u5361\u5C31\u7DD2\uFF0C\u4F4D\u65BC: {0}:{1}
+jmxremote.AdaptorBootstrap.getTargetList.terminate = \u7D42\u6B62 {0}
--- a/jdk/src/share/classes/sun/misc/BootClassLoaderHook.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/misc/BootClassLoaderHook.java	Wed Jul 05 17:35:13 2017 +0200
@@ -34,10 +34,7 @@
  * BootClassLoaderHook defines an interface for a hook to inject
  * into the bootstrap class loader.
  *
- * In jkernel build, the sun.jkernel.DownloadManager is set as
- * a BootClassLoaderHook by the jkernel VM after the VM is initialized.
- *
- * In other JDK builds, no hook is set.
+ * With jkernel now removed, no hook is set
  */
 public abstract class BootClassLoaderHook {
     private static BootClassLoaderHook bootLoaderHook = null;
--- a/jdk/src/share/classes/sun/misc/FloatingDecimal.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/misc/FloatingDecimal.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1547,7 +1547,7 @@
                 if ( (cmpResult = bigB.cmp( bigD ) ) > 0 ){
                     overvalue = true; // our candidate is too big.
                     diff = bigB.sub( bigD );
-                    if ( (bigIntNBits == 1) && (bigIntExp > -expBias) ){
+                    if ( (bigIntNBits == 1) && (bigIntExp > -expBias+1) ){
                         // candidate is a normalized exact power of 2 and
                         // is too big. We will be subtracting.
                         // For our purposes, ulp is the ulp of the
--- a/jdk/src/share/classes/sun/misc/JarIndex.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/misc/JarIndex.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -67,6 +67,14 @@
     public static final String INDEX_NAME = "META-INF/INDEX.LIST";
 
     /**
+     * true if, and only if, sun.misc.JarIndex.metaInfFilenames is set to true.
+     * If true, the names of the files in META-INF, and its subdirectories, will
+     * be added to the index. Otherwise, just the directory names are added.
+     */
+    private static final boolean metaInfFilenames =
+        "true".equals(System.getProperty("sun.misc.JarIndex.metaInfFilenames"));
+
+    /**
      * Constructs a new, empty jar index.
      */
     public JarIndex() {
@@ -187,6 +195,18 @@
     }
 
     /**
+     * Same as add(String,String) except that it doesn't strip off from the
+     * last index of '/'. It just adds the filename.
+     */
+    private void addExplicit(String fileName, String jarName) {
+        // add the mapping to indexMap
+        addToList(fileName, jarName, indexMap);
+
+        // add the mapping to jarMap
+        addToList(jarName, fileName, jarMap);
+     }
+
+    /**
      * Go through all the jar files and construct the
      * index table.
      */
@@ -204,15 +224,31 @@
 
             Enumeration entries = zrf.entries();
             while(entries.hasMoreElements()) {
-                String fileName = ((ZipEntry)(entries.nextElement())).getName();
-                // Index the META-INF directory, but not the index or manifest.
-                if (!fileName.startsWith("META-INF/") ||
-                        !(fileName.equals("META-INF/") ||
-                          fileName.equals(INDEX_NAME) ||
-                          fileName.equals(JarFile.MANIFEST_NAME))) {
+                ZipEntry entry = (ZipEntry) entries.nextElement();
+                String fileName = entry.getName();
+
+                // Skip the META-INF directory, the index, and manifest.
+                // Any files in META-INF/ will be indexed explicitly
+                if (fileName.equals("META-INF/") ||
+                    fileName.equals(INDEX_NAME) ||
+                    fileName.equals(JarFile.MANIFEST_NAME))
+                    continue;
+
+                if (!metaInfFilenames) {
                     add(fileName, currentJar);
+                } else {
+                    if (!fileName.startsWith("META-INF/")) {
+                        add(fileName, currentJar);
+                    } else if (!entry.isDirectory()) {
+                        // Add files under META-INF explicitly so that certain
+                        // services, like ServiceLoader, etc, can be located
+                        // with greater accuracy. Directories can be skipped
+                        // since each file will be added explicitly.
+                        addExplicit(fileName, currentJar);
+                    }
                 }
             }
+
             zrf.close();
         }
     }
--- a/jdk/src/share/classes/sun/misc/VM.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/misc/VM.java	Wed Jul 05 17:35:13 2017 +0200
@@ -235,6 +235,9 @@
         return savedProps.getProperty(key);
     }
 
+    // TODO: the Property Management needs to be refactored and
+    // the appropriate prop keys need to be accessible to the
+    // calling classes to avoid duplication of keys.
     private static final Properties savedProps = new Properties();
 
     // Save a private copy of the system properties and remove
@@ -283,6 +286,9 @@
 
         // used by java.util.zip.ZipFile
         props.remove("sun.zip.disableMemoryMapping");
+
+        // used by sun.launcher.LauncherHelper
+        props.remove("sun.java.launcher.diag");
     }
 
     // Initialize any miscellenous operating system settings that need to be
--- a/jdk/src/share/classes/sun/misc/resources/Messages_de.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/misc/resources/Messages_de.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2005, 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
@@ -44,9 +44,9 @@
     }
 
     private static final Object[][] contents = {
-        { "optpkg.versionerror", "FEHLER: In der JAR-Datei {0} wurde ein ung\u00fcltiges Versionsformat verwendet. Pr\u00fcfen Sie in der Dokumentation, welches Versionsformat unterst\u00fctzt wird." },
-        { "optpkg.attributeerror", "FEHLER: In der JAR-Datei {1} ist das erforderliche JAR-Manifestattribut {0} nicht gesetzt." },
-        { "optpkg.attributeserror", "FEHLER: In der JAR-Datei {0} sind einige erforderliche JAR-Manifestattribute nicht gesetzt." }
+        { "optpkg.versionerror", "ERROR: In JAR-Datei {0} wurde ein ung\u00FCltiges Versionsformat verwendet. Pr\u00FCfen Sie in der Dokumentation, welches Versionsformat unterst\u00FCtzt wird." },
+        { "optpkg.attributeerror", "ERROR: In JAR-Datei {1} ist das erforderliche JAR-Manifestattribut {0} nicht festgelegt." },
+        { "optpkg.attributeserror", "ERROR: In JAR-Datei {0} sind einige erforderliche JAR-Manifestattribute nicht festgelegt." }
     };
 
 }
--- a/jdk/src/share/classes/sun/misc/resources/Messages_es.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/misc/resources/Messages_es.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2005, 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
@@ -44,9 +44,9 @@
     }
 
     private static final Object[][] contents = {
-        { "optpkg.versionerror", "ERROR: El formato del archivo JAR {0} pertenece a una versi\u00f3n no v\u00e1lida. Busque en la documentaci\u00f3n un formato de una versi\u00f3n compatible." },
-        { "optpkg.attributeerror", "ERROR: El atributo obligatorio JAR manifest {0} no est\u00e1 definido en el archivo JAR {1}." },
-        { "optpkg.attributeserror", "ERROR: Algunos atributos obligatorios JAR manifest no est\u00e1n definidos en el archivo JAR {0}." }
+        { "optpkg.versionerror", "ERROR: el formato del archivo JAR {0} pertenece a una versi\u00F3n no v\u00E1lida. Busque en la documentaci\u00F3n el formato de una versi\u00F3n soportada." },
+        { "optpkg.attributeerror", "ERROR: el atributo obligatorio JAR manifest {0} no est\u00E1 definido en el archivo JAR {1}." },
+        { "optpkg.attributeserror", "ERROR: algunos atributos obligatorios JAR manifest no est\u00E1n definidos en el archivo JAR {0}." }
     };
 
 }
--- a/jdk/src/share/classes/sun/misc/resources/Messages_fr.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/misc/resources/Messages_fr.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2005, 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
@@ -44,9 +44,9 @@
     }
 
     private static final Object[][] contents = {
-        { "optpkg.versionerror", "ERREUR\u00a0: Format de version utilis\u00e9 pour le fichier JAR {0} non valide. Consultez la documentation pour voir le format de version pris en charge." },
-        { "optpkg.attributeerror", "ERREUR\u00a0: L''attribut manifeste JAR {0} n\u00e9cessaire n''est pas d\u00e9fini pour le fichier {1}. " },
-        { "optpkg.attributeserror", "ERREUR\u00a0: Certains attributs manifeste JAR {0} n\u00e9cessaires ne sont pas d\u00e9finis pour le fichier {1}. " }
+        { "optpkg.versionerror", "ERREUR\u00A0: le format de version utilis\u00E9 pour le fichier JAR {0} n''est pas valide. Pour conna\u00EEtre le format de version pris en charge, consultez la documentation." },
+        { "optpkg.attributeerror", "ERREUR\u00A0: l''attribut manifest JAR {0} obligatoire n''est pas d\u00E9fini dans le fichier JAR {1}." },
+        { "optpkg.attributeserror", "ERREUR\u00A0: certains attributs manifest JAR obligatoires ne sont pas d\u00E9finis dans le fichier JAR {0}." }
     };
 
 }
--- a/jdk/src/share/classes/sun/misc/resources/Messages_it.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/misc/resources/Messages_it.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2005, 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
@@ -45,8 +45,8 @@
 
     private static final Object[][] contents = {
         { "optpkg.versionerror", "ERRORE: Formato versione non valido nel file JAR {0}. Verificare nella documentazione il formato della versione supportato." },
-        { "optpkg.attributeerror", "ERRORE: L''attributo manifesto JAR {0} richiesto non \u00e8 impostato nel file JAR {1}." },
-        { "optpkg.attributeserror", "ERRORE: Alcuni attributi manifesti JAR {0} richiesti non sono impostati nel file JAR {1}." }
+        { "optpkg.attributeerror", "ERRORE: L''attributo manifest JAR {0} richiesto non \u00E8 impostato nel file JAR {1}." },
+        { "optpkg.attributeserror", "ERRORE: Alcuni attributi manifesti JAR obbligatori non sono impostati nel file JAR {0}." }
     };
 
 }
--- a/jdk/src/share/classes/sun/misc/resources/Messages_ja.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/misc/resources/Messages_ja.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2005, 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
@@ -44,9 +44,9 @@
     }
 
     private static final Object[][] contents = {
-        { "optpkg.versionerror", "\u30a8\u30e9\u30fc: JAR \u30d5\u30a1\u30a4\u30eb {0} \u3067\u7121\u52b9\u306a\u30d0\u30fc\u30b8\u30e7\u30f3\u5f62\u5f0f\u304c\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u308b\u30d0\u30fc\u30b8\u30e7\u30f3\u5f62\u5f0f\u306b\u3064\u3044\u3066\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002" },
-        { "optpkg.attributeerror", "\u30a8\u30e9\u30fc: \u5fc5\u8981\u306a JAR \u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u5c5e\u6027 {0} \u304c JAR \u30d5\u30a1\u30a4\u30eb {1} \u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002" },
-        { "optpkg.attributeserror", "\u30a8\u30e9\u30fc: \u8907\u6570\u306e\u5fc5\u8981\u306a JAR \u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u5c5e\u6027\u304c JAR \u30d5\u30a1\u30a4\u30eb {0} \u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002" }
+        { "optpkg.versionerror", "\u30A8\u30E9\u30FC: JAR\u30D5\u30A1\u30A4\u30EB{0}\u3067\u7121\u52B9\u306A\u30D0\u30FC\u30B8\u30E7\u30F3\u5F62\u5F0F\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u308B\u30D0\u30FC\u30B8\u30E7\u30F3\u5F62\u5F0F\u306B\u3064\u3044\u3066\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002" },
+        { "optpkg.attributeerror", "\u30A8\u30E9\u30FC: \u5FC5\u8981\u306AJAR\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u5C5E\u6027{0}\u304CJAR\u30D5\u30A1\u30A4\u30EB{1}\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002" },
+        { "optpkg.attributeserror", "\u30A8\u30E9\u30FC: \u8907\u6570\u306E\u5FC5\u8981\u306AJAR\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u5C5E\u6027\u304CJAR\u30D5\u30A1\u30A4\u30EB{0}\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002" }
     };
 
 }
--- a/jdk/src/share/classes/sun/misc/resources/Messages_ko.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/misc/resources/Messages_ko.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2005, 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
@@ -44,9 +44,9 @@
     }
 
     private static final Object[][] contents = {
-        { "optpkg.versionerror", "\uc624\ub958: {0} JAR \ud30c\uc77c\uc5d0 \uc798\ubabb\ub41c \ubc84\uc804 \ud615\uc2dd\uc774 \uc0ac\uc6a9\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc124\uba85\uc11c\ub97c \ucc38\uc870\ud558\uc5ec \uc9c0\uc6d0\ub418\ub294 \ubc84\uc804 \ud615\uc2dd\uc744 \ud655\uc778\ud558\uc2ed\uc2dc\uc624." },
-        { "optpkg.attributeerror", "\uc624\ub958: \ud544\uc694\ud55c {0} JAR \ud45c\uc2dc \uc18d\uc131\uc774 {1} JAR \ud30c\uc77c\uc5d0 \uc124\uc815\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4." },
-        { "optpkg.attributeserror", "\uc624\ub958: \ud544\uc694\ud55c JAR \ud45c\uc2dc \uc18d\uc131 \uc77c\ubd80\uac00 {0} JAR \ud30c\uc77c\uc5d0 \uc124\uc815\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4." }
+        { "optpkg.versionerror", "\uC624\uB958: {0} JAR \uD30C\uC77C\uC5D0 \uBD80\uC801\uD569\uD55C \uBC84\uC804 \uD615\uC2DD\uC774 \uC0AC\uC6A9\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uC124\uBA85\uC11C\uC5D0\uC11C \uC9C0\uC6D0\uB418\uB294 \uBC84\uC804 \uD615\uC2DD\uC744 \uD655\uC778\uD558\uC2ED\uC2DC\uC624." },
+        { "optpkg.attributeerror", "\uC624\uB958: \uD544\uC694\uD55C {0} JAR manifest \uC18D\uC131\uC774 {1} JAR \uD30C\uC77C\uC5D0 \uC124\uC815\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4." },
+        { "optpkg.attributeserror", "\uC624\uB958: \uD544\uC694\uD55C \uC77C\uBD80 JAR manifest \uC18D\uC131\uC774 {0} JAR \uD30C\uC77C\uC5D0 \uC124\uC815\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4." }
     };
 
 }
--- a/jdk/src/share/classes/sun/misc/resources/Messages_pt_BR.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/misc/resources/Messages_pt_BR.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2005, 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
@@ -30,7 +30,6 @@
  * for sun.misc.
  *
  * @author Michael Colburn
- * @version 1.5, 11/17/05
  */
 
 public class Messages_pt_BR extends java.util.ListResourceBundle {
@@ -45,9 +44,9 @@
     }
 
     private static final Object[][] contents = {
-        { "optpkg.versionerror", "ERRO: formato de vers\u00e3o inv\u00e1lido usado no arquivo jar {0}. Verifique a documenta\u00e7\u00e3o para obter o formato de vers\u00e3o suportado." },
-        { "optpkg.attributeerror", "ERRO: o atributo de manifesto JAR {0} necess\u00e1rio n\u00e3o est\u00e1 definido no arquivo JAR {1}." },
-        { "optpkg.attributeserror", "ERRO: alguns atributos de manifesto JAR necess\u00e1rios n\u00e3o est\u00e3o definidos no arquivo JAR {0}." }
+        { "optpkg.versionerror", "ERRO: formato de vers\u00E3o inv\u00E1lido usado no arquivo JAR {0}. Verifique a documenta\u00E7\u00E3o para obter o formato de vers\u00E3o suportado." },
+        { "optpkg.attributeerror", "ERRO: o atributo de manifesto JAR {0} necess\u00E1rio n\u00E3o est\u00E1 definido no arquivo JAR {1}." },
+        { "optpkg.attributeserror", "ERRO: alguns atributos de manifesto JAR necess\u00E1rios n\u00E3o est\u00E3o definidos no arquivo JAR {0}." }
     };
 
-}
\ No newline at end of file
+}
--- a/jdk/src/share/classes/sun/misc/resources/Messages_sv.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/misc/resources/Messages_sv.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2005, 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
@@ -44,9 +44,9 @@
     }
 
     private static final Object[][] contents = {
-        { "optpkg.versionerror", "FEL: Ogiltigt versionsformat i {0} JAR-fil. Kontrollera i dokumentationen vilket versionsformat som st\u00f6ds." },
-        { "optpkg.attributeerror", "FEL: Det JAR manifest-attribut {0} som kr\u00e4vs \u00e4r inte angivet i {1} JAR-filen." },
-        { "optpkg.attributeserror", "FEL: Vissa JAR manifest-attribut som kr\u00e4vs \u00e4r inte angivna i {0} JAR-filen." }
+        { "optpkg.versionerror", "FEL: Ogiltigt versionsformat i {0} JAR-fil. Kontrollera i dokumentationen vilket versionsformat som st\u00F6ds." },
+        { "optpkg.attributeerror", "FEL: Obligatoriskt JAR manifest-attribut {0} \u00E4r inte inst\u00E4llt i {1} JAR-filen." },
+        { "optpkg.attributeserror", "FEL: Vissa obligatoriska JAR manifest-attribut \u00E4r inte inst\u00E4llda i {0} JAR-filen." }
     };
 
 }
--- a/jdk/src/share/classes/sun/misc/resources/Messages_zh_CN.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/misc/resources/Messages_zh_CN.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2005, 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
@@ -44,9 +44,9 @@
     }
 
     private static final Object[][] contents = {
-        { "optpkg.versionerror", "\u9519\u8bef\uff1a{0} JAR \u6587\u4ef6\u4e2d\u4f7f\u7528\u7684\u7248\u672c\u683c\u5f0f\u65e0\u6548\u3002\u8bf7\u68c0\u67e5\u6587\u6863\u4ee5\u4e86\u89e3\u652f\u6301\u7684\u7248\u672c\u683c\u5f0f\u3002" },
-        { "optpkg.attributeerror", "\u9519\u8bef\uff1a\u5fc5\u8981\u7684 {0} JAR \u6807\u660e\u5c5e\u6027\u672a\u5728 {1} JAR \u6587\u4ef6\u4e2d\u8bbe\u7f6e\u3002" },
-        { "optpkg.attributeserror", "\u9519\u8bef\uff1a\u67d0\u4e9b\u5fc5\u8981\u7684 JAR \u6807\u660e\u5c5e\u6027\u672a\u5728 {0} JAR \u6587\u4ef6\u4e2d\u8bbe\u7f6e\u3002" }
+        { "optpkg.versionerror", "\u9519\u8BEF: {0} JAR \u6587\u4EF6\u4E2D\u4F7F\u7528\u7684\u7248\u672C\u683C\u5F0F\u65E0\u6548\u3002\u8BF7\u68C0\u67E5\u6587\u6863\u4EE5\u4E86\u89E3\u652F\u6301\u7684\u7248\u672C\u683C\u5F0F\u3002" },
+        { "optpkg.attributeerror", "\u9519\u8BEF: \u5FC5\u8981\u7684{0} JAR \u6E05\u5355\u5C5E\u6027\u672A\u5728{1} JAR \u6587\u4EF6\u4E2D\u8BBE\u7F6E\u3002" },
+        { "optpkg.attributeserror", "\u9519\u8BEF: \u67D0\u4E9B\u5FC5\u8981\u7684 JAR \u6E05\u5355\u5C5E\u6027\u672A\u5728{0} JAR \u6587\u4EF6\u4E2D\u8BBE\u7F6E\u3002" }
     };
 
 }
--- a/jdk/src/share/classes/sun/misc/resources/Messages_zh_TW.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/misc/resources/Messages_zh_TW.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2005, 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
@@ -44,9 +44,9 @@
     }
 
     private static final Object[][] contents = {
-        { "optpkg.versionerror", "\u932f\u8aa4: {0} JAR \u6a94\u4f7f\u7528\u4e86\u7121\u6548\u7684\u7248\u672c\u683c\u5f0f\u3002\u8acb\u6aa2\u67e5\u6587\u4ef6\uff0c\u4ee5\u7372\u5f97\u652f\u63f4\u7684\u7248\u672c\u683c\u5f0f\u3002" },
-        { "optpkg.attributeerror", "\u932f\u8aa4: {1} JAR \u6a94\u4e2d\u672a\u8a2d\u5b9a\u5fc5\u8981\u7684 {0} JAR \u6a19\u660e\u5c6c\u6027\u3002" },
-        { "optpkg.attributeserror", "\u932f\u8aa4: {0} JAR \u6a94\u4e2d\u672a\u8a2d\u5b9a\u67d0\u4e9b\u5fc5\u8981\u7684 JAR \u6a19\u660e\u5c6c\u6027\u3002" }
+        { "optpkg.versionerror", "\u932F\u8AA4: {0} JAR \u6A94\u4F7F\u7528\u4E86\u7121\u6548\u7684\u7248\u672C\u683C\u5F0F\u3002\u8ACB\u6AA2\u67E5\u6587\u4EF6\uFF0C\u4EE5\u7372\u5F97\u652F\u63F4\u7684\u7248\u672C\u683C\u5F0F\u3002" },
+        { "optpkg.attributeerror", "\u932F\u8AA4: {1} JAR \u6A94\u4E2D\u672A\u8A2D\u5B9A\u5FC5\u8981\u7684 {0} JAR \u8CC7\u8A0A\u6E05\u55AE\u5C6C\u6027\u3002" },
+        { "optpkg.attributeserror", "\u932F\u8AA4: {0} JAR \u6A94\u4E2D\u672A\u8A2D\u5B9A\u67D0\u4E9B\u5FC5\u8981\u7684 JAR \u8CC7\u8A0A\u6E05\u55AE\u5C6C\u6027\u3002" }
     };
 
 }
--- a/jdk/src/share/classes/sun/net/www/http/KeepAliveCache.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/net/www/http/KeepAliveCache.java	Wed Jul 05 17:35:13 2017 +0200
@@ -106,6 +106,9 @@
                     keepAliveTimer = new Thread(grp, cache, "Keep-Alive-Timer");
                     keepAliveTimer.setDaemon(true);
                     keepAliveTimer.setPriority(Thread.MAX_PRIORITY - 2);
+                    // Set the context class loader to null in order to avoid
+                    // keeping a strong reference to an application classloader.
+                    keepAliveTimer.setContextClassLoader(null);
                     keepAliveTimer.start();
                     return null;
                 }
--- a/jdk/src/share/classes/sun/net/www/http/KeepAliveStream.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/net/www/http/KeepAliveStream.java	Wed Jul 05 17:35:13 2017 +0200
@@ -185,6 +185,9 @@
                         cleanerThread = new Thread(grp, queue, "Keep-Alive-SocketCleaner");
                         cleanerThread.setDaemon(true);
                         cleanerThread.setPriority(Thread.MAX_PRIORITY - 2);
+                        // Set the context class loader to null in order to avoid
+                        // keeping a strong reference to an application classloader.
+                        cleanerThread.setContextClassLoader(null);
                         cleanerThread.start();
                         return null;
                     }
--- a/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java	Wed Jul 05 17:35:13 2017 +0200
@@ -45,15 +45,6 @@
     }
 
     @Override
-    public final Object getAttribute(String attribute) throws IOException {
-        if (attribute.equals(OWNER_NAME))
-            return getOwner();
-        if (attribute.equals(ACL_NAME))
-            return getAcl();
-        return null;
-    }
-
-    @Override
     @SuppressWarnings("unchecked")
     public final void setAttribute(String attribute, Object value)
         throws IOException
@@ -71,7 +62,7 @@
     }
 
     @Override
-    public final Map<String,?> readAttributes(String[] attributes)
+    public final Map<String,Object> readAttributes(String[] attributes)
         throws IOException
     {
         boolean acl = false;
@@ -91,7 +82,7 @@
                 continue;
             }
         }
-        Map<String,Object> result = new HashMap<String,Object>(2);
+        Map<String,Object> result = new HashMap<>(2);
         if (acl)
             result.put(ACL_NAME, getAcl());
         if (owner)
--- a/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java	Wed Jul 05 17:35:13 2017 +0200
@@ -54,30 +54,6 @@
     }
 
     @Override
-    public Object getAttribute(String attribute) throws IOException {
-        BasicFileAttributes attrs = readAttributes();
-        if (attribute.equals(SIZE_NAME))
-            return attrs.size();
-        if (attribute.equals(CREATION_TIME_NAME))
-            return attrs.creationTime();
-        if (attribute.equals(LAST_ACCESS_TIME_NAME))
-            return attrs.lastAccessTime();
-        if (attribute.equals(LAST_MODIFIED_TIME_NAME))
-            return attrs.lastModifiedTime();
-        if (attribute.equals(FILE_KEY_NAME))
-            return attrs.fileKey();
-        if (attribute.equals(IS_DIRECTORY_NAME))
-            return attrs.isDirectory();
-        if (attribute.equals(IS_REGULAR_FILE_NAME))
-            return attrs.isRegularFile();
-        if (attribute.equals(IS_SYMBOLIC_LINK_NAME))
-            return attrs.isSymbolicLink();
-        if (attribute.equals(IS_OTHER_NAME))
-            return attrs.isOther();
-        return null;
-    }
-
-    @Override
     public void setAttribute(String attribute, Object value)
         throws IOException
     {
@@ -101,8 +77,8 @@
      * Used to build a map of attribute name/values.
      */
     static class AttributesBuilder {
-        private Set<String> set = new HashSet<String>();
-        private Map<String,Object> map = new HashMap<String,Object>();
+        private Set<String> set = new HashSet<>();
+        private Map<String,Object> map = new HashMap<>();
         private boolean copyAll;
 
         private AttributesBuilder(String[] attributes) {
@@ -172,7 +148,7 @@
     }
 
     @Override
-    public Map<String,?> readAttributes(String[] attributes) throws IOException {
+    public Map<String,Object> readAttributes(String[] attributes) throws IOException {
         AttributesBuilder builder = AttributesBuilder.create(attributes);
         addBasicAttributesToBuilder(readAttributes(), builder);
         return builder.unmodifiableMap();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/sun/nio/fs/AbstractFileSystemProvider.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 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.  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.nio.fs;
+
+import java.nio.file.*;
+import java.nio.file.spi.FileSystemProvider;
+import java.io.IOException;
+import java.util.Map;
+import java.util.Collections;
+
+/**
+ * Base implementation class of FileSystemProvider
+ */
+
+abstract class AbstractFileSystemProvider extends FileSystemProvider {
+    protected AbstractFileSystemProvider() { }
+
+    /**
+     * Splits the given attribute name into the name of an attribute view and
+     * the attribute. If the attribute view is not identified then it assumed
+     * to be "basic".
+     */
+    private static String[] split(String attribute) {
+        String[] s = new String[2];
+        int pos = attribute.indexOf(':');
+        if (pos == -1) {
+            s[0] = "basic";
+            s[1] = attribute;
+        } else {
+            s[0] = attribute.substring(0, pos++);
+            s[1] = (pos == attribute.length()) ? "" : attribute.substring(pos);
+        }
+        return s;
+    }
+
+    /**
+     * Gets a DynamicFileAttributeView by name. Returns {@code null} if the
+     * view is not available.
+     */
+    abstract DynamicFileAttributeView getFileAttributeView(Path file,
+                                                           String name,
+                                                           LinkOption... options);
+
+    @Override
+    public final void setAttribute(Path file,
+                                   String attribute,
+                                   Object value,
+                                   LinkOption... options)
+        throws IOException
+    {
+        String[] s = split(attribute);
+        DynamicFileAttributeView view = getFileAttributeView(file, s[0], options);
+        if (view == null)
+            throw new UnsupportedOperationException("View '" + s[0] + "' not available");
+        view.setAttribute(s[1], value);
+    }
+
+    @Override
+    public final Map<String,Object> readAttributes(Path file, String attributes, LinkOption... options)
+        throws IOException
+    {
+        String[] s = split(attributes);
+        DynamicFileAttributeView view = getFileAttributeView(file, s[0], options);
+        if (view == null)
+            return Collections.emptyMap();
+        return view.readAttributes(s[1].split(","));
+    }
+
+    /**
+     * Deletes a file. The {@code failIfNotExists} parameters determines if an
+     * {@code IOException} is thrown when the file does not exist.
+     */
+    abstract boolean implDelete(Path file, boolean failIfNotExists) throws IOException;
+
+    @Override
+    public final void delete(Path file) throws IOException {
+        implDelete(file, true);
+    }
+
+    @Override
+    public final boolean deleteIfExists(Path file) throws IOException {
+        return implDelete(file, false);
+    }
+}
--- a/jdk/src/share/classes/sun/nio/fs/AbstractFileTypeDetector.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/nio/fs/AbstractFileTypeDetector.java	Wed Jul 05 17:35:13 2017 +0200
@@ -25,7 +25,7 @@
 
 package sun.nio.fs;
 
-import java.nio.file.FileRef;
+import java.nio.file.Path;
 import java.nio.file.spi.FileTypeDetector;
 import java.util.Locale;
 import java.io.IOException;
@@ -46,7 +46,7 @@
      * and checks that the content type's syntax is valid.
      */
     @Override
-    public final String probeContentType(FileRef file) throws IOException {
+    public final String probeContentType(Path file) throws IOException {
         if (file == null)
             throw new NullPointerException("'file' is null");
         String result = implProbeContentType(file);
@@ -56,7 +56,7 @@
     /**
      * Probes the given file to guess its content type.
      */
-    protected abstract String implProbeContentType(FileRef file)
+    protected abstract String implProbeContentType(Path file)
         throws IOException;
 
     /**
--- a/jdk/src/share/classes/sun/nio/fs/AbstractPath.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/nio/fs/AbstractPath.java	Wed Jul 05 17:35:13 2017 +0200
@@ -26,391 +26,81 @@
 package sun.nio.fs;
 
 import java.nio.file.*;
-import static java.nio.file.StandardOpenOption.*;
-import java.nio.file.attribute.*;
-import java.nio.channels.*;
-import java.nio.ByteBuffer;
-import java.io.*;
-import java.util.*;
+import java.io.File;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.NoSuchElementException;
 
 /**
- * Base implementation class for a {@code Path}.
+ * Base implementation class of {@code Path}.
  */
 
-abstract class AbstractPath extends Path {
+abstract class AbstractPath implements Path {
     protected AbstractPath() { }
 
     @Override
-    public final Path createFile(FileAttribute<?>... attrs)
-        throws IOException
-    {
-        EnumSet<StandardOpenOption> options = EnumSet.of(CREATE_NEW, WRITE);
-        SeekableByteChannel sbc = newByteChannel(options, attrs);
-        try {
-            sbc.close();
-        } catch (IOException x) {
-            // ignore
-        }
-        return this;
-    }
-
-    /**
-     * Deletes a file. The {@code failIfNotExists} parameters determines if an
-     * {@code IOException} is thrown when the file does not exist.
-     */
-    abstract void implDelete(boolean failIfNotExists) throws IOException;
-
-    @Override
-    public final void delete() throws IOException {
-        implDelete(true);
+    public final boolean startsWith(String other) {
+        return startsWith(getFileSystem().getPath(other));
     }
 
     @Override
-    public final void deleteIfExists() throws IOException {
-        implDelete(false);
+    public final boolean endsWith(String other) {
+        return endsWith(getFileSystem().getPath(other));
     }
 
     @Override
-    public final InputStream newInputStream(OpenOption... options)
-        throws IOException
-    {
-        if (options.length > 0) {
-            for (OpenOption opt: options) {
-                if (opt != READ)
-                    throw new UnsupportedOperationException("'" + opt + "' not allowed");
-            }
-        }
-        return Channels.newInputStream(newByteChannel());
+    public final Path resolve(String other) {
+        return resolve(getFileSystem().getPath(other));
     }
 
     @Override
-    public final OutputStream newOutputStream(OpenOption... options)
-        throws IOException
-    {
-        int len = options.length;
-        Set<OpenOption> opts = new HashSet<OpenOption>(len + 3);
-        if (len == 0) {
-            opts.add(CREATE);
-            opts.add(TRUNCATE_EXISTING);
-        } else {
-            for (OpenOption opt: options) {
-                if (opt == READ)
-                    throw new IllegalArgumentException("READ not allowed");
-                opts.add(opt);
-            }
-        }
-        opts.add(WRITE);
-        return Channels.newOutputStream(newByteChannel(opts));
+    public final Path resolveSibling(Path other) {
+        if (other == null)
+            throw new NullPointerException();
+        Path parent = getParent();
+        return (parent == null) ? other : parent.resolve(other);
     }
 
     @Override
-    public final SeekableByteChannel newByteChannel(OpenOption... options)
-        throws IOException
-    {
-        Set<OpenOption> set = new HashSet<OpenOption>(options.length);
-        Collections.addAll(set, options);
-        return newByteChannel(set);
-    }
-
-    private static final DirectoryStream.Filter<Path> acceptAllFilter =
-        new DirectoryStream.Filter<Path>() {
-            @Override public boolean accept(Path entry) { return true; }
-        };
-
-    @Override
-    public final DirectoryStream<Path> newDirectoryStream() throws IOException {
-        return newDirectoryStream(acceptAllFilter);
+    public final Path resolveSibling(String other) {
+        return resolveSibling(getFileSystem().getPath(other));
     }
 
     @Override
-    public final DirectoryStream<Path> newDirectoryStream(String glob)
-        throws IOException
-    {
-        // avoid creating a matcher if all entries are required.
-        if (glob.equals("*"))
-            return newDirectoryStream();
-
-        // create a matcher and return a filter that uses it.
-        final PathMatcher matcher = getFileSystem().getPathMatcher("glob:" + glob);
-        DirectoryStream.Filter<Path> filter = new DirectoryStream.Filter<Path>() {
+    public final Iterator<Path> iterator() {
+        return new Iterator<Path>() {
+            private int i = 0;
+            @Override
+            public boolean hasNext() {
+                return (i < getNameCount());
+            }
             @Override
-            public boolean accept(Path entry)  {
-                return matcher.matches(entry.getName());
+            public Path next() {
+                if (i < getNameCount()) {
+                    Path result = getName(i);
+                    i++;
+                    return result;
+                } else {
+                    throw new NoSuchElementException();
+                }
+            }
+            @Override
+            public void remove() {
+                throw new UnsupportedOperationException();
             }
         };
-        return newDirectoryStream(filter);
     }
 
     @Override
-    public final boolean exists() {
-        try {
-            checkAccess();
-            return true;
-        } catch (IOException x) {
-            // unable to determine if file exists
-        }
-        return false;
+    public final File toFile() {
+        return new File(toString());
     }
 
     @Override
-    public final boolean notExists() {
-        try {
-            checkAccess();
-            return false;
-        } catch (NoSuchFileException x) {
-            // file confirmed not to exist
-            return true;
-        } catch (IOException x) {
-            return false;
-        }
-    }
-
-    private static final WatchEvent.Modifier[] NO_MODIFIERS = new WatchEvent.Modifier[0];
-
-    @Override
     public final WatchKey register(WatchService watcher,
                                    WatchEvent.Kind<?>... events)
         throws IOException
     {
-        return register(watcher, events, NO_MODIFIERS);
-    }
-
-    abstract void implCopyTo(Path target, CopyOption... options)
-        throws IOException;
-
-    @Override
-    public final Path copyTo(Path target, CopyOption... options)
-        throws IOException
-    {
-        if ((getFileSystem().provider() == target.getFileSystem().provider())) {
-            implCopyTo(target, options);
-        } else {
-            copyToForeignTarget(target, options);
-        }
-        return target;
-    }
-
-    abstract void implMoveTo(Path target, CopyOption... options)
-        throws IOException;
-
-    @Override
-    public final Path moveTo(Path target, CopyOption... options)
-        throws IOException
-    {
-        if ((getFileSystem().provider() == target.getFileSystem().provider())) {
-            implMoveTo(target, options);
-        } else {
-            // different providers so copy + delete
-            copyToForeignTarget(target, convertMoveToCopyOptions(options));
-            delete();
-        }
-        return target;
-    }
-
-    /**
-     * Converts the given array of options for moving a file to options suitable
-     * for copying the file when a move is implemented as copy + delete.
-     */
-    private static CopyOption[] convertMoveToCopyOptions(CopyOption... options)
-        throws AtomicMoveNotSupportedException
-    {
-        int len = options.length;
-        CopyOption[] newOptions = new CopyOption[len+2];
-        for (int i=0; i<len; i++) {
-            CopyOption option = options[i];
-            if (option == StandardCopyOption.ATOMIC_MOVE) {
-                throw new AtomicMoveNotSupportedException(null, null,
-                    "Atomic move between providers is not supported");
-            }
-            newOptions[i] = option;
-        }
-        newOptions[len] = LinkOption.NOFOLLOW_LINKS;
-        newOptions[len+1] = StandardCopyOption.COPY_ATTRIBUTES;
-        return newOptions;
-    }
-
-    /**
-     * Parses the arguments for a file copy operation.
-     */
-    private static class CopyOptions {
-        boolean replaceExisting = false;
-        boolean copyAttributes = false;
-        boolean followLinks = true;
-
-        private CopyOptions() { }
-
-        static CopyOptions parse(CopyOption... options) {
-            CopyOptions result = new CopyOptions();
-            for (CopyOption option: options) {
-                if (option == StandardCopyOption.REPLACE_EXISTING) {
-                    result.replaceExisting = true;
-                    continue;
-                }
-                if (option == LinkOption.NOFOLLOW_LINKS) {
-                    result.followLinks = false;
-                    continue;
-                }
-                if (option == StandardCopyOption.COPY_ATTRIBUTES) {
-                    result.copyAttributes = true;
-                    continue;
-                }
-                if (option == null)
-                    throw new NullPointerException();
-                throw new UnsupportedOperationException("'" + option +
-                    "' is not a recognized copy option");
-            }
-            return result;
-        }
-    }
-
-    /**
-     * Simple cross-provider copy where the target is a Path.
-     */
-    private void copyToForeignTarget(Path target, CopyOption... options)
-        throws IOException
-    {
-        CopyOptions opts = CopyOptions.parse(options);
-        LinkOption[] linkOptions = (opts.followLinks) ? new LinkOption[0] :
-            new LinkOption[] { LinkOption.NOFOLLOW_LINKS };
-
-        // attributes of source file
-        BasicFileAttributes attrs = Attributes
-            .readBasicFileAttributes(this, linkOptions);
-        if (attrs.isSymbolicLink())
-            throw new IOException("Copying of symbolic links not supported");
-
-        // check if target exists
-        boolean exists;
-        if (opts.replaceExisting) {
-            try {
-                target.deleteIfExists();
-                exists = false;
-            } catch (DirectoryNotEmptyException x) {
-                // let exception translate to FileAlreadyExistsException (6895012)
-                exists = true;
-            }
-        } else {
-            exists = target.exists();
-        }
-        if (exists)
-            throw new FileAlreadyExistsException(target.toString());
-
-        // create directory or file
-        if (attrs.isDirectory()) {
-            target.createDirectory();
-        } else {
-            copyRegularFileToForeignTarget(target);
-        }
-
-        // copy basic attributes to target
-        if (opts.copyAttributes) {
-            BasicFileAttributeView view = target
-                .getFileAttributeView(BasicFileAttributeView.class, linkOptions);
-            try {
-                view.setTimes(attrs.lastModifiedTime(),
-                              attrs.lastAccessTime(),
-                              attrs.creationTime());
-            } catch (IOException x) {
-                // rollback
-                try {
-                    target.delete();
-                } catch (IOException ignore) { }
-                throw x;
-            }
-        }
-    }
-
-
-   /**
-     * Simple copy of regular file to a target file that exists.
-     */
-    private void copyRegularFileToForeignTarget(Path target)
-        throws IOException
-    {
-        ReadableByteChannel rbc = newByteChannel();
-        try {
-            // open target file for writing
-            SeekableByteChannel sbc = target.newByteChannel(CREATE_NEW, WRITE);
-
-            // simple copy loop
-            try {
-                ByteBuffer buf = ByteBuffer.wrap(new byte[8192]);
-                int n = 0;
-                for (;;) {
-                    n = rbc.read(buf);
-                    if (n < 0)
-                        break;
-                    assert n > 0;
-                    buf.flip();
-                    while (buf.hasRemaining()) {
-                        sbc.write(buf);
-                    }
-                    buf.rewind();
-                }
-
-            } finally {
-                sbc.close();
-            }
-        } finally {
-            rbc.close();
-        }
-    }
-
-    /**
-     * Splits the given attribute name into the name of an attribute view and
-     * the attribute. If the attribute view is not identified then it assumed
-     * to be "basic".
-     */
-    private static String[] split(String attribute) {
-        String[] s = new String[2];
-        int pos = attribute.indexOf(':');
-        if (pos == -1) {
-            s[0] = "basic";
-            s[1] = attribute;
-        } else {
-            s[0] = attribute.substring(0, pos++);
-            s[1] = (pos == attribute.length()) ? "" : attribute.substring(pos);
-        }
-        return s;
-    }
-
-    /**
-     * Gets a DynamicFileAttributeView by name. Returns {@code null} if the
-     * view is not available.
-     */
-    abstract DynamicFileAttributeView getFileAttributeView(String name,
-                                                           LinkOption... options);
-
-    @Override
-    public final void setAttribute(String attribute,
-                                   Object value,
-                                   LinkOption... options)
-        throws IOException
-    {
-        String[] s = split(attribute);
-        DynamicFileAttributeView view = getFileAttributeView(s[0], options);
-        if (view == null)
-            throw new UnsupportedOperationException("View '" + s[0] + "' not available");
-        view.setAttribute(s[1], value);
-    }
-
-    @Override
-    public final Object getAttribute(String attribute, LinkOption... options)
-        throws IOException
-    {
-        String[] s = split(attribute);
-        DynamicFileAttributeView view = getFileAttributeView(s[0], options);
-        return (view == null) ? null : view.getAttribute(s[1]);
-    }
-
-    @Override
-    public final Map<String,?> readAttributes(String attributes, LinkOption... options)
-        throws IOException
-    {
-        String[] s = split(attributes);
-        DynamicFileAttributeView view = getFileAttributeView(s[0], options);
-        if (view == null)
-            return Collections.emptyMap();
-        return view.readAttributes(s[1].split(","));
+        return register(watcher, events, new WatchEvent.Modifier[0]);
     }
 }
--- a/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java	Wed Jul 05 17:35:13 2017 +0200
@@ -92,7 +92,7 @@
     /**
      * Requests, and waits on, poller thread to register given file.
      */
-    final WatchKey register(FileRef dir,
+    final WatchKey register(Path dir,
                             WatchEvent.Kind<?>[] events,
                             WatchEvent.Modifier... modifiers)
         throws IOException
@@ -102,7 +102,7 @@
             throw new NullPointerException();
         if (events.length == 0)
             throw new IllegalArgumentException("No events to register");
-        Set<WatchEvent.Kind<?>> eventSet = new HashSet<WatchEvent.Kind<?>>(events.length);
+        Set<WatchEvent.Kind<?>> eventSet = new HashSet<>(events.length);
         for (WatchEvent.Kind<?> event: events) {
             // standard events
             if (event == StandardWatchEventKind.ENTRY_CREATE ||
--- a/jdk/src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java	Wed Jul 05 17:35:13 2017 +0200
@@ -59,8 +59,7 @@
         return "user";
     }
 
-    @Override
-    public final Object getAttribute(String attribute) throws IOException {
+    private Object getAttribute(String attribute) throws IOException {
         int size;
         try {
             size = size(attribute);
@@ -90,11 +89,11 @@
     }
 
     @Override
-    public final Map<String,?> readAttributes(String[] attributes)
+    public final Map<String,Object> readAttributes(String[] attributes)
         throws IOException
     {
         // names of attributes to return
-        List<String> names = new ArrayList<String>();
+        List<String> names = new ArrayList<>();
 
         for (String name: attributes) {
             if (name.equals("*")) {
@@ -106,7 +105,7 @@
         }
 
         // read each value and return in map
-        Map<String,Object> result = new HashMap<String,Object>();
+        Map<String,Object> result = new HashMap<>();
         for (String name: names) {
             Object value = getAttribute(name);
             if (value != null)
--- a/jdk/src/share/classes/sun/nio/fs/AbstractWatchKey.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/nio/fs/AbstractWatchKey.java	Wed Jul 05 17:35:13 2017 +0200
@@ -32,7 +32,7 @@
  * Base implementation class for watch keys.
  */
 
-abstract class AbstractWatchKey extends WatchKey {
+abstract class AbstractWatchKey implements WatchKey {
 
     /**
      * Maximum size of event list (in the future this may be tunable)
@@ -53,6 +53,9 @@
     // reference to watcher
     private final AbstractWatchService watcher;
 
+    // reference to the original directory
+    private final Path dir;
+
     // key state
     private State state;
 
@@ -63,8 +66,9 @@
     // event for the context is an ENTRY_MODIFY event).
     private Map<Object,WatchEvent<?>> lastModifyEvents;
 
-    protected AbstractWatchKey(AbstractWatchService watcher) {
+    protected AbstractWatchKey(Path dir, AbstractWatchService watcher) {
         this.watcher = watcher;
+        this.dir = dir;
         this.state = State.READY;
         this.events = new ArrayList<WatchEvent<?>>();
         this.lastModifyEvents = new HashMap<Object,WatchEvent<?>>();
@@ -75,6 +79,13 @@
     }
 
     /**
+     * Return the original watchable (Path)
+     */
+    Path watchable() {
+        return dir;
+    }
+
+    /**
      * Enqueues this key to the watch service
      */
     final void signal() {
@@ -175,7 +186,7 @@
     /**
      * WatchEvent implementation
      */
-    private static class Event<T> extends WatchEvent<T> {
+    private static class Event<T> implements WatchEvent<T> {
         private final WatchEvent.Kind<T> kind;
         private final T context;
 
--- a/jdk/src/share/classes/sun/nio/fs/AbstractWatchService.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/nio/fs/AbstractWatchService.java	Wed Jul 05 17:35:13 2017 +0200
@@ -33,7 +33,7 @@
  * Base implementation class for watch services.
  */
 
-abstract class AbstractWatchService extends WatchService {
+abstract class AbstractWatchService implements WatchService {
 
     // signaled keys waiting to be dequeued
     private final LinkedBlockingDeque<WatchKey> pendingKeys =
@@ -41,7 +41,7 @@
 
     // special key to indicate that watch service is closed
     private final WatchKey CLOSE_KEY =
-        new AbstractWatchKey(null) {
+        new AbstractWatchKey(null, null) {
             @Override
             public boolean isValid() {
                 return true;
@@ -54,7 +54,7 @@
 
     // used when closing watch service
     private volatile boolean closed;
-    private Object closeLock = new Object();
+    private final Object closeLock = new Object();
 
     protected AbstractWatchService() {
     }
@@ -93,7 +93,7 @@
     }
 
     @Override
-    public final WatchKey  poll() {
+    public final WatchKey poll() {
         checkOpen();
         WatchKey key = pendingKeys.poll();
         checkKey(key);
--- a/jdk/src/share/classes/sun/nio/fs/DynamicFileAttributeView.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/nio/fs/DynamicFileAttributeView.java	Wed Jul 05 17:35:13 2017 +0200
@@ -35,11 +35,6 @@
 
 interface DynamicFileAttributeView {
     /**
-     * Reads the value of an attribute.
-     */
-    Object getAttribute(String attribute) throws IOException;
-
-    /**
      * Sets/updates the value of an attribute.
      */
     void setAttribute(String attribute, Object value) throws IOException;
@@ -47,5 +42,5 @@
     /**
      * Reads a set of file attributes as a bulk operation.
      */
-    Map<String,?> readAttributes(String[] attributes) throws IOException;
+    Map<String,Object> readAttributes(String[] attributes) throws IOException;
 }
--- a/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java	Wed Jul 05 17:35:13 2017 +0200
@@ -58,13 +58,6 @@
     }
 
     @Override
-    public Object getAttribute(String attribute) throws IOException {
-        if (attribute.equals(OWNER_NAME))
-            return getOwner();
-        return null;
-    }
-
-    @Override
     public void setAttribute(String attribute, Object value)
         throws IOException
     {
@@ -77,8 +70,8 @@
     }
 
     @Override
-    public Map<String,?> readAttributes(String[] attributes) throws IOException {
-        Map<String,Object> result = new HashMap<String,Object>();
+    public Map<String,Object> readAttributes(String[] attributes) throws IOException {
+        Map<String,Object> result = new HashMap<>();
         for (String attribute: attributes) {
             if (attribute.equals("*") || attribute.equals(OWNER_NAME)) {
                 result.put(OWNER_NAME, getOwner());
--- a/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java	Wed Jul 05 17:35:13 2017 +0200
@@ -146,7 +146,7 @@
         throws IOException
     {
         // check file is a directory and get its file key if possible
-        BasicFileAttributes attrs = Attributes.readBasicFileAttributes(path);
+        BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class);
         if (!attrs.isDirectory()) {
             throw new NotDirectoryException(path.toString());
         }
@@ -164,7 +164,7 @@
                 watchKey = map.get(fileKey);
                 if (watchKey == null) {
                     // new registration
-                    watchKey = new PollingWatchKey(this, path, fileKey);
+                    watchKey = new PollingWatchKey(path, this, fileKey);
                     map.put(fileKey, watchKey);
                 } else {
                     // update to existing registration
@@ -228,7 +228,6 @@
      * directory and queue keys when entries are added, modified, or deleted.
      */
     private class PollingWatchKey extends AbstractWatchKey {
-        private final Path dir;
         private final Object fileKey;
 
         // current event set
@@ -246,44 +245,28 @@
         // map of entries in directory
         private Map<Path,CacheEntry> entries;
 
-        PollingWatchKey(PollingWatchService watcher,
-                        Path dir,
-                        Object fileKey)
+        PollingWatchKey(Path dir, PollingWatchService watcher, Object fileKey)
             throws IOException
         {
-            super(watcher);
-            this.dir = dir;
+            super(dir, watcher);
             this.fileKey = fileKey;
             this.valid = true;
             this.tickCount = 0;
             this.entries = new HashMap<Path,CacheEntry>();
 
             // get the initial entries in the directory
-            DirectoryStream<Path> stream = dir.newDirectoryStream();
-            try {
+            try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
                 for (Path entry: stream) {
                     // don't follow links
-                    long lastModified = Attributes
-                        .readBasicFileAttributes(entry, LinkOption.NOFOLLOW_LINKS)
-                        .lastModifiedTime().toMillis();
-                    entries.put(entry.getName(),
-                                new CacheEntry(lastModified, tickCount));
+                    long lastModified =
+                        Files.getLastModifiedTime(entry, LinkOption.NOFOLLOW_LINKS).toMillis();
+                    entries.put(entry.getFileName(), new CacheEntry(lastModified, tickCount));
                 }
-            } catch (ConcurrentModificationException cme) {
-                // thrown if directory iteration fails
-                Throwable cause = cme.getCause();
-                if (cause != null && cause instanceof IOException)
-                    throw (IOException)cause;
-                throw new AssertionError(cme);
-            } finally {
-                stream.close();
+            } catch (DirectoryIteratorException e) {
+                throw e.getCause();
             }
         }
 
-        FileRef directory() {
-            return dir;
-        }
-
         Object fileKey() {
             return fileKey;
         }
@@ -342,7 +325,7 @@
             // open directory
             DirectoryStream<Path> stream = null;
             try {
-                stream = dir.newDirectoryStream();
+                stream = Files.newDirectoryStream(watchable());
             } catch (IOException x) {
                 // directory is no longer accessible so cancel key
                 cancel();
@@ -355,9 +338,8 @@
                 for (Path entry: stream) {
                     long lastModified = 0L;
                     try {
-                        lastModified = Attributes
-                            .readBasicFileAttributes(entry, LinkOption.NOFOLLOW_LINKS)
-                            .lastModifiedTime().toMillis();
+                        lastModified =
+                            Files.getLastModifiedTime(entry, LinkOption.NOFOLLOW_LINKS).toMillis();
                     } catch (IOException x) {
                         // unable to get attributes of entry. If file has just
                         // been deleted then we'll report it as deleted on the
@@ -366,15 +348,15 @@
                     }
 
                     // lookup cache
-                    CacheEntry e = entries.get(entry.getName());
+                    CacheEntry e = entries.get(entry.getFileName());
                     if (e == null) {
                         // new file found
-                        entries.put(entry.getName(),
+                        entries.put(entry.getFileName(),
                                      new CacheEntry(lastModified, tickCount));
 
                         // queue ENTRY_CREATE if event enabled
                         if (events.contains(StandardWatchEventKind.ENTRY_CREATE)) {
-                            signalEvent(StandardWatchEventKind.ENTRY_CREATE, entry.getName());
+                            signalEvent(StandardWatchEventKind.ENTRY_CREATE, entry.getFileName());
                             continue;
                         } else {
                             // if ENTRY_CREATE is not enabled and ENTRY_MODIFY is
@@ -382,7 +364,7 @@
                             // modifications to the file immediately after it is
                             // created.
                             if (events.contains(StandardWatchEventKind.ENTRY_MODIFY)) {
-                                signalEvent(StandardWatchEventKind.ENTRY_MODIFY, entry.getName());
+                                signalEvent(StandardWatchEventKind.ENTRY_MODIFY, entry.getFileName());
                             }
                         }
                         continue;
@@ -391,15 +373,17 @@
                     // check if file has changed
                     if (e.lastModified != lastModified) {
                         if (events.contains(StandardWatchEventKind.ENTRY_MODIFY)) {
-                            signalEvent(StandardWatchEventKind.ENTRY_MODIFY, entry.getName());
+                            signalEvent(StandardWatchEventKind.ENTRY_MODIFY,
+                                        entry.getFileName());
                         }
                     }
                     // entry in cache so update poll time
                     e.update(lastModified, tickCount);
 
                 }
-            } catch (ConcurrentModificationException x) {
-                // FIXME - should handle this
+            } catch (DirectoryIteratorException e) {
+                // ignore for now; if the directory is no longer accessible
+                // then the key will be cancelled on the next poll
             } finally {
 
                 // close directory stream
--- a/jdk/src/share/classes/sun/print/resources/serviceui_de.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/print/resources/serviceui_de.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -2,14 +2,14 @@
 #
 border.chromaticity=Farbdarstellung
 border.copies=Kopien
-border.jobattributes=Job-Attribute
+border.jobattributes=Jobattribute
 border.media=Medien
 border.orientation=Ausrichtung
 border.printrange=Druckbereich
-border.printservice=Druckdienst
-border.quality=Qualit\u00e4t
+border.printservice=Druckservice
+border.quality=Qualit\u00E4t
 border.sides=Seiten
-border.margins=R\u00e4nder
+border.margins=R\u00E4nder
 #
 button.cancel=Abbrechen
 button.ok=OK
@@ -18,63 +18,63 @@
 button.properties.mnemonic=E
 #
 checkbox.collate=Sortieren
-checkbox.collate.mnemonic=R
-checkbox.jobsheets=Deckblatt
+checkbox.collate.mnemonic=S
+checkbox.jobsheets=Bannerseite
 checkbox.jobsheets.mnemonic=B
-checkbox.printtofile=Ausgabe in Datei umleiten
+checkbox.printtofile=In Datei drucken
 checkbox.printtofile.mnemonic=D
 #
 dialog.printtitle=Drucken
 dialog.pstitle=Seite einrichten
-dialog.overwrite=Diese Datei existiert bereits. M\u00f6chten Sie die vorhandene Datei \u00fcberschreiben?
-dialog.owtitle=Ausgabe in Datei umleiten
-dialog.printtofile=Ausgabe in Datei umleiten
-dialog.noprintermsg=Kein Druckdienst gefunden
-dialog.writeerror=Schreiben in Datei nicht m\u00f6glich:
+dialog.overwrite=Diese Datei ist bereits vorhanden. M\u00F6chten Sie die vorhandene Datei \u00FCberschreiben?
+dialog.owtitle=In Datei drucken
+dialog.printtofile=In Datei drucken
+dialog.noprintermsg=Kein Druckservice gefunden.
+dialog.writeerror=Schreiben in Datei nicht m\u00F6glich:
 #
 label.info=Info:
-label.jobname=Job-Name:
+label.jobname=Jobname:
 label.jobname.mnemonic=J
-label.numcopies=Anzahl der Kopien:
-label.numcopies.mnemonic=O
-label.priority=Priorit\u00e4t:
+label.numcopies=Anzahl Kopien:
+label.numcopies.mnemonic=K
+label.priority=Priorit\u00E4t:
 label.priority.mnemonic=R
 label.psname=Name:
 label.psname.mnemonic=N
 label.pstype=Typ:
 label.rangeto=Bis
-label.size=Gr\u00f6\u00dfe:
-label.size.mnemonic=E
+label.size=Gr\u00F6\u00DFe:
+label.size.mnemonic=G
 label.source=Quelle:
 label.source.mnemonic=U
 label.status=Status:
 label.username=Benutzername:
-label.username.mnemonic=U
+label.username.mnemonic=Z
 label.millimetres=(mm)
-label.inches=(in)
+label.inches=(Zoll)
 label.topmargin=oben
 label.topmargin.mnemonic=O
 label.bottommargin=unten
-label.bottommargin.mnemonic=N
+label.bottommargin.mnemonic=T
 label.leftmargin=links
 label.leftmargin.mnemonic=L
 label.rightmargin=rechts
-label.rightmargin.mnemonic=R
+label.rightmargin.mnemonic=C
 #
 radiobutton.color=Farbe
 radiobutton.color.mnemonic=F
 radiobutton.draftq=Entwurf
-radiobutton.draftq.mnemonic=T
+radiobutton.draftq.mnemonic=W
 radiobutton.duplex=Duplex
-radiobutton.duplex.mnemonic=D
+radiobutton.duplex.mnemonic=X
 radiobutton.highq=Hoch
 radiobutton.highq.mnemonic=H
 radiobutton.landscape=Querformat
 radiobutton.landscape.mnemonic=Q
-radiobutton.monochrome=Schwarzwei\u00df
+radiobutton.monochrome=Schwarzwei\u00DF
 radiobutton.monochrome.mnemonic=W
 radiobutton.normalq=Normal
-radiobutton.normalq.mnemonic=N
+radiobutton.normalq.mnemonic=M
 radiobutton.oneside=Einseitig
 radiobutton.oneside.mnemonic=E
 radiobutton.portrait=Hochformat
@@ -91,15 +91,15 @@
 radiobutton.tumble.mnemonic=K
 # The vkMnemonics correspond with the constants defined in KeyEvent, eg
 # 65 = KeyEvent.VK_A
-tab.appearance=Aussehen
+tab.appearance=Darstellung
 tab.appearance.vkMnemonic=65
 tab.general=Allgemein
 tab.general.vkMnemonic=71
 tab.pagesetup=Seite einrichten
 tab.pagesetup.vkMnemonic=83
 #
-error.pagerange=Ung\u00fcltiger Seitenbereich. Bitte geben Sie die Werte noch einmal ein (z. B. 1-3,5,7-10).
-error.destination=Ung\u00fcltiger Dateiname. Bitte versuchen Sie es noch einmal.
+error.pagerange=Ung\u00FCltiger Seitenbereich. Geben Sie die Werte erneut ein (Beispiel: 1-3,5,7-10)
+error.destination=Ung\u00FCltiger Dateiname. Wiederholen Sie den Vorgang
 #
 # The following keys match the Strings returned by MediaSizeName.toString()
 # (in some cases the space character is replaced by '-' and the pound 
@@ -156,7 +156,7 @@
 executive=Executive
 ledger=Ledger
 tabloid=Tabloid
-invoice=Rechnung
+invoice=Invoice
 folio=Folio
 quarto=Quarto
 japanese-postcard=Postkarte (JIS)
@@ -166,12 +166,12 @@
 c=Millimeterpapier C
 d=Millimeterpapier D
 e=Millimeterpapier E
-iso-designated-long=ISO-bestimmte L\u00e4nge
+iso-designated-long=ISO Designated Long
 italian-envelope=Italy-Umschlag
 italy-envelope=Italy-Umschlag
 invite-envelope=Einladungsumschlag
 monarch-envelope=Monarch-Umschlag
-personal-envelope=Pers\u00f6nlicher Umschlag
+personal-envelope=Pers\u00F6nlicher Umschlag
 na-number-9-envelope=Umschlag Nr. 9
 na-number-10-envelope=Umschlag Nr. 10
 na-number-11-envelope=Umschlag Nr. 11
@@ -195,20 +195,20 @@
 bottom=Unten
 envelope=Umschlag
 manual=Manuell
-large-capacity=Hohe Kapazit\u00e4t
+large-capacity=Hohe Kapazit\u00E4t
 main=Haupt
 side=Seite
 # Add the additional standard bins defined by win32
-Manual-Envelope=Manuelle Umschlagzuf\u00fchrung
-Automatic-Feeder=Automatische Zuf\u00fchrung
+Manual-Envelope=Manuelle Umschlagzuf\u00FChrung
+Automatic-Feeder=Automatische Zuf\u00FChrung
 Tractor-Feeder=Endlospapiereinzug
 Small-Format=Kleinformat
-Large-Format=Gro\u00dfformat
+Large-Format=Gro\u00DFformat
 Cassette=Kassette
 Form-Source=Formularquelle
 #
 # The following keys match the Strings returned by 
 # PrinterIsAcceptingJobs.toString()
 #
-accepting-jobs=Jobs werden angenommen.
-not-accepting-jobs=Es werden keine Jobs angenommen.
+accepting-jobs=Jobs annehmen
+not-accepting-jobs=Jobs nicht annehmen
--- a/jdk/src/share/classes/sun/print/resources/serviceui_es.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/print/resources/serviceui_es.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,15 +1,15 @@
 #
 #
-border.chromaticity=Aspecto del color
+border.chromaticity=Apariencia del Color
 border.copies=Copias
-border.jobattributes=Atributos del trabajo
+border.jobattributes=Atributos del Trabajo
 border.media=Soporte
-border.orientation=Orientaci\u00f3n
-border.printrange=Rango de impresi\u00f3n
-border.printservice=Servicio de impresi\u00f3n
+border.orientation=Orientaci\u00F3n
+border.printrange=Rango de Impresi\u00F3n
+border.printservice=Servicio de Impresi\u00F3n
 border.quality=Calidad
 border.sides=Caras
-border.margins=M\u00e1rgenes
+border.margins=M\u00E1rgenes
 #
 button.cancel=Cancelar
 button.ok=Aceptar
@@ -18,39 +18,39 @@
 button.properties.mnemonic=P
 #
 checkbox.collate=Intercalar
-checkbox.collate.mnemonic=I
-checkbox.jobsheets=P\u00e1gina de car\u00e1tula
-checkbox.jobsheets.mnemonic=r
-checkbox.printtofile=Imprimir en archivo
-checkbox.printtofile.mnemonic=m
+checkbox.collate.mnemonic=E
+checkbox.jobsheets=P\u00E1gina de R\u00F3tulo
+checkbox.jobsheets.mnemonic=R
+checkbox.printtofile=Imprimir en Archivo
+checkbox.printtofile.mnemonic=M
 #
 dialog.printtitle=Imprimir
-dialog.pstitle=Configurar p\u00e1gina
-dialog.overwrite=Este archivo ya existe.  \u00bfDesea sobrescribirlo?
-dialog.owtitle=Imprimir en archivo
-dialog.printtofile=Imprimir en archivo
-dialog.noprintermsg=No se ha encontrado el servicio de impresi\u00f3n.
+dialog.pstitle=Preparar P\u00E1gina
+dialog.overwrite=Este archivo ya existe. \u00BFDesea sobrescribirlo?
+dialog.owtitle=Imprimir en Archivo
+dialog.printtofile=Imprimir en Archivo
+dialog.noprintermsg=No se ha encontrado el servicio de impresi\u00F3n.
 dialog.writeerror=No se puede escribir en el archivo:
 #
-label.info=Informaci\u00f3n:
-label.jobname=Nombre del trabajo:
-label.jobname.mnemonic=t
-label.numcopies=N\u00famero de copias:
+label.info=Informaci\u00F3n:
+label.jobname=Nombre del Trabajo:
+label.jobname.mnemonic=T
+label.numcopies=N\u00FAmero de Copias:
 label.numcopies.mnemonic=O
 label.priority=Prioridad:
-label.priority.mnemonic=P
+label.priority.mnemonic=R
 label.psname=Nombre:
 label.psname.mnemonic=N
-label.pstype=Escriba:
+label.pstype=Tipo:
 label.rangeto=A
-label.size=Tama\u00f1o:
+label.size=Tama\u00F1o:
 label.size.mnemonic=T
 label.source=Origen:
 label.source.mnemonic=O
 label.status=Estado:
-label.username=Nombre de usuario:
+label.username=Nombre de Usuario:
 label.username.mnemonic=S
-label.millimetres=(mm.)
+label.millimetres=(mm)
 label.inches=(pulg.)
 label.topmargin=superior
 label.topmargin.mnemonic=S
@@ -65,7 +65,7 @@
 radiobutton.color.mnemonic=O
 radiobutton.draftq=Borrador
 radiobutton.draftq.mnemonic=B
-radiobutton.duplex=D\u00faplex
+radiobutton.duplex=D\u00FAplex
 radiobutton.duplex.mnemonic=D
 radiobutton.highq=Alta
 radiobutton.highq.mnemonic=L
@@ -75,49 +75,49 @@
 radiobutton.monochrome.mnemonic=M
 radiobutton.normalq=Normal
 radiobutton.normalq.mnemonic=N
-radiobutton.oneside=Una cara
+radiobutton.oneside=Una Cara
 radiobutton.oneside.mnemonic=U
 radiobutton.portrait=Vertical
 radiobutton.portrait.mnemonic=V
 radiobutton.rangeall=Todo
 radiobutton.rangeall.mnemonic=T
-radiobutton.rangepages=P\u00e1ginas
-radiobutton.rangepages.mnemonic=P
-radiobutton.revlandscape=Horizontal inverso
+radiobutton.rangepages=P\u00E1ginas
+radiobutton.rangepages.mnemonic=A
+radiobutton.revlandscape=Horizontal Inverso
 radiobutton.revlandscape.mnemonic=N
-radiobutton.revportrait=Vertical inverso
+radiobutton.revportrait=Vertical Inverso
 radiobutton.revportrait.mnemonic=R
-radiobutton.tumble=Voltear
-radiobutton.tumble.mnemonic=V
+radiobutton.tumble=Cambio de Cara
+radiobutton.tumble.mnemonic=C
 # The vkMnemonics correspond with the constants defined in KeyEvent, eg
 # 65 = KeyEvent.VK_A
-tab.appearance=Aspecto
+tab.appearance=Apariencia
 tab.appearance.vkMnemonic=65
 tab.general=General
 tab.general.vkMnemonic=71
-tab.pagesetup=Configurar p\u00e1gina
-tab.pagesetup.vkMnemonic=67
+tab.pagesetup=Preparar P\u00E1gina
+tab.pagesetup.vkMnemonic=83
 #
-error.pagerange=Rango de p\u00e1ginas no v\u00e1lido; vuelva a introducir los valores (por ejemplo, 1-3, 5, 7-10)
-error.destination=Nombre de archivo no v\u00e1lido; int\u00e9ntelo de nuevo.
+error.pagerange=Rango de p\u00E1ginas no v\u00E1lido; vuelva a introducir los valores (por ejemplo, 1-3, 5, 7-10)
+error.destination=Nombre de archivo no v\u00E1lido; int\u00E9ntelo de nuevo
 #
 # The following keys match the Strings returned by MediaSizeName.toString()
 # (in some cases the space character is replaced by '-' and the pound 
 # character is replaced with 'n')
 #
-iso-4a0=4A0 (ISO/DIN y JIS)
-iso-2a0=2A0 (ISO/DIN y JIS)
-iso-a0=A0 (ISO/DIN y JIS)
-iso-a1=A1 (ISO/DIN y JIS)
-iso-a2=A2 (ISO/DIN y JIS)
-iso-a3=A3 (ISO/DIN y JIS)
-iso-a4=A4 (ISO/DIN y JIS)
-iso-a5=A5 (ISO/DIN y JIS)
-iso-a6=A6 (ISO/DIN y JIS)
-iso-a7=A7 (ISO/DIN y JIS)
-iso-a8=A8 (ISO/DIN y JIS)
-iso-a9=A9 (ISO/DIN y JIS)
-iso-a10=A10 (ISO/DIN y JIS)
+iso-4a0=4A0 (ISO/DIN & JIS)
+iso-2a0=2A0 (ISO/DIN & JIS)
+iso-a0=A0 (ISO/DIN & JIS)
+iso-a1=A1 (ISO/DIN & JIS)
+iso-a2=A2 (ISO/DIN & JIS)
+iso-a3=A3 (ISO/DIN & JIS)
+iso-a4=A4 (ISO/DIN & JIS)
+iso-a5=A5 (ISO/DIN & JIS)
+iso-a6=A6 (ISO/DIN & JIS)
+iso-a7=A7 (ISO/DIN & JIS)
+iso-a8=A8 (ISO/DIN & JIS)
+iso-a9=A9 (ISO/DIN & JIS)
+iso-a10=A10 (ISO/DIN & JIS)
 iso-b0=B0 (ISO/DIN)
 iso-b1=B1 (ISO/DIN)
 iso-b2=B2 (ISO/DIN)
@@ -153,30 +153,30 @@
 iso-c10=C10 (ISO/DIN)
 na-letter=Carta
 na-legal=Legal
-executive=Executive
-ledger=Libro mayor
+executive=Ejecutivo
+ledger=Libro Mayor
 tabloid=Tabloide
 invoice=Factura
 folio=Folio
 quarto=Cuarto
 japanese-postcard=Postal (JIS)
-oufuko-postcard=Postal doble (JIS)
-a=Ingenier\u00eda A
-b=Ingenier\u00eda B
-c=Ingenier\u00eda C
-d=Ingenier\u00eda D
-e=Ingenier\u00eda E
-iso-designated-long=Largo designado ISO
-italian-envelope=Sobre italiano
-italy-envelope=Sobre italiano
-invite-envelope=Sobre de invitaci\u00f3n
+oufuko-postcard=Postal Doble (JIS)
+a=Ingenier\u00EDa A
+b=Ingenier\u00EDa B
+c=Ingenier\u00EDa C
+d=Ingenier\u00EDa D
+e=Ingenier\u00EDa E
+iso-designated-long=Largo Designado ISO
+italian-envelope=Sobre Italiano
+italy-envelope=Sobre Italiano
+invite-envelope=Sobre de Invitaci\u00F3n
 monarch-envelope=Sobre Monarch
-personal-envelope=Sobre personal
-na-number-9-envelope=Sobre N.\u00ba 9
-na-number-10-envelope=Sobre N.\u00ba 10
-na-number-11-envelope=Sobre N.\u00ba 11
-na-number-12-envelope=Sobre N.\u00ba 12
-na-number-14-envelope=Sobre N.\u00ba 14
+personal-envelope=Sobre Personal
+na-number-9-envelope=Sobre N\u00BA 9
+na-number-10-envelope=Sobre N\u00BA 10
+na-number-11-envelope=Sobre N\u00BA 11
+na-number-12-envelope=Sobre N\u00BA 12
+na-number-14-envelope=Sobre N\u00BA 14
 na-6x9-envelope=Sobre 6x9
 na-7x9-envelope=Sobre 6x7
 na-9x11-envelope=Sobre 9x11
@@ -189,23 +189,23 @@
 #
 # The following keys match the Strings returned by MediaTray.toString()
 #
-auto-select=Seleccionar autom\u00e1ticamente
+auto-select=Seleccionar Autom\u00E1ticamente
 top=Arriba
 middle=Centro
 bottom=Abajo
 envelope=Sobre
 manual=Manual
-large-capacity=Gran capacidad
+large-capacity=Gran Capacidad
 main=Principal
 side=Cara
 # Add the additional standard bins defined by win32
-Manual-Envelope=Sobre manual
-Automatic-Feeder=Alimentador autom\u00e1tico
-Tractor-Feeder=Alimentador de arrastre
-Small-Format=Formato peque\u00f1o
-Large-Format=Formato grande
+Manual-Envelope=Sobre Manual
+Automatic-Feeder=Alimentador Autom\u00E1tico
+Tractor-Feeder=Alimentador de Arrastre
+Small-Format=Formato Peque\u00F1o
+Large-Format=Formato Grande
 Cassette=Casete
-Form-Source=Origen de formulario
+Form-Source=Origen de Formulario
 #
 # The following keys match the Strings returned by 
 # PrinterIsAcceptingJobs.toString()
--- a/jdk/src/share/classes/sun/print/resources/serviceui_fr.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/print/resources/serviceui_fr.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -2,67 +2,67 @@
 #
 border.chromaticity=Couleur
 border.copies=Copies
-border.jobattributes=Attributs de t\u00e2che
+border.jobattributes=Attributs de t\u00E2che
 border.media=Support
 border.orientation=Orientation
-border.printrange=\u00c9tendue d'impression
+border.printrange=Plage d'impression
 border.printservice=Service d'impression
-border.quality=Qualit\u00e9
-border.sides=C\u00f4t\u00e9s
+border.quality=Qualit\u00E9
+border.sides=C\u00F4t\u00E9s
 border.margins=Marges
 #
 button.cancel=Annuler
 button.ok=OK
 button.print=Imprimer
-button.properties=Propri\u00e9t\u00e9s...
+button.properties=Propri\u00E9t\u00E9s...
 button.properties.mnemonic=R
 #
-checkbox.collate=Interclasser
-checkbox.collate.mnemonic=L
-checkbox.jobsheets=Page de garde
-checkbox.jobsheets.mnemonic=P
+checkbox.collate=Collationner
+checkbox.collate.mnemonic=C
+checkbox.jobsheets=Page de banni\u00E8re
+checkbox.jobsheets.mnemonic=B
 checkbox.printtofile=Imprimer dans un fichier
 checkbox.printtofile.mnemonic=F
 #
 dialog.printtitle=Imprimer
 dialog.pstitle=Mise en page
-dialog.overwrite=Ce fichier existe d\u00e9j\u00e0. Remplacer le fichier existant ?
+dialog.overwrite=Ce fichier existe d\u00E9j\u00E0. Remplacer le fichier existant ?
 dialog.owtitle=Imprimer dans un fichier
 dialog.printtofile=Imprimer dans un fichier
-dialog.noprintermsg=Service d'impression introuvable
-dialog.writeerror=Impossible d'enregistrer dans le fichier :
+dialog.noprintermsg=Service d'impression introuvable.
+dialog.writeerror=Impossible d'\u00E9crire dans le fichier :
 #
-label.info=Info :
-label.jobname=Nom de t\u00e2che :
+label.info=Infos :
+label.jobname=Nom de la t\u00E2che :
 label.jobname.mnemonic=C
 label.numcopies=Nombre de copies :
 label.numcopies.mnemonic=O
-label.priority=Priorit\u00e9 :
+label.priority=Priorit\u00E9 :
 label.priority.mnemonic=R
 label.psname=Nom :
 label.psname.mnemonic=N
 label.pstype=Type :
-label.rangeto=Pour
+label.rangeto=A
 label.size=Taille :
-label.size.mnemonic=T
+label.size.mnemonic=A
 label.source=Source :
 label.source.mnemonic=C
-label.status=\u00c9tat :
-label.username=Nom d'utilisateur :
-label.username.mnemonic=O
+label.status=Statut :
+label.username=Nom utilisateur :
+label.username.mnemonic=U
 label.millimetres=(mm)
-label.inches=(in)
-label.topmargin=sup\u00e9rieure
-label.topmargin.mnemonic=U
-label.bottommargin=inf\u00e9rieure
-label.bottommargin.mnemonic=F
+label.inches=(po)
+label.topmargin=haut
+label.topmargin.mnemonic=T
+label.bottommargin=bas
+label.bottommargin.mnemonic=B
 label.leftmargin=gauche
 label.leftmargin.mnemonic=E
 label.rightmargin=droite
 label.rightmargin.mnemonic=R
 #
 radiobutton.color=Couleur
-radiobutton.color.mnemonic=L
+radiobutton.color.mnemonic=C
 radiobutton.draftq=Brouillon
 radiobutton.draftq.mnemonic=B
 radiobutton.duplex=Duplex
@@ -75,30 +75,30 @@
 radiobutton.monochrome.mnemonic=M
 radiobutton.normalq=Normal
 radiobutton.normalq.mnemonic=N
-radiobutton.oneside=Un c\u00f4t\u00e9
+radiobutton.oneside=Un c\u00F4t\u00E9
 radiobutton.oneside.mnemonic=U
 radiobutton.portrait=Portrait
 radiobutton.portrait.mnemonic=O
 radiobutton.rangeall=Tout
 radiobutton.rangeall.mnemonic=T
 radiobutton.rangepages=Pages
-radiobutton.rangepages.mnemonic=P
-radiobutton.revlandscape=Paysage invers\u00e9
+radiobutton.rangepages.mnemonic=E
+radiobutton.revlandscape=Paysage invers\u00E9
 radiobutton.revlandscape.mnemonic=N
-radiobutton.revportrait=Portrait invers\u00e9
+radiobutton.revportrait=Portrait invers\u00E9
 radiobutton.revportrait.mnemonic=I
-radiobutton.tumble=Culbuter
+radiobutton.tumble=T\u00EAte-b\u00EAche
 radiobutton.tumble.mnemonic=T
 # The vkMnemonics correspond with the constants defined in KeyEvent, eg
 # 65 = KeyEvent.VK_A
 tab.appearance=Apparence
 tab.appearance.vkMnemonic=65
-tab.general=G\u00e9n\u00e9ral
+tab.general=G\u00E9n\u00E9ral
 tab.general.vkMnemonic=71
 tab.pagesetup=Mise en page
 tab.pagesetup.vkMnemonic=83
 #
-error.pagerange=Etendue de pages non valide ; sp\u00e9cifiez les valeurs de nouveau (p. ex., 1-3,5,7-10)
+error.pagerange=Plage de pages non valide. Sp\u00E9cifiez les valeurs de nouveau (ex. : 1-3,5,7-10)
 error.destination=Nom de fichier non valide ; recommencez
 #
 # The following keys match the Strings returned by MediaSizeName.toString()
@@ -109,7 +109,7 @@
 iso-2a0=2A0 (ISO/DIN & JIS)
 iso-a0=A0 (ISO/DIN & JIS)
 iso-a1=A1 (ISO/DIN & JIS)
-iso-a2=A2 (ISO/DIN & JIS)1 (ISO/DIN & JIS)
+iso-a2=A2 (ISO/DIN & JIS)
 iso-a3=A3 (ISO/DIN & JIS)
 iso-a4=A4 (ISO/DIN & JIS)
 iso-a5=A5 (ISO/DIN & JIS)
@@ -133,7 +133,7 @@
 jis-b1=B1 (JIS)
 jis-b2=B2 (JIS)
 jis-b3=B3 (JIS)
-jis-b4=B4 (JIS)3 (JIS)
+jis-b4=B4 (JIS)
 jis-b5=B5 (JIS)
 jis-b6=B6 (JIS)
 jis-b7=B7 (JIS)
@@ -152,31 +152,31 @@
 iso-c9=C9 (ISO/DIN)
 iso-c10=C10 (ISO/DIN)
 na-letter=Lettre
-na-legal=L\u00e9gal
+na-legal=L\u00E9gal
 executive=Administratif
 ledger=Fiche
-tabloid=Tablo\u00efd
+tabloid=Tablo\u00EFd
 invoice=Facture
 folio=Folio
 quarto=Quarto
 japanese-postcard=Carte postale (JIS)
-oufuko-postcard=Carte postale (JIS)
-a=Ing\u00e9nierie A
-b=Ing\u00e9nierie B
-c=Ing\u00e9nierie C
-d=Ing\u00e9nierie D
-e=Ing\u00e9nierie E
+oufuko-postcard=Carte postale double (JIS)
+a=Ing\u00E9nierie A
+b=Ing\u00E9nierie B
+c=Ing\u00E9nierie C
+d=Ing\u00E9nierie D
+e=Ing\u00E9nierie E
 iso-designated-long=Long ISO
 italian-envelope=Enveloppe Italie
 italy-envelope=Enveloppe Italie
 invite-envelope=Enveloppe invitation
 monarch-envelope=Enveloppe Monarch
 personal-envelope=Enveloppe personnelle
-na-number-9-envelope=Enveloppe no 9
-na-number-10-envelope=Enveloppe no 10
-na-number-11-envelope=Enveloppe no 11
-na-number-12-envelope=Enveloppe no 12
-na-number-14-envelope=Enveloppe no 14
+na-number-9-envelope=Enveloppe n\u00B09
+na-number-10-envelope=Enveloppe n\u00B010
+na-number-11-envelope=Enveloppe n\u00B011
+na-number-12-envelope=Enveloppe n\u00B012
+na-number-14-envelope=Enveloppe n\u00B014
 na-6x9-envelope=Enveloppe 6x9
 na-7x9-envelope=Enveloppe 6x7
 na-9x11-envelope=Enveloppe 9x11
@@ -184,22 +184,22 @@
 na-10x13-envelope=Enveloppe 10x15
 na-10x14-envelope=Enveloppe 10x15
 na-10x15-envelope=Enveloppe 10x15
-na-5x7=Papier 5 x 7 po
-na-8x10=Papier 8 x 10 po
+na-5x7=Papier 5x7 po
+na-8x10=Papier 8x10 po
 #
 # The following keys match the Strings returned by MediaTray.toString()
 #
-auto-select=S\u00e9lection automatique
+auto-select=S\u00E9lection automatique
 top=Haut
 middle=Centre
 bottom=Bas
 envelope=Enveloppe
 manual=Manuel
-large-capacity=Grande capacit\u00e9
+large-capacity=Grande capacit\u00E9
 main=Principal
-side=C\u00f4t\u00e9
+side=C\u00F4t\u00E9
 # Add the additional standard bins defined by win32
-Manual-Envelope=Enveloppe
+Manual-Envelope=Enveloppe (manuel)
 Automatic-Feeder=Alimentation automatique
 Tractor-Feeder=Alimentation en continu
 Small-Format=Petit format
@@ -210,5 +210,5 @@
 # The following keys match the Strings returned by 
 # PrinterIsAcceptingJobs.toString()
 #
-accepting-jobs=Accepter les t\u00e2ches
-not-accepting-jobs=Refuser les t\u00e2ches
+accepting-jobs=Acceptation des t\u00E2ches
+not-accepting-jobs=Refus des t\u00E2ches
--- a/jdk/src/share/classes/sun/print/resources/serviceui_it.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/print/resources/serviceui_it.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -7,14 +7,14 @@
 border.orientation=Orientamento
 border.printrange=Intervallo di stampa
 border.printservice=Servizio di stampa
-border.quality=Qualit\u00e0
+border.quality=Qualit\u00E0
 border.sides=Lati
 border.margins=Margini
 #
 button.cancel=Annulla
 button.ok=OK
 button.print=Stampa
-button.properties=Propriet\u00e0...
+button.properties=Propriet\u00E0...
 button.properties.mnemonic=R
 #
 checkbox.collate=Fascicola
@@ -26,7 +26,7 @@
 #
 dialog.printtitle=Stampa
 dialog.pstitle=Imposta pagina
-dialog.overwrite=Il file esiste gi\u00e0. Sovrascrivere il file esistente?
+dialog.overwrite=Il file esiste gi\u00E0. Sovrascrivere il file esistente?
 dialog.owtitle=Stampa su file
 dialog.printtofile=Stampa su file
 dialog.noprintermsg=Nessun servizio di stampa trovato
@@ -37,7 +37,7 @@
 label.jobname.mnemonic=M
 label.numcopies=Numero di copie:
 label.numcopies.mnemonic=U
-label.priority=Priorit\u00e0:
+label.priority=Priorit\u00E0:
 label.priority.mnemonic=I
 label.psname=Nome:
 label.psname.mnemonic=N
@@ -45,13 +45,13 @@
 label.rangeto=A
 label.size=Dimensioni:
 label.size.mnemonic=D
-label.source=Sorgente:
+label.source=Origine:
 label.source.mnemonic=R
 label.status=Stato:
 label.username=Nome utente:
 label.username.mnemonic=U
 label.millimetres=(mm)
-label.inches=(in)
+label.inches=(poll.)
 label.topmargin=alto
 label.topmargin.mnemonic=L
 label.bottommargin=basso
@@ -67,12 +67,12 @@
 radiobutton.draftq.mnemonic=B
 radiobutton.duplex=Fronte retro
 radiobutton.duplex.mnemonic=R
-radiobutton.highq=Alta
+radiobutton.highq=Alto
 radiobutton.highq.mnemonic=L
 radiobutton.landscape=Orizzontale
 radiobutton.landscape.mnemonic=O
 radiobutton.monochrome=Monocromatica
-radiobutton.monochrome.mnemonic=M
+radiobutton.monochrome.mnemonic=A
 radiobutton.normalq=Normale
 radiobutton.normalq.mnemonic=N
 radiobutton.oneside=Un lato
@@ -82,10 +82,10 @@
 radiobutton.rangeall=Tutto
 radiobutton.rangeall.mnemonic=T
 radiobutton.rangepages=Pagine
-radiobutton.rangepages.mnemonic=P
-radiobutton.revlandscape=Orizzontale invertito
+radiobutton.rangepages.mnemonic=E
+radiobutton.revlandscape=Orizzontale capovolto
 radiobutton.revlandscape.mnemonic=N
-radiobutton.revportrait=Verticale invertito
+radiobutton.revportrait=Verticale capovolto
 radiobutton.revportrait.mnemonic=I
 radiobutton.tumble=Testa a piede
 radiobutton.tumble.mnemonic=T
@@ -181,8 +181,8 @@
 na-7x9-envelope=Busta 6x7
 na-9x11-envelope=Busta 9x11
 na-9x12-envelope=Busta 9x12
-na-10x13-envelope=Busta 10x13
-na-10x14-envelope=Busta 10x14
+na-10x13-envelope=Busta 10x15
+na-10x14-envelope=Busta 10x15
 na-10x15-envelope=Busta 10x15
 na-5x7=Foglio 5" x 7"
 na-8x10=Foglio 8" x 10"
@@ -195,7 +195,7 @@
 bottom=Basso
 envelope=Busta
 manual=Manuale
-large-capacity=Grande capacit\u00e0
+large-capacity=Grande capacit\u00E0
 main=Principale
 side=Laterale
 # Add the additional standard bins defined by win32
--- a/jdk/src/share/classes/sun/print/resources/serviceui_ja.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/print/resources/serviceui_ja.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,105 +1,105 @@
 #
 #
-border.chromaticity=\u8272\u306e\u8868\u73fe
-border.copies=\u5370\u5237\u90e8\u6570
-border.jobattributes=\u30b8\u30e7\u30d6\u306e\u5c5e\u6027
-border.media=\u30e1\u30c7\u30a3\u30a2
-border.orientation=\u7528\u7d19\u306e\u5411\u304d
-border.printrange=\u5370\u5237\u7bc4\u56f2
-border.printservice=\u5370\u5237\u30b5\u30fc\u30d3\u30b9
-border.quality=\u54c1\u8cea
+border.chromaticity=\u8272\u306E\u8868\u73FE
+border.copies=\u5370\u5237\u90E8\u6570
+border.jobattributes=\u30B8\u30E7\u30D6\u306E\u5C5E\u6027
+border.media=\u30E1\u30C7\u30A3\u30A2
+border.orientation=\u7528\u7D19\u306E\u5411\u304D
+border.printrange=\u5370\u5237\u7BC4\u56F2
+border.printservice=\u5370\u5237\u30B5\u30FC\u30D3\u30B9
+border.quality=\u54C1\u8CEA
 border.sides=\u9762
-border.margins=\u30de\u30fc\u30b8\u30f3
+border.margins=\u30DE\u30FC\u30B8\u30F3
 #
-button.cancel=\u53d6\u6d88\u3057
-button.ok=\u4e86\u89e3
+button.cancel=\u53D6\u6D88
+button.ok=OK
 button.print=\u5370\u5237
-button.properties=\u30d7\u30ed\u30d1\u30c6\u30a3(R)...
+button.properties=\u30D7\u30ED\u30D1\u30C6\u30A3...
 button.properties.mnemonic=R
 #
-checkbox.collate=\u4e01\u5408\u3044(C)
+checkbox.collate=\u4E01\u5408\u3044
 checkbox.collate.mnemonic=C
-checkbox.jobsheets=\u30d0\u30ca\u30fc\u30da\u30fc\u30b8(B)
+checkbox.jobsheets=\u30D0\u30CA\u30FC\u30FB\u30DA\u30FC\u30B8
 checkbox.jobsheets.mnemonic=B
-checkbox.printtofile=\u30d5\u30a1\u30a4\u30eb\u306b\u51fa\u529b(F)
+checkbox.printtofile=\u30D5\u30A1\u30A4\u30EB\u306B\u51FA\u529B
 checkbox.printtofile.mnemonic=F
 #
 dialog.printtitle=\u5370\u5237
-dialog.pstitle=\u30da\u30fc\u30b8\u8a2d\u5b9a
-dialog.overwrite=\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u65e2\u5b58\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u4e0a\u66f8\u304d\u3057\u307e\u3059\u304b?
-dialog.owtitle=\u30d5\u30a1\u30a4\u30eb\u306b\u51fa\u529b
-dialog.printtofile=\u30d5\u30a1\u30a4\u30eb\u306b\u51fa\u529b
-dialog.noprintermsg=\u5370\u5237\u30b5\u30fc\u30d3\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
-dialog.writeerror=\u30d5\u30a1\u30a4\u30eb\u306b\u66f8\u304d\u8fbc\u3081\u307e\u305b\u3093:
+dialog.pstitle=\u30DA\u30FC\u30B8\u8A2D\u5B9A
+dialog.overwrite=\u3053\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059\u3002\u65E2\u5B58\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u4E0A\u66F8\u304D\u3057\u307E\u3059\u304B\u3002
+dialog.owtitle=\u30D5\u30A1\u30A4\u30EB\u306B\u51FA\u529B
+dialog.printtofile=\u30D5\u30A1\u30A4\u30EB\u306B\u51FA\u529B
+dialog.noprintermsg=\u5370\u5237\u30B5\u30FC\u30D3\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
+dialog.writeerror=\u30D5\u30A1\u30A4\u30EB\u306B\u66F8\u304D\u8FBC\u3081\u307E\u305B\u3093:
 #
-label.info=\u60c5\u5831:
-label.jobname=\u30b8\u30e7\u30d6\u540d(J):
+label.info=\u60C5\u5831:
+label.jobname=\u30B8\u30E7\u30D6\u540D:
 label.jobname.mnemonic=J
-label.numcopies=\u5370\u5237\u90e8\u6570(O):
+label.numcopies=\u5370\u5237\u90E8\u6570:
 label.numcopies.mnemonic=O
-label.priority=\u512a\u5148\u9806\u4f4d(R):
+label.priority=\u512A\u5148\u5EA6:
 label.priority.mnemonic=R
-label.psname=\u540d\u524d(N):
+label.psname=\u540D\u524D:
 label.psname.mnemonic=N
-label.pstype=\u30bf\u30a4\u30d7:
-label.rangeto=\u5370\u5237\u7bc4\u56f2
-label.size=\u30b5\u30a4\u30ba(Z):
+label.pstype=\u30BF\u30A4\u30D7:
+label.rangeto=\u5370\u5237\u7BC4\u56F2
+label.size=\u30B5\u30A4\u30BA:
 label.size.mnemonic=Z
-label.source=\u30bd\u30fc\u30b9(C):
+label.source=\u30BD\u30FC\u30B9:
 label.source.mnemonic=C
-label.status=\u72b6\u614b:
-label.username=\u30e6\u30fc\u30b6\u540d(U):
+label.status=\u72B6\u614B:
+label.username=\u30E6\u30FC\u30B6\u30FC\u540D:
 label.username.mnemonic=U
 label.millimetres=(mm)
 label.inches=(in)
-label.topmargin=\u4e0a(T)
+label.topmargin=\u4E0A
 label.topmargin.mnemonic=T
-label.bottommargin=\u4e0b(B)
+label.bottommargin=\u4E0B
 label.bottommargin.mnemonic=B
-label.leftmargin=\u5de6(F)
+label.leftmargin=\u5DE6
 label.leftmargin.mnemonic=F
-label.rightmargin=\u53f3(R)
+label.rightmargin=\u53F3
 label.rightmargin.mnemonic=R
 #
-radiobutton.color=\u30ab\u30e9\u30fc(C)
+radiobutton.color=\u30AB\u30E9\u30FC
 radiobutton.color.mnemonic=C
-radiobutton.draftq=\u30c9\u30e9\u30d5\u30c8(F)
+radiobutton.draftq=\u30C9\u30E9\u30D5\u30C8
 radiobutton.draftq.mnemonic=F
-radiobutton.duplex=\u4e21\u9762(D)
+radiobutton.duplex=\u4E21\u9762
 radiobutton.duplex.mnemonic=D
-radiobutton.highq=\u9ad8\u54c1\u8cea(H)
+radiobutton.highq=\u9AD8\u54C1\u8CEA
 radiobutton.highq.mnemonic=H
-radiobutton.landscape=\u30e9\u30f3\u30c9\u30b9\u30b1\u30fc\u30d7 (\u6a2a)(L)
+radiobutton.landscape=\u30E9\u30F3\u30C9\u30B9\u30B1\u30FC\u30D7(\u6A2A)
 radiobutton.landscape.mnemonic=L
-radiobutton.monochrome=\u30e2\u30ce\u30af\u30ed(M)
+radiobutton.monochrome=\u30E2\u30CE\u30AF\u30ED
 radiobutton.monochrome.mnemonic=M
-radiobutton.normalq=\u6a19\u6e96(N)
+radiobutton.normalq=\u6A19\u6E96
 radiobutton.normalq.mnemonic=N
-radiobutton.oneside=\u7247\u9762(O)
+radiobutton.oneside=\u7247\u9762
 radiobutton.oneside.mnemonic=O
-radiobutton.portrait=\u30dd\u30fc\u30c8\u30ec\u30a4\u30c8 (\u7e26)(P)
+radiobutton.portrait=\u30DD\u30FC\u30C8\u30EC\u30A4\u30C8(\u7E26)
 radiobutton.portrait.mnemonic=P
-radiobutton.rangeall=\u3059\u3079\u3066(L)
+radiobutton.rangeall=\u3059\u3079\u3066
 radiobutton.rangeall.mnemonic=L
-radiobutton.rangepages=\u30da\u30fc\u30b8(E)
+radiobutton.rangepages=\u30DA\u30FC\u30B8
 radiobutton.rangepages.mnemonic=E
-radiobutton.revlandscape=\u30e9\u30f3\u30c9\u30b9\u30b1\u30fc\u30d7 (\u53cd\u8ee2)(N)
+radiobutton.revlandscape=\u30E9\u30F3\u30C9\u30B9\u30B1\u30FC\u30D7(\u53CD\u8EE2)
 radiobutton.revlandscape.mnemonic=N
-radiobutton.revportrait=\u30dd\u30fc\u30c8\u30ec\u30a4\u30c8 (\u53cd\u8ee2)(I)
+radiobutton.revportrait=\u30DD\u30FC\u30C8\u30EC\u30A4\u30C8(\u53CD\u8EE2)
 radiobutton.revportrait.mnemonic=I
-radiobutton.tumble=\u53cd\u8ee2(T)
+radiobutton.tumble=\u53CD\u8EE2
 radiobutton.tumble.mnemonic=T
 # The vkMnemonics correspond with the constants defined in KeyEvent, eg
 # 65 = KeyEvent.VK_A
-tab.appearance=\u5916\u89b3(A)
+tab.appearance=\u5916\u89B3
 tab.appearance.vkMnemonic=65
-tab.general=\u4e00\u822c(G)
+tab.general=\u4E00\u822C
 tab.general.vkMnemonic=71
-tab.pagesetup=\u30da\u30fc\u30b8\u8a2d\u5b9a(S)
+tab.pagesetup=\u30DA\u30FC\u30B8\u8A2D\u5B9A
 tab.pagesetup.vkMnemonic=83
 #
-error.pagerange=\u7121\u52b9\u306a\u30da\u30fc\u30b8\u7bc4\u56f2; \u5024\u3092\u518d\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 (\u4f8b\u30011-3,5,7-10)\u3002
-error.destination=\u7121\u52b9\u306a\u30d5\u30a1\u30a4\u30eb\u540d; \u30d5\u30a1\u30a4\u30eb\u540d\u3092\u518d\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+error.pagerange=\u7121\u52B9\u306A\u30DA\u30FC\u30B8\u7BC4\u56F2\u3002\u5024\u3092\u518D\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044(\u4F8B\u30011-3,5,7-10)
+error.destination=\u7121\u52B9\u306A\u30D5\u30A1\u30A4\u30EB\u540D\u3002\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u518D\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044
 #
 # The following keys match the Strings returned by MediaSizeName.toString()
 # (in some cases the space character is replaced by '-' and the pound 
@@ -151,64 +151,64 @@
 iso-c8=C8 (ISO/DIN)
 iso-c9=C9 (ISO/DIN)
 iso-c10=C10 (ISO/DIN)
-na-letter=\u30ec\u30bf\u30fc
-na-legal=\u30ea\u30fc\u30ac\u30eb
-executive=\u30a8\u30b0\u30bc\u30af\u30c6\u30a3\u30d6
-ledger=\u30ec\u30c3\u30b8\u30e3\u30fc
-tabloid=\u30bf\u30d6\u30ed\u30a4\u30c9
-invoice=\u30a4\u30f3\u30dc\u30a4\u30b9
-folio=\u30d5\u30a9\u30ea\u30aa
-quarto=\u30af\u30a9\u30fc\u30c8
-japanese-postcard=\u306f\u304c\u304d (JIS)
-oufuko-postcard=\u5f80\u5fa9\u306f\u304c\u304d (JIS)
-a=\u30a8\u30f3\u30b8\u30cb\u30a2\u30ea\u30f3\u30b0 A
-b=\u30a8\u30f3\u30b8\u30cb\u30a2\u30ea\u30f3\u30b0 B
-c=\u30a8\u30f3\u30b8\u30cb\u30a2\u30ea\u30f3\u30b0 C
-d=\u30a8\u30f3\u30b8\u30cb\u30a2\u30ea\u30f3\u30b0 D
-e=\u30a8\u30f3\u30b8\u30cb\u30a2\u30ea\u30f3\u30b0 E
-iso-designated-long=ISO DL (\u9577\u5bf8)
-italian-envelope=\u30a4\u30bf\u30ea\u30a2\u5c01\u7b52
-italy-envelope=\u30a4\u30bf\u30ea\u30a2\u5c01\u7b52
-invite-envelope=\u62db\u5f85\u5c01\u7b52
-monarch-envelope=\u30e2\u30ca\u30fc\u30af\u5c01\u7b52
-personal-envelope=\u500b\u4eba\u7528\u5c01\u7b52
-na-number-9-envelope=No. 9 \u5c01\u7b52
-na-number-10-envelope=No. 10 \u5c01\u7b52
-na-number-11-envelope=No. 11 \u5c01\u7b52
-na-number-12-envelope=No. 12 \u5c01\u7b52
-na-number-14-envelope=No. 14 \u5c01\u7b52
-na-6x9-envelope=6x9 \u5c01\u7b52
-na-7x9-envelope=6x7 \u5c01\u7b52
-na-9x11-envelope=9x11 \u5c01\u7b52
-na-9x12-envelope=9x12 \u5c01\u7b52
-na-10x13-envelope=10x15 \u5c01\u7b52
-na-10x14-envelope=10x15 \u5c01\u7b52
-na-10x15-envelope=10x15 \u5c01\u7b52
-na-5x7=5" x 7" \u7528\u7d19
-na-8x10=8" x 10" \u7528\u7d19
+na-letter=\u30EC\u30BF\u30FC
+na-legal=\u30EA\u30FC\u30AC\u30EB
+executive=\u30A8\u30B0\u30BC\u30AF\u30C6\u30A3\u30D6
+ledger=\u30EC\u30C3\u30B8\u30E3
+tabloid=\u30BF\u30D6\u30ED\u30A4\u30C9
+invoice=\u30A4\u30F3\u30DC\u30A4\u30B9
+folio=\u30D5\u30A9\u30EA\u30AA
+quarto=\u30AF\u30A9\u30FC\u30C8
+japanese-postcard=\u306F\u304C\u304D(JIS)
+oufuko-postcard=\u5F80\u5FA9\u306F\u304C\u304D(JIS)
+a=\u30A8\u30F3\u30B8\u30CB\u30A2\u30EA\u30F3\u30B0A
+b=\u30A8\u30F3\u30B8\u30CB\u30A2\u30EA\u30F3\u30B0B
+c=\u30A8\u30F3\u30B8\u30CB\u30A2\u30EA\u30F3\u30B0C
+d=\u30A8\u30F3\u30B8\u30CB\u30A2\u30EA\u30F3\u30B0D
+e=\u30A8\u30F3\u30B8\u30CB\u30A2\u30EA\u30F3\u30B0E
+iso-designated-long=ISO DL(\u9577\u5BF8)
+italian-envelope=\u30A4\u30BF\u30EA\u30A2\u5C01\u7B52
+italy-envelope=\u30A4\u30BF\u30EA\u30A2\u5C01\u7B52
+invite-envelope=\u62DB\u5F85\u5C01\u7B52
+monarch-envelope=\u30E2\u30CA\u30FC\u30AF\u5C01\u7B52
+personal-envelope=\u500B\u4EBA\u7528\u5C01\u7B52
+na-number-9-envelope=No. 9\u5C01\u7B52
+na-number-10-envelope=No. 10\u5C01\u7B52
+na-number-11-envelope=No. 11\u5C01\u7B52
+na-number-12-envelope=No. 12\u5C01\u7B52
+na-number-14-envelope=No. 14\u5C01\u7B52
+na-6x9-envelope=6x9\u5C01\u7B52
+na-7x9-envelope=6x7\u5C01\u7B52
+na-9x11-envelope=9x11\u5C01\u7B52
+na-9x12-envelope=9x12\u5C01\u7B52
+na-10x13-envelope=10x15\u5C01\u7B52
+na-10x14-envelope=10x15\u5C01\u7B52
+na-10x15-envelope=10x15\u5C01\u7B52
+na-5x7=5x7\u30A4\u30F3\u30C1\u7528\u7D19
+na-8x10=8x10\u30A4\u30F3\u30C1\u7528\u7D19
 #
 # The following keys match the Strings returned by MediaTray.toString()
 #
-auto-select=\u81ea\u52d5\u9078\u629e
-top=\u4e0a\u90e8
-middle=\u4e2d\u9593
-bottom=\u4e0b\u90e8
-envelope=\u5c01\u7b52
-manual=\u30de\u30cb\u30e5\u30a2\u30eb
-large-capacity=\u5927\u5bb9\u91cf
-main=\u30e1\u30a4\u30f3
+auto-select=\u81EA\u52D5\u9078\u629E
+top=\u4E0A\u90E8
+middle=\u4E2D\u9593
+bottom=\u4E0B\u90E8
+envelope=\u5C01\u7B52
+manual=\u30DE\u30CB\u30E5\u30A2\u30EB
+large-capacity=\u5927\u5BB9\u91CF
+main=\u30E1\u30A4\u30F3
 side=\u9762
 # Add the additional standard bins defined by win32
-Manual-Envelope=\u30de\u30cb\u30e5\u30a2\u30eb\u5c01\u7b52
-Automatic-Feeder=\u81ea\u52d5\u30d5\u30a3\u30fc\u30c0
-Tractor-Feeder=\u30c8\u30e9\u30af\u30bf\u30d5\u30a3\u30fc\u30c0
-Small-Format=\u30b9\u30e2\u30fc\u30eb\u30d5\u30a9\u30fc\u30de\u30c3\u30c8
-Large-Format=\u30e9\u30fc\u30b8\u30d5\u30a9\u30fc\u30de\u30c3\u30c8
-Cassette=\u30ab\u30bb\u30c3\u30c8
-Form-Source=\u30d5\u30a9\u30fc\u30e0\u30bd\u30fc\u30b9
+Manual-Envelope=\u30DE\u30CB\u30E5\u30A2\u30EB\u5C01\u7B52
+Automatic-Feeder=\u81EA\u52D5\u30D5\u30A3\u30FC\u30C0
+Tractor-Feeder=\u30C8\u30E9\u30AF\u30BF\u30FB\u30D5\u30A3\u30FC\u30C0
+Small-Format=\u30B9\u30E2\u30FC\u30EB\u30FB\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8
+Large-Format=\u30E9\u30FC\u30B8\u30FB\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8
+Cassette=\u30AB\u30BB\u30C3\u30C8
+Form-Source=\u30D5\u30A9\u30FC\u30E0\u30FB\u30BD\u30FC\u30B9
 #
 # The following keys match the Strings returned by 
 # PrinterIsAcceptingJobs.toString()
 #
-accepting-jobs=\u30b8\u30e7\u30d6\u3092\u53d7\u3051\u4ed8\u3051\u3066\u3044\u307e\u3059\u3002
-not-accepting-jobs=\u30b8\u30e7\u30d6\u3092\u53d7\u3051\u4ed8\u3051\u307e\u305b\u3093\u3002
+accepting-jobs=\u30B8\u30E7\u30D6\u3092\u53D7\u3051\u4ED8\u3051\u3066\u3044\u307E\u3059
+not-accepting-jobs=\u30B8\u30E7\u30D6\u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093
--- a/jdk/src/share/classes/sun/print/resources/serviceui_ko.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/print/resources/serviceui_ko.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,123 +1,123 @@
 #
 #
-border.chromaticity=\uc0c9\uc0c1 \ubaa8\uc591
-border.copies=\ubcf5\uc0ac
-border.jobattributes=\uc791\uc5c5 \uc18d\uc131
-border.media=\ubbf8\ub514\uc5b4
-border.orientation=\ubc29\ud5a5
-border.printrange=\uc778\uc1c4 \ubc94\uc704
-border.printservice=\uc778\uc1c4 \uc11c\ube44\uc2a4
-border.quality=\ud488\uc9c8
-border.sides=\uce21\uba74
-border.margins=\ub9c8\uc9c4
+border.chromaticity=\uC0C9\uC0C1 \uBAA8\uC591
+border.copies=\uBCF5\uC0AC
+border.jobattributes=\uC791\uC5C5 \uC18D\uC131
+border.media=\uB9E4\uCCB4
+border.orientation=\uBC29\uD5A5
+border.printrange=\uC778\uC1C4 \uBC94\uC704
+border.printservice=\uC778\uC1C4 \uC11C\uBE44\uC2A4
+border.quality=\uD488\uC9C8
+border.sides=\uCE21\uBA74
+border.margins=\uC5EC\uBC31
 #
-button.cancel=\ucde8\uc18c
-button.ok=\ud655\uc778
-button.print=\uc778\uc1c4
-button.properties=\ub4f1\ub85d \uc815\ubcf4(R)...
+button.cancel=\uCDE8\uC18C
+button.ok=\uD655\uC778
+button.print=\uC778\uC1C4
+button.properties=\uC18D\uC131...
 button.properties.mnemonic=R
 #
-checkbox.collate=\uc870\ud569(C)
+checkbox.collate=\uC21C\uC11C\uB300\uB85C
 checkbox.collate.mnemonic=C
-checkbox.jobsheets=\ubc30\ub108 \ud398\uc774\uc9c0(B)
+checkbox.jobsheets=\uBC30\uB108 \uD398\uC774\uC9C0
 checkbox.jobsheets.mnemonic=B
-checkbox.printtofile=\ud30c\uc77c\ub85c \uc778\uc1c4(F)
+checkbox.printtofile=\uD30C\uC77C\uB85C \uC778\uC1C4
 checkbox.printtofile.mnemonic=F
 #
-dialog.printtitle=\uc778\uc1c4
-dialog.pstitle=\ud398\uc774\uc9c0 \uc124\uc815
-dialog.overwrite=\uc774 \ud30c\uc77c\uc740 \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4. \uae30\uc874 \ud30c\uc77c\uc744 \uacb9\uccd0\uc4f0\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
-dialog.owtitle=\ud30c\uc77c\ub85c \uc778\uc1c4
-dialog.printtofile=\ud30c\uc77c\ub85c \uc778\uc1c4
-dialog.noprintermsg=\uc778\uc1c4 \uc11c\ube44\uc2a4\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-dialog.writeerror=\ud30c\uc77c\uc5d0 \uc4f8 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+dialog.printtitle=\uC778\uC1C4
+dialog.pstitle=\uD398\uC774\uC9C0 \uC124\uC815
+dialog.overwrite=\uC774 \uD30C\uC77C\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4. \uAE30\uC874 \uD30C\uC77C\uC744 \uACB9\uCCD0 \uC4F0\uACA0\uC2B5\uB2C8\uAE4C?
+dialog.owtitle=\uD30C\uC77C\uB85C \uC778\uC1C4
+dialog.printtofile=\uD30C\uC77C\uB85C \uC778\uC1C4
+dialog.noprintermsg=\uC778\uC1C4 \uC11C\uBE44\uC2A4\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+dialog.writeerror=\uD30C\uC77C\uC5D0 \uC4F8 \uC218 \uC5C6\uC74C:
 #
-label.info=\uc815\ubcf4:
-label.jobname=\uc791\uc5c5 \uc774\ub984(J):
+label.info=\uC815\uBCF4:
+label.jobname=\uC791\uC5C5 \uC774\uB984:
 label.jobname.mnemonic=J
-label.numcopies=\ubcf5\uc0ac \ub9e4\uc218(O):
+label.numcopies=\uB9E4\uC218:
 label.numcopies.mnemonic=O
-label.priority=\uc6b0\uc120 \uc21c\uc704(R):
+label.priority=\uC6B0\uC120\uC21C\uC704:
 label.priority.mnemonic=R
-label.psname=\uc774\ub984(N):
+label.psname=\uC774\uB984:
 label.psname.mnemonic=N
-label.pstype=\uc885\ub958:
-label.rangeto=\uae4c\uc9c0
-label.size=\ud06c\uae30(Z):
+label.pstype=\uC720\uD615:
+label.rangeto=\uC885\uB8CC
+label.size=\uD06C\uAE30:
 label.size.mnemonic=Z
-label.source=\uc18c\uc2a4(C):
+label.source=\uC18C\uC2A4:
 label.source.mnemonic=C
-label.status=\uc0c1\ud0dc:
-label.username=\uc0ac\uc6a9\uc790 \uc774\ub984(U):
+label.status=\uC0C1\uD0DC:
+label.username=\uC0AC\uC6A9\uC790 \uC774\uB984:
 label.username.mnemonic=U
 label.millimetres=(mm)
-label.inches=(in)
-label.topmargin=\ub9e8 \uc704(T)
+label.inches=(\uC778\uCE58)
+label.topmargin=\uC704\uCABD
 label.topmargin.mnemonic=T
-label.bottommargin==\ub9e8 \uc544\ub798(B)
+label.bottommargin=\uC544\uB798\uCABD
 label.bottommargin.mnemonic=B
-label.leftmargin=\uc67c\ucabd(F)
+label.leftmargin=\uC67C\uCABD
 label.leftmargin.mnemonic=F
-label.rightmargin=\uc624\ub978\ucabd(R)
+label.rightmargin=\uC624\uB978\uCABD
 label.rightmargin.mnemonic=R
 #
-radiobutton.color=\uc0c9\uc0c1(C)
+radiobutton.color=\uC0C9\uC0C1
 radiobutton.color.mnemonic=C
-radiobutton.draftq=\ucd08\uc548(F)
+radiobutton.draftq=\uCD08\uC548
 radiobutton.draftq.mnemonic=F
-radiobutton.duplex=\uc591\uba74(D)
+radiobutton.duplex=\uC591\uBA74
 radiobutton.duplex.mnemonic=D
-radiobutton.highq=\ub192\uc74c(H)
+radiobutton.highq=\uB192\uC74C
 radiobutton.highq.mnemonic=H
-radiobutton.landscape=\uac00\ub85c(L)
+radiobutton.landscape=\uAC00\uB85C
 radiobutton.landscape.mnemonic=L
-radiobutton.monochrome=\ub2e8\uc0c9(M)
+radiobutton.monochrome=\uB2E8\uC0C9
 radiobutton.monochrome.mnemonic=M
-radiobutton.normalq=\uc77c\ubc18(N)
+radiobutton.normalq=\uC77C\uBC18
 radiobutton.normalq.mnemonic=N
-radiobutton.oneside=\ud55c\uba74(O)
+radiobutton.oneside=\uB2E8\uBA74
 radiobutton.oneside.mnemonic=O
-radiobutton.portrait=\uc138\ub85c(P)
+radiobutton.portrait=\uC138\uB85C
 radiobutton.portrait.mnemonic=P
-radiobutton.rangeall=\ubaa8\ub450(L)
+radiobutton.rangeall=\uBAA8\uB450
 radiobutton.rangeall.mnemonic=L
-radiobutton.rangepages=\ud398\uc774\uc9c0(E)
+radiobutton.rangepages=\uD398\uC774\uC9C0
 radiobutton.rangepages.mnemonic=E
-radiobutton.revlandscape=\uc5ed\uc21c \uac00\ub85c(N)
+radiobutton.revlandscape=\uAC00\uB85C \uBC18\uC804
 radiobutton.revlandscape.mnemonic=N
-radiobutton.revportrait=\uc5ed\uc21c \uc138\ub85c(I)
+radiobutton.revportrait=\uC138\uB85C \uBC18\uC804
 radiobutton.revportrait.mnemonic=I
-radiobutton.tumble=\ub07c\uc6cc\ub123\uae30(T)
+radiobutton.tumble=\uD68C\uC804\uC2DD
 radiobutton.tumble.mnemonic=T
 # The vkMnemonics correspond with the constants defined in KeyEvent, eg
 # 65 = KeyEvent.VK_A
-tab.appearance=\ubaa8\uc591(A)
+tab.appearance=\uBAA8\uC591
 tab.appearance.vkMnemonic=65
-tab.general=\uc77c\ubc18(G)
+tab.general=\uC77C\uBC18 \uC0AC\uD56D
 tab.general.vkMnemonic=71
-tab.pagesetup=\ud398\uc774\uc9c0 \uc124\uc815(S)
+tab.pagesetup=\uD398\uC774\uC9C0 \uC124\uC815
 tab.pagesetup.vkMnemonic=83
 #
-error.pagerange=\uc798\ubabb\ub41c \ud398\uc774\uc9c0 \ubc94\uc704; \uac12\uc744 \ub2e4\uc2dc \uc785\ub825\ud558\uc2ed\uc2dc\uc624(\uc608: 1-3,5,7-10)
-error.destination=\uc798\ubabb\ub41c \ud30c\uc77c \uc774\ub984. \ub2e4\uc2dc \uc2dc\ub3c4\ud558\uc2ed\uc2dc\uc624.
+error.pagerange=\uBD80\uC801\uD569\uD55C \uD398\uC774\uC9C0 \uBC94\uC704: \uAC12\uC744 \uB2E4\uC2DC \uC785\uB825\uD558\uC2ED\uC2DC\uC624(\uC608: 1-3,5,7-10).
+error.destination=\uBD80\uC801\uD569\uD55C \uD30C\uC77C \uC774\uB984: \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC2ED\uC2DC\uC624.
 #
 # The following keys match the Strings returned by MediaSizeName.toString()
 # (in some cases the space character is replaced by '-' and the pound 
 # character is replaced with 'n')
 #
-iso-4a0=4A0 (ISO/DIN \ubc0f JIS)
-iso-2a0=2A0 (ISO/DIN \ubc0f JIS)
-iso-a0=A0 (ISO/DIN \ubc0f JIS)
-iso-a1=A1 (ISO/DIN \ubc0f JIS)
-iso-a2=A2 (ISO/DIN \ubc0f JIS)
-iso-a3=A3 (ISO/DIN \ubc0f JIS)
-iso-a4=A4 (ISO/DIN \ubc0f JIS)
-iso-a5=A5 (ISO/DIN \ubc0f JIS)
-iso-a6=A6 (ISO/DIN \ubc0f JIS)
-iso-a7=A7 (ISO/DIN \ubc0f JIS)
-iso-a8=A8 (ISO/DIN \ubc0f JIS)
-iso-a9=A9 (ISO/DIN \ubc0f JIS)
-iso-a10=A10 (ISO/DIN \ubc0f JIS)
+iso-4a0=4A0 (ISO/DIN & JIS)
+iso-2a0=2A0 (ISO/DIN & JIS)
+iso-a0=A0 (ISO/DIN & JIS)
+iso-a1=A1 (ISO/DIN & JIS)
+iso-a2=A2 (ISO/DIN & JIS)
+iso-a3=A3 (ISO/DIN & JIS)
+iso-a4=A4 (ISO/DIN & JIS)
+iso-a5=A5 (ISO/DIN & JIS)
+iso-a6=A6 (ISO/DIN & JIS)
+iso-a7=A7 (ISO/DIN & JIS)
+iso-a8=A8 (ISO/DIN & JIS)
+iso-a9=A9 (ISO/DIN & JIS)
+iso-a10=A10 (ISO/DIN & JIS)
 iso-b0=B0 (ISO/DIN)
 iso-b1=B1 (ISO/DIN)
 iso-b2=B2 (ISO/DIN)
@@ -154,61 +154,61 @@
 na-letter=Letter
 na-legal=Legal
 executive=Executive
-ledger=\uc6d0\uc7a5
-tabloid=\ud0c0\ube14\ub85c\uc774\ub4dc
-invoice=\uc1a1\uc7a5
-folio=\ud3f4\ub9ac\uc624
-quarto=\ucffc\ud2b8\ub85c
-japanese-postcard=\uc5fd\uc11c(JIS)
-oufuko-postcard=\uc774\uc911 \uc5fd\uc11c(JIS)
-a=\uacf5\ud559 A
-b=\uacf5\ud559 B
-c=\uacf5\ud559 C
-d=\uacf5\ud559 D
-e=\uacf5\ud559 E
-iso-designated-long=ISO \uc9c0\uc815 \uae38\uc774
-italian-envelope=\uc774\ud0c8\ub9ac\uc544 \ubd09\ud22c
-italy-envelope=\uc774\ud0c8\ub9ac\uc544 \ubd09\ud22c
-invite-envelope=\ucd08\uccad\uc7a5 \ubd09\ud22c
-monarch-envelope=Monarch \ubd09\ud22c
-personal-envelope=\uac1c\uc778 \ubd09\ud22c
-na-number-9-envelope=No. 9 \ubd09\ud22c
-na-number-10-envelope=No. 10 \ubd09\ud22c
-na-number-11-envelope=No. 11 \ubd09\ud22c
-na-number-12-envelope=No. 12 \ubd09\ud22c
-na-number-14-envelope=No. 14 \ubd09\ud22c
-na-6x9-envelope=6x9 \ubd09\ud22c
-na-7x9-envelope=6x7 \ubd09\ud22c
-na-9x11-envelope=9x11 \ubd09\ud22c
-na-9x12-envelope=9x12 \ubd09\ud22c
-na-10x13-envelope=10x15 \ubd09\ud22c
-na-10x14-envelope=10x15 \ubd09\ud22c
-na-10x15-envelope=10x15 \ubd09\ud22c
-na-5x7=5" x 7" \uc6a9\uc9c0
-na-8x10=8" x 10" \uc6a9\uc9c0
+ledger=Ledger
+tabloid=Tabloid
+invoice=Invoice
+folio=Folio
+quarto=Quarto
+japanese-postcard=Postcard (JIS)
+oufuko-postcard=Double Postcard (JIS)
+a=Engineering A
+b=Engineering B
+c=Engineering C
+d=Engineering D
+e=Engineering E
+iso-designated-long=ISO Designated Long
+italian-envelope=Italy Envelope
+italy-envelope=Italy Envelope
+invite-envelope=Invitation Envelope
+monarch-envelope=Monarch Envelope
+personal-envelope=Personal Envelope
+na-number-9-envelope=No. 9 Envelope
+na-number-10-envelope=No. 10 Envelope
+na-number-11-envelope=No. 11 Envelope
+na-number-12-envelope=No. 12 Envelope
+na-number-14-envelope=No. 14 Envelope
+na-6x9-envelope=6x9 Envelope
+na-7x9-envelope=6x7 Envelope
+na-9x11-envelope=9x11 Envelope
+na-9x12-envelope=9x12 Envelope
+na-10x13-envelope=10x15 Envelope
+na-10x14-envelope=10x15 Envelope
+na-10x15-envelope=10x15 Envelope
+na-5x7=5" x 7" \uC6A9\uC9C0
+na-8x10=8" x 10" \uC6A9\uC9C0
 #
 # The following keys match the Strings returned by MediaTray.toString()
 #
-auto-select=\uc790\ub3d9 \uc120\ud0dd
-top=\uc704
-middle=\uc911\uac04
-bottom=\uc544\ub798
-envelope=\ubd09\ud22c
-manual=\uc218\ub3d9
-large-capacity=\ud070 \uc6a9\ub7c9
-main=\uc8fc
-side=\uce21\uba74
+auto-select=\uC790\uB3D9 \uC120\uD0DD
+top=\uC704\uCABD
+middle=\uAC00\uC6B4\uB370
+bottom=\uC544\uB798\uCABD
+envelope=Envelope
+manual=\uC218\uB3D9
+large-capacity=\uD070 \uC6A9\uB7C9
+main=\uC8FC
+side=\uCE21\uBA74
 # Add the additional standard bins defined by win32
-Manual-Envelope=\uc218\ub3d9 \ubd09\ud22c
-Automatic-Feeder=\uc790\ub3d9 \uacf5\uae09\uae30
-Tractor-Feeder=\ud2b8\ub799\ud130 \uacf5\uae09\uae30
-Small-Format=\uc791\uc740 \ud615\uc2dd
-Large-Format=\ud070 \ud615\uc2dd
-Cassette=\uce74\uc138\ud2b8
-Form-Source=\uc591\uc2dd \uc18c\uc2a4
+Manual-Envelope=\uC218\uB3D9 \uBD09\uD22C
+Automatic-Feeder=\uC790\uB3D9 \uACF5\uAE09\uAE30
+Tractor-Feeder=\uD2B8\uB799\uD130 \uACF5\uAE09\uAE30
+Small-Format=\uC791\uC740 \uD615\uC2DD
+Large-Format=\uD070 \uD615\uC2DD
+Cassette=\uCE74\uC138\uD2B8
+Form-Source=\uC591\uC2DD \uC18C\uC2A4
 #
 # The following keys match the Strings returned by 
 # PrinterIsAcceptingJobs.toString()
 #
-accepting-jobs=\uc791\uc5c5 \uc218\ub77d
-not-accepting-jobs=\uc791\uc5c5 \uc218\ub77d \uc548 \ud568
+accepting-jobs=\uC791\uC5C5 \uC2B9\uC778
+not-accepting-jobs=\uC791\uC5C5 \uC2B9\uC778 \uC548\uD568
--- a/jdk/src/share/classes/sun/print/resources/serviceui_pt_BR.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/print/resources/serviceui_pt_BR.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,12 +1,12 @@
 #
 #
-border.chromaticity=Apar\u00eancia da cor
-border.copies=C\u00f3pias
-border.jobattributes=Atributos do trabalho
-border.media=M\u00eddia
-border.orientation=Orienta\u00e7\u00e3o
-border.printrange=Intervalo de impress\u00e3o
-border.printservice=Servi\u00e7o de impress\u00e3o
+border.chromaticity=Apar\u00EAncia da Cor
+border.copies=C\u00F3pias
+border.jobattributes=Atributos do Job
+border.media=M\u00EDdia
+border.orientation=Orienta\u00E7\u00E3o
+border.printrange=Faixa de Impress\u00E3o
+border.printservice=Servi\u00E7o de Impress\u00E3o
 border.quality=Qualidade
 border.sides=Lados
 border.margins=Margens
@@ -19,36 +19,36 @@
 #
 checkbox.collate=Agrupar
 checkbox.collate.mnemonic=C
-checkbox.jobsheets=P\u00e1gina com cabe\u00e7alho
+checkbox.jobsheets=P\u00E1gina com Banner
 checkbox.jobsheets.mnemonic=B
-checkbox.printtofile=Imprimir em arquivo
+checkbox.printtofile=Imprimir em Arquivo
 checkbox.printtofile.mnemonic=F
 #
 dialog.printtitle=Imprimir
-dialog.pstitle=Configurar p\u00e1gina
-dialog.overwrite=Este arquivo j\u00e1 existe.  Deseja substituir o arquivo existente?
-dialog.owtitle=Imprimir em arquivo
-dialog.printtofile=Imprimir em arquivo
-dialog.noprintermsg=Nenhum servi\u00e7o de impress\u00e3o encontrado.
-dialog.writeerror=N\u00e3o \u00e9 poss\u00edvel gravar no arquivo:
+dialog.pstitle=Configura\u00E7\u00E3o da P\u00E1gina
+dialog.overwrite=Este arquivo j\u00E1 existe. Deseja substituir o arquivo existente?
+dialog.owtitle=Imprimir em Arquivo
+dialog.printtofile=Imprimir em Arquivo
+dialog.noprintermsg=Nenhum servi\u00E7o de impress\u00E3o encontrado.
+dialog.writeerror=N\u00E3o \u00E9 poss\u00EDvel gravar no arquivo:
 #
-label.info=Info:
-label.jobname=Nome do trabalho:
+label.info=Informa\u00E7\u00F5es:
+label.jobname=Nome do Job:
 label.jobname.mnemonic=J
-label.numcopies=N\u00famero de c\u00f3pias:
+label.numcopies=N\u00FAmero de c\u00F3pias:
 label.numcopies.mnemonic=O
 label.priority=Prioridade:
 label.priority.mnemonic=R
 label.psname=Nome:
 label.psname.mnemonic=N
 label.pstype=Tipo:
-label.rangeto=Para
+label.rangeto=At\u00E9
 label.size=Tamanho:
 label.size.mnemonic=Z
-label.source=Fonte:
+label.source=Origem:
 label.source.mnemonic=C
 label.status=Status:
-label.username=Nome de usu\u00e1rio:
+label.username=Nome do Usu\u00E1rio:
 label.username.mnemonic=U
 label.millimetres=(mm)
 label.inches=(pol)
@@ -71,35 +71,35 @@
 radiobutton.highq.mnemonic=H
 radiobutton.landscape=Paisagem
 radiobutton.landscape.mnemonic=L
-radiobutton.monochrome=Monocrom\u00e1tico
+radiobutton.monochrome=Monocrom\u00E1tico
 radiobutton.monochrome.mnemonic=M
 radiobutton.normalq=Normal
 radiobutton.normalq.mnemonic=N
-radiobutton.oneside=Um lado
+radiobutton.oneside=Um Lado
 radiobutton.oneside.mnemonic=O
 radiobutton.portrait=Retrato
 radiobutton.portrait.mnemonic=P
 radiobutton.rangeall=Todas
 radiobutton.rangeall.mnemonic=L
-radiobutton.rangepages=P\u00e1ginas
+radiobutton.rangepages=P\u00E1ginas
 radiobutton.rangepages.mnemonic=E
-radiobutton.revlandscape=Paisagem invertida
+radiobutton.revlandscape=Paisagem Invertida
 radiobutton.revlandscape.mnemonic=N
-radiobutton.revportrait=Retrato invertido
+radiobutton.revportrait=Retrato Invertido
 radiobutton.revportrait.mnemonic=I
-radiobutton.tumble=Duplex horizontal
+radiobutton.tumble=Duplex Horizontal
 radiobutton.tumble.mnemonic=T
 # The vkMnemonics correspond with the constants defined in KeyEvent, eg
 # 65 = KeyEvent.VK_A
-tab.appearance=Apar\u00eancia
+tab.appearance=Apar\u00EAncia
 tab.appearance.vkMnemonic=65
 tab.general=Geral
 tab.general.vkMnemonic=71
-tab.pagesetup=Configurar p\u00e1gina
+tab.pagesetup=Configura\u00E7\u00E3o da P\u00E1gina
 tab.pagesetup.vkMnemonic=83
 #
-error.pagerange=Intervalo de p\u00e1ginas inv\u00e1lido; insira novamente os valores (por exemplo, 1-3,5,7-10)
-error.destination=Nome de arquivo inv\u00e1lido; tente novamente
+error.pagerange=Faixa de p\u00E1ginas inv\u00E1lida; insira novamente os valores (por exemplo, 1-3,5,7-10)
+error.destination=Nome de arquivo inv\u00E1lido; tente novamente
 #
 # The following keys match the Strings returned by MediaSizeName.toString()
 # (in some cases the space character is replaced by '-' and the pound 
@@ -152,31 +152,31 @@
 iso-c9=C9 (ISO/DIN)
 iso-c10=C10 (ISO/DIN)
 na-letter=Carta
-na-legal=Of\u00edcio
+na-legal=Of\u00EDcio
 executive=Executivo
-ledger=Livro-raz\u00e3o
-tabloid=Tabl\u00f3ide
+ledger=Duplo Carta
+tabloid=Tabl\u00F3ide
 invoice=Fatura
-folio=F\u00f3lio
+folio=F\u00F3lio
 quarto=Quarto
-japanese-postcard=Cart\u00e3o-postal (JIS)
-oufuko-postcard=Cart\u00e3o-postal (JIS)
+japanese-postcard=Cart\u00E3o Postal (JIS)
+oufuko-postcard=Cart\u00E3o Postal Duplo (JIS)
 a=Engenharia A
 b=Engenharia B
 c=Engenharia C
 d=Engenharia D
 e=Engenharia E
-iso-designated-long=Longo designado ISO
-italian-envelope=Envelope italiano
-italy-envelope=Envelope italiano
-invite-envelope=Envelope de convite
-monarch-envelope=Envelope monarca
-personal-envelope=Envelope personalizado
-na-number-9-envelope=Envelope n\u00ba 9
-na-number-10-envelope=Envelope n\u00ba 10
-na-number-11-envelope=Envelope n\u00ba 11
-na-number-12-envelope=Envelope n\u00ba 12
-na-number-14-envelope=Envelope n\u00ba 14
+iso-designated-long=Longo Designado ISO
+italian-envelope=Envelope Italiano
+italy-envelope=Envelope Italiano
+invite-envelope=Envelope de Convite
+monarch-envelope=Envelope Monarca
+personal-envelope=Envelope Personalizado
+na-number-9-envelope=Envelope n\u00BA 9
+na-number-10-envelope=Envelope n\u00BA 10
+na-number-11-envelope=Envelope n\u00BA 11
+na-number-12-envelope=Envelope n\u00BA 12
+na-number-14-envelope=Envelope n\u00BA 14
 na-6x9-envelope=Envelope 6x9
 na-7x9-envelope=Envelope 6x7
 na-9x11-envelope=Envelope 9x11
@@ -189,26 +189,26 @@
 #
 # The following keys match the Strings returned by MediaTray.toString()
 #
-auto-select=Selecionar automaticamente
+auto-select=Selecionar Automaticamente
 top=Superior
 middle=Meio
 bottom=Inferior
 envelope=Envelope
 manual=Manual
-large-capacity=Grande capacidade
+large-capacity=Grande Capacidade
 main=Principal
 side=Lado
 # Add the additional standard bins defined by win32
-Manual-Envelope=Envelope manual
-Automatic-Feeder=Alimentador autom\u00e1tico
-Tractor-Feeder=Alimentador por tracionador
-Small-Format=Formato pequeno
-Large-Format=Formato grande
+Manual-Envelope=Envelope Manual
+Automatic-Feeder=Alimentador Autom\u00E1tico
+Tractor-Feeder=Alimentador por Tracionador
+Small-Format=Formato Pequeno
+Large-Format=Formato Grande
 Cassette=Cassete
-Form-Source=Fonte do formul\u00e1rio
+Form-Source=Origem do Formul\u00E1rio
 #
 # The following keys match the Strings returned by 
 # PrinterIsAcceptingJobs.toString()
 #
-accepting-jobs=Aceitando trabalhos
-not-accepting-jobs=N\u00e3o aceitando trabalhos
+accepting-jobs=Aceitando jobs
+not-accepting-jobs=N\u00E3o aceitando jobs
--- a/jdk/src/share/classes/sun/print/resources/serviceui_sv.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/print/resources/serviceui_sv.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,12 +1,12 @@
 #
 #
-border.chromaticity=F\u00e4rgutseende
-border.copies=Antal kopior
-border.jobattributes=Jobbattribut
-border.media=Medier
-border.orientation=Riktning
-border.printrange=Utskriftsomr\u00e5de
-border.printservice=Skrivarhantering
+border.chromaticity=F\u00E4rg
+border.copies=Antal exemplar
+border.jobattributes=Utskriftsattribut
+border.media=Media
+border.orientation=Orientering
+border.printrange=Utskriftsintervall
+border.printservice=Utskriftstj\u00E4nst
 border.quality=Kvalitet
 border.sides=Sidor
 border.margins=Marginaler
@@ -15,59 +15,59 @@
 button.ok=OK
 button.print=Skriv ut
 button.properties=Egenskaper...
-button.properties.mnemonic=R
+button.properties.mnemonic=H
 #
 checkbox.collate=Sortera
-checkbox.collate.mnemonic=T
-checkbox.jobsheets=Titelsida
-checkbox.jobsheets.mnemonic=I
+checkbox.collate.mnemonic=F
+checkbox.jobsheets=F\u00F6rs\u00E4ttsblad
+checkbox.jobsheets.mnemonic=B
 checkbox.printtofile=Skriv till fil
-checkbox.printtofile.mnemonic=F
+checkbox.printtofile.mnemonic=V
 #
 dialog.printtitle=Skriv ut
 dialog.pstitle=Utskriftsformat
-dialog.overwrite=Denna fil finns redan.  Vill du skriva \u00f6ver den befintliga filen?
+dialog.overwrite=Denna fil finns redan.  Vill du skriva \u00F6ver den befintliga filen?
 dialog.owtitle=Skriv till fil
 dialog.printtofile=Skriv till fil
-dialog.noprintermsg=Det gick inte att hitta n\u00e5gon utskriftstj\u00e4nst.
-dialog.writeerror=Det g\u00e5r inte att skriva till filen:
+dialog.noprintermsg=Hittade ingen utskriftstj\u00E4nst.
+dialog.writeerror=Kan inte skriva till filen:
 #
 label.info=Information:
-label.jobname=Jobbnamn:
-label.jobname.mnemonic=J
-label.numcopies=Antal kopior:
-label.numcopies.mnemonic=O
+label.jobname=Utskrift:
+label.jobname.mnemonic=U
+label.numcopies=Antal exemplar:
+label.numcopies.mnemonic=E
 label.priority=Prioritet:
-label.priority.mnemonic=R
+label.priority.mnemonic=H
 label.psname=Namn:
 label.psname.mnemonic=N
 label.pstype=Typ:
 label.rangeto=Till
 label.size=Storlek:
-label.size.mnemonic=O
-label.source=K\u00e4lla:
-label.source.mnemonic=K
+label.size.mnemonic=o
+label.source=K\u00E4lla:
+label.source.mnemonic=F
 label.status=Status:
-label.username=Anv\u00e4ndarnamn:
-label.username.mnemonic=V
+label.username=Anv\u00E4ndarnamn:
+label.username.mnemonic=v
 label.millimetres=(mm)
-label.inches=(inch)
-label.topmargin=start
-label.topmargin.mnemonic=R
-label.bottommargin=slut
-label.bottommargin.mnemonic=T
-label.leftmargin=v\u00e4nster
+label.inches=(tum)
+label.topmargin=topp
+label.topmargin.mnemonic=V
+label.bottommargin=botten
+label.bottommargin.mnemonic=B
+label.leftmargin=v\u00E4nster
 label.leftmargin.mnemonic=V
-label.rightmargin=h\u00f6ger
+label.rightmargin=h\u00F6ger
 label.rightmargin.mnemonic=H
 #
-radiobutton.color=F\u00e4rg
+radiobutton.color=F\u00E4rg
 radiobutton.color.mnemonic=F
 radiobutton.draftq=Utkast
-radiobutton.draftq.mnemonic=K
+radiobutton.draftq.mnemonic=V
 radiobutton.duplex=Duplex
 radiobutton.duplex.mnemonic=D
-radiobutton.highq=H\u00f6g
+radiobutton.highq=H\u00F6g
 radiobutton.highq.mnemonic=H
 radiobutton.landscape=Liggande
 radiobutton.landscape.mnemonic=L
@@ -77,29 +77,29 @@
 radiobutton.normalq.mnemonic=N
 radiobutton.oneside=En sida
 radiobutton.oneside.mnemonic=E
-radiobutton.portrait=St\u00e5ende
+radiobutton.portrait=St\u00E5ende
 radiobutton.portrait.mnemonic=D
 radiobutton.rangeall=Alla
 radiobutton.rangeall.mnemonic=L
 radiobutton.rangepages=Sidor
 radiobutton.rangepages.mnemonic=D
-radiobutton.revlandscape=Omv\u00e4nt liggande
+radiobutton.revlandscape=Omv\u00E4nt liggande
 radiobutton.revlandscape.mnemonic=N
-radiobutton.revportrait=Omv\u00e4nt st\u00e5ende
+radiobutton.revportrait=Omv\u00E4nt st\u00E5ende
 radiobutton.revportrait.mnemonic=M
-radiobutton.tumble=Tumble
-radiobutton.tumble.mnemonic=T
+radiobutton.tumble=V\u00E4nd
+radiobutton.tumble.mnemonic=V
 # The vkMnemonics correspond with the constants defined in KeyEvent, eg
 # 65 = KeyEvent.VK_A
 tab.appearance=Utseende
-tab.appearance.vkMnemonic=85
-tab.general=Allm\u00e4nt
-tab.general.vkMnemonic=65
+tab.appearance.vkMnemonic=65
+tab.general=Allm\u00E4nt
+tab.general.vkMnemonic=71
 tab.pagesetup=Utskriftsformat
 tab.pagesetup.vkMnemonic=83
 #
-error.pagerange=Ogiltigt sidintervall. Skriv in v\u00e4rdena p\u00e5 nytt (t ex 1-3,5,7-10)
-error.destination=Ogiltigt filnamn. F\u00f6rs\u00f6k p\u00e5 nytt.
+error.pagerange=Ogiltigt sidintervall. Skriv in v\u00E4rdena igen (t ex 1-3,5,7-10)
+error.destination=Ogiltigt filnamn. F\u00F6rs\u00F6k igen.
 #
 # The following keys match the Strings returned by MediaSizeName.toString()
 # (in some cases the space character is replaced by '-' and the pound 
@@ -156,7 +156,7 @@
 executive=Executive
 ledger=Ledger
 tabloid=Tabloid
-invoice=Faktura
+invoice=Invoice
 folio=Folio
 quarto=Quarto
 japanese-postcard=Postcard (JIS)
@@ -166,36 +166,36 @@
 c=Engineering C
 d=Engineering D
 e=Engineering E
-iso-designated-long=ISO-designerad Long
-italian-envelope=Italy-kuvert
-italy-envelope=Italy-kuvert
+iso-designated-long=ISO Designated Long
+italian-envelope=Italienskt kuvert
+italy-envelope=Italienskt kuvert
 invite-envelope=Invitation-kuvert
 monarch-envelope=Monarch-kuvert
-personal-envelope=egen kuvertstorlek
+personal-envelope=Egen kuvertstorlek
 na-number-9-envelope=No. 9-kuvert
 na-number-10-envelope=No. 10-kuvert
 na-number-11-envelope=No. 11-kuvert
 na-number-12-envelope=No. 12-kuvert
 na-number-14-envelope=No. 14-kuvert
 na-6x9-envelope=6x9-kuvert
-na-7x9-envelope=7x9-kuvert
+na-7x9-envelope=6x7-kuvert
 na-9x11-envelope=9x11-kuvert
 na-9x12-envelope=9x12-kuvert
-na-10x13-envelope=10x13-kuvert
-na-10x14-envelope=10x14-kuvert
+na-10x13-envelope=10x15-kuvert
+na-10x14-envelope=10x15-kuvert
 na-10x15-envelope=10x15-kuvert
-na-5x7=5x7 tums papper
-na-8x10=8x10 tums papper
+na-5x7=5x7-tumspapper
+na-8x10=8x10-tumspapper
 #
 # The following keys match the Strings returned by MediaTray.toString()
 #
-auto-select=V\u00e4lj automatiskt
-top=\u00d6verst
+auto-select=V\u00E4lj automatiskt
+top=Topp
 middle=Mitten
-bottom=Underst
+bottom=Botten
 envelope=Kuvert
-manual=Manuellt
-large-capacity=H\u00f6g kapacitet
+manual=Manuell
+large-capacity=H\u00F6g kapacitet
 main=Huvud
 side=Sida
 # Add the additional standard bins defined by win32
@@ -205,10 +205,10 @@
 Small-Format=Litet format
 Large-Format=Stort format
 Cassette=Kassett
-Form-Source=Formul\u00e4rk\u00e4lla
+Form-Source=Formul\u00E4rk\u00E4lla
 #
 # The following keys match the Strings returned by 
 # PrinterIsAcceptingJobs.toString()
 #
-accepting-jobs=Acceptera jobb
-not-accepting-jobs=Inte acceptera jobb
+accepting-jobs=Accepterar jobb
+not-accepting-jobs=Accepterar inte jobb
--- a/jdk/src/share/classes/sun/print/resources/serviceui_zh_CN.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/print/resources/serviceui_zh_CN.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,105 +1,105 @@
 #
 #
-border.chromaticity=\u8272\u5f69\u5916\u89c2
-border.copies=\u4efd\u6570
-border.jobattributes=\u4efb\u52a1\u5c5e\u6027
-border.media=\u5a92\u4f53
-border.orientation=\u65b9\u5411
-border.printrange=\u6253\u5370\u533a\u57df
-border.printservice=\u6253\u5370\u670d\u52a1
-border.quality=\u8d28\u91cf
-border.sides=\u8fb9
-border.margins=\u8fb9\u8ddd
+border.chromaticity=\u989C\u8272\u5916\u89C2
+border.copies=\u4EFD\u6570
+border.jobattributes=\u4F5C\u4E1A\u5C5E\u6027
+border.media=\u4ECB\u8D28
+border.orientation=\u65B9\u5411
+border.printrange=\u6253\u5370\u533A\u57DF
+border.printservice=\u6253\u5370\u670D\u52A1
+border.quality=\u8D28\u91CF
+border.sides=\u8FB9
+border.margins=\u8FB9\u8DDD
 #
-button.cancel=\u53d6\u6d88
-button.ok=\u786e\u5b9a
+button.cancel=\u53D6\u6D88
+button.ok=\u786E\u5B9A
 button.print=\u6253\u5370
-button.properties=\u5c5e\u6027(R)...
+button.properties=\u5C5E\u6027...
 button.properties.mnemonic=R
 #
-checkbox.collate=\u6bd4\u8f83(C)
+checkbox.collate=\u9010\u4EFD\u6253\u5370
 checkbox.collate.mnemonic=C
-checkbox.jobsheets=\u6807\u9898\u9875(B)
+checkbox.jobsheets=\u6807\u5E1C\u9875
 checkbox.jobsheets.mnemonic=B
-checkbox.printtofile=\u6253\u5370\u5230\u6587\u4ef6(F)
+checkbox.printtofile=\u6253\u5370\u5230\u6587\u4EF6
 checkbox.printtofile.mnemonic=F
 #
 dialog.printtitle=\u6253\u5370
-dialog.pstitle=\u9875\u9762\u8bbe\u7f6e
-dialog.overwrite=\u8fd9\u4e2a\u6587\u4ef6\u5df2\u7ecf\u5b58\u5728\u3002\u662f\u5426\u8981\u66ff\u6362\u5df2\u6709\u7684\u6587\u4ef6\uff1f
-dialog.owtitle=\u6253\u5370\u5230\u6587\u4ef6
-dialog.printtofile=\u6253\u5370\u5230\u6587\u4ef6
-dialog.noprintermsg=\u672a\u627e\u5230\u6253\u5370\u670d\u52a1\u3002
-dialog.writeerror=\u65e0\u6cd5\u5199\u5165\u6587\u4ef6:
+dialog.pstitle=\u9875\u9762\u8BBE\u7F6E
+dialog.overwrite=\u8BE5\u6587\u4EF6\u5DF2\u7ECF\u5B58\u5728\u3002\u662F\u5426\u8981\u8986\u76D6\u73B0\u6709\u6587\u4EF6?
+dialog.owtitle=\u6253\u5370\u5230\u6587\u4EF6
+dialog.printtofile=\u6253\u5370\u5230\u6587\u4EF6
+dialog.noprintermsg=\u627E\u4E0D\u5230\u6253\u5370\u670D\u52A1\u3002
+dialog.writeerror=\u65E0\u6CD5\u5199\u5165\u6587\u4EF6:
 #
-label.info=\u4fe1\u606f\uff1a
-label.jobname=\u4efb\u52a1\u540d\u79f0(J)\uff1a
+label.info=\u4FE1\u606F: 
+label.jobname=\u4F5C\u4E1A\u540D\u79F0: 
 label.jobname.mnemonic=J
-label.numcopies=\u6253\u5370\u4efd\u6570(O)\uff1a
+label.numcopies=\u6253\u5370\u4EFD\u6570: 
 label.numcopies.mnemonic=O
-label.priority=\u4f18\u5148\u7ea7(R)\uff1a
+label.priority=\u4F18\u5148\u7EA7: 
 label.priority.mnemonic=R
-label.psname=\u540d\u79f0(N)\uff1a
+label.psname=\u540D\u79F0:
 label.psname.mnemonic=N
-label.pstype=\u7c7b\u578b\uff1a
-label.rangeto=\u81f3
-label.size=\u5927\u5c0f(Z)\uff1a
+label.pstype=\u7C7B\u578B: 
+label.rangeto=\u81F3
+label.size=\u5927\u5C0F: 
 label.size.mnemonic=Z
-label.source=\u6765\u6e90(C)\uff1a
+label.source=\u6765\u6E90: 
 label.source.mnemonic=C
-label.status=\u72b6\u6001\uff1a
-label.username=\u7528\u6237\u540d(U)\uff1a
+label.status=\u72B6\u6001: 
+label.username=\u7528\u6237\u540D:
 label.username.mnemonic=U
-label.millimetres=(mm)
-label.inches=(in)
-label.topmargin=\u9876\u8fb9\u8ddd(T)
+label.millimetres=(\u6BEB\u7C73)
+label.inches=(\u82F1\u5BF8)
+label.topmargin=\u4E0A\u8FB9\u8DDD
 label.topmargin.mnemonic=T
-label.bottommargin=\u5e95\u8fb9\u8ddd(B)
+label.bottommargin=\u4E0B\u8FB9\u8DDD
 label.bottommargin.mnemonic=B
-label.leftmargin=\u5de6\u8fb9\u8ddd(F)
+label.leftmargin=\u5DE6\u8FB9\u8DDD
 label.leftmargin.mnemonic=F
-label.rightmargin=\u53f3\u8fb9\u8ddd(R)
+label.rightmargin=\u53F3\u8FB9\u8DDD
 label.rightmargin.mnemonic=R
 #
-radiobutton.color=\u8272\u5f69(C)
+radiobutton.color=\u989C\u8272
 radiobutton.color.mnemonic=C
-radiobutton.draftq=\u8349\u56fe(F)
+radiobutton.draftq=\u8349\u56FE
 radiobutton.draftq.mnemonic=F
-radiobutton.duplex=\u53cc\u9762\u6253\u5370(D)
+radiobutton.duplex=\u53CC\u9762\u6253\u5370
 radiobutton.duplex.mnemonic=D
-radiobutton.highq=\u9ad8(H)
+radiobutton.highq=\u9AD8
 radiobutton.highq.mnemonic=H
-radiobutton.landscape=\u6a2a\u5411(L)
+radiobutton.landscape=\u6A2A\u5411
 radiobutton.landscape.mnemonic=L
-radiobutton.monochrome=\u5355\u8272(M)
+radiobutton.monochrome=\u5355\u8272
 radiobutton.monochrome.mnemonic=M
-radiobutton.normalq=\u6b63\u5e38(N)
+radiobutton.normalq=\u6B63\u5E38
 radiobutton.normalq.mnemonic=N
-radiobutton.oneside=\u5355\u9762(O)
+radiobutton.oneside=\u5355\u9762
 radiobutton.oneside.mnemonic=O
-radiobutton.portrait=\u7eb5\u5411(P)
+radiobutton.portrait=\u7EB5\u5411
 radiobutton.portrait.mnemonic=P
-radiobutton.rangeall=\u5168\u90e8(L)
+radiobutton.rangeall=\u5168\u90E8
 radiobutton.rangeall.mnemonic=L
-radiobutton.rangepages=\u9875\u7801\u8303\u56f4(E)
+radiobutton.rangepages=\u9875\u7801\u8303\u56F4
 radiobutton.rangepages.mnemonic=E
-radiobutton.revlandscape=\u6a2a\u5411\u53cd\u9762\u6253\u5370(N)
+radiobutton.revlandscape=\u6A2A\u5411\u53CD\u9762\u6253\u5370
 radiobutton.revlandscape.mnemonic=N
-radiobutton.revportrait=\u7eb5\u5411\u53cd\u9762\u6253\u5370(I)
+radiobutton.revportrait=\u7EB5\u5411\u53CD\u9762\u6253\u5370
 radiobutton.revportrait.mnemonic=I
-radiobutton.tumble=\u7ffb\u8f6c(T)
+radiobutton.tumble=\u7FFB\u8F6C
 radiobutton.tumble.mnemonic=T
 # The vkMnemonics correspond with the constants defined in KeyEvent, eg
 # 65 = KeyEvent.VK_A
-tab.appearance=\u5916\u89c2(A)
+tab.appearance=\u5916\u89C2
 tab.appearance.vkMnemonic=65
-tab.general=\u5e38\u89c4(G)
+tab.general=\u5E38\u89C4
 tab.general.vkMnemonic=71
-tab.pagesetup=\u9875\u9762\u8bbe\u7f6e(S)
+tab.pagesetup=\u9875\u9762\u8BBE\u7F6E
 tab.pagesetup.vkMnemonic=83
 #
-error.pagerange=\u65e0\u6548\u7684\u9875\u9762\u8303\u56f4\uff1b\u8bf7\u91cd\u65b0\u8f93\u5165\u6570\u503c (e.g. 1-3,5,7-10)
-error.destination=\u65e0\u6548\u7684\u6587\u4ef6\u540d\uff1b\u8bf7\u91cd\u8bd5
+error.pagerange=\u65E0\u6548\u7684\u9875\u9762\u8303\u56F4; \u8BF7\u91CD\u65B0\u8F93\u5165\u6570\u503C (\u4F8B\u5982 1-3,5,7-10)
+error.destination=\u65E0\u6548\u7684\u6587\u4EF6\u540D; \u8BF7\u91CD\u8BD5
 #
 # The following keys match the Strings returned by MediaSizeName.toString()
 # (in some cases the space character is replaced by '-' and the pound 
@@ -151,64 +151,64 @@
 iso-c8=C8 (ISO/DIN)
 iso-c9=C9 (ISO/DIN)
 iso-c10=C10 (ISO/DIN)
-na-letter=\u4fe1
-na-legal=\u6cd5\u5f8b\u6587\u4e66
-executive=\u6267\u884c\u7a0b\u5e8f
-ledger=\u5e10\u76ee
-tabloid=\u5c0f\u62a5
-invoice=\u53d1\u7968
-folio=\u5bf9\u5f00\u9875
-quarto=\u56db\u5f00\u9875
-japanese-postcard=\u660e\u4fe1\u7247 (JIS)
-oufuko-postcard=\u53cc\u9762\u540d\u4fe1\u7247 (JIS)
-a=\u5de5\u7a0b A
-b=\u5de5\u7a0b B
-c=\u5de5\u7a0b C
-d=\u5de5\u7a0b D
-e=\u5de5\u7a0b E
-iso-designated-long=ISO \u6307\u5b9a\u957f\u5ea6
-italian-envelope=\u610f\u5927\u5229\u4fe1\u5c01
-italy-envelope=\u610f\u5927\u5229\u4fe1\u5c01
-invite-envelope=\u9080\u8bf7\u51fd\u4fe1\u5c01
-monarch-envelope=Monarch \u4fe1\u5c01
-personal-envelope=\u4e2a\u4eba\u4fe1\u5c01
-na-number-9-envelope=9 \u53f7\u4fe1\u5c01
-na-number-10-envelope=10 \u53f7\u4fe1\u5c01
-na-number-11-envelope=11 \u53f7\u4fe1\u5c01
-na-number-12-envelope=12 \u53f7\u4fe1\u5c01
-na-number-14-envelope=14 \u53f7\u4fe1\u5c01
-na-6x9-envelope=6x9 \u4fe1\u5c01
-na-7x9-envelope=6x7 \u4fe1\u5c01
-na-9x11-envelope=9x11 \u4fe1\u5c01
-na-9x12-envelope=9x12 \u4fe1\u5c01
-na-10x13-envelope=10x15 \u4fe1\u5c01
-na-10x14-envelope=10x15 \u4fe1\u5c01
-na-10x15-envelope=10x15 \u4fe1\u5c01
-na-5x7=5" x 7" \u7eb8\u5f20
-na-8x10=8" x 10" \u7eb8\u5f20
+na-letter=\u4FE1\u51FD
+na-legal=\u6CD5\u5F8B\u6587\u4E66
+executive=\u6267\u884C\u7A0B\u5E8F
+ledger=\u5E10\u76EE
+tabloid=\u5C0F\u62A5
+invoice=\u53D1\u7968
+folio=\u5BF9\u5F00\u9875
+quarto=\u56DB\u5F00\u9875
+japanese-postcard=\u660E\u4FE1\u7247 (JIS)
+oufuko-postcard=\u53CC\u9762\u660E\u4FE1\u7247 (JIS)
+a=\u5DE5\u7A0B A
+b=\u5DE5\u7A0B B
+c=\u5DE5\u7A0B C
+d=\u5DE5\u7A0B D
+e=\u5DE5\u7A0B E
+iso-designated-long=ISO \u6307\u5B9A\u957F\u5EA6
+italian-envelope=\u610F\u5927\u5229\u4FE1\u5C01
+italy-envelope=\u610F\u5927\u5229\u4FE1\u5C01
+invite-envelope=\u9080\u8BF7\u51FD\u4FE1\u5C01
+monarch-envelope=Monarch \u4FE1\u5C01
+personal-envelope=\u4E2A\u4EBA\u4FE1\u5C01
+na-number-9-envelope=9 \u53F7\u4FE1\u5C01
+na-number-10-envelope=10 \u53F7\u4FE1\u5C01
+na-number-11-envelope=11 \u53F7\u4FE1\u5C01
+na-number-12-envelope=12 \u53F7\u4FE1\u5C01
+na-number-14-envelope=14 \u53F7\u4FE1\u5C01
+na-6x9-envelope=6x9 \u4FE1\u5C01
+na-7x9-envelope=6x7 \u4FE1\u5C01
+na-9x11-envelope=9x11 \u4FE1\u5C01
+na-9x12-envelope=9x12 \u4FE1\u5C01
+na-10x13-envelope=10x15 \u4FE1\u5C01
+na-10x14-envelope=10x15 \u4FE1\u5C01
+na-10x15-envelope=10x15 \u4FE1\u5C01
+na-5x7=5" x 7" \u7EB8\u5F20
+na-8x10=8" x 10" \u7EB8\u5F20
 #
 # The following keys match the Strings returned by MediaTray.toString()
 #
-auto-select=\u81ea\u52a8\u9009\u5b9a
-top=\u4e0a
-middle=\u4e2d
-bottom=\u4e0b
-envelope=\u4fe1\u5c01
-manual=\u624b\u52a8
-large-capacity=\u5927\u5bb9\u91cf
-main=\u4e3b
-side=\u8fb9
+auto-select=\u81EA\u52A8\u9009\u62E9
+top=\u4E0A
+middle=\u4E2D
+bottom=\u4E0B
+envelope=\u4FE1\u5C01
+manual=\u624B\u52A8
+large-capacity=\u5927\u5BB9\u91CF
+main=\u4E3B
+side=\u4FA7
 # Add the additional standard bins defined by win32
-Manual-Envelope=\u624b\u52a8\u4fe1\u5c01
-Automatic-Feeder=\u81ea\u52a8\u9001\u7eb8\u5668
-Tractor-Feeder=\u7275\u5f15\u5f0f\u9001\u7eb8\u5668
-Small-Format=\u5c0f\u53f7\u7248\u5f0f
-Large-Format=\u5927\u53f7\u7248\u5f0f
-Cassette=\u7eb8\u76d2
-Form-Source=\u8868\u683c\u6765\u6e90
+Manual-Envelope=\u624B\u52A8\u4FE1\u5C01
+Automatic-Feeder=\u81EA\u52A8\u9988\u9001\u5668
+Tractor-Feeder=\u7275\u5F15\u5F0F\u9988\u9001\u5668
+Small-Format=\u5C0F\u53F7\u7248\u5F0F
+Large-Format=\u5927\u53F7\u7248\u5F0F
+Cassette=\u7EB8\u76D2
+Form-Source=\u8868\u683C\u6765\u6E90
 #
 # The following keys match the Strings returned by 
 # PrinterIsAcceptingJobs.toString()
 #
-accepting-jobs=\u63a5\u53d7\u4efb\u52a1
-not-accepting-jobs=\u4e0d\u63a5\u53d7\u4efb\u52a1
+accepting-jobs=\u63A5\u53D7\u4F5C\u4E1A
+not-accepting-jobs=\u4E0D\u63A5\u53D7\u4F5C\u4E1A
--- a/jdk/src/share/classes/sun/print/resources/serviceui_zh_TW.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/print/resources/serviceui_zh_TW.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,105 +1,105 @@
 #
 #
-border.chromaticity=\u8272\u5f69\u5916\u89c0
-border.copies=\u4efd\u6578
-border.jobattributes=\u5de5\u4f5c\u5c6c\u6027
-border.media=\u5a92\u9ad4
-border.orientation=\u65b9\u5411
-border.printrange=\u5217\u5370\u7bc4\u570d
-border.printservice=\u5217\u5370\u670d\u52d9
-border.quality=\u54c1\u8cea
-border.sides=\u908a
-border.margins=\u908a\u8ddd
+border.chromaticity=\u8272\u5F69\u5916\u89C0
+border.copies=\u4EFD\u6578
+border.jobattributes=\u5DE5\u4F5C\u5C6C\u6027
+border.media=\u5A92\u9AD4
+border.orientation=\u65B9\u5411
+border.printrange=\u5217\u5370\u7BC4\u570D
+border.printservice=\u5217\u5370\u670D\u52D9
+border.quality=\u54C1\u8CEA
+border.sides=\u908A
+border.margins=\u908A\u8DDD
 #
-button.cancel=\u53d6\u6d88
-button.ok=\u78ba\u5b9a
+button.cancel=\u53D6\u6D88
+button.ok=\u78BA\u5B9A
 button.print=\u5217\u5370
-button.properties=\u5c6c\u6027(R)...
+button.properties=\u5C6C\u6027(R)...
 button.properties.mnemonic=R
 #
-checkbox.collate=\u7406\u5e8f(C)
+checkbox.collate=\u7406\u5E8F(C)
 checkbox.collate.mnemonic=C
-checkbox.jobsheets=\u6a19\u984c\u9801(B)
+checkbox.jobsheets=\u6A19\u984C\u9801(B)
 checkbox.jobsheets.mnemonic=B
-checkbox.printtofile=\u5217\u5370\u81f3\u6a94\u6848(F)
+checkbox.printtofile=\u5217\u5370\u81F3\u6A94\u6848(F)
 checkbox.printtofile.mnemonic=F
 #
 dialog.printtitle=\u5217\u5370
-dialog.pstitle=\u9801\u9762\u8a2d\u5b9a
-dialog.overwrite=\u9019\u500b\u6a94\u6848\u5df2\u7d93\u5b58\u5728\u3002\u60a8\u8981\u8986\u5beb\u5df2\u5b58\u5728\u7684\u6a94\u6848\u55ce\uff1f
-dialog.owtitle=\u5217\u5370\u81f3\u6a94\u6848
-dialog.printtofile=\u5217\u5370\u81f3\u6a94\u6848
-dialog.noprintermsg=\u627e\u4e0d\u5230\u5217\u5370\u670d\u52d9\u3002
-dialog.writeerror=\u7121\u6cd5\u5beb\u5165\u81f3\u6a94\u6848\ufe30
+dialog.pstitle=\u9801\u9762\u8A2D\u5B9A
+dialog.overwrite=\u9019\u500B\u6A94\u6848\u5DF2\u7D93\u5B58\u5728\u3002\u60A8\u8981\u8986\u5BEB\u5DF2\u5B58\u5728\u7684\u6A94\u6848\u55CE\uFF1F
+dialog.owtitle=\u5217\u5370\u81F3\u6A94\u6848
+dialog.printtofile=\u5217\u5370\u81F3\u6A94\u6848
+dialog.noprintermsg=\u627E\u4E0D\u5230\u5217\u5370\u670D\u52D9\u3002
+dialog.writeerror=\u7121\u6CD5\u5BEB\u5165\u81F3\u6A94\u6848:
 #
-label.info=\u8cc7\u8a0a\uff1a
-label.jobname=\u5de5\u4f5c\u540d\u7a31(J)\uff1a
+label.info=\u8CC7\u8A0A: 
+label.jobname=\u5DE5\u4F5C\u540D\u7A31(J): 
 label.jobname.mnemonic=J
-label.numcopies=\u5217\u5370\u4efd\u6578(O)\uff1a
+label.numcopies=\u5217\u5370\u4EFD\u6578(O): 
 label.numcopies.mnemonic=O
-label.priority=\u512a\u5148\u6b0a(R)\uff1a
+label.priority=\u512A\u5148\u6B0A(R): 
 label.priority.mnemonic=R
-label.psname=\u540d\u7a31(N)\uff1a
+label.psname=\u540D\u7A31(N): 
 label.psname.mnemonic=N
-label.pstype=\u985e\u578b\uff1a
-label.rangeto=\u81f3
-label.size=\u5927\u5c0f(Z)\uff1a
+label.pstype=\u985E\u578B: 
+label.rangeto=\u81F3
+label.size=\u5927\u5C0F(Z): 
 label.size.mnemonic=Z
-label.source=\u4f86\u6e90(C)\uff1a
+label.source=\u4F86\u6E90(C): 
 label.source.mnemonic=C
-label.status=\u72c0\u614b\uff1a
-label.username=\u4f7f\u7528\u8005\u540d\u7a31(U)\uff1a
+label.status=\u72C0\u614B: 
+label.username=\u4F7F\u7528\u8005\u540D\u7A31(U): 
 label.username.mnemonic=U
 label.millimetres=(mm)
 label.inches=(in)
-label.topmargin=\u9802\u7aef\u908a\u8ddd(T)
+label.topmargin=\u9802\u7AEF\u908A\u8DDD(T)
 label.topmargin.mnemonic=T
-label.bottommargin=\u5e95\u90e8\u908a\u8ddd(B)
+label.bottommargin=\u5E95\u90E8\u908A\u8DDD(B)
 label.bottommargin.mnemonic=B
-label.leftmargin=\u5de6\u908a\u8ddd(F)
+label.leftmargin=\u5DE6\u908A\u8DDD(F)
 label.leftmargin.mnemonic=F
-label.rightmargin=\u53f3\u908a\u8ddd(R)
+label.rightmargin=\u53F3\u908A\u8DDD(R)
 label.rightmargin.mnemonic=R
 #
-radiobutton.color=\u8272\u5f69(C)
+radiobutton.color=\u8272\u5F69(C)
 radiobutton.color.mnemonic=C
 radiobutton.draftq=\u8349\u5716(F)
 radiobutton.draftq.mnemonic=F
-radiobutton.duplex=\u96d9\u9762\u5217\u5370(D)
+radiobutton.duplex=\u96D9\u9762\u5217\u5370(D)
 radiobutton.duplex.mnemonic=D
-radiobutton.highq=\u9ad8(H)
+radiobutton.highq=\u9AD8(H)
 radiobutton.highq.mnemonic=H
-radiobutton.landscape=\u6a6b\u5411(L)
+radiobutton.landscape=\u6A6B\u5411(L)
 radiobutton.landscape.mnemonic=L
-radiobutton.monochrome=\u55ae\u8272(M)
+radiobutton.monochrome=\u55AE\u8272(M)
 radiobutton.monochrome.mnemonic=M
-radiobutton.normalq=\u6b63\u5e38(N)
+radiobutton.normalq=\u6B63\u5E38(N)
 radiobutton.normalq.mnemonic=N
-radiobutton.oneside=\u55ae\u9762(O)
+radiobutton.oneside=\u55AE\u9762(O)
 radiobutton.oneside.mnemonic=O
-radiobutton.portrait=\u76f4\u5411(P)
+radiobutton.portrait=\u76F4\u5411(P)
 radiobutton.portrait.mnemonic=P
-radiobutton.rangeall=\u5168\u90e8(L)
+radiobutton.rangeall=\u5168\u90E8(L)
 radiobutton.rangeall.mnemonic=L
 radiobutton.rangepages=\u9801\u9762(E)
 radiobutton.rangepages.mnemonic=E
-radiobutton.revlandscape=\u53cd\u5411\u6a6b\u5370(N)
+radiobutton.revlandscape=\u53CD\u5411\u6A6B\u5370(N)
 radiobutton.revlandscape.mnemonic=N
-radiobutton.revportrait=\u53cd\u5411\u76f4\u5370(I)
+radiobutton.revportrait=\u53CD\u5411\u76F4\u5370(I)
 radiobutton.revportrait.mnemonic=I
-radiobutton.tumble=\u7ffb\u8f49(T)
+radiobutton.tumble=\u7FFB\u8F49(T)
 radiobutton.tumble.mnemonic=T
 # The vkMnemonics correspond with the constants defined in KeyEvent, eg
 # 65 = KeyEvent.VK_A
-tab.appearance=\u5916\u89c0(A)
+tab.appearance=\u5916\u89C0
 tab.appearance.vkMnemonic=65
-tab.general=\u4e00\u822c(G)
+tab.general=\u4E00\u822C
 tab.general.vkMnemonic=71
-tab.pagesetup=\u9801\u9762\u8a2d\u5b9a(S)
+tab.pagesetup=\u9801\u9762\u8A2D\u5B9A
 tab.pagesetup.vkMnemonic=83
 #
-error.pagerange=\u7121\u6548\u7684\u9801\u9762\u7bc4\u570d\uff1b\u8acb\u91cd\u65b0\u8f38\u5165\u6578\u503c (e.g. 1-3,5,7-10)
-error.destination=\u7121\u6548\u7684\u6a94\u540d\uff1b\u8acb\u518d\u8a66\u4e00\u6b21
+error.pagerange=\u7121\u6548\u7684\u9801\u9762\u7BC4\u570D; \u8ACB\u91CD\u65B0\u8F38\u5165\u6578\u503C (\u4F8B\u5982 1-3,5,7-10)
+error.destination=\u7121\u6548\u7684\u6A94\u540D; \u8ACB\u518D\u8A66\u4E00\u6B21
 #
 # The following keys match the Strings returned by MediaSizeName.toString()
 # (in some cases the space character is replaced by '-' and the pound 
@@ -161,11 +161,11 @@
 quarto=Quarto
 japanese-postcard=Postcard (JIS)
 oufuko-postcard=Double Postcard (JIS)
-a=\u5de5\u7a0b A
-b=\u5de5\u7a0b B
-c=\u5de5\u7a0b C
-d=\u5de5\u7a0b D
-e=\u5de5\u7a0b E
+a=\u5DE5\u7A0B A
+b=\u5DE5\u7A0B B
+c=\u5DE5\u7A0B C
+d=\u5DE5\u7A0B D
+e=\u5DE5\u7A0B E
 iso-designated-long=ISO Designated Long
 italian-envelope=Italy Envelope
 italy-envelope=Italy Envelope
@@ -189,26 +189,26 @@
 #
 # The following keys match the Strings returned by MediaTray.toString()
 #
-auto-select=\u81ea\u52d5\u9078\u53d6
-top=\u4e0a
-middle=\u4e2d
-bottom=\u4e0b
-envelope=\u5c01\u5957
-manual=\u624b\u9001
-large-capacity=\u5927\u5bb9\u91cf
-main=\u4e3b
-side=\u908a
+auto-select=\u81EA\u52D5\u9078\u53D6
+top=\u4E0A
+middle=\u4E2D
+bottom=\u4E0B
+envelope=\u5C01\u5957
+manual=\u624B\u9001
+large-capacity=\u5927\u5BB9\u91CF
+main=\u4E3B
+side=\u908A
 # Add the additional standard bins defined by win32
-Manual-Envelope=\u624b\u9001\u5c01\u5957
-Automatic-Feeder=\u81ea\u52d5\u994b\u7d19\u5668
-Tractor-Feeder=\u62d6\u66f3\u994b\u7d19\u5668
-Small-Format=\u5c0f\u683c\u5f0f
-Large-Format=\u5927\u683c\u5f0f
-Cassette=\u5361\u5f0f\u78c1\u5e36\u6a5f
-Form-Source=\u8868\u683c\u4f86\u6e90
+Manual-Envelope=\u624B\u9001\u5C01\u5957
+Automatic-Feeder=\u81EA\u52D5\u994B\u7D19\u5668
+Tractor-Feeder=\u62D6\u66F3\u994B\u7D19\u5668
+Small-Format=\u5C0F\u683C\u5F0F
+Large-Format=\u5927\u683C\u5F0F
+Cassette=\u5361\u5F0F\u78C1\u5E36\u6A5F
+Form-Source=\u8868\u683C\u4F86\u6E90
 #
 # The following keys match the Strings returned by 
 # PrinterIsAcceptingJobs.toString()
 #
-accepting-jobs=\u63a5\u53d7\u7684\u5de5\u4f5c
-not-accepting-jobs=\u4e0d\u63a5\u53d7\u7684\u5de5\u4f5c
+accepting-jobs=\u63A5\u53D7\u7684\u5DE5\u4F5C
+not-accepting-jobs=\u4E0D\u63A5\u53D7\u7684\u5DE5\u4F5C
--- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_de.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_de.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2001, 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
@@ -24,8 +24,5 @@
 # questions.
 #
 
-rmiregistry.usage=Syntax: {0} <Optionen> <Port>\
-\n\
-\nmit folgendem Wert f\u00fcr <Optionen>:\
-\n  -J <Laufzeit-Flag> \u00dcbergeben des Arguments an den Java-Interpreter.
-rmiregistry.port.badnumber=Anschlussargument {0} ist keine Zahl.
+rmiregistry.usage=Verwendung: {0} <Optionen> <Port>\n\nwobei die <Optionen> Folgendes beinhalten:\n  -J <Laufzeitkennzeichen> Argument an den Java-Interpreter \u00FCbergeben
+rmiregistry.port.badnumber=Portargument {0} ist keine Zahl.
--- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_es.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_es.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2001, 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
@@ -24,8 +24,5 @@
 # questions.
 #
 
-rmiregistry.usage=Sintaxis: {0} <opciones> <puerto>\
-\n\
-\ndonde las <opciones> son:\
-\n  -J<indicador de runtime>    Pasar argumento al int\u00e9rprete de java
-rmiregistry.port.badnumber=argumento de puerto, {0}, no es un n\u00famero.
+rmiregistry.usage=Sintaxis: {0} <opciones> <puerto>\n\ndonde las <opciones> son:\n  -J<indicador de tiempo de ejecuci\u00F3n> Pasar argumento al int\u00E9rprete de java
+rmiregistry.port.badnumber=argumento de puerto, {0}, no es un n\u00FAmero.
--- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_fr.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_fr.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2001, 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
@@ -24,8 +24,5 @@
 # questions.
 #
 
-rmiregistry.usage=Syntaxe : {0} <options> <port>\
-\n\
-\no\u00f9 <options> comprend :\
-\n  -J<indicateur d''ex\u00e9cution> Transmettre l''argument \u00e0 l''interpr\u00e9teur Java
-rmiregistry.port.badnumber=l''argument de port, {0}, n''est pas un nombre.
+rmiregistry.usage=Syntaxe : {0} <options> <port>\n\no\u00F9 <options> comprend :\n  -J<indicateur d''ex\u00E9cution> Transmettre l''argument \u00E0 l''interpr\u00E9teur Java
+rmiregistry.port.badnumber=l''argument port, {0}, n''est pas un nombre.
--- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_it.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_it.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2001, 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
@@ -24,8 +24,5 @@
 # questions.
 #
 
-rmiregistry.usage=Utilizzo: {0} <opzioni> <porta>\
-\n\
-\ndove <opzioni> include:\
-\n  -J<flag di runtime> Passa l''argomento all''interprete java
-rmiregistry.port.badnumber=l''argomento della porta, {0}, non \u00e8 un numero.
+rmiregistry.usage=Utilizzo: {0} <opzioni> <porta>\n\ndove <opzioni> include:\n  -J<flag fase di esecuzione> Passa l''argomento all''interprete java
+rmiregistry.port.badnumber=l''argomento della porta, {0}, non \u00E8 un numero.
--- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_ja.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_ja.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,6 @@
 #
-# Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
+#
+# Copyright (c) 1999, 2001, 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
@@ -23,8 +24,5 @@
 # questions.
 #
 
-rmiregistry.usage=\u4f7f\u3044\u65b9: {0} <options> <port>\
-\n\
-\n<options> \u306b\u306f\u6b21\u306e\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002\
-\n  -J<runtime flag> java \u30a4\u30f3\u30bf\u30d7\u30ea\u30bf\u306b\u5f15\u6570\u3092\u6e21\u3059
-rmiregistry.port.badnumber=\u30dd\u30fc\u30c8\u5f15\u6570 {0} \u306f\u756a\u53f7\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+rmiregistry.usage=\u4F7F\u7528\u65B9\u6CD5: {0} <options> <port>\n\n<options>\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002\n -J<runtime flag> java\u30A4\u30F3\u30BF\u30D7\u30EA\u30BF\u306B\u5F15\u6570\u3092\u6E21\u3059
+rmiregistry.port.badnumber=\u30DD\u30FC\u30C8\u5F15\u6570{0}\u306F\u756A\u53F7\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
--- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_ko.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_ko.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2001, 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
@@ -24,8 +24,5 @@
 # questions.
 #
 
-rmiregistry.usage=\uc0ac\uc6a9\ubc95: {0} <options> <port>\
-\n\
-\n<options>\ub294 \ub2e4\uc74c\uc744 \ud3ec\ud568\ud569\ub2c8\ub2e4:\
-\n  -J<runtime flag> Java \uc778\ud130\ud504\ub9ac\ud130\uc5d0 \uc778\uc790\ub97c \uc804\ub2ec\ud569\ub2c8\ub2e4.
-rmiregistry.port.badnumber=\ud3ec\ud2b8 \uc778\uc790 {0}\uc740(\ub294) \uc22b\uc790\uac00 \uc544\ub2d9\ub2c8\ub2e4.
+rmiregistry.usage=\uC0AC\uC6A9\uBC95: {0} <options> <port>\n\n\uC5EC\uAE30\uC11C <options>\uB294 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4.\n  -J<runtime flag> Java \uC778\uD130\uD504\uB9AC\uD130\uC5D0 \uC778\uC218\uB97C \uC804\uB2EC\uD569\uB2C8\uB2E4.
+rmiregistry.port.badnumber=\uD3EC\uD2B8 \uC778\uC218 {0}\uC740(\uB294) \uC22B\uC790\uAC00 \uC544\uB2D9\uB2C8\uB2E4.
--- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_pt_BR.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_pt_BR.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2001, 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
@@ -24,5 +24,5 @@
 # questions.
 #
 
-rmiregistry.usage=Uso: {0} <options> <port>\n\nem que <options> inclui:\n  -J<runtime flag> passa o argumento para o int\u00e9rprete de java
-rmiregistry.port.badnumber=o argumento da porta, {0}, n\u00e3o \u00e9 um n\u00famero.
+rmiregistry.usage=Uso: {0} <op\u00E7\u00F5es> <porta>\n\nem que <op\u00E7\u00F5es> inclui:\n  -J<flag de runtime> Especifica o argumento para o int\u00E9rprete de java
+rmiregistry.port.badnumber=o argumento da porta, {0}, n\u00E3o \u00E9 um n\u00FAmero.
--- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_sv.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_sv.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2001, 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
@@ -24,8 +24,5 @@
 # questions.
 #
 
-rmiregistry.usage=G\u00f6r s\u00e5 h\u00e4r: {0} <alternativ> <port>\
-\n\
-\nd\u00e4r <alternativ> omfattar:\
-\n  -J<k\u00f6rtidsflagga>   Skicka argumentet till java-tolken
-rmiregistry.port.badnumber=portargumentet, {0}, \u00e4r inte en siffra.
+rmiregistry.usage=Syntax: {0} <alternativ> <port>\n\nd\u00E4r <alternativ> inkluderar:\n  -J<k\u00F6rningsflagga>   Skicka argumentet till Javatolken
+rmiregistry.port.badnumber=portargumentet, {0}, \u00E4r inte ett tal.
--- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_zh_CN.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_zh_CN.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2001, 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
@@ -24,8 +24,5 @@
 # questions.
 #
 
-rmiregistry.usage=\u7528\u6cd5\uff1a {0} <\u9009\u9879> <\u7aef\u53e3>\
-\n\
-\n\u5176\u4e2d\uff0c<\u9009\u9879> \u5305\u62ec\uff1a\
-\n  -J<runtime \u6807\u8bb0> \u5c06\u53c2\u6570\u4f20\u9012\u5230 java \u89e3\u91ca\u7a0b\u5e8f
-rmiregistry.port.badnumber=\u7aef\u53e3\u53c2\u6570\uff1a{0}, \u4e0d\u662f\u6570\u5b57\u3002
+rmiregistry.usage=\u7528\u6CD5: {0} <\u9009\u9879> <\u7AEF\u53E3>\n\n\u5176\u4E2D, <\u9009\u9879> \u5305\u62EC: \n  -J<runtime \u6807\u8BB0> \u5C06\u53C2\u6570\u4F20\u9012\u5230 java \u89E3\u91CA\u5668
+rmiregistry.port.badnumber=\u7AEF\u53E3\u53C2\u6570 {0} \u4E0D\u662F\u6570\u5B57\u3002
--- a/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_zh_TW.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/rmi/registry/resources/rmiregistry_zh_TW.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2001, 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
@@ -24,8 +24,5 @@
 # questions.
 #
 
-rmiregistry.usage=\u7528\u6cd5: {0} <options> <port>\
-\n\
-\n\u5176\u4e2d <options> \u5305\u62ec\ufe30\
-\n  -J<runtime flag> \u50b3\u905e\u5f15\u6578\u5230 java \u76f4\u8b6f\u5668
-rmiregistry.port.badnumber=\u9023\u63a5\u57e0\u5f15\u6578\uff0c{0}\uff0c\u4e0d\u662f\u4e00\u500b\u6578\u5b57
+rmiregistry.usage=\u7528\u6CD5: {0} <options> <port>\n\n\u5176\u4E2D <options> \u5305\u62EC:\n  -J<runtime flag> \u50B3\u905E\u5F15\u6578\u5230 java \u76F4\u8B6F\u5668
+rmiregistry.port.badnumber=\u9023\u63A5\u57E0\u5F15\u6578\uFF0C{0}\uFF0C\u4E0D\u662F\u4E00\u500B\u6578\u5B57
--- a/jdk/src/share/classes/sun/rmi/rmic/resources/rmic_ja.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/rmi/rmic/resources/rmic_ja.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1996, 2010, 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
@@ -71,151 +71,80 @@
 generator.env.idl=sun.rmi.rmic.iiop.BatchEnvironment
 generator.env.xprint=sun.rmi.rmic.iiop.BatchEnvironment
 
-rmic.usage=\u4f7f\u3044\u65b9: {0} <options> <class names>\
-\n\
-\n<options> \u306b\u306f\u6b21\u306e\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002\
-\n  -keep          \u4e2d\u9593\u751f\u6210\u3055\u308c\u305f\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664\u3057\u306a\u3044\
-\n  -keepgenerated ("-keep" \u3068\u540c\u3058)\
-\n  -v1.1          1.1 \u30b9\u30bf\u30d6\u30d7\u30ed\u30c8\u30b3\u30eb\u7248\u7528\u306e\u30b9\u30bf\u30d6/\u30b9\u30b1\u30eb\u30c8\u30f3\u3092\u4f5c\u6210\u3059\u308b\
-\n  -vcompat      1.1 \u3068 1.2 \u306e\u30b9\u30bf\u30d6\u30d7\u30ed\u30c8\u30b3\u30eb\u7248\u3068\
-\n                           \u4e92\u63db\u6027\u306e\u3042\u308b\u30b9\u30bf\u30d6/\u30b9\u30b1\u30eb\u30c8\u30f3\u3092\u4f5c\u6210\u3059\u308b\
-\n  -v1.2          (\u30c7\u30d5\u30a9\u30eb\u30c8) 1.2 \u30b9\u30bf\u30d6\u30d7\u30ed\u30c8\u30b3\u30eb\u7248\u5c02\u7528\u306e\u30b9\u30bf\u30d6\u3092\u4f5c\u6210\u3059\u308b\
-\n  -iiop          IIOP \u7528\u306e\u30b9\u30bf\u30d6\u3092\u4f5c\u6210\u3059\u308b\u3002\u6307\u5b9a\u3059\u308b\u3068 <options> \u306b\u306f\u6b21\u306e\u3082\u306e\u3082\u542b\u307e\u308c\u307e\u3059\u3002\
-\n\
-\n                   -always           \u6700\u65b0\u306e\u5834\u5408\u3067\u3082\u30b9\u30bf\u30d6\u3092\u4f5c\u6210\u3059\u308b\
-\n                   -alwaysgenerate   ("-always" \u3068\u540c\u3058)\
-\n                   -nolocalstubs     \u540c\u3058\u30d7\u30ed\u30bb\u30b9\u306b\u3064\u3044\u3066\u6700\u9069\u5316\u3055\u308c\u305f\u30b9\u30bf\u30d6\u306f\u4f5c\u6210\u3057\u306a\u3044\
-\n\
-\n  -idl           IDL \u3092\u4f5c\u6210\u3059\u308b\u3002\u6307\u5b9a\u3059\u308b\u3068 <options> \u306b\u306f\u6b21\u306e\u3082\u306e\u3082\u542b\u307e\u308c\u307e\u3059\u3002\
-\n\
-\n                   -noValueMethods   valuetypes \u306b\u5bfe\u3057\u3066\u30e1\u30bd\u30c3\u30c9\u3092\u751f\u6210\u3057\u306a\u3044 \
-\n                   -always           \u6700\u65b0\u306e\u5834\u5408\u3067\u3082 IDL \u3092\u751f\u6210\u3059\u308b\
-\n                   -alwaysgenerate   ("-always" \u3068\u540c\u3058)\
-\n\
-\n  -g             \u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u3092\u751f\u6210\u3059\u308b\
-\n  -nowarn        \u8b66\u544a\u3092\u751f\u6210\u3057\u306a\u3044\
-\n  -nowrite       \u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u305f\u30af\u30e9\u30b9\u3092\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u306b\u66f8\u304d\u8fbc\u307e\u306a\u3044\
-\n  -verbose       \u30b3\u30f3\u30d1\u30a4\u30e9\u306e\u52d5\u4f5c\u306b\u95a2\u3059\u308b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\u3059\u308b\
-\n  -classpath <path>      \u5165\u529b\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22\u3059\u308b\u4f4d\u7f6e\u3092\u6307\u5b9a\u3059\u308b\
-\n  -bootclasspath <path>  \u30d6\u30fc\u30c8\u30b9\u30c8\u30e9\u30c3\u30d7\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u4f4d\u7f6e\u3092\u7f6e\u304d\u63db\u3048\u308b\
-\n  -extdirs <path>        \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u6e08\u307f\u62e1\u5f35\u6a5f\u80fd\u306e\u4f4d\u7f6e\u3092\u7f6e\u304d\u63db\u3048\u308b\
-\n  -d <directory>         \u751f\u6210\u3055\u308c\u305f\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u683c\u7d0d\u3059\u308b\u4f4d\u7f6e\u3092\u6307\u5b9a\u3059\u308b\
-\n  -J<runtime flag>    java \u30a4\u30f3\u30bf\u30d7\u30ea\u30bf\u306b\u5f15\u6570\u3092\u6e21\u3059\
-\n
+rmic.usage=\u4F7F\u7528\u65B9\u6CD5: {0} <options> <class names>\n\n<options>\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002\n -keep      \u4E2D\u9593\u751F\u6210\u3055\u308C\u305F\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3057\u306A\u3044\n -keepgenerated("-keep"\u3068\u540C\u3058)\n -v1.1      1.1\u30B9\u30BF\u30D6\u30FB\u30D7\u30ED\u30C8\u30B3\u30EB\u7248\u7528\u306E\u30B9\u30BF\u30D6/\u30B9\u30B1\u30EB\u30C8\u30F3\u3092\u4F5C\u6210\u3059\u308B\n -vcompat   1.1\u30681.2\u306E\u30B9\u30BF\u30D6\u30FB\u30D7\u30ED\u30C8\u30B3\u30EB\u7248\u3068\n                 \u4E92\u63DB\u6027\u306E\u3042\u308B\u30B9\u30BF\u30D6/\u30B9\u30B1\u30EB\u30C8\u30F3\u3092\u4F5C\u6210\u3059\u308B\n -v1.2      (\u30C7\u30D5\u30A9\u30EB\u30C8)1.2\u30B9\u30BF\u30D6\u30FB\u30D7\u30ED\u30C8\u30B3\u30EB\u7248\u5C02\u7528\u306E\u30B9\u30BF\u30D6\u3092\u4F5C\u6210\u3059\u308B\n -iiop      IIOP\u7528\u306E\u30B9\u30BF\u30D6\u3092\u4F5C\u6210\u3059\u308B\u3002\u6307\u5B9A\u3059\u308B\u3068<options>\u306B\u306F\u6B21\u306E\u3082\u306E\u3082\u542B\u307E\u308C\u307E\u3059\u3002\n\n            -always       \u6700\u65B0\u306E\u5834\u5408\u3067\u3082\u30B9\u30BF\u30D6\u3092\u4F5C\u6210\u3059\u308B\n            -alwaysgenerate ("-always"\u3068\u540C\u3058)\n            -nolocalstubs   \u540C\u3058\u30D7\u30ED\u30BB\u30B9\u306B\u3064\u3044\u3066\u6700\u9069\u5316\u3055\u308C\u305F\u30B9\u30BF\u30D6\u306F\u4F5C\u6210\u3057\u306A\u3044\n\n -idl      IDL\u3092\u4F5C\u6210\u3059\u308B\u3002\u6307\u5B9A\u3059\u308B\u3068<options>\u306B\u306F\u6B21\u306E\u3082\u306E\u3082\u542B\u307E\u308C\u307E\u3059\u3002\n\n            -noValueMethods valuetypes\u306B\u5BFE\u3057\u3066\u30E1\u30BD\u30C3\u30C9\u3092\u751F\u6210\u3057\u306A\u3044\n            -always       \u6700\u65B0\u306E\u5834\u5408\u3067\u3082IDL\u3092\u751F\u6210\u3059\u308B\n            -alwaysgenerate ("-always"\u3068\u540C\u3058)\n\n -g        \u30C7\u30D0\u30C3\u30B0\u60C5\u5831\u3092\u751F\u6210\u3059\u308B\n -nowarn     \u8B66\u544A\u3092\u751F\u6210\u3057\u306A\u3044\n -nowrite    \u30B3\u30F3\u30D1\u30A4\u30EB\u3057\u305F\u30AF\u30E9\u30B9\u3092\u30D5\u30A1\u30A4\u30EB\u30FB\u30B7\u30B9\u30C6\u30E0\u306B\u66F8\u304D\u8FBC\u307E\u306A\u3044\n -verbose    \u30B3\u30F3\u30D1\u30A4\u30E9\u306E\u52D5\u4F5C\u306B\u95A2\u3059\u308B\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3059\u308B\n -classpath <path>    \u5165\u529B\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22\u3059\u308B\u4F4D\u7F6E\u3092\u6307\u5B9A\u3059\u308B\n -bootclasspath<path> \u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u30FB\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u4F4D\u7F6E\u3092\u7F6E\u304D\u63DB\u3048\u308B\n -extdirs<path>     \u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u6E08\u62E1\u5F35\u6A5F\u80FD\u306E\u4F4D\u7F6E\u3092\u7F6E\u304D\u63DB\u3048\u308B\n -d <directory>      \u751F\u6210\u3055\u308C\u305F\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u683C\u7D0D\u3059\u308B\u4F4D\u7F6E\u3092\u6307\u5B9A\u3059\u308B\n -J<runtime flag>  java\u30A4\u30F3\u30BF\u30D7\u30EA\u30BF\u306B\u5F15\u6570\u3092\u6E21\u3059\n
 
 #
 # Generic Messages
 #
 
-rmic.cant.read={0} \u3092\u8aad\u307f\u8fbc\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002
-rmic.cant.write={0} \u304c\u66f8\u304d\u8fbc\u3081\u307e\u305b\u3093\u3002
-rmic.option.unsupported=\u30aa\u30d7\u30b7\u30e7\u30f3 {0} \u306f\u73fe\u5728\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-rmic.option.unimplemented=\u30aa\u30d7\u30b7\u30e7\u30f3 {0} \u306f\u307e\u3060\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-rmic.option.already.seen=\u30aa\u30d7\u30b7\u30e7\u30f3 {0} \u306e\u6307\u5b9a\u306f 1 \u56de\u3060\u3051\u3067\u3059\u3002
-rmic.option.requires.argument=\u30aa\u30d7\u30b7\u30e7\u30f3 {0} \u306b\u306f\u5f15\u6570\u304c\u5fc5\u8981\u3067\u3059\u3002
-rmic.no.such.directory=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea {0} \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
-rmic.no.such.option={0} \u306f\u4e0d\u6b63\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u307e\u305f\u306f\u5f15\u6570\u3067\u3059\u3002
-rmic.wrote=[{0} \u3092\u66f8\u304d\u8fbc\u307f\u307e\u3057\u305f]
-rmic.errors=\u30a8\u30e9\u30fc {0} \u500b
-rmic.1error=\u30a8\u30e9\u30fc 1 \u500b
-rmic.warnings=\u8b66\u544a {0} \u500b
-rmic.1warning=\u8b66\u544a 1 \u500b
-rmic.done_in=[{0} ms \u3067\u5b8c\u4e86]
-rmic.no.memory=\
-	\u30b3\u30f3\u30d1\u30a4\u30e9\u306b\u30e1\u30e2\u30ea\u30fc\u304c\u4e0d\u8db3\u3057\u3066\u3044\u307e\u3059\u3002"-J-Xmx<size>" \u30b3\u30de\u30f3\u30c9\u884c\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u3063\u3066\u3001\u6700\u5927\u30d2\u30fc\u30d7\u30b5\u30a4\u30ba\u3092\u5897\u3084\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-rmic.stack.overflow=\
-	\u30b3\u30f3\u30d1\u30a4\u30e9\u306b\u30b9\u30bf\u30c3\u30af\u7a7a\u9593\u304c\u4e0d\u8db3\u3057\u3066\u3044\u307e\u3059\u3002"-J-Xss<size>" \u30b3\u30de\u30f3\u30c9\u884c\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u3063\u3066\u3001Java \u30b9\u30bf\u30c3\u30af\u306b\u5272\u308a\u5f53\u3066\u308b\u30e1\u30e2\u30ea\u30fc\u3092\u5897\u3084\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-rmic.class.not.found=\u30af\u30e9\u30b9 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
-rmic.missing.property=\u30d7\u30ed\u30d1\u30c6\u30a3 generator.class.{0} \u304c\u3042\u308a\u307e\u305b\u3093\u3002
-rmic.cannot.instantiate=\u30af\u30e9\u30b9 {0} \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3067\u304d\u307e\u305b\u3093\u3002
-rmic.cannot.use.both={0} \u3068 {1} \u306e\u4e21\u65b9\u3092\u4f7f\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002
-rmic.resource.not.found={0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
-rmic.no.output.dir=\
-	{0} \u306b\u9069\u5207\u306a\u51fa\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002-d \u3092\u4f7f\u7528\u3057\u3066\u30eb\u30fc\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-rmic.cannot.create.dir=\
-	\u51fa\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea {0} \u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002
+rmic.cant.read={0}\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093
+rmic.cant.write={0}\u304C\u66F8\u304D\u8FBC\u3081\u307E\u305B\u3093
+rmic.option.unsupported=\u30AA\u30D7\u30B7\u30E7\u30F3{0}\u306F\u73FE\u5728\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+rmic.option.unimplemented=\u30AA\u30D7\u30B7\u30E7\u30F3{0}\u306F\u307E\u3060\u5B9F\u88C5\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+rmic.option.already.seen={0}\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u8907\u6570\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002
+rmic.option.requires.argument={0}\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u306F\u5F15\u6570\u304C\u5FC5\u8981\u3067\u3059\u3002
+rmic.no.such.directory=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u306F\u5B58\u5728\u3057\u307E\u305B\u3093\u3002
+rmic.no.such.option={0}\u306F\u7121\u52B9\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u307E\u305F\u306F\u5F15\u6570\u3067\u3059\u3002
+rmic.wrote=[{0}\u3092\u66F8\u8FBC\u307F\u5B8C\u4E86]
+rmic.errors=\u30A8\u30E9\u30FC{0}\u500B
+rmic.1error=\u30A8\u30E9\u30FC1\u500B
+rmic.warnings=\u8B66\u544A{0}\u500B
+rmic.1warning=\u8B66\u544A1\u500B
+rmic.done_in=[{0}\u30DF\u30EA\u79D2\u3067\u5B8C\u4E86]
+rmic.no.memory=\u30B3\u30F3\u30D1\u30A4\u30E9\u306B\u30E1\u30E2\u30EA\u30FC\u304C\u4E0D\u8DB3\u3057\u3066\u3044\u307E\u3059\u3002"-J-Xmx<size>"\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u3066\u3001\u6700\u5927\u30D2\u30FC\u30D7\u30FB\u30B5\u30A4\u30BA\u3092\u5897\u3084\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+rmic.stack.overflow=\u30B3\u30F3\u30D1\u30A4\u30E9\u306B\u30B9\u30BF\u30C3\u30AF\u7A7A\u9593\u304C\u4E0D\u8DB3\u3057\u3066\u3044\u307E\u3059\u3002"-J-Xss<size>"\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u3066\u3001Java\u30B9\u30BF\u30C3\u30AF\u306B\u5272\u308A\u5F53\u3066\u308B\u30E1\u30E2\u30EA\u30FC\u3092\u5897\u3084\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+rmic.class.not.found=\u30AF\u30E9\u30B9{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
+rmic.missing.property=\u30D7\u30ED\u30D1\u30C6\u30A3generator.class.{0}\u304C\u3042\u308A\u307E\u305B\u3093
+rmic.cannot.instantiate=\u30AF\u30E9\u30B9{0}\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093
+rmic.cannot.use.both={0}\u3068{1}\u306E\u4E21\u65B9\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002
+rmic.resource.not.found={0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
+rmic.no.output.dir={0}\u306B\u9069\u5207\u306A\u51FA\u529B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002-d\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u3066\u30EB\u30FC\u30C8\u30FB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+rmic.cannot.create.dir=\u51FA\u529B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002
 
 #
 # JRMP Messages
 #
 
-rmic.cant.make.stubs.for.interface=\
-	{0} \u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002\u30b9\u30bf\u30d6\u306f\u30ea\u30e2\u30fc\u30c8\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30af\u30e9\u30b9\u3060\u3051\u306b\u5fc5\u8981\u3067\u3059\u3002
-rmic.must.implement.remote=\
-	\u30af\u30e9\u30b9 {0} \u306f java.rmi.Remote \u3092\u62e1\u5f35\u3059\u308b\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u5b9f\u88c5\u3057\u307e\u305b\u3093\u3002\u30b9\u30bf\u30d6\u3068\u30b9\u30b1\u30eb\u30c8\u30f3\u3092\u5fc5\u8981\u3068\u3059\u308b\u306e\u306f\u30ea\u30e2\u30fc\u30c8\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3060\u3051\u3067\u3059\u3002
-rmic.must.implement.remote.directly=\
-	\u30b9\u30bf\u30d6\u3092\u5fc5\u8981\u3068\u3059\u308b\u306e\u306f java.rmi.Remote \u3092\u62e1\u5f35\u3059\u308b\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u76f4\u63a5\u5b9f\u88c5\u3059\u308b\u30af\u30e9\u30b9\u3060\u3051\u3067\u3059\u3002\n\t\u30af\u30e9\u30b9 {0} \u306f\u30ea\u30e2\u30fc\u30c8\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u76f4\u63a5\u306b\u306f\u5b9f\u88c5\u3057\u307e\u305b\u3093\u3002
-rmic.must.throw.remoteexception=\
-	{0} \u306f\u4e0d\u6b63\u306a\u30ea\u30e2\u30fc\u30c8\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002\u30e1\u30bd\u30c3\u30c9 {1} \u306f java.rmi.RemoteException \u3092\u30b9\u30ed\u30fc\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-rmic.must.only.throw.exception=\
-	\u30e1\u30bd\u30c3\u30c9 {0} \u306f {1} \u3092\u30b9\u30ed\u30fc\u3059\u308b\u306e\u3067\u4e0d\u6b63\u306a\u30ea\u30e2\u30fc\u30c8\u30e1\u30bd\u30c3\u30c9\u5b9f\u88c5\u3067\u3059\u3002\u30ea\u30e2\u30fc\u30c8\u30e1\u30bd\u30c3\u30c9\u306e\u5b9f\u88c5\u304c\u30b9\u30ed\u30fc\u3059\u308b\u306e\u306f java.lang.Exception \u304b\u305d\u306e\u30b5\u30d6\u30af\u30e9\u30b9\u3060\u3051\u3067\u3059\u3002
-warn.rmic.tie.found=\
-	IIOP "tie" \u306f\u30af\u30e9\u30b9 {0} \u306e\u305f\u3081\u306b\u3042\u308a\u307e\u3059\u3002\
-	\n  {1}\
-	\nPortableRemoteObject.exportObject \u3092\u4f7f\u3046\u5834\u5408\u306f\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664\u3057\u307e\u3059\u3002\u524a\u9664\u3057\u306a\u3044\u3068\u3001\u30b5\u30fc\u30d0\u30fc\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f JRMP \u3067\u306a\u304f IIOP \u306b\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u307e\u3059\u3002
+rmic.cant.make.stubs.for.interface={0}\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002\u30B9\u30BF\u30D6\u306F\u30EA\u30E2\u30FC\u30C8\u30FB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u30FB\u30AF\u30E9\u30B9\u306B\u306E\u307F\u5FC5\u8981\u3067\u3059\u3002
+rmic.must.implement.remote=\u30AF\u30E9\u30B9{0}\u306Fjava.rmi.Remote\u3092\u62E1\u5F35\u3059\u308B\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3092\u5B9F\u88C5\u3057\u307E\u305B\u3093\u3002\u30B9\u30BF\u30D6\u3068\u30B9\u30B1\u30EB\u30C8\u30F3\u3092\u5FC5\u8981\u3068\u3059\u308B\u306E\u306F\u30EA\u30E2\u30FC\u30C8\u30FB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u307F\u3067\u3059\u3002
+rmic.must.implement.remote.directly=\u30B9\u30BF\u30D6\u3092\u5FC5\u8981\u3068\u3059\u308B\u306E\u306Fjava.rmi.Remote\u3092\u62E1\u5F35\u3059\u308B\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3092\u76F4\u63A5\u5B9F\u88C5\u3059\u308B\u30AF\u30E9\u30B9\u306E\u307F\u3067\u3059\u3002\u30AF\u30E9\u30B9{0}\u306F\u30EA\u30E2\u30FC\u30C8\u30FB\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3092\u76F4\u63A5\u306B\u306F\u5B9F\u88C5\u3057\u307E\u305B\u3093\u3002
+rmic.must.throw.remoteexception={0}\u306F\u4E0D\u6B63\u306A\u30EA\u30E2\u30FC\u30C8\u30FB\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002\u30E1\u30BD\u30C3\u30C9{1}\u306Fjava.rmi.RemoteException\u3092\u30B9\u30ED\u30FC\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+rmic.must.only.throw.exception=\u30E1\u30BD\u30C3\u30C9{0}\u306F{1}\u3092\u30B9\u30ED\u30FC\u3059\u308B\u306E\u3067\u4E0D\u6B63\u306A\u30EA\u30E2\u30FC\u30C8\u30FB\u30E1\u30BD\u30C3\u30C9\u5B9F\u88C5\u3067\u3059\u3002\u30EA\u30E2\u30FC\u30C8\u30FB\u30E1\u30BD\u30C3\u30C9\u306E\u5B9F\u88C5\u304C\u30B9\u30ED\u30FC\u3059\u308B\u306E\u306Fjava.lang.Exception\u304B\u305D\u306E\u30B5\u30D6\u30AF\u30E9\u30B9\u306E\u307F\u3067\u3059\u3002
+warn.rmic.tie.found=IIOP "tie"\u306F\u30AF\u30E9\u30B9{0}\u306E\u305F\u3081\u306B\u3042\u308A\u307E\u3059\u3002\n {1}\nPortableRemoteObject.exportObject\u3092\u4F7F\u7528\u3059\u308B\u5834\u5408\u306F\u3053\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3057\u307E\u3059\u3002\u524A\u9664\u3057\u306A\u3044\u3068\u3001\u30B5\u30FC\u30D0\u30FC\u30FB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306FJRMP\u3067\u306A\u304FIIOP\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3055\u308C\u307E\u3059\u3002
 
 #
 # RMI-IIOP Messages
 #
 
-rmic.generated=[{1} ms \u3067 {0} \u3092\u751f\u6210]
-rmic.previously.generated=[\u4ee5\u524d\u306b\u751f\u6210\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb {0} \u306f\u6700\u65b0\u3067\u3059]
-warn.rmic.member.not.mapped=\
-    \u30af\u30e9\u30b9 {1} \u306e\u30c7\u30fc\u30bf\u30e1\u30f3\u30d0\u30fc {0} \u306f IDL \u306b\u30de\u30c3\u30d7\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+rmic.generated=[{1}\u30DF\u30EA\u79D2\u3067{0}\u3092\u751F\u6210]
+rmic.previously.generated=[\u4EE5\u524D\u306B\u751F\u6210\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB{0}\u306F\u6700\u65B0\u3067\u3059]
+warn.rmic.member.not.mapped=\u30AF\u30E9\u30B9{1}\u306E\u30C7\u30FC\u30BF\u30FB\u30E1\u30F3\u30D0\u30FC{0}\u306FIDL\u306B\u30DE\u30C3\u30D7\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002
 
-rmic.iiop.constraint.1=\
-    {0} \u306f\u4e0d\u6b63\u306a\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002java.rmi.Remote \u304b\u3089\u306f\u7d99\u627f\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-rmic.iiop.constraint.2=\
-    \u30af\u30e9\u30b9 {0} \u306e serialPersistentFields \u914d\u5217\u306f\u4e0d\u6b63\u3067\u3059\u3002\u5b58\u5728\u3057\u306a\u3044\u30e1\u30f3\u30d0\u30fc\u3092\u53c2\u7167\u3057\u3066\u3044\u307e\u3059\u3002
-rmic.iiop.constraint.3=\
-    {0} \u306f\u4e0d\u6b63\u306a\u30ea\u30e2\u30fc\u30c8\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002{1} \u306f\u6b63\u3057\u3044\u30d7\u30ea\u30df\u30c6\u30a3\u30d6\u307e\u305f\u306f String \u5b9a\u6570\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-rmic.iiop.constraint.4=\
-    {0} \u306f\u4e0d\u6b63\u306a\u5024\u3067\u3059\u3002serialPersistentFields \u306f private static final \u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-rmic.iiop.constraint.5=\
-    {0} \u306f\u4e0d\u6b63\u306a\u30ea\u30e2\u30fc\u30c8\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002\u30e1\u30bd\u30c3\u30c9 {1} \u306f RemoteException \u307e\u305f\u306f RemoteException \u306e\u30b9\u30fc\u30d1\u30fc\u30af\u30e9\u30b9\u3092\u30b9\u30ed\u30fc\u3059\u3079\u304d\u3067\u3059\u3002
-rmic.iiop.constraint.6=\
-    {0} \u306f\u4e0d\u6b63\u306a\u30ea\u30e2\u30fc\u30c8\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002\u7d99\u627f\u3055\u308c\u305f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 {1} \u3082\u4e21\u65b9\u30e1\u30bd\u30c3\u30c9 {2} \u3092\u5ba3\u8a00\u3057\u3066\u3044\u307e\u3059\u3002
-rmic.iiop.constraint.7=\
-    {0} \u306f\u4e0d\u6b63\u306a\u578b\u3067\u3059\u3002{1} \u306f\u7279\u5225\u306a\u5834\u5408\u306b\u306e\u307f\u7570\u306a\u308a\u307e\u3059\u3002
-rmic.iiop.constraint.8=\
-    {0} \u306f\u4e0d\u6b63\u306a\u30ea\u30e2\u30fc\u30c8\u5b9f\u88c5\u3067\u3059\u3002\u30ea\u30e2\u30fc\u30c8\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u6301\u3063\u3066\u3044\u307e\u305b\u3093\u3002
-rmic.iiop.constraint.9=\
-    \u30af\u30e9\u30b9 {1} \u306e serialPersistentFields \u914d\u5217\u30e1\u30f3\u30d0\u30fc {0} \u306f\u4e0d\u6b63\u3067\u3059\u3002\u578b\u304c\u5ba3\u8a00\u3055\u308c\u305f\u30e1\u30f3\u30d0\u30fc\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002
-rmic.iiop.constraint.10=\
-    {0} \u306f\u4e0d\u6b63\u306a\u5024\u3067\u3059\u3002java.rmi.Remote \u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002
-rmic.iiop.constraint.11=\
-    {0} \u306f\u4e0d\u6b63\u306a\u5024\u3067\u3059\u3002java.io.Serializable \u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u305b\u3093\u3002
-rmic.iiop.constraint.12=\
-    {0} \u306f\u4e0d\u6b63\u306a\u5024\u3067\u3059\u3002\u4e0d\u6b63\u306a\u89aa\u3067\u3059\u3002
-rmic.iiop.constraint.13=\
-    {0} \u306f\u4e0d\u6b63\u306a\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002\u30e1\u30bd\u30c3\u30c9 {1} \u306e idl \u540d\u304c\u4ed6\u306e\u30e1\u30bd\u30c3\u30c9\u3068\u7af6\u5408\u3057\u307e\u3059\u3002
-rmic.iiop.constraint.14=\
-    {0} \u306f\u4e0d\u6b63\u306a abstract \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-rmic.iiop.constraint.15=\
-    {0} \u306f\u4e0d\u6b63\u306a abstract \u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002java.rmi.Remote \u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059\u3002
-rmic.iiop.constraint.16=\
-    {0} \u306f\u4e0d\u6b63\u306a\u30ea\u30e2\u30fc\u30c8\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3001\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-rmic.iiop.constraint.17=\
-    {0} \u306f\u4e0d\u6b63\u306a\u30ea\u30e2\u30fc\u30c8\u5b9f\u88c5\u3067\u3059\u3002\u30af\u30e9\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-rmic.iiop.constraint.18=\
-    {0} \u306f\u4e0d\u6b63\u306a\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002\u30e1\u30bd\u30c3\u30c9 {1} \u306f org.omg.CORBA.portable.IDLEntity \u3092\u5b9f\u88c5\u3059\u308b\u4f8b\u5916\u3092\u6e21\u3057\u307e\u305b\u3093\u3002
-rmic.iiop.constraint.19=\
-    {0} \u306f\u4e0d\u6b63\u306a\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002\u5b9a\u6570 {1} \u306e idl \u540d\u304c\u4ed6\u306e\u5b9a\u6570\u3068\u7af6\u5408\u3057\u307e\u3059\u3002
-rmic.iiop.constraint.20=\
-    {0} \u306f\u4e0d\u6b63\u306a\u30af\u30e9\u30b9\u3067\u3059\u3002\u30e1\u30f3\u30d0\u30fc {1} \u306e idl \u540d\u304c\u4ed6\u306e\u30e1\u30f3\u30d0\u30fc\u3068\u7af6\u5408\u3057\u307e\u3059\u3002
-rmic.iiop.constraint.21=\
-    {0} \u306f\u30ea\u30e2\u30fc\u30c8\u5b9f\u88c5\u30af\u30e9\u30b9\u3067\u3042\u308a\u3001{1} \u306e\u30e1\u30bd\u30c3\u30c9\u5f15\u6570\u3042\u308b\u3044\u306f\u623b\u308a\u578b\u3068\u3057\u3066\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002
-rmic.iiop.constraint.22=\
-    \u5185\u90e8\u969c\u5bb3: (\u30e1\u30bd\u30c3\u30c9) \u4f8b\u5916 {0} \u306f\u30af\u30e9\u30b9\u578b\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-rmic.iiop.constraint.23=\
-    \u5185\u90e8\u969c\u5bb3: (\u30e1\u30bd\u30c3\u30c9) \u306f {0} \u306e null \u30dd\u30a4\u30f3\u30bf\u4f8b\u5916\u3092\u30ad\u30e3\u30c3\u30c1\u3057\u307e\u3057\u305f\u3002
-rmic.iiop.constraint.24=\
-    \u30af\u30e9\u30b9 {0} \u306f\u4e0d\u6b63\u306a\u623b\u308a\u578b\u3092\u542b\u3093\u3067\u3044\u307e\u3059\u3002
-rmic.iiop.constraint.25=\
-    \u30af\u30e9\u30b9 {0} \u306f\u30e1\u30bd\u30c3\u30c9 {1} \u306b\u4e0d\u6b63\u306a\u5f15\u6570\u578b\u3092\u542b\u3093\u3067\u3044\u307e\u3059\u3002
-rmic.iiop.constraint.26=\
-    {0} \u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3067\u304d\u307e\u305b\u3093\u3002
-rmic.iiop.constraint.27=\
-    \u30af\u30e9\u30b9 {0} \u3092\u30ed\u30fc\u30c9\u3067\u304d\u307e\u305b\u3093\u3002
-rmic.iiop.constraint.28=\
-    {0} \u306f\u30ea\u30e2\u30fc\u30c8\u5b9f\u88c5\u30af\u30e9\u30b9\u3067\u3042\u308a\u3001{1} \u306e\u30c7\u30fc\u30bf\u30e1\u30f3\u30d0\u30fc\u3068\u3057\u3066\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002
+rmic.iiop.constraint.1={0}\u306F\u4E0D\u6B63\u306A\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002java.rmi.Remote\u304B\u3089\u306F\u7D99\u627F\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+rmic.iiop.constraint.2=\u30AF\u30E9\u30B9{0}\u306EserialPersistentFields\u914D\u5217\u306F\u4E0D\u6B63\u3067\u3059\u3002\u5B58\u5728\u3057\u306A\u3044\u30E1\u30F3\u30D0\u30FC\u3092\u53C2\u7167\u3057\u3066\u3044\u307E\u3059\u3002
+rmic.iiop.constraint.3={0}\u306F\u4E0D\u6B63\u306A\u30EA\u30E2\u30FC\u30C8\u30FB\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002{1}\u306F\u6B63\u3057\u3044\u30D7\u30EA\u30DF\u30C6\u30A3\u30D6\u307E\u305F\u306FString\u5B9A\u6570\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
+rmic.iiop.constraint.4={0}\u306F\u4E0D\u6B63\u306A\u5024\u3067\u3059\u3002serialPersistentFields\u306Fprivate static final\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+rmic.iiop.constraint.5={0}\u306F\u4E0D\u6B63\u306A\u30EA\u30E2\u30FC\u30C8\u30FB\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002\u30E1\u30BD\u30C3\u30C9{1}\u306FRemoteException\u307E\u305F\u306FRemoteException\u306E\u30B9\u30FC\u30D1\u30FC\u30AF\u30E9\u30B9\u3092\u30B9\u30ED\u30FC\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+rmic.iiop.constraint.6={0}\u306F\u4E0D\u6B63\u306A\u30EA\u30E2\u30FC\u30C8\u30FB\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002\u7D99\u627F\u3055\u308C\u305F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9{1}\u3082\u4E21\u65B9\u30E1\u30BD\u30C3\u30C9{2}\u3092\u5BA3\u8A00\u3057\u3066\u3044\u307E\u3059\u3002
+rmic.iiop.constraint.7={0}\u306F\u4E0D\u6B63\u306A\u578B\u3067\u3059\u3002{1}\u306F\u7279\u5225\u306A\u5834\u5408\u306B\u306E\u307F\u7570\u306A\u308A\u307E\u3059\u3002
+rmic.iiop.constraint.8={0}\u306F\u4E0D\u6B63\u306A\u30EA\u30E2\u30FC\u30C8\u5B9F\u88C5\u3067\u3059\u3002\u30EA\u30E2\u30FC\u30C8\u30FB\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3092\u6301\u3063\u3066\u3044\u307E\u305B\u3093\u3002
+rmic.iiop.constraint.9=\u30AF\u30E9\u30B9{1}\u306EserialPersistentFields\u914D\u5217\u30E1\u30F3\u30D0\u30FC{0}\u306F\u4E0D\u6B63\u3067\u3059\u3002\u578B\u304C\u5BA3\u8A00\u3055\u308C\u305F\u30E1\u30F3\u30D0\u30FC\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002
+rmic.iiop.constraint.10={0}\u306F\u4E0D\u6B63\u306A\u5024\u3067\u3059\u3002java.rmi.Remote\u3092\u5B9F\u88C5\u3057\u307E\u3059\u3002
+rmic.iiop.constraint.11={0}\u306F\u4E0D\u6B63\u306A\u5024\u3067\u3059\u3002java.io.Serializable\u3092\u5B9F\u88C5\u3057\u3066\u3044\u307E\u305B\u3093\u3002
+rmic.iiop.constraint.12={0}\u306F\u4E0D\u6B63\u306A\u5024\u3067\u3059\u3002\u4E0D\u6B63\u306A\u89AA\u3067\u3059\u3002
+rmic.iiop.constraint.13={0}\u306F\u4E0D\u6B63\u306A\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002\u30E1\u30BD\u30C3\u30C9{1}\u306Eidl\u540D\u304C\u4ED6\u306E\u30E1\u30BD\u30C3\u30C9\u3068\u7AF6\u5408\u3057\u307E\u3059\u3002
+rmic.iiop.constraint.14={0}\u306F\u4E0D\u6B63\u306Aabstract\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
+rmic.iiop.constraint.15={0}\u306F\u4E0D\u6B63\u306Aabstract\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002java.rmi.Remote\u3092\u5B9F\u88C5\u3057\u3066\u3044\u307E\u3059\u3002
+rmic.iiop.constraint.16={0}\u306F\u4E0D\u6B63\u306A\u30EA\u30E2\u30FC\u30C8\u30FB\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3001\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
+rmic.iiop.constraint.17={0}\u306F\u4E0D\u6B63\u306A\u30EA\u30E2\u30FC\u30C8\u5B9F\u88C5\u3067\u3059\u3002\u30AF\u30E9\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
+rmic.iiop.constraint.18={0}\u306F\u4E0D\u6B63\u306A\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002\u30E1\u30BD\u30C3\u30C9{1}\u306Forg.omg.CORBA.portable.IDLEntity\u3092\u5B9F\u88C5\u3059\u308B\u4F8B\u5916\u3092\u6E21\u3057\u307E\u305B\u3093\u3002
+rmic.iiop.constraint.19={0}\u306F\u4E0D\u6B63\u306A\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002\u5B9A\u6570{1}\u306Eidl\u540D\u304C\u4ED6\u306E\u5B9A\u6570\u3068\u7AF6\u5408\u3057\u307E\u3059\u3002
+rmic.iiop.constraint.20={0}\u306F\u4E0D\u6B63\u306A\u30AF\u30E9\u30B9\u3067\u3059\u3002\u30E1\u30F3\u30D0\u30FC{1}\u306Eidl\u540D\u304C\u4ED6\u306E\u30E1\u30F3\u30D0\u30FC\u3068\u7AF6\u5408\u3057\u307E\u3059\u3002
+rmic.iiop.constraint.21={0}\u306F\u30EA\u30E2\u30FC\u30C8\u5B9F\u88C5\u30AF\u30E9\u30B9\u3067\u3042\u308A\u3001{1}\u306E\u30E1\u30BD\u30C3\u30C9\u5F15\u6570\u307E\u305F\u306F\u623B\u308A\u5024\u306E\u578B\u3068\u3057\u3066\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002
+rmic.iiop.constraint.22=\u5185\u90E8\u969C\u5BB3: (\u30E1\u30BD\u30C3\u30C9)\u4F8B\u5916{0}\u306F\u30AF\u30E9\u30B9\u578B\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
+rmic.iiop.constraint.23=\u5185\u90E8\u969C\u5BB3: (\u30E1\u30BD\u30C3\u30C9)\u306F{0}\u306Enull\u30DD\u30A4\u30F3\u30BF\u4F8B\u5916\u3092\u6355\u6349\u3057\u307E\u3057\u305F\u3002
+rmic.iiop.constraint.24=\u30AF\u30E9\u30B9{0}\u306F\u4E0D\u6B63\u306A\u623B\u308A\u5024\u306E\u578B\u3092\u542B\u3093\u3067\u3044\u307E\u3059\u3002
+rmic.iiop.constraint.25=\u30AF\u30E9\u30B9{0}\u306F\u30E1\u30BD\u30C3\u30C9{1}\u306B\u4E0D\u6B63\u306A\u5F15\u6570\u578B\u3092\u542B\u3093\u3067\u3044\u307E\u3059\u3002
+rmic.iiop.constraint.26={0}\u3092\u30B3\u30F3\u30D1\u30A4\u30EB\u3067\u304D\u307E\u305B\u3093\u3002
+rmic.iiop.constraint.27=\u30AF\u30E9\u30B9{0}\u3092\u30ED\u30FC\u30C9\u3067\u304D\u307E\u305B\u3093\u3002
+rmic.iiop.constraint.28={0}\u306F\u30EA\u30E2\u30FC\u30C8\u5B9F\u88C5\u30AF\u30E9\u30B9\u3067\u3042\u308A\u3001{1}\u306E\u30C7\u30FC\u30BF\u30FB\u30E1\u30F3\u30D0\u30FC\u3068\u3057\u3066\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002
--- a/jdk/src/share/classes/sun/rmi/rmic/resources/rmic_zh_CN.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/rmi/rmic/resources/rmic_zh_CN.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1996, 2010, 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
@@ -71,152 +71,80 @@
 generator.env.idl=sun.rmi.rmic.iiop.BatchEnvironment
 generator.env.xprint=sun.rmi.rmic.iiop.BatchEnvironment
 
-rmic.usage=\u7528\u6cd5\uff1a{0} <\u9009\u9879> <\u7c7b\u540d\u79f0>\
-\n\
-\n\u5176\u4e2d <\u9009\u9879> \u5305\u62ec\uff1a\
-\n  -keep          \u4e0d\u5220\u9664\u4e2d\u95f4\u751f\u6210\u7684\u6e90\u6587\u4ef6\
-\n  -keepgenerated\uff08\u4e0e "-keep" \u76f8\u540c\uff09\
-\n  -v1.1          \u521b\u5efa 1.1 \u5b58\u6839\u534f\u8bae\u7248\u672c\u7684\u5b58\u6839/\u6846\u67b6\
-\n  -vcompat       \u521b\u5efa\u4e0e 1.1 \u548c 1.2 \u5b58\u6839\u534f\u8bae\u7248\u672c\u90fd\u517c\u5bb9\u7684\
-\n                           \u5b58\u6839/\u6846\u67b6\
-\n  -v1.2          \uff08\u9ed8\u8ba4\u503c\uff09\u4ec5\u521b\u5efa 1.2 \u5b58\u6839\u534f\u8bae\u7248\u672c\u7684\u5b58\u6839\
-\n  -iiop          \u521b\u5efa IIOP \u7684\u5b58\u6839\u3002\u4f7f\u7528\u6b64\u9009\u9879\u65f6\uff0c<\u9009\u9879> \u8fd8\u5305\u62ec\uff1a\
-\n\
-\n                   -always           \u5373\u4f7f\u5f53\u524d\u663e\u793a\u5b58\u6839\uff0c\u4ecd\u521b\u5efa\u5b83\u4eec\
-\n                   -alwaysgenerate   \uff08\u4e0e "-always" \u76f8\u540c\uff09\
-\n                   -nolocalstubs     \u4e0d\u521b\u5efa\u4e3a\u76f8\u540c\u8fdb\u7a0b\u4f18\u5316\u7684\u5b58\u6839\
-\n\
-\n  -idl           \u521b\u5efa IDL\u3002\u4f7f\u7528\u6b64\u9009\u9879\u65f6\uff0c<\u9009\u9879> \u8fd8\u5305\u62ec\uff1a\
-\n\
-\n                   -noValueMethods   \u4e0d\u751f\u6210 valuetypes \u7684\u65b9\u6cd5\
-\n                   -always           \u5373\u4f7f\u5f53\u524d\u663e\u793a IDL\uff0c\u4ecd\u521b\u5efa\u5b83\
-\n                   -alwaysgenerate   \uff08\u4e0e "-always" \u76f8\u540c\uff09\
-\n\
-\n  -g             \u751f\u6210\u8c03\u8bd5\u4fe1\u606f\
-\n  -nowarn        \u4e0d\u751f\u6210\u4efb\u4f55\u8b66\u544a\
-\n  -nowrite       \u4e0d\u5411\u6587\u4ef6\u7cfb\u7edf\u5199\u5165\u7f16\u8bd1\u7684\u7c7b\
-\n  -verbose       \u8f93\u51fa\u6709\u5173\u7f16\u8bd1\u5668\u6b63\u5728\u6267\u884c\u7684\u64cd\u4f5c\u7684\u6d88\u606f\
-\n  -classpath <\u8def\u5f84>      \u6307\u5b9a\u67e5\u627e\u8f93\u5165\u7c7b\u6587\u4ef6\u7684\u4f4d\u7f6e\
-\n  -bootclasspath <\u8def\u5f84>  \u8986\u76d6\u5f15\u5bfc\u7c7b\u6587\u4ef6\u7684\u4f4d\u7f6e\
-\n  -extdirs <\u8def\u5f84>        \u8986\u76d6\u5b89\u88c5\u7684\u6269\u5c55\u76ee\u5f55\u7684\u4f4d\u7f6e\
-\n  -d <\u76ee\u5f55>              \u6307\u5b9a\u5b58\u653e\u751f\u6210\u7684\u7c7b\u6587\u4ef6\u7684\u4f4d\u7f6e\
-\n  -J <\u8fd0\u884c\u65f6\u6807\u5fd7>        \u5411 java \u89e3\u91ca\u7a0b\u5e8f\u4f20\u9012\u53c2\u6570\
-\n
+rmic.usage=\u7528\u6CD5: {0} <options> <class names>\n\n\u5176\u4E2D, <options> \u5305\u62EC:\n  -keep          \u4E0D\u5220\u9664\u4E34\u65F6\u751F\u6210\u7684\u6E90\u6587\u4EF6\n  -keepgenerated (\u4E0E "-keep" \u76F8\u540C)\n  -v1.1          \u521B\u5EFA 1.1 \u5B58\u6839\u534F\u8BAE\u7248\u672C\u7684\u5B58\u6839/\u9AA8\u67B6\n  -vcompat       \u521B\u5EFA\u4E0E 1.1 \u548C 1.2 \u5B58\u6839\u534F\u8BAE\u7248\u672C\n                           \u90FD\u517C\u5BB9\u7684\u5B58\u6839/\u9AA8\u67B6\n  -v1.2          (\u9ED8\u8BA4\u503C) \u4EC5\u521B\u5EFA 1.2 \u5B58\u6839\u534F\u8BAE\u7248\u672C\u7684\u5B58\u6839\n  -iiop          \u521B\u5EFA IIOP \u7684\u5B58\u6839\u3002\u5982\u679C\u63D0\u4F9B, <options> \u8FD8\u5305\u62EC:\n\n                   -always           \u521B\u5EFA\u5B58\u6839 (\u5373\u4F7F\u5F53\u524D\u663E\u793A)\n                   -alwaysgenerate   (\u4E0E "-always" \u76F8\u540C)\n                   -nolocalstubs     \u4E0D\u521B\u5EFA\u5BF9\u76F8\u540C\u8FDB\u7A0B\u4F18\u5316\u7684\u5B58\u6839\n\n  -idl           \u521B\u5EFA IDL\u3002\u5982\u679C\u63D0\u4F9B, <options> \u8FD8\u5305\u62EC:\n\n                   -noValueMethods   \u4E0D\u4E3A valuetype \u751F\u6210\u65B9\u6CD5\n                   -always           \u521B\u5EFA IDL (\u5373\u4F7F\u5F53\u524D\u663E\u793A)\n                   -alwaysgenerate   (\u4E0E "-always" \u76F8\u540C)\n\n  -g             \u751F\u6210\u8C03\u8BD5\u4FE1\u606F\n  -nowarn        \u4E0D\u751F\u6210\u4EFB\u4F55\u8B66\u544A\n  -nowrite       \u4E0D\u5C06\u7F16\u8BD1\u7684\u7C7B\u5199\u5165\u6587\u4EF6\u7CFB\u7EDF\n  -verbose       \u8F93\u51FA\u6709\u5173\u7F16\u8BD1\u5668\u6B63\u5728\u6267\u884C\u7684\u64CD\u4F5C\u7684\u6D88\u606F\n  -classpath <path>      \u6307\u5B9A\u67E5\u627E\u8F93\u5165\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n  -bootclasspath <path>  \u8986\u76D6\u5F15\u5BFC\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n  -extdirs <path>        \u8986\u76D6\u6240\u5B89\u88C5\u6269\u5C55\u7684\u4F4D\u7F6E\n  -d <directory>         \u6307\u5B9A\u653E\u7F6E\u751F\u6210\u7684\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n  -J<runtime flag>       \u5C06\u53C2\u6570\u4F20\u9012\u7ED9 java \u89E3\u91CA\u5668\n
 
 #
 # Generic Messages
 #
 
-rmic.cant.read=\u65e0\u6cd5\u8bfb\u53d6\uff1a{0}
-rmic.cant.write=\u65e0\u6cd5\u5199\u5165\uff1a{0}
-rmic.option.unsupported=\u4e0d\u518d\u652f\u6301 {0} \u9009\u9879\u3002
-rmic.option.unimplemented=\u4ecd\u672a\u5b9e\u73b0 {0} \u9009\u9879\u3002
-rmic.option.already.seen={0} \u9009\u9879\u53ea\u80fd\u88ab\u6307\u5b9a\u4e00\u6b21\u3002
-rmic.option.requires.argument=\u9009\u9879 {0} \u9700\u8981\u53c2\u6570\u3002
-rmic.no.such.directory={0} \u76ee\u5f55\u4e0d\u5b58\u5728\u3002
-rmic.no.such.option={0} \u4e3a\u65e0\u6548\u9009\u9879\u6216\u53c2\u6570\u3002
-rmic.wrote=[\u5df2\u5199\u5165 {0}]
-rmic.errors={0} \u4e2a\u9519\u8bef
-rmic.1error=1 \u4e2a\u9519\u8bef
-rmic.warnings={0} \u4e2a\u8b66\u544a
-rmic.1warning=1 \u4e2a\u8b66\u544a
-rmic.done_in=[\u5728 {0} \u6beb\u79d2\u5185\u5b8c\u6210]
-rmic.no.memory=\
-	\u7f16\u8bd1\u5668\u6240\u7528\u5185\u5b58\u4e0d\u8db3\u3002\u8bf7\u8003\u8651\u4f7f\u7528\u201c-J-Xmx<\u5927\u5c0f>\u201d\u547d\u4ee4\u884c\u9009\u9879\u6765\u589e\u52a0\u5806\u5927\u5c0f\u7684\u6700\u5927\u503c\u3002
-rmic.stack.overflow=\
-	\u7f16\u8bd1\u5668\u6240\u7528\u5806\u6808\u7a7a\u95f4\u4e0d\u8db3\u3002\u8bf7\u8003\u8651\u4f7f\u7528\u201c-J-Xss<\u5927\u5c0f>\u201d\u547d\u4ee4\u884c\u9009\u9879\u6765\u589e\u52a0\u5206\u914d\u7ed9 Java \u5806\u6808\u7684\u5185\u5b58\u5927\u5c0f\u3002
-rmic.class.not.found=\
-	\u672a\u627e\u5230\u7c7b {0}\u3002
-rmic.missing.property=\u7f3a\u5c11\u5c5e\u6027 generator.class.{0}
-rmic.cannot.instantiate=\u65e0\u6cd5\u5b9e\u4f8b\u5316\u7c7b {0}
-rmic.cannot.use.both=\u65e0\u6cd5\u540c\u65f6\u4f7f\u7528 {0} \u548c {1}
-rmic.resource.not.found=\u672a\u627e\u5230 {0}\u3002
-rmic.no.output.dir=\
-	\u65e0\u6cd5\u627e\u5230\u9002\u7528\u4e8e {0} \u7684\u8f93\u51fa\u76ee\u5f55\u3002\u8bf7\u4f7f\u7528 -d \u9009\u9879\u6765\u6307\u5b9a\u6839\u76ee\u5f55\u3002
-rmic.cannot.create.dir=\
-	\u65e0\u6cd5\u521b\u5efa\u8f93\u51fa\u76ee\u5f55 {0}\u3002
+rmic.cant.read=\u65E0\u6CD5\u8BFB\u53D6: {0}
+rmic.cant.write=\u65E0\u6CD5\u5199\u5165: {0}
+rmic.option.unsupported=\u4E0D\u518D\u652F\u6301{0}\u9009\u9879\u3002
+rmic.option.unimplemented=\u5C1A\u672A\u5B9E\u73B0{0}\u9009\u9879\u3002
+rmic.option.already.seen={0}\u9009\u9879\u53EA\u80FD\u6307\u5B9A\u4E00\u6B21\u3002
+rmic.option.requires.argument=\u9009\u9879{0}\u9700\u8981\u53C2\u6570\u3002
+rmic.no.such.directory={0} \u76EE\u5F55\u4E0D\u5B58\u5728\u3002
+rmic.no.such.option={0}\u662F\u65E0\u6548\u9009\u9879\u6216\u53C2\u6570\u3002
+rmic.wrote=[\u5DF2\u5199\u5165{0}]
+rmic.errors={0} \u4E2A\u9519\u8BEF
+rmic.1error=1 \u4E2A\u9519\u8BEF
+rmic.warnings={0} \u4E2A\u8B66\u544A
+rmic.1warning=1 \u4E2A\u8B66\u544A
+rmic.done_in=[\u5728 {0} \u6BEB\u79D2\u5185\u5B8C\u6210]
+rmic.no.memory=\u7F16\u8BD1\u5668\u6240\u7528\u5185\u5B58\u4E0D\u8DB3\u3002\u8BF7\u8003\u8651\u4F7F\u7528 "-J-Xmx<size>" \u547D\u4EE4\u884C\u9009\u9879\u6765\u589E\u52A0\u5806\u5927\u5C0F\u7684\u6700\u5927\u503C\u3002
+rmic.stack.overflow=\u7F16\u8BD1\u5668\u6240\u7528\u5806\u6808\u7A7A\u95F4\u4E0D\u8DB3\u3002\u8BF7\u8003\u8651\u4F7F\u7528 "-J-Xss<size>" \u547D\u4EE4\u884C\u9009\u9879\u6765\u589E\u52A0\u5206\u914D\u7ED9 Java \u5806\u6808\u7684\u5185\u5B58\u5927\u5C0F\u3002
+rmic.class.not.found=\u627E\u4E0D\u5230\u7C7B{0}\u3002
+rmic.missing.property=\u7F3A\u5C11\u5C5E\u6027 generator.class.{0}
+rmic.cannot.instantiate=\u65E0\u6CD5\u5B9E\u4F8B\u5316\u7C7B{0}
+rmic.cannot.use.both=\u4E0D\u80FD\u540C\u65F6\u4F7F\u7528{0}\u548C{1}
+rmic.resource.not.found=\u627E\u4E0D\u5230{0}\u3002
+rmic.no.output.dir=\u65E0\u6CD5\u627E\u5230\u9002\u7528\u4E8E{0}\u7684\u8F93\u51FA\u76EE\u5F55\u3002\u8BF7\u4F7F\u7528 -d \u9009\u9879\u6765\u6307\u5B9A\u6839\u76EE\u5F55\u3002
+rmic.cannot.create.dir=\u65E0\u6CD5\u521B\u5EFA\u8F93\u51FA\u76EE\u5F55 {0}\u3002
 
 #
 # JRMP Messages
 #
 
-rmic.cant.make.stubs.for.interface=\
-	{0} \u662f\u63a5\u53e3\uff1b\u4ec5\u8fdc\u7a0b\u5bf9\u8c61\u7c7b\u9700\u8981\u5b58\u6839\u3002
-rmic.must.implement.remote=\
-	\u7c7b {0} \u4e0d\u5b9e\u73b0\u6269\u5c55 java.rmi.Remote \u7684\u63a5\u53e3\uff1b\u4ec5\u8fdc\u7a0b\u5bf9\u8c61\u9700\u8981\u5b58\u6839\u548c\u6846\u67b6\u3002
-rmic.must.implement.remote.directly=\
-	\u4ec5\u76f4\u63a5\u5b9e\u73b0\u6269\u5c55 java.rmi.Remote \u7684\u63a5\u53e3\u7684\u7c7b\u9700\u8981\u5b58\u6839\uff1b\u7c7b {0} \u4e0d\u76f4\u63a5\u5b9e\u73b0\u8fdc\u7a0b\u63a5\u53e3\u3002
-rmic.must.throw.remoteexception=\
-	{0} \u4e0d\u662f\u6709\u6548\u8fdc\u7a0b\u63a5\u53e3\uff1a\u65b9\u6cd5 {1} \u5fc5\u987b\u629b\u51fa java.rmi.RemoteException\u3002
-rmic.must.only.throw.exception=\
-	\u65b9\u6cd5 {0} \u4e0d\u662f\u6709\u6548\u7684\u8fdc\u7a0b\u65b9\u6cd5\u5b9e\u73b0\uff0c\u56e0\u4e3a\u5b83\u629b\u51fa\u4e86 {1}\uff1b\u8fdc\u7a0b\u65b9\u6cd5\u5b9e\u73b0\u53ea\u53ef\u80fd\u629b\u51fa java.lang.Exception \u6216\u5176\u5b50\u7c7b\u3002
-warn.rmic.tie.found=\
-	\u5bf9\u4e8e\u7c7b {0}\uff0c\u5b58\u5728 IIOP "tie"\uff1a\
-	\n  {1}\
-	\n\u5982\u679c\u4f7f\u7528 PortableRemoteObject.exportObject\uff0c\u5219\u5e94\u8be5\u5220\u9664\u6b64\u6587\u4ef6\uff0c\u5426\u5219\uff0c\u60a8\u7684\u670d\u52a1\u5668\u5bf9\u8c61\u5c06\u4f1a\u88ab\u5bfc\u51fa\u5230 IIOP \u800c\u975e JRMP\u3002
+rmic.cant.make.stubs.for.interface={0}\u662F\u63A5\u53E3; \u4EC5\u8FDC\u7A0B\u5BF9\u8C61\u7C7B\u9700\u8981\u5B58\u6839\u3002
+rmic.must.implement.remote=\u7C7B{0}\u4E0D\u5B9E\u73B0\u6269\u5C55 java.rmi.Remote \u7684\u63A5\u53E3; \u4EC5\u8FDC\u7A0B\u5BF9\u8C61\u9700\u8981\u5B58\u6839\u548C\u6846\u67B6\u3002
+rmic.must.implement.remote.directly=\u4EC5\u76F4\u63A5\u5B9E\u73B0\u6269\u5C55 java.rmi.Remote \u7684\u63A5\u53E3\u7684\u7C7B\u9700\u8981\u5B58\u6839; \u7C7B{0}\u4E0D\u76F4\u63A5\u5B9E\u73B0\u8FDC\u7A0B\u63A5\u53E3\u3002
+rmic.must.throw.remoteexception={0}\u4E0D\u662F\u6709\u6548\u8FDC\u7A0B\u63A5\u53E3: \u65B9\u6CD5{1}\u5FC5\u987B\u629B\u51FA java.rmi.RemoteException\u3002
+rmic.must.only.throw.exception=\u65B9\u6CD5{0}\u4E0D\u662F\u6709\u6548\u7684\u8FDC\u7A0B\u65B9\u6CD5\u5B9E\u73B0, \u56E0\u4E3A\u5B83\u629B\u51FA\u4E86{1}; \u8FDC\u7A0B\u65B9\u6CD5\u5B9E\u73B0\u53EA\u53EF\u80FD\u629B\u51FA java.lang.Exception \u6216\u5176\u5B50\u7C7B\u3002
+warn.rmic.tie.found=\u5BF9\u4E8E\u7C7B{0}, \u5B58\u5728 IIOP "tie":\n  {1}\n\u5982\u679C\u4F7F\u7528 PortableRemoteObject.exportObject, \u5219\u5E94\u8BE5\u5220\u9664\u6B64\u6587\u4EF6, \u5426\u5219, \u60A8\u7684\u670D\u52A1\u5668\u5BF9\u8C61\u5C06\u4F1A\u5BFC\u51FA\u5230 IIOP \u800C\u975E JRMP\u3002
 
 #
 # RMI-IIOP Messages
 #
 
-rmic.generated=[\u5728 {1} \u6beb\u79d2\u5185\u751f\u6210\u7684 {0}]
-rmic.previously.generated=[\u4ee5\u524d\u751f\u6210\u7684\u6587\u4ef6 {0} \u4e3a\u5f53\u524d\u6587\u4ef6]
-warn.rmic.member.not.mapped=\
-\u7c7b {1} \u7684\u6570\u636e\u6210\u5458 {0} \u672a\u6620\u5c04\u5230 IDL\u3002
+rmic.generated=[\u5728 {1} \u6BEB\u79D2\u5185\u751F\u6210{0}]
+rmic.previously.generated=[\u4EE5\u524D\u751F\u6210\u7684\u6587\u4EF6{0}\u4E3A\u5F53\u524D\u6587\u4EF6]
+warn.rmic.member.not.mapped=\u7C7B{1}\u7684\u6570\u636E\u6210\u5458{0}\u672A\u6620\u5C04\u5230 IDL\u3002
 
-rmic.iiop.constraint.1=\
-{0} \u4e0d\u662f\u6709\u6548\u63a5\u53e3\uff1a\u6ca1\u6709\u4ece java.rmi.Remote \u7ee7\u627f\u3002
-rmic.iiop.constraint.2=\
-\u7c7b {0} \u7684 serialPersistentFields \u6570\u7ec4\u65e0\u6548\uff1a\u5f15\u7528\u4e86\u4e0d\u5b58\u5728\u7684\u6210\u5458\u3002
-rmic.iiop.constraint.3=\
-{0} \u4e0d\u662f\u6709\u6548\u8fdc\u7a0b\u63a5\u53e3\uff1a{1} \u4e0d\u662f\u6709\u6548\u7684\u539f\u59cb\u6216\u5b57\u7b26\u4e32\u5e38\u91cf\u3002
-rmic.iiop.constraint.4=\
-{0} \u4e0d\u662f\u6709\u6548\u503c\uff1aserialPersistentFields \u5fc5\u987b\u4e3a\u4e13\u7528\u9759\u6001\u6700\u7ec8\u7c7b\u578b\u3002
-rmic.iiop.constraint.5=\
-{0} \u4e0d\u662f\u6709\u6548\u8fdc\u7a0b\u63a5\u53e3\uff1a\u65b9\u6cd5 {1} \u5fc5\u987b\u629b\u51fa RemoteException \u6216 RemoteException \u7684\u7236\u7c7b\u3002
-rmic.iiop.constraint.6=\
-{0} \u4e0d\u662f\u6709\u6548\u8fdc\u7a0b\u63a5\u53e3\uff1a\u7ee7\u627f\u7684\u63a5\u53e3 {1} \u5747\u58f0\u660e\u4e86\u65b9\u6cd5 {2}\u3002
-rmic.iiop.constraint.7=\
-{0} \u4e0d\u662f\u6709\u6548\u7c7b\u578b\uff1a{1} \u4ec5\u5728\u5927\u5c0f\u5199\u4e0a\u4e0d\u540c\u3002
-rmic.iiop.constraint.8=\
-{0} \u4e0d\u662f\u6709\u6548\u8fdc\u7a0b\u5b9e\u73b0\uff1a\u4e0d\u5177\u6709\u8fdc\u7a0b\u63a5\u53e3\u3002
-rmic.iiop.constraint.9=\
-\u7c7b {1} \u7684 serialPersistentFields \u6570\u7ec4\u6210\u5458 {0} \u65e0\u6548\uff1a\u7c7b\u578b\u4e0e\u58f0\u660e\u7684\u6210\u5458\u4e0d\u5339\u914d\u3002
-rmic.iiop.constraint.10=\
-{0} \u4e0d\u662f\u6709\u6548\u503c\uff1a\u5b9e\u73b0 java.rmi.Remote\u3002
-rmic.iiop.constraint.11=\
-{0} \u4e0d\u662f\u6709\u6548\u503c\uff1a\u4e0d\u5b9e\u73b0 java.io.Serializable\u3002
-rmic.iiop.constraint.12=\
-{0} \u4e0d\u662f\u6709\u6548\u503c\uff1a\u7236\u503c\u65e0\u6548\u3002
-rmic.iiop.constraint.13=\
-{0} \u4e0d\u662f\u6709\u6548\u63a5\u53e3\uff1a\u65b9\u6cd5 {1} \u7684 idl \u540d\u79f0\u4e0e\u5176\u4ed6\u65b9\u6cd5\u51b2\u7a81\u3002
-rmic.iiop.constraint.14=\
-{0} \u4e0d\u662f\u6709\u6548\u62bd\u8c61\u63a5\u53e3\uff1a\u4e0d\u662f\u63a5\u53e3\u3002
-rmic.iiop.constraint.15=\
-{0} \u4e0d\u662f\u6709\u6548\u62bd\u8c61\u63a5\u53e3\uff1a\u5b9e\u73b0 java.rmi.Remote\u3002
-rmic.iiop.constraint.16=\
-{0} \u4e0d\u662f\u6709\u6548\u8fdc\u7a0b\u63a5\u53e3\uff1a\u4e0d\u662f\u63a5\u53e3\u3002
-rmic.iiop.constraint.17=\
-{0} \u4e0d\u662f\u6709\u6548\u8fdc\u7a0b\u5b9e\u73b0\uff1a\u4e0d\u662f\u7c7b\u3002
-rmic.iiop.constraint.18=\
-{0} \u4e0d\u662f\u6709\u6548\u63a5\u53e3\uff1a\u65b9\u6cd5 {1} \u4e0d\u80fd\u4f20\u9012\u5b9e\u73b0 org.omg.CORBA.portable.IDLEntity \u7684\u5f02\u5e38\u3002
-rmic.iiop.constraint.19=\
-{0} \u4e0d\u662f\u6709\u6548\u63a5\u53e3\uff1a\u5e38\u91cf {1} \u7684 idl \u540d\u79f0\u4e0e\u5176\u4ed6\u5e38\u91cf\u51b2\u7a81\u3002
-rmic.iiop.constraint.20=\
-{0} \u4e0d\u662f\u6709\u6548\u7c7b\uff1a\u6210\u5458 {1} \u7684 idl \u540d\u79f0\u4e0e\u5176\u4ed6\u6210\u5458\u51b2\u7a81\u3002
-rmic.iiop.constraint.21=\
-{0} \u662f\u8fdc\u7a0b\u5b9e\u73b0\u7c7b\u5e76\u4e14\u4e0d\u80fd\u7528\u4f5c {1} \u4e2d\u7684\u65b9\u6cd5\u53c2\u6570\u6216\u8fd4\u56de\u7c7b\u578b\u3002
-rmic.iiop.constraint.22=\
-\u5185\u90e8\u5931\u8d25\uff1a\uff08\u65b9\u6cd5\uff09\u5f02\u5e38 {0} \u4e0d\u662f\u7c7b\u7c7b\u578b\u3002
-rmic.iiop.constraint.23=\
-\u5185\u90e8\u5931\u8d25\uff1a\uff08\u65b9\u6cd5\uff09\u6355\u6349\u5230 {0} \u7684\u7a7a\u6307\u9488\u5f02\u5e38\u3002
-rmic.iiop.constraint.24=\
-\u7c7b {0} \u5305\u542b\u65e0\u6548\u8fd4\u56de\u7c7b\u578b\u3002
-rmic.iiop.constraint.25=\
-\u7c7b {0} \u5305\u542b\u65b9\u6cd5 {1} \u4e2d\u7684\u65e0\u6548\u53c2\u6570\u7c7b\u578b\u3002
-rmic.iiop.constraint.26=\
-\u65e0\u6cd5\u7f16\u8bd1 {0}\u3002
-rmic.iiop.constraint.27=\
-\u65e0\u6cd5\u88c5\u5165\u7c7b {0}\u3002
-rmic.iiop.constraint.28=\
-{0} \u662f\u8fdc\u7a0b\u5b9e\u73b0\u7c7b\u5e76\u4e14\u65e0\u6cd5\u7528\u4f5c {1} \u4e2d\u7684\u6570\u636e\u6210\u5458\u3002
+rmic.iiop.constraint.1={0}\u4E0D\u662F\u6709\u6548\u63A5\u53E3: \u6CA1\u6709\u4ECE java.rmi.Remote \u7EE7\u627F\u3002
+rmic.iiop.constraint.2=\u7C7B{0}\u7684 serialPersistentFields \u6570\u7EC4\u65E0\u6548: \u5F15\u7528\u4E86\u4E0D\u5B58\u5728\u7684\u6210\u5458\u3002
+rmic.iiop.constraint.3={0}\u4E0D\u662F\u6709\u6548\u8FDC\u7A0B\u63A5\u53E3: {1}\u4E0D\u662F\u6709\u6548\u7684\u57FA\u5143\u6216\u5B57\u7B26\u4E32\u5E38\u91CF\u3002
+rmic.iiop.constraint.4={0}\u4E0D\u662F\u6709\u6548\u503C: serialPersistentFields \u5FC5\u987B\u4E3A\u4E13\u7528\u9759\u6001\u6700\u7EC8\u7C7B\u578B\u3002
+rmic.iiop.constraint.5={0}\u4E0D\u662F\u6709\u6548\u8FDC\u7A0B\u63A5\u53E3: \u65B9\u6CD5{1}\u5FC5\u987B\u629B\u51FA RemoteException \u6216 RemoteException \u7684\u8D85\u7C7B\u3002
+rmic.iiop.constraint.6={0}\u4E0D\u662F\u6709\u6548\u8FDC\u7A0B\u63A5\u53E3: \u7EE7\u627F\u7684\u63A5\u53E3{1}\u5747\u58F0\u660E\u4E86\u65B9\u6CD5{2}\u3002
+rmic.iiop.constraint.7={0}\u4E0D\u662F\u6709\u6548\u7C7B\u578B: {1}\u4EC5\u5728\u5927\u5C0F\u5199\u4E0A\u4E0D\u540C\u3002
+rmic.iiop.constraint.8={0}\u4E0D\u662F\u6709\u6548\u8FDC\u7A0B\u5B9E\u73B0: \u4E0D\u5177\u6709\u8FDC\u7A0B\u63A5\u53E3\u3002
+rmic.iiop.constraint.9=\u7C7B{1}\u7684 serialPersistentFields \u6570\u7EC4\u6210\u5458{0}\u65E0\u6548: \u7C7B\u578B\u4E0E\u58F0\u660E\u7684\u6210\u5458\u4E0D\u5339\u914D\u3002
+rmic.iiop.constraint.10={0}\u4E0D\u662F\u6709\u6548\u503C: \u5B9E\u73B0 java.rmi.Remote\u3002
+rmic.iiop.constraint.11={0}\u4E0D\u662F\u6709\u6548\u503C: \u4E0D\u5B9E\u73B0 java.io.Serializable\u3002
+rmic.iiop.constraint.12={0}\u4E0D\u662F\u6709\u6548\u503C: \u7236\u7EA7\u65E0\u6548\u3002
+rmic.iiop.constraint.13={0}\u4E0D\u662F\u6709\u6548\u63A5\u53E3: \u65B9\u6CD5{1}\u7684 idl \u540D\u79F0\u4E0E\u5176\u4ED6\u65B9\u6CD5\u51B2\u7A81\u3002
+rmic.iiop.constraint.14={0}\u4E0D\u662F\u6709\u6548\u62BD\u8C61\u63A5\u53E3: \u4E0D\u662F\u63A5\u53E3\u3002
+rmic.iiop.constraint.15={0}\u4E0D\u662F\u6709\u6548\u62BD\u8C61\u63A5\u53E3: \u5B9E\u73B0 java.rmi.Remote\u3002
+rmic.iiop.constraint.16={0}\u4E0D\u662F\u6709\u6548\u8FDC\u7A0B\u63A5\u53E3: \u4E0D\u662F\u63A5\u53E3\u3002
+rmic.iiop.constraint.17={0}\u4E0D\u662F\u6709\u6548\u8FDC\u7A0B\u5B9E\u73B0: \u4E0D\u662F\u7C7B\u3002
+rmic.iiop.constraint.18={0}\u4E0D\u662F\u6709\u6548\u63A5\u53E3: \u65B9\u6CD5{1}\u4E0D\u80FD\u4F20\u9012\u5B9E\u73B0 org.omg.CORBA.portable.IDLEntity \u7684\u5F02\u5E38\u9519\u8BEF\u3002
+rmic.iiop.constraint.19={0}\u4E0D\u662F\u6709\u6548\u63A5\u53E3: \u5E38\u91CF{1}\u7684 idl \u540D\u79F0\u4E0E\u5176\u4ED6\u5E38\u91CF\u51B2\u7A81\u3002
+rmic.iiop.constraint.20={0}\u4E0D\u662F\u6709\u6548\u7C7B: \u6210\u5458{1}\u7684 idl \u540D\u79F0\u4E0E\u5176\u4ED6\u6210\u5458\u51B2\u7A81\u3002
+rmic.iiop.constraint.21={0}\u662F\u8FDC\u7A0B\u5B9E\u73B0\u7C7B\u5E76\u4E14\u4E0D\u80FD\u7528\u4F5C{1}\u4E2D\u7684\u65B9\u6CD5\u53C2\u6570\u6216\u8FD4\u56DE\u7C7B\u578B\u3002
+rmic.iiop.constraint.22=\u5185\u90E8\u5931\u8D25: (\u65B9\u6CD5) \u5F02\u5E38\u9519\u8BEF{0}\u4E0D\u662F\u7C7B\u7C7B\u578B\u3002
+rmic.iiop.constraint.23=\u5185\u90E8\u5931\u8D25: (\u65B9\u6CD5) \u6355\u83B7\u5230{0}\u7684\u7A7A\u503C\u6307\u9488\u5F02\u5E38\u9519\u8BEF\u3002
+rmic.iiop.constraint.24=\u7C7B{0}\u5305\u542B\u65E0\u6548\u8FD4\u56DE\u7C7B\u578B\u3002
+rmic.iiop.constraint.25=\u7C7B{0}\u5305\u542B\u65B9\u6CD5{1}\u4E2D\u7684\u65E0\u6548\u53C2\u6570\u7C7B\u578B\u3002
+rmic.iiop.constraint.26=\u65E0\u6CD5\u7F16\u8BD1{0}\u3002
+rmic.iiop.constraint.27=\u65E0\u6CD5\u52A0\u8F7D\u7C7B{0}\u3002
+rmic.iiop.constraint.28={0}\u662F\u8FDC\u7A0B\u5B9E\u73B0\u7C7B\u5E76\u4E14\u65E0\u6CD5\u7528\u4F5C{1}\u4E2D\u7684\u6570\u636E\u6210\u5458\u3002
--- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_de.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_de.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2005, 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
@@ -25,109 +25,72 @@
 #
 
 # "rmid", inetd", and "wait" should not be translated.
-rmid.syntax.exec.invalid=\
-        rmid wurde mit einem ung\u00fcltigen Status (muss wait sein) von inetd gestartet
+rmid.syntax.exec.invalid=rmid wurde mit einem ung\u00FCltigen Status (muss "wait" sein) von inetd gestartet
 
 # "rmid" and "inetd" should not be translated.
-rmid.syntax.port.badarg=\
-	Der Port kann nicht angegeben werden, wenn rmid von inetd gestartet wird
+rmid.syntax.port.badarg=Port kann nicht angegeben werden, wenn rmid von inetd gestartet wird
 
 # "port" here refers to a TCP port for the server to listen on.
-rmid.syntax.port.badnumber=\
-    Port ist keine Zahl
+rmid.syntax.port.badnumber=Port ist keine Zahl
 
 # "-port" should not be translated, because it's part of command syntax.
-rmid.syntax.port.missing=\
-    F\u00fcr Option -port ist ein Argument erforderlich.
+rmid.syntax.port.missing=F\u00FCr Option -port ist ein Argument erforderlich
 
 # "-log" should not be translated, because it's part of command syntax.
-rmid.syntax.log.missing=\
-    F\u00fcr Option -log ist ein Argument erforderlich.
+rmid.syntax.log.missing=F\u00FCr Option -log ist ein Argument erforderlich
 
 # "-log" should not be translated, because it's part of command syntax.
-rmid.syntax.log.required=\
-	Die Option -log ist erforderlich.
+rmid.syntax.log.required=Option -log ist erforderlich
 
 # {0} = the (string) illegal argument in question
-rmid.syntax.illegal.option=\
-Unzul\u00e4ssige Option: {0}
+rmid.syntax.illegal.option=Ung\u00FCltige Option: {0}
 
 # {0} = the (string) reason text that came with a thrown exception
 # "Activation.main" should not be translated, because it's a codepoint
-rmid.unexpected.exception=\
-	Activation.main: Es ist eine Ausnahme aufgetreten: {0}
+rmid.unexpected.exception=Activation.main: Es ist eine Ausnahme aufgetreten: {0}
 
 # "java.home" should not be translated, because it's a property name
 # "ActivatorImpl" should not be translated, because it's a codepoint
-rmid.unfound.java.home.property=\
-	ActivatorImpl: java.home konnte nicht gefunden werden.
+rmid.unfound.java.home.property=ActivatorImpl: java.home konnte nicht gefunden werden
 
 # "rmid" should not be translated
-rmid.inherited.channel.info=\
-	rmid-Start mit \u00fcbernommenem Kanal
+rmid.inherited.channel.info=rmid-Start mit \u00FCbernommenem Kanal
 
 # "Activation.main" should not be translated, because it's a codepoint
-rmid.exec.policy.invalid=\
-	Activation.main: ung\u00fcltige exec-Verfahrensklasse
+rmid.exec.policy.invalid=Activation.main: Ung\u00FCltige exec-Policy-Klasse
 
 # "rmid" should not be translated
-rmid.exec.policy.exception=\
-	rmid: Der Versuch, die exec-Richtlinie abzurufen, bewirkt:
+rmid.exec.policy.exception=rmid: Versuch, die exec-Policy abzurufen, l\u00F6st Folgendes aus:
 
 # "rmid" should not be translated
-rmid.exec.command=\
-	rmid: debugExec: "{0}" wird ausgef\u00fchrt
+rmid.exec.command=rmid: debugExec: "{0}" wird ausgef\u00FChrt
 
 # "rmid" should not be translated
-rmid.group.inactive=\
-	rmid: Aktivierungsgruppe inaktiv: {0}
+rmid.group.inactive=rmid: Aktivierungsgruppe inaktiv: {0}
 
 # "Activation.main", "sun.rmi.activation.execPolicy", "ExecPermission" and 
 # "ExecOptionPermission" should not be translated, since they refer to
 # class/permission names.
-rmid.exec.perms.inadequate=\
-    Activation.main: Achtung: Systemeigenschaft sun.rmi.activation.execPolicy\n\
-        nicht angegeben, und keine ExecPermissions/ExecOptionPermissions\n\
-        gew\u00e4hrt; erneute Aktivierung kann wegen erfolgloser\n\
-    Berechtigungspr\u00fcfungen ExecPermission/ExecOptionPermission fehlschlagen. Weitere\n\
-    Dokumentation \u00fcber die Konfiguration von rmid-Sicherheit finden Sie unter:\n\
-\n\
-        http://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\n\
-        http://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n
+rmid.exec.perms.inadequate=Activation.main: Warnung: Systemeigenschaft sun.rmi.activation.execPolicy\nnicht angegeben, und keine ExecPermissions/ExecOptionPermissions\nerteilt. Darauf folgende Aktivierungsversuche sind m\u00F6glicherweise aufgrund erfolgloser\nBerechtigungspr\u00FCfungen ExecPermission/ExecOptionPermission nicht erfolgreich. Weitere\nDokumentation zur Konfiguration von rmid-Sicherheit finden Sie unter:\n\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n
 
 # "rmid", "-port", "-log", "-stop", "-C" and "-J" should not be translated,
 # because they are syntax
-rmid.usage=Syntax: {0} <Optionen>\
-\n\
-\nwobei folgende <Optionen> m\u00f6glich sind:\
-\n  -port <Port>        Angabe des Ports f\u00fcr rmid\
-\n  -log <Verzeichnis>  Angabe des Verzeichnisses, in das rmid die Log-Datei schreibt\
-\n  -stop               Aktuellen Aufruf von rmid stoppen (f\u00fcr den angegebenen Anschluss)\
-\n  -C<Laufzeitflag>    \u00dcbergeben des Arguments an jeden untergeordneten Prozess (Aktivierungsgruppe)\
-\n  -J<Laufzeitflag>    Argument an den Java-Interpreter \u00fcbergeben\
-\n\
-
+rmid.usage=Verwendung: {0} <Optionen>\n\nwobei folgende <Optionen> m\u00F6glich sind:\n  -port <Port>        Port f\u00FCr rmid angeben\n  -log <Verzeichnis>    Verzeichnis, in das rmid die Logdatei schreibt, angeben\n  -stop               Aktuellen Aufruf von rmid stoppen (f\u00FCr den angegebenen Port)\n  -C<Laufzeitkennzeichen>    Argument an jeden untergeordneten Prozess (Aktivierungsgruppe) \u00FCbergeben\n  -J<Laufzeitkennzeichen>    Argument an den Java-Interpreter \u00FCbergeben\n
 # This means "The currently running activation daemon has been shut down,
 # and is about to exit".
-rmid.daemon.shutdown=\
-Aktivierungsdaemon wird geschlossen.
+rmid.daemon.shutdown=Aktivierungsdaemon heruntergefahren
+
+# "rmid" should not be translated
+rmid.restart.group.warning=\nrmid: (WARNING) Neustart der Gruppe l\u00F6st Folgendes aus:
 
 # "rmid" should not be translated
-rmid.restart.group.warning=\
-\nrmid: (WARNUNG) Neustart der Gruppe bewirkt:
-
-# "rmid" should not be translated
-rmid.restart.service.warning=\
-\nrmid: (WARNUNG) Neustart des Dienstes bewirkt:
+rmid.restart.service.warning=\nrmid: (WARNING) Neustart des Service l\u00F6st Folgendes aus:
 
 # "rmid" should not be translated
-rmid.log.update.warning=\
-\nrmid: (WARNUNG) Aktualisierung des Protokolls bewirkt:
+rmid.log.update.warning=\nrmid: (WARNING) Logupdate l\u00F6st Folgendes aus:
 
 # "rmid" should not be translated
-rmid.log.snapshot.warning=\
-\nrmid: (SCHWERW.) Momentaufnahme des Protokolls bewirkt:
+rmid.log.snapshot.warning=\nrmid: (SEVERE) Log-Snapshot l\u00F6st Folgendes aus:
 
 # "rmid" should not be translated
-rmid.log.recover.warning=\
-\nrmid: (WARNUNG) {0}: \u00dcberspringen eines Protokolleintrags bei der Wiederherstellung:
+rmid.log.recover.warning=\nrmid: (WARNING) {0}: Logdatensatz wird bei Wiederherstellung \u00FCbersprungen:
--- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_es.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_es.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2005, 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
@@ -25,109 +25,72 @@
 #
 
 # "rmid", inetd", and "wait" should not be translated.
-rmid.syntax.exec.invalid=\
-        rmid se ha iniciado desde inetd con un estado no v\u00e1lido (debe ser wait)
+rmid.syntax.exec.invalid=rmid se ha iniciado desde inetd con un estado no v\u00E1lido (debe ser wait)
 
 # "rmid" and "inetd" should not be translated.
-rmid.syntax.port.badarg=\
-	no se puede especificar el puerto si rmid se ha iniciado desde inetd
+rmid.syntax.port.badarg=no se puede especificar el puerto si rmid se ha iniciado desde inetd
 
 # "port" here refers to a TCP port for the server to listen on.
-rmid.syntax.port.badnumber=\
-    el puerto no es un n\u00famero
+rmid.syntax.port.badnumber=el puerto no es un n\u00FAmero
 
 # "-port" should not be translated, because it's part of command syntax.
-rmid.syntax.port.missing=\
-    la opci\u00f3n -port requiere un argumento
+rmid.syntax.port.missing=la opci\u00F3n -port requiere un argumento
 
 # "-log" should not be translated, because it's part of command syntax.
-rmid.syntax.log.missing=\
-    la opci\u00f3n -log requiere un argumento
+rmid.syntax.log.missing=la opci\u00F3n -log requiere un argumento
 
 # "-log" should not be translated, because it's part of command syntax.
-rmid.syntax.log.required=\
-	la opci\u00f3n -log es obligatoria
+rmid.syntax.log.required=la opci\u00F3n -log es obligatoria
 
 # {0} = the (string) illegal argument in question
-rmid.syntax.illegal.option=\
-opci\u00f3n no permitida: {0}
+rmid.syntax.illegal.option=opci\u00F3n no permitida: {0}
 
 # {0} = the (string) reason text that came with a thrown exception
 # "Activation.main" should not be translated, because it's a codepoint
-rmid.unexpected.exception=\
-	Activation.main: ha ocurrido una excepci\u00f3n: {0}
+rmid.unexpected.exception=Activation.main: se ha producido una excepci\u00F3n: {0}
 
 # "java.home" should not be translated, because it's a property name
 # "ActivatorImpl" should not be translated, because it's a codepoint
-rmid.unfound.java.home.property=\
-	ActivatorImpl: imposible encontrar java.home
+rmid.unfound.java.home.property=ActivatorImpl: no se ha encontrado java.home
 
 # "rmid" should not be translated
-rmid.inherited.channel.info=\
-	inicio de rmid con canal heredado
+rmid.inherited.channel.info=inicio de rmid con canal heredado
 
 # "Activation.main" should not be translated, because it's a codepoint
-rmid.exec.policy.invalid=\
-	Activation.main: Clase de norma de ejecuci\u00f3n no v\u00e1lida
+rmid.exec.policy.invalid=Activation.main: clase de pol\u00EDtica de ejecuci\u00F3n no v\u00E1lida
 
 # "rmid" should not be translated
-rmid.exec.policy.exception=\
-	rmid: el intento de obtener la norma de ejecuci\u00f3n indica:
+rmid.exec.policy.exception=rmid: el intento de obtener la pol\u00EDtica de ejecuci\u00F3n devuelve:
 
 # "rmid" should not be translated
-rmid.exec.command=\
-	rmid: debugExec: en ejecuci\u00f3n "{0}"
+rmid.exec.command=rmid: debugExec: en ejecuci\u00F3n "{0}"
 
 # "rmid" should not be translated
-rmid.group.inactive=\
-	rmid: grupo de activaci\u00f3n inactivo: {0}
+rmid.group.inactive=rmid: grupo de activaci\u00F3n inactivo: {0}
 
 # "Activation.main", "sun.rmi.activation.execPolicy", "ExecPermission" and 
 # "ExecOptionPermission" should not be translated, since they refer to
 # class/permission names.
-rmid.exec.perms.inadequate=\
-    Activation.main: advertencia: no se han especificado las propiedades del sistema sun.rmi.activation.execPolicy\n\
-        y no se han concedido ExecPermissions/ExecOptionPermissions;\n\
-        los intentos de activaci\u00f3n posteriores pueden fallar debido a\n\
-    comprobaciones de permiso ExecPermission/ExecOptionPermission no satisfactorias. Para\n\
-    obtener documentaci\u00f3n sobre c\u00f3mo configurar la seguridad rmid, rem\u00edtase a:\n\
-\n\
-        http://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\n\
-        http://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n
+rmid.exec.perms.inadequate=Activation.main: advertencia: no se han especificado las propiedades del sistema sun.rmi.activation.execPolicy\ny no se han otorgado ExecPermissions/ExecOptionPermissions;\nlos intentos de activaci\u00F3n posteriores pueden fallar debido a\ncomprobaciones de permiso ExecPermission/ExecOptionPermission incorrectas. Para\nobtener documentaci\u00F3n sobre c\u00F3mo configurar la seguridad rmid, rem\u00EDtase a:\n\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n
 
 # "rmid", "-port", "-log", "-stop", "-C" and "-J" should not be translated,
 # because they are syntax
-rmid.usage=Sintaxis: {0} <opciones>\
-\n\
-\ndonde <opciones> incluye:\
-\n  -port <puerto>      Especificar puerto para uso de rmid\
-\n  -log <directorio>   Especificar directorio en el que rmid escribir\u00e1 el registro\
-\n  -stop               Detener la llamada actual de rmid (para el puerto especificado)\
-\n  -C<indicador runtime> Pasar argumento a cada uno de los procesos subordinados (grupo de activaci\u00f3n)\
-\n  -J<indicador runtime> Pasar argumento al int\u00e9rprete de Java\
-\n\
-
+rmid.usage=Sintaxis: {0} <opciones>\n\ndonde <opciones> incluye:\n  -port <puerto>      Especificar puerto para uso de rmid\n  -log <directorio>   Especificar directorio en el que rmid escribir\u00E1 el registro\n  -stop               Parar la llamada actual de rmid (para el puerto especificado)\n  -C<indicador de tiempo de ejecuci\u00F3n> Pasar argumento a cada uno de los procesos secundarios (grupo de activaci\u00F3n)\n  -J<indicador de tiempo de ejecuci\u00F3n> Pasar argumento al int\u00E9rprete de Java\n
 # This means "The currently running activation daemon has been shut down,
 # and is about to exit".
-rmid.daemon.shutdown=\
-daemon de activaci\u00f3n desactivado
+rmid.daemon.shutdown=daemon de activaci\u00F3n cerrado
+
+# "rmid" should not be translated
+rmid.restart.group.warning=\nrmid: (ADVERTENCIA) el reinicio del grupo devuelve:
 
 # "rmid" should not be translated
-rmid.restart.group.warning=\
-\nrmid: (ADVERTENCIA) el reinicio del grupo indica:
-
-# "rmid" should not be translated
-rmid.restart.service.warning=\
-\nrmid: (ADVERTENCIA) el reinicio del servicio indica:
+rmid.restart.service.warning=\nrmid: (ADVERTENCIA) el reinicio del servicio devuelve:
 
 # "rmid" should not be translated
-rmid.log.update.warning=\
-\nrmid: (ADVERTENCIA) la actualizaci\u00f3n del registro indica:
+rmid.log.update.warning=\nrmid: (ADVERTENCIA) la actualizaci\u00F3n del log indica:
 
 # "rmid" should not be translated
-rmid.log.snapshot.warning=\
-\nrmid: (GRAVE) la instant\u00e1nea del registro indica:
+rmid.log.snapshot.warning=\nrmid: (GRAVE) la instant\u00E1nea del log indica:
 
 # "rmid" should not be translated
-rmid.log.recover.warning=\
-\nrmid: (ADVERTENCIA) {0}: omitiendo la escritura del registro durante la recuperaci\u00f3n:
+rmid.log.recover.warning=\nrmid: (ADVERTENCIA) {0}: saltando el registro del log durante la recuperaci\u00F3n:
--- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_fr.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_fr.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2005, 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
@@ -25,109 +25,72 @@
 #
 
 # "rmid", inetd", and "wait" should not be translated.
-rmid.syntax.exec.invalid=\
-        rmid a \u00e9t\u00e9 lanc\u00e9 depuis inetd avec un statut invalide (doit \u00eatre wait)
+rmid.syntax.exec.invalid=rmid a \u00E9t\u00E9 lanc\u00E9 depuis inetd avec un statut non valide (doit \u00EAtre wait)
 
 # "rmid" and "inetd" should not be translated.
-rmid.syntax.port.badarg=\
-	impossible de sp\u00e9cifier port si rmid est lanc\u00e9 depuis inetd
+rmid.syntax.port.badarg=impossible de sp\u00E9cifier port si rmid est lanc\u00E9 depuis inetd
 
 # "port" here refers to a TCP port for the server to listen on.
-rmid.syntax.port.badnumber=\
-    port n'est pas un num\u00e9ro
+rmid.syntax.port.badnumber=port n'est pas un num\u00E9ro
 
 # "-port" should not be translated, because it's part of command syntax.
-rmid.syntax.port.missing=\
-    l'option -port exige un argument
+rmid.syntax.port.missing=l'option -port exige un argument
 
 # "-log" should not be translated, because it's part of command syntax.
-rmid.syntax.log.missing=\
-    l'option -log exige un argument
+rmid.syntax.log.missing=l'option -log exige un argument
 
 # "-log" should not be translated, because it's part of command syntax.
-rmid.syntax.log.required=\
-	option -log requise
+rmid.syntax.log.required=option -log obligatoire
 
 # {0} = the (string) illegal argument in question
-rmid.syntax.illegal.option=\
-	option incorrecte : {0}
+rmid.syntax.illegal.option=option non admise : {0}
 
 # {0} = the (string) reason text that came with a thrown exception
 # "Activation.main" should not be translated, because it's a codepoint
-rmid.unexpected.exception=\
-	Activation.main : une exception s''est produite : {0}
+rmid.unexpected.exception=Activation.main : une exception s''est produite - {0}
 
 # "java.home" should not be translated, because it's a property name
 # "ActivatorImpl" should not be translated, because it's a codepoint
-rmid.unfound.java.home.property=\
-	ActivatorImpl : impossible de localiser java.home
+rmid.unfound.java.home.property=ActivatorImpl : impossible de localiser java.home
 
 # "rmid" should not be translated
-rmid.inherited.channel.info=\
-	d\u00e9marrage de rmid avec le canal existant
+rmid.inherited.channel.info=d\u00E9marrage de rmid avec le canal existant
 
 # "Activation.main" should not be translated, because it's a codepoint
-rmid.exec.policy.invalid=\
-	Activation.main : classe de r\u00e8gle exec incorrecte
+rmid.exec.policy.invalid=Activation.main : classe de r\u00E8gle exec incorrecte
 
 # "rmid" should not be translated
-rmid.exec.policy.exception=\
-	rmid: tenter d'obtenir des basculements de classes exec :
+rmid.exec.policy.exception=rmid : tentative d'obtention des basculements de classes exec :
 
 # "rmid" should not be translated
-rmid.exec.command=\
-	rmid: debugExec : ex\u00e9cution de "{0}"
+rmid.exec.command=rmid : debugExec : ex\u00E9cution de "{0}"
 
 # "rmid" should not be translated
-rmid.group.inactive=\
-	rmid : groupe d''activation inactif : {0}
+rmid.group.inactive=rmid : groupe d''activation inactif : {0}
 
 # "Activation.main", "sun.rmi.activation.execPolicy", "ExecPermission" and 
 # "ExecOptionPermission" should not be translated, since they refer to
 # class/permission names.
-rmid.exec.perms.inadequate=\
-    Activation.main: avertissement : syst\u00e8me sun.rmi.activation.execPolicy\n\
-        propri\u00e9t\u00e9 non sp\u00e9cifi\u00e9e et ExecPermissions/ExecOptionPermissions\n\
-        non autoris\u00e9s ; les tentatives d'activation suivantes risquent d'\u00e9chouer en raison de la v\u00e9rification des permissions\n\
-    ExecPermission/ExecOptionPermission.  Pour obtenir de la\n\
-    documentation sur la configuration de la s\u00e9curit\u00e9 rmid, reportez-vous \u00e0 :\n\
-\n\
-        http://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\n\
-        http://javasun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n
+rmid.exec.perms.inadequate=Activation.main: avertissement : propri\u00E9t\u00E9 syst\u00E8me sun.rmi.activation.execPolicy\nnon sp\u00E9cifi\u00E9e et ExecPermissions/ExecOptionPermissions\nnon autoris\u00E9s ; les tentatives d'activation suivantes risquent d'\u00E9chouer en raison de la v\u00E9rification des droits\nExecPermission/ExecOptionPermission.  Pour obtenir de la\ndocumentation sur la configuration de la s\u00E9curit\u00E9 rmid, reportez-vous \u00E0 :\n\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\nhttp://javasun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n
 
 # "rmid", "-port", "-log", "-stop", "-C" and "-J" should not be translated,
 # because they are syntax
-rmid.usage=Syntaxe : {0} <options>\
-\n\
-\no\u00f9 <options> comprend :\
-\n  -port <port>        Port que rmid doit utiliser\
-\n  -log <directory>    R\u00e9pertoire o\u00f9 rmid enregistre le journal\
-\n  -stop               Arr\u00eater l''appel courant de rmid (pour le port sp\u00e9cifi\u00e9)\
-\n  -C<indicateur d''ex\u00e9cution>    Passe l''argument \u00e0 chaque processus fils (groupe d''activation)\
-\n  -J<indicateur d''ex\u00e9cution>    Passe l''argument \u00e0 l''interpr\u00e9teur Java\
-\n\
-
+rmid.usage=Syntaxe : {0} <options>\n\no\u00F9 <options> comprend :\n  -port <port>        Port que rmid doit utiliser\n  -log <r\u00E9pertoire>    R\u00E9pertoire o\u00F9 rmid enregistre le journal\n  -stop               Arr\u00EAter l''appel en cours de rmid (pour le port sp\u00E9cifi\u00E9)\n  -C<indicateur d''ex\u00E9cution>    Transmet l''argument \u00E0 chaque processus enfant (groupe d''activation)\n  -J<indicateur d''ex\u00E9cution>    Transmet l''argument \u00E0 l''interpr\u00E9teur Java\n
 # This means "The currently running activation daemon has been shut down,
 # and is about to exit".
-rmid.daemon.shutdown=\
-	d\u00e9mon d'activation arr\u00eat\u00e9
+rmid.daemon.shutdown=d\u00E9mon d'activation arr\u00EAt\u00E9
+
+# "rmid" should not be translated
+rmid.restart.group.warning=\nrmid : (AVERTISSEMENT) red\u00E9marrer les basculements de groupes :
 
 # "rmid" should not be translated
-rmid.restart.group.warning=\
-\nrmid : (AVERTISSEMENT) red\u00e9marrer les basculements de groupes :
-
-# "rmid" should not be translated
-rmid.restart.service.warning=\
-\nrmid : (AVERTISSEMENT) red\u00e9marrer les basculements de services :
+rmid.restart.service.warning=\nrmid : (AVERTISSEMENT) red\u00E9marrer les basculements de services :
 
 # "rmid" should not be translated
-rmid.log.update.warning=\
-\nrmid : (AVERTISSEMENT) consigner les basculements de mises \u00e0 jour :
+rmid.log.update.warning=\nrmid : (AVERTISSEMENT) consigner les basculements de mises \u00E0 jour :
 
 # "rmid" should not be translated
-rmid.log.snapshot.warning=\
-\nrmid : (GRAVE) consigner les basculements de captures instantan\u00e9es :
+rmid.log.snapshot.warning=\nrmid : (GRAVE) consigner les basculements de clich\u00E9s :
 
 # "rmid" should not be translated
-rmid.log.recover.warning=\
-\nrmid : (AVERTISSEMENT) {0} : enregistrement du journal  ignor\u00e9 pendant la r\u00e9cup\u00e9ration  :
+rmid.log.recover.warning=\nrmid : (AVERTISSEMENT) {0} : enregistrement du journal ignor\u00E9 lors de la r\u00E9cup\u00E9ration :
--- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_it.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_it.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2005, 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
@@ -25,109 +25,72 @@
 #
 
 # "rmid", inetd", and "wait" should not be translated.
-rmid.syntax.exec.invalid=\
-        rmid \u00e8 stato avviato da inetd con uno stato non valido (diverso da wait)
+rmid.syntax.exec.invalid=rmid \u00E8 stato avviato da inetd con uno stato non valido (diverso da wait)
 
 # "rmid" and "inetd" should not be translated.
-rmid.syntax.port.badarg=\
-	non \u00e8 possibile specificare la porta se rmid viene avviato da inetd
+rmid.syntax.port.badarg=non \u00E8 possibile specificare la porta se rmid viene avviato da inetd
 
 # "port" here refers to a TCP port for the server to listen on.
-rmid.syntax.port.badnumber=\
-    la porta non \u00e8 un numero
+rmid.syntax.port.badnumber=la porta non \u00E8 un numero
 
 # "-port" should not be translated, because it's part of command syntax.
-rmid.syntax.port.missing=\
-    L'opzione -port richiede un argomento
+rmid.syntax.port.missing=L'opzione -port richiede un argomento
 
 # "-log" should not be translated, because it's part of command syntax.
-rmid.syntax.log.missing=\
-    L'opzione -log richiede un argomento
+rmid.syntax.log.missing=L'opzione -log richiede un argomento
 
 # "-log" should not be translated, because it's part of command syntax.
-rmid.syntax.log.required=\
-	\u00c8 richiesta l'opzione -log
+rmid.syntax.log.required=\u00C8 richiesta l'opzione -log
 
 # {0} = the (string) illegal argument in question
-rmid.syntax.illegal.option=\
-	opzione illegale: {0}
+rmid.syntax.illegal.option=opzione non valida: {0}
 
 # {0} = the (string) reason text that came with a thrown exception
 # "Activation.main" should not be translated, because it's a codepoint
-rmid.unexpected.exception=\
-	Activation.main: si \u00e8 verificata un''eccezione: {0}
+rmid.unexpected.exception=Activation.main: si \u00E8 verificata un''eccezione: {0}
 
 # "java.home" should not be translated, because it's a property name
 # "ActivatorImpl" should not be translated, because it's a codepoint
-rmid.unfound.java.home.property=\
-	ActivatorImpl: impossibile individuare java.home
+rmid.unfound.java.home.property=ActivatorImpl: impossibile individuare java.home
 
 # "rmid" should not be translated
-rmid.inherited.channel.info=\
-	Avvio di rmid con canale ereditato
+rmid.inherited.channel.info=Avvio di rmid con canale ereditato
 
 # "Activation.main" should not be translated, because it's a codepoint
-rmid.exec.policy.invalid=\
-	Activation.main: classe di policy eseguibile non valida
+rmid.exec.policy.invalid=Activation.main: classe di criteri eseguibili non valida
 
 # "rmid" should not be translated
-rmid.exec.policy.exception=\
-	rmid: il tentativo di ottenere i criteri di esecuzione ha restituito:
+rmid.exec.policy.exception=rmid: il tentativo di ottenere i criteri di esecuzione ha restituito:
 
 # "rmid" should not be translated
-rmid.exec.command=\
-	rmid: debugExec: esecuzione di "{0}" in corso
+rmid.exec.command=rmid: debugExec: esecuzione di "{0}" in corso
 
 # "rmid" should not be translated
-rmid.group.inactive=\
-	rmid: gruppo attivazione inattivo: {0}
+rmid.group.inactive=rmid: gruppo attivazione inattivo: {0}
 
 # "Activation.main", "sun.rmi.activation.execPolicy", "ExecPermission" and 
 # "ExecOptionPermission" should not be translated, since they refer to
 # class/permission names.
-rmid.exec.perms.inadequate=\
-    Activation.main: avviso: sistema sun.rmi.activation.execPolicy\n\
-        Propriet\u00e0 non specificata e nessun ExecPermissions/ExecOptionPermissions\n\
-        garantito. I tentativi di attivazione successivi potrebbero fallire a causa di \n\
-    controlli di autorizzazione ExecPermission/ExecOptionPermission non andati a buon fine.  Per\n\
-    la documentazione e le modalit\u00e0 di configurazione della protezione rmid, fare riferimento a (informazioni in inglese):\n\
-\n\
-        http://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\n\
-        http://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n
+rmid.exec.perms.inadequate=Activation.main: avvertenza: sistema sun.rmi.activation.execPolicy\nPropriet\u00E0 non specificata e nessun ExecPermissions/ExecOptionPermissions\ngarantito. I tentativi di attivazione successivi potrebbero fallire a causa di \ncontrolli di autorizzazione ExecPermission/ExecOptionPermission non andati a buon fine.  Per\nla documentazione e le modalit\u00E0 di configurazione della sicurezza rmid, fare riferimento a (informazioni in inglese):\n\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n
 
 # "rmid", "-port", "-log", "-stop", "-C" and "-J" should not be translated,
 # because they are syntax
-rmid.usage=Utilizzo: {0} <opzioni>\
-\n\
-\ndove <opzioni> comprende:\
-\n  -port <porta>       Specifica la porta usata da rmid\
-\n  -log <directory>    Specifica la directory in cui rmid scrive il log\
-\n  -stop              Interrompe l''invocazione corrente di rmid (per la porta specificata)\
-\n  -C<flag runtime>    Passa l''argomento a ciascun processo figlio (gruppo di attivazione)\
-\n  -J<flag runtime>    Passa l''argomento all''interprete java\
-\n\
-
+rmid.usage=Utilizzo: {0} <opzioni>\n\ndove <opzioni> include:\n  -port <porta>       Specifica la porta usata da rmid\n  -log <directory>    Specifica la directory in cui rmid scrive il log\n  -stop              Arresta l''invocazione corrente di rmid (per la porta specificata)\n  -C<flag fase di esecuzione>    Passa l''argomento a ciascun processo figlio (gruppo di attivazione)\n  -J<flag fase di esecuzione>    Passa l''argomento all''interprete java\n
 # This means "The currently running activation daemon has been shut down,
 # and is about to exit".
-rmid.daemon.shutdown=\
-	daemon di attivazione terminato
+rmid.daemon.shutdown=daemon di attivazione terminato
+
+# "rmid" should not be translated
+rmid.restart.group.warning=\nrmid: (AVVERTENZA) il riavvio del gruppo ha restituito:
 
 # "rmid" should not be translated
-rmid.restart.group.warning=\
-\nrmid: (AVVERTENZA) il riavvio del gruppo ha restituito:
-
-# "rmid" should not be translated
-rmid.restart.service.warning=\
-\nrmid: (AVVERTENZA) il riavvio del servizio ha restituito:
+rmid.restart.service.warning=\nrmid: (AVVERTENZA) il riavvio del servizio ha restituito:
 
 # "rmid" should not be translated
-rmid.log.update.warning=\
-\nrmid: (AVVERTENZA) il log dell'aggiornamento ha restituito:
+rmid.log.update.warning=\nrmid: (AVVERTENZA) il log dell'aggiornamento ha restituito:
 
 # "rmid" should not be translated
-rmid.log.snapshot.warning=\
-\nrmid: (GRAVE) il log dell'istantanea ha restituito:
+rmid.log.snapshot.warning=\nrmid: (GRAVE) snapshot log ha restituito:
 
 # "rmid" should not be translated
-rmid.log.recover.warning=\
-\nrmid: (AVVERTENZA) {0}: record del log ignorato durante il ripristino:
+rmid.log.recover.warning=\nrmid: (AVVERTENZA) {0}: record del log ignorato durante il recupero:
--- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_ja.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_ja.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2005, 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
@@ -25,110 +25,72 @@
 #
 
 # "rmid", inetd", and "wait" should not be translated.
-rmid.syntax.exec.invalid=\
-        rmid \u304c inetd \u304b\u3089\u7121\u52b9\u306a\u72b6\u614b\u3067\u8d77\u52d5\u3055\u308c\u307e\u3057\u305f (wait \u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093)\u3002
+rmid.syntax.exec.invalid=rmid\u304Cinetd\u304B\u3089\u7121\u52B9\u306A\u72B6\u614B\u3067\u8D77\u52D5\u3055\u308C\u307E\u3057\u305F(wait\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059)
 
 # "rmid" and "inetd" should not be translated.
-rmid.syntax.port.badarg=\
-	rmid \u304c inetd \u304b\u3089\u8d77\u52d5\u3055\u308c\u305f\u5834\u5408\u3001\u30dd\u30fc\u30c8\u306f\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002
+rmid.syntax.port.badarg=rmid\u304Cinetd\u304B\u3089\u8D77\u52D5\u3055\u308C\u305F\u5834\u5408\u3001\u30DD\u30FC\u30C8\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093
 
 # "port" here refers to a TCP port for the server to listen on.
-rmid.syntax.port.badnumber=\
-	"port" \u306f\u756a\u53f7\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+rmid.syntax.port.badnumber=port\u306F\u756A\u53F7\u3067\u306F\u3042\u308A\u307E\u305B\u3093
 
 # "-port" should not be translated, because it's part of command syntax.
-rmid.syntax.port.missing=\
-        -port \u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u306f\u5f15\u6570\u304c\u5fc5\u8981\u3067\u3059
+rmid.syntax.port.missing=-port\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u306F\u5F15\u6570\u304C\u5FC5\u8981\u3067\u3059
 
 # "-log" should not be translated, because it's part of command syntax.
-rmid.syntax.log.missing=\
-        -log \u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u306f\u5f15\u6570\u304c\u5fc5\u8981\u3067\u3059
+rmid.syntax.log.missing=-log\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u306F\u5F15\u6570\u304C\u5FC5\u8981\u3067\u3059
 
 # "-log" should not be translated, because it's part of command syntax.
-rmid.syntax.log.required=\
-	-log \u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u5fc5\u8981\u3067\u3059
+rmid.syntax.log.required=-log\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u5FC5\u8981\u3067\u3059
 
 # {0} = the (string) illegal argument in question
-rmid.syntax.illegal.option=\
-	\u4e0d\u6b63\u306a\u30aa\u30d7\u30b7\u30e7\u30f3: {0}
+rmid.syntax.illegal.option=\u4E0D\u6B63\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: {0}
 
 # {0} = the (string) reason text that came with a thrown exception
 # "Activation.main" should not be translated, because it's a codepoint
-rmid.unexpected.exception=\
-	Activation.main: \u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0}
+rmid.unexpected.exception=Activation.main: \u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F: {0}
 
 # "java.home" should not be translated, because it's a property name
 # "ActivatorImpl" should not be translated, because it's a codepoint
-rmid.unfound.java.home.property=\
-	ActivatorImpl: java.home \u3092\u691c\u51fa\u3067\u304d\u307e\u305b\u3093\u3002
+rmid.unfound.java.home.property=ActivatorImpl: java.home\u3092\u691C\u51FA\u3067\u304D\u307E\u305B\u3093
 
 # "rmid" should not be translated
-rmid.inherited.channel.info=\
-	rmid \u306f\u7d99\u627f\u3055\u308c\u305f\u30c1\u30e3\u30cd\u30eb\u3067\u8d77\u52d5\u3057\u307e\u3059\u3002
+rmid.inherited.channel.info=rmid\u306F\u7D99\u627F\u3055\u308C\u305F\u30C1\u30E3\u30CD\u30EB\u3067\u8D77\u52D5\u3057\u307E\u3059
 
 # "Activation.main" should not be translated, because it's a codepoint
-rmid.exec.policy.invalid=\
-	Activation.main: \u7121\u52b9\u306a\u5b9f\u884c\u30dd\u30ea\u30b7\u30fc\u30af\u30e9\u30b9\u3067\u3059\u3002
+rmid.exec.policy.invalid=Activation.main: \u7121\u52B9\u306A\u5B9F\u884C\u30DD\u30EA\u30B7\u30FC\u30FB\u30AF\u30E9\u30B9\u3067\u3059
 
 # "rmid" should not be translated
-rmid.exec.policy.exception=\
-	rmid: \u5b9f\u884c\u30dd\u30ea\u30b7\u30fc\u306e\u53d6\u5f97\u6642\u306e\u4f8b\u5916:
+rmid.exec.policy.exception=rmid: \u5B9F\u884C\u30DD\u30EA\u30B7\u30FC\u306E\u53D6\u5F97\u3067\u6B21\u304C\u30B9\u30ED\u30FC\u3055\u308C\u307E\u3057\u305F:
 
 # "rmid" should not be translated
-rmid.exec.command=\
-	rmid: debugExec: "{0}" \u3092\u5b9f\u884c\u4e2d
+rmid.exec.command=rmid: debugExec: "{0}"\u3092\u5B9F\u884C\u4E2D
 
 # "rmid" should not be translated
-rmid.group.inactive=\
-	rmid: \u8d77\u52d5\u30b0\u30eb\u30fc\u30d7\u304c\u505c\u6b62\u3057\u3066\u3044\u307e\u3059: {0}
+rmid.group.inactive=rmid: \u8D77\u52D5\u30B0\u30EB\u30FC\u30D7\u304C\u505C\u6B62\u3057\u3066\u3044\u307E\u3059: {0}
 
 # "Activation.main", "sun.rmi.activation.execPolicy", "ExecPermission" and 
 # "ExecOptionPermission" should not be translated, since they refer to
 # class/permission names.
-rmid.exec.perms.inadequate=\
-	Activation.main: \u8b66\u544a:sun.rmi.activation.execPolicy \u30b7\u30b9\u30c6\u30e0\n\
-	\u30d7\u30ed\u30d1\u30c6\u30a3\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u3001\u307e\u305f\u306f \n\
-	ExecPermissions/ExecOptionPermissions \u304c\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002\n\
-	ExecPermissions/ExecOptionPermissions \u30a2\u30af\u30bb\u30b9\u6a29\u691c\u67fb\u3067\u8a31\u53ef\u3055\u308c\n\
-	\u306a\u3044\u305f\u3081\u3001\u3042\u3068\u306b\u7d9a\u304f\u8d77\u52d5\u306f\u5931\u6557\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\n\
-	rmid \u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u8a2d\u5b9a\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001\u6b21\u306e\u30de\u30cb\u30e5\u30a2\u30eb\u3092\u53c2\u7167\u3057\u3066\n\
-	\u304f\u3060\u3055\u3044\u3002:\n\
-\n\
-        http://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\n\
-        http://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n
+rmid.exec.perms.inadequate=Activation.main: \u8B66\u544A:sun.rmi.activation.execPolicy\u30B7\u30B9\u30C6\u30E0\n\u30D7\u30ED\u30D1\u30C6\u30A3\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u306A\u3044\u3001\u307E\u305F\u306F\nExecPermissions/ExecOptionPermissions\u304C\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093\u3002\nExecPermissions/ExecOptionPermissions\u30A2\u30AF\u30BB\u30B9\u6A29\u691C\u67FB\u3067\u8A31\u53EF\u3055\u308C\n\u306A\u3044\u305F\u3081\u3001\u5F8C\u306B\u7D9A\u304F\u8D77\u52D5\u306F\u5931\u6557\u3059\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\nrmid\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306E\u69CB\u6210\u65B9\u6CD5\u306B\u3064\u3044\u3066\u306F\u3001\u6B21\u306E\u30DE\u30CB\u30E5\u30A2\u30EB\u3092\u53C2\u7167\u3057\u3066\n\u304F\u3060\u3055\u3044\u3002\n\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n
 
 # "rmid", "-port", "-log", "-stop", "-C" and "-J" should not be translated,
 # because they are syntax
-rmid.usage=\u4f7f\u3044\u65b9: {0} <options>\
-\n\
-\n<options> \u306b\u306f\u6b21\u306e\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002\
-\n  -port <port>        rmid \u304c\u4f7f\u7528\u3059\u308b\u30dd\u30fc\u30c8\u3092\u6307\u5b9a\u3059\u308b\
-\n  -log <directory>    rmid \u304c\u30ed\u30b0\u3092\u66f8\u304d\u8fbc\u3080\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u6307\u5b9a\u3059\u308b\
-\n  -stop               \u6307\u5b9a\u30dd\u30fc\u30c8\u306b\u5bfe\u3059\u308b rmid \u306e\u73fe\u5728\u306e\u547c\u3073\u51fa\u3057\u3092\u4e2d\u6b62\u3059\u308b\
-\n  -C<runtime flag>    \u5404\u5b50\u30d7\u30ed\u30bb\u30b9 (\u8d77\u52d5\u30b0\u30eb\u30fc\u30d7) \u306b\u5f15\u6570\u3092\u6e21\u3059\
-\n  -J<runtime flag>    java \u30a4\u30f3\u30bf\u30d7\u30ea\u30bf\u306b\u5f15\u6570\u3092\u6e21\u3059\
-\n
+rmid.usage=\u4F7F\u7528\u65B9\u6CD5: {0} <options>\n\n<options>\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002\n -port<port>     rmid\u304C\u4F7F\u7528\u3059\u308B\u30DD\u30FC\u30C8\u3092\u6307\u5B9A\u3059\u308B\n -log <directory>  rmid\u304C\u30ED\u30B0\u3092\u66F8\u304D\u8FBC\u3080\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u6307\u5B9A\u3059\u308B\n -stop         \u6307\u5B9A\u30DD\u30FC\u30C8\u306B\u5BFE\u3059\u308Brmid\u306E\u73FE\u5728\u306E\u547C\u51FA\u3057\u3092\u4E2D\u6B62\u3059\u308B\n -C<runtime flag>   \u5404\u5B50\u30D7\u30ED\u30BB\u30B9(\u8D77\u52D5\u30B0\u30EB\u30FC\u30D7)\u306B\u5F15\u6570\u3092\u6E21\u3059\n -J<runtime flag>  java\u30A4\u30F3\u30BF\u30D7\u30EA\u30BF\u306B\u5F15\u6570\u3092\u6E21\u3059\n
 # This means "The currently running activation daemon has been shut down,
 # and is about to exit".
-rmid.daemon.shutdown=\
-	\u8d77\u52d5\u30c7\u30fc\u30e2\u30f3\u304c\u505c\u6b62\u3057\u307e\u3057\u305f\u3002
+rmid.daemon.shutdown=\u8D77\u52D5\u30C7\u30FC\u30E2\u30F3\u304C\u505C\u6B62\u3057\u307E\u3057\u305F
+
+# "rmid" should not be translated
+rmid.restart.group.warning=\nrmid: (\u8B66\u544A)\u30B0\u30EB\u30FC\u30D7\u306E\u518D\u8D77\u52D5\u3067\u6B21\u304C\u30B9\u30ED\u30FC\u3055\u308C\u307E\u3057\u305F:
 
 # "rmid" should not be translated
-rmid.restart.group.warning=\
-\nrmid: (\u8b66\u544a) \u30b0\u30eb\u30fc\u30d7\u306e\u518d\u8d77\u52d5\u6642\u306e\u4f8b\u5916:
-
-# "rmid" should not be translated
-rmid.restart.service.warning=\
-\nrmid: (\u8b66\u544a) \u30b5\u30fc\u30d3\u30b9\u306e\u518d\u8d77\u52d5\u6642\u306e\u4f8b\u5916:
+rmid.restart.service.warning=\nrmid: (\u8B66\u544A)\u30B5\u30FC\u30D3\u30B9\u306E\u518D\u8D77\u52D5\u3067\u6B21\u304C\u30B9\u30ED\u30FC\u3055\u308C\u307E\u3057\u305F:
 
 # "rmid" should not be translated
-rmid.log.update.warning=\
-\nrmid: (\u8b66\u544a) \u30ed\u30b0\u66f4\u65b0\u6642\u306e\u4f8b\u5916:
+rmid.log.update.warning=\nrmid: (\u8B66\u544A)\u30ED\u30B0\u66F4\u65B0\u3067\u6B21\u304C\u30B9\u30ED\u30FC\u3055\u308C\u307E\u3057\u305F:
 
 # "rmid" should not be translated
-rmid.log.snapshot.warning=\
-\nrmid: (\u91cd\u5927) \u30ed\u30b0\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u6642\u306e\u4f8b\u5916:
+rmid.log.snapshot.warning=\nrmid: (\u91CD\u5927)\u30ED\u30B0\u30FB\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\u3067\u6B21\u304C\u30B9\u30ED\u30FC\u3055\u308C\u307E\u3057\u305F:
 
 # "rmid" should not be translated
-rmid.log.recover.warning=\
-\nrmid: (\u8b66\u544a) {0}: \u56de\u5fa9\u4e2d\u306e\u30ed\u30b0\u30ec\u30b3\u30fc\u30c9\u306e\u30b9\u30ad\u30c3\u30d7:
+rmid.log.recover.warning=\nrmid: (\u8B66\u544A){0}: \u56DE\u5FA9\u4E2D\u306E\u30ED\u30B0\u30FB\u30EC\u30B3\u30FC\u30C9\u306E\u30B9\u30AD\u30C3\u30D7:
--- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_ko.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_ko.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2005, 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
@@ -25,109 +25,72 @@
 #
 
 # "rmid", inetd", and "wait" should not be translated.
-rmid.syntax.exec.invalid=\
-        rmid\uac00 \uc798\ubabb\ub41c \uc0c1\ud0dc\ub97c \uac00\uc9c4 inetd\uc5d0\uc11c \uc2dc\uc791\ub418\uc5c8\uc2b5\ub2c8\ub2e4. (wait\uc774\uc5b4\uc57c \ud568)
+rmid.syntax.exec.invalid=rmid\uAC00 \uBD80\uC801\uD569\uD55C \uC0C1\uD0DC\uC758 inetd\uC5D0\uC11C \uC2DC\uC791\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uC0C1\uD0DC\uB294 wait\uC5EC\uC57C \uD569\uB2C8\uB2E4.
 
 # "rmid" and "inetd" should not be translated.
-rmid.syntax.port.badarg=\
-	rmid\uac00 inetd\uc5d0\uc11c \uc2dc\uc791\ub41c \uacbd\uc6b0 \ud3ec\ud2b8\ub97c \uc9c0\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+rmid.syntax.port.badarg=rmid\uAC00 inetd\uC5D0\uC11C \uC2DC\uC791\uB41C \uACBD\uC6B0 \uD3EC\uD2B8\uB97C \uC9C0\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
 
 # "port" here refers to a TCP port for the server to listen on.
-rmid.syntax.port.badnumber=\
-	\ud3ec\ud2b8\ub294 \uc22b\uc790\uac00 \uc544\ub2d9\ub2c8\ub2e4.
+rmid.syntax.port.badnumber=\uD3EC\uD2B8\uB294 \uC22B\uC790\uAC00 \uC544\uB2D9\uB2C8\uB2E4.
 
 # "-port" should not be translated, because it's part of command syntax.
-rmid.syntax.port.missing=\
-	-port \uc635\uc158\uc744 \uc0ac\uc6a9\ud558\ub824\uba74 \uc778\uc790\uac00 \ud544\uc694\ud569\ub2c8\ub2e4.
+rmid.syntax.port.missing=-port \uC635\uC158\uC744 \uC0AC\uC6A9\uD558\uB824\uBA74 \uC778\uC218\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4.
 
 # "-log" should not be translated, because it's part of command syntax.
-rmid.syntax.log.missing=\
-	-log \uc635\uc158\uc744 \uc0ac\uc6a9\ud558\ub824\uba74 \uc778\uc790\uac00 \ud544\uc694\ud569\ub2c8\ub2e4.
+rmid.syntax.log.missing=-log \uC635\uC158\uC744 \uC0AC\uC6A9\uD558\uB824\uBA74 \uC778\uC218\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4.
 
 # "-log" should not be translated, because it's part of command syntax.
-rmid.syntax.log.required=\
-	-log \uc635\uc158\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.
+rmid.syntax.log.required=-log \uC635\uC158\uC774 \uD544\uC694\uD569\uB2C8\uB2E4.
 
 # {0} = the (string) illegal argument in question
-rmid.syntax.illegal.option=\
-	\uc798\ubabb\ub41c \uc635\uc158: {0}
+rmid.syntax.illegal.option=\uC798\uBABB\uB41C \uC635\uC158: {0}
 
 # {0} = the (string) reason text that came with a thrown exception
 # "Activation.main" should not be translated, because it's a codepoint
-rmid.unexpected.exception=\
-	Activation.main: \uc608\uc678 \ubc1c\uc0dd: {0}
+rmid.unexpected.exception=Activation.main: \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {0}
 
 # "java.home" should not be translated, because it's a property name
 # "ActivatorImpl" should not be translated, because it's a codepoint
-rmid.unfound.java.home.property=\
-	ActivatorImpl: java.home\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc74c
+rmid.unfound.java.home.property=ActivatorImpl: java.home\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
 
 # "rmid" should not be translated
-rmid.inherited.channel.info=\
-	\uc0c1\uc18d \ucc44\ub110\uc744 \uc0ac\uc6a9\ud558\uc5ec rmid \uc2dc\uc791
+rmid.inherited.channel.info=\uC0C1\uC18D\uB41C \uCC44\uB110\uC744 \uC0AC\uC6A9\uD558\uC5EC rmid \uC2DC\uC791
 
 # "Activation.main" should not be translated, because it's a codepoint
-rmid.exec.policy.invalid=\
-	Activation.main: \uc798\ubabb\ub41c \uc2e4\ud589 \uc815\ucc45 \ud074\ub798\uc2a4
+rmid.exec.policy.invalid=Activation.main: \uC2E4\uD589 \uC815\uCC45 \uD074\uB798\uC2A4\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
 
 # "rmid" should not be translated
-rmid.exec.policy.exception=\
-	rmid: \uc2e4\ud589 \uc815\ucc45 \uac00\uc838\uc624\uae30 \uc2dc\ub3c4\ub85c \uc778\ud574 \ub2e4\uc74c \uc624\ub958\uac00 \ubc1c\uc0dd\ud568:
+rmid.exec.policy.exception=rmid: \uC2E4\uD589 \uC815\uCC45\uC744 \uAC00\uC838\uC624\uB824\uB294 \uC2DC\uB3C4\uB85C \uBC1C\uC0DD\uD55C \uC608\uC678 \uC0AC\uD56D:
 
 # "rmid" should not be translated
-rmid.exec.command=\
-	rmid: debugExec: "{0}" \uc2e4\ud589 \uc911
+rmid.exec.command=rmid: debugExec: "{0}" \uC2E4\uD589 \uC911
 
 # "rmid" should not be translated
-rmid.group.inactive=\
-	rmid: \ud65c\uc131\ud654 \uadf8\ub8f9 \ube44\ud65c\uc131: {0}
+rmid.group.inactive=rmid: \uD65C\uC131\uD654 \uADF8\uB8F9 \uBE44\uD65C\uC131: {0}
 
 # "Activation.main", "sun.rmi.activation.execPolicy", "ExecPermission" and 
 # "ExecOptionPermission" should not be translated, since they refer to
 # class/permission names.
-rmid.exec.perms.inadequate=\
-	Activation.main: \uacbd\uace0: sun.rmi.activation.execPolicy \uc2dc\uc2a4\ud15c \ub4f1\ub85d \uc815\ubcf4\uac00\n\
-        \uc9c0\uc815\ub418\uc9c0 \uc54a\uc558\uace0 ExecPermissions/ExecOptionPermissions\uc774 \ubd80\uc5ec\ub418\uc9c0\n\
-        \uc54a\uc558\uc2b5\ub2c8\ub2e4. \uacc4\uc18d\ub418\ub294 \ud65c\uc131\ud654 \uc2dc\ub3c4\ub294 ExecPermission/ExecOptionPermission\uc758\n\
-	\ud5c8\uac00 \ud655\uc778 \uc2e4\ud328\ub85c \uc778\ud574 \uc2e4\ud328\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n\
-	rmid \ubcf4\uc548\uc744 \uad6c\uc131\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud55c \uc124\uba85\uc11c\ub294 \ub2e4\uc74c \uc6f9 \uc0ac\uc774\ud2b8\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624.\n\
-\n\
-http://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\n\
-http://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n
+rmid.exec.perms.inadequate=Activation.main: \uACBD\uACE0: sun.rmi.activation.execPolicy \uC2DC\uC2A4\uD15C \uC18D\uC131\uC774\n\uC9C0\uC815\uB418\uC9C0 \uC54A\uC558\uC73C\uBA70 ExecPermissions/ExecOptionPermissions\uAC00 \uBD80\uC5EC\uB418\uC9C0\n\uC54A\uC558\uC2B5\uB2C8\uB2E4. \uD65C\uC131\uD654\uB97C \uACC4\uC18D \uC2DC\uB3C4\uD558\uBA74 ExecPermission/ExecOptionPermission\n\uAD8C\uD55C \uAC80\uC0AC \uC2E4\uD328\uB85C \uC778\uD574 \uC2E4\uD328\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\nrmid \uBCF4\uC548 \uAD6C\uC131 \uBC29\uBC95\uC5D0 \uB300\uD55C \uC124\uBA85\uC11C\uB294 \uB2E4\uC74C \uC6F9 \uC0AC\uC774\uD2B8\uB97C \uCC38\uC870\uD558\uC2ED\uC2DC\uC624.\n\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n
 
 # "rmid", "-port", "-log", "-stop", "-C" and "-J" should not be translated,
 # because they are syntax
-rmid.usage=\uc0ac\uc6a9\ubc95: {0} <\uc635\uc158> \
-\n\
-\n<\uc635\uc158>\uc740 \ub2e4\uc74c\uc744 \ud3ec\ud568\ud569\ub2c8\ub2e4:\
-\n  -port <port>        rmid\uac00 \uc0ac\uc6a9\ud560 \ud3ec\ud2b8 \uc9c0\uc815\
-\n  -log <directory>    rmid\uac00 \ub85c\uadf8\ub97c \uae30\ub85d\ud560 \ub514\ub809\ud1a0\ub9ac \uc9c0\uc815\
-\n  -stop               rmid\uc758 \ud604\uc7ac \ud638\ucd9c \uc911\ub2e8 (\uc9c0\uc815\ub41c \ud3ec\ud2b8\uc5d0 \ub300\ud574)\
-\n  -C<runtime flag>    \uac01\uac01\uc758 \uc790\uc2dd \ud504\ub85c\uc138\uc2a4\uc5d0 \uc778\uc790 \uc804\ub2ec (\ud65c\uc131\ud654 \uadf8\ub8f9)\
-\n  -J<runtime flag>    Java \uc778\ud130\ud504\ub9ac\ud130\uc5d0 \uc778\uc790\ub97c \uc804\ub2ec\ud569\ub2c8\ub2e4.\
-\n\
-
+rmid.usage=\uC0AC\uC6A9\uBC95: {0} <options> \n\n\uC5EC\uAE30\uC11C <options>\uB294 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4.\n  -port <port>        rmid\uAC00 \uC0AC\uC6A9\uD560 \uD3EC\uD2B8\uB97C \uC9C0\uC815\uD569\uB2C8\uB2E4.\n  -log <directory>    rmid\uAC00 \uB85C\uADF8\uB97C \uAE30\uB85D\uD560 \uB514\uB809\uD1A0\uB9AC\uB97C \uC9C0\uC815\uD569\uB2C8\uB2E4.\n  -stop               \uC9C0\uC815\uB41C \uD3EC\uD2B8\uC5D0 \uB300\uD574 rmid\uC758 \uD604\uC7AC \uD638\uCD9C\uC744 \uC815\uC9C0\uD569\uB2C8\uB2E4.\n  -C<runtime flag>    \uAC01\uAC01\uC758 \uD558\uC704 \uD504\uB85C\uC138\uC2A4(\uD65C\uC131\uD654 \uADF8\uB8F9)\uC5D0 \uC778\uC218\uB97C \uC804\uB2EC\uD569\uB2C8\uB2E4.\n  -J<runtime flag>    Java \uC778\uD130\uD504\uB9AC\uD130\uC5D0 \uC778\uC218\uB97C \uC804\uB2EC\uD569\uB2C8\uB2E4.\n
 # This means "The currently running activation daemon has been shut down,
 # and is about to exit".
-rmid.daemon.shutdown=\
-	\ud65c\uc131 \ub370\ubaac \uc167\ub2e4\uc6b4
+rmid.daemon.shutdown=\uD65C\uC131 \uB370\uBAAC \uC885\uB8CC
+
+# "rmid" should not be translated
+rmid.restart.group.warning=\nrmid: (\uACBD\uACE0) \uADF8\uB8F9 \uC7AC\uC2DC\uC791\uC73C\uB85C \uC778\uD574 \uBC1C\uC0DD\uD55C \uC624\uB958:
 
 # "rmid" should not be translated
-rmid.restart.group.warning=\
-\nrmid: (\uacbd\uace0) \uadf8\ub8f9 \ub2e4\uc2dc \uc2dc\uc791\uc73c\ub85c \uc778\ud574 \ub2e4\uc74c \uc624\ub958\uac00 \ubc1c\uc0dd\ud568:
-
-# "rmid" should not be translated
-rmid.restart.service.warning=\
-\nrmid: (\uacbd\uace0) \uc11c\ube44\uc2a4 \ub2e4\uc2dc \uc2dc\uc791\uc73c\ub85c \uc778\ud574 \ub2e4\uc74c \uc624\ub958\uac00 \ubc1c\uc0dd\ud568:
+rmid.restart.service.warning=\nrmid: (\uACBD\uACE0) \uC11C\uBE44\uC2A4 \uC7AC\uC2DC\uC791\uC73C\uB85C \uC778\uD574 \uBC1C\uC0DD\uD55C \uC624\uB958:
 
 # "rmid" should not be translated
-rmid.log.update.warning=\
-\nrmid: (\uacbd\uace0) \ub85c\uadf8 \uc5c5\ub370\uc774\ud2b8\ub85c \uc778\ud574 \ub2e4\uc74c \uc624\ub958\uac00 \ubc1c\uc0dd\ud568:
+rmid.log.update.warning=\nrmid: (\uACBD\uACE0) \uB85C\uADF8 \uAC31\uC2E0\uC73C\uB85C \uC778\uD574 \uBC1C\uC0DD\uD55C \uC624\uB958:
 
 # "rmid" should not be translated
-rmid.log.snapshot.warning=\
-\nrmid: (\uc2ec\uac01) \ub85c\uadf8 \uc2a4\ub0c5\uc0f7\uc73c\ub85c \uc778\ud574 \ub2e4\uc74c \uc624\ub958\uac00 \ubc1c\uc0dd\ud568:
+rmid.log.snapshot.warning=\nrmid: (\uC2EC\uAC01) \uB85C\uADF8 \uC2A4\uB0C5\uC0F7\uC73C\uB85C \uC778\uD574 \uBC1C\uC0DD\uD55C \uC624\uB958:
 
 # "rmid" should not be translated
-rmid.log.recover.warning=\
-\nrmid: (\uacbd\uace0) {0}: \ubcf5\uad6c\ud558\ub294 \ub3d9\uc548 \ub808\ucf54\ub4dc \uae30\ub85d \uac74\ub108\ub6f0\uae30:
+rmid.log.recover.warning=\nrmid: (\uACBD\uACE0) {0}: \uBCF5\uAD6C\uD558\uB294 \uB3D9\uC548 \uB808\uCF54\uB4DC \uAE30\uB85D\uC744 \uAC74\uB108 \uB6F0\uB294 \uC911:
--- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_pt_BR.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_pt_BR.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2005, 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
@@ -25,72 +25,72 @@
 #
 
 # "rmid", inetd", and "wait" should not be translated.
-rmid.syntax.exec.invalid=rmid foi iniciado de inetd com um status inv\u00e1lido (deve  estar em espera)
+rmid.syntax.exec.invalid=rmid foi acionado a partir de inetd com um status inv\u00E1lido (deve ser wait)
 
 # "rmid" and "inetd" should not be translated.
-rmid.syntax.port.badarg=a porta n\u00e3o pode ser especificada se rmid for iniciado de inetd
+rmid.syntax.port.badarg=a porta n\u00E3o poder\u00E1 ser especificada se rmid for acionado a partir de inetd
 
 # "port" here refers to a TCP port for the server to listen on.
-rmid.syntax.port.badnumber=a porta n\u00e3o \u00e9 um n\u00famero
+rmid.syntax.port.badnumber=a porta n\u00E3o \u00E9 um n\u00FAmero
 
 # "-port" should not be translated, because it's part of command syntax.
-rmid.syntax.port.missing=a op\u00e7\u00e3o -port requer argumento
+rmid.syntax.port.missing=a op\u00E7\u00E3o -port requer um argumento
 
 # "-log" should not be translated, because it's part of command syntax.
-rmid.syntax.log.missing=a op\u00e7\u00e3o -log requer argumento
+rmid.syntax.log.missing=a op\u00E7\u00E3o -log requer um argumento
 
 # "-log" should not be translated, because it's part of command syntax.
-rmid.syntax.log.required=op\u00e7\u00e3o -log necess\u00e1ria
+rmid.syntax.log.required=op\u00E7\u00E3o -log necess\u00E1ria
 
 # {0} = the (string) illegal argument in question
-rmid.syntax.illegal.option=op\u00e7\u00e3o ilegal: {0}
+rmid.syntax.illegal.option=op\u00E7\u00E3o inv\u00E1lida: {0}
 
 # {0} = the (string) reason text that came with a thrown exception
 # "Activation.main" should not be translated, because it's a codepoint
-rmid.unexpected.exception=Activation.main: ocorreu uma exce\u00e7\u00e3o: {0}
+rmid.unexpected.exception=Activation.main: ocorreu uma exce\u00E7\u00E3o: {0}
 
 # "java.home" should not be translated, because it's a property name
 # "ActivatorImpl" should not be translated, because it's a codepoint
-rmid.unfound.java.home.property=ActivatorImpl: n\u00e3o \u00e9 poss\u00edvel localizar java.home
+rmid.unfound.java.home.property=ActivatorImpl: n\u00E3o \u00E9 poss\u00EDvel localizar java.home
 
 # "rmid" should not be translated
-rmid.inherited.channel.info=inicializa\u00e7\u00e3o de rmid com canal legado
+rmid.inherited.channel.info=inicializa\u00E7\u00E3o de rmid com canal herdado
 
 # "Activation.main" should not be translated, because it's a codepoint
-rmid.exec.policy.invalid=Activation.main: classe de pol\u00edtica de execu\u00e7\u00e3o inv\u00e1lida
+rmid.exec.policy.invalid=Activation.main: classe de pol\u00EDtica de execu\u00E7\u00E3o inv\u00E1lida
 
 # "rmid" should not be translated
-rmid.exec.policy.exception=rmid: a tentativa de obter a pol\u00edtica de execu\u00e7\u00e3o gera:
+rmid.exec.policy.exception=rmid: a tentativa de obter a pol\u00EDtica de execu\u00E7\u00E3o gera:
 
 # "rmid" should not be translated
 rmid.exec.command=rmid: debugExec: executando "{0}"
 
 # "rmid" should not be translated
-rmid.group.inactive=rmid: grupo de ativa\u00e7\u00e3o inativo: {0}
+rmid.group.inactive=rmid: grupo de ativa\u00E7\u00E3o inativo: {0}
 
 # "Activation.main", "sun.rmi.activation.execPolicy", "ExecPermission" and 
 # "ExecOptionPermission" should not be translated, since they refer to
 # class/permission names.
-rmid.exec.perms.inadequate=Activation.main: aviso: propriedade do sistema sun.rmi.activation.execPolicy\nn\u00e3o registrada e nenhuma ExecPermission/ExecOptionPermission\nconcedida; as tentativas de ativa\u00e7\u00e3o seguintes podem falhar devido a verifica\u00e7\u00f5es mal sucedidas da permiss\u00e3o\nExecPermission/ExecOptionPermission.  Para obter\ndocumenta\u00e7\u00e3o sobre como configurar a seguran\u00e7a rmid, conculte:\n\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n
+rmid.exec.perms.inadequate=Activation.main: advert\u00EAncia: propriedade do sistema sun.rmi.activation.execPolicy\nn\u00E3o registrada e nenhuma ExecPermission/ExecOptionPermission\nconcedida; as tentativas de ativa\u00E7\u00E3o seguintes podem falhar devido a verifica\u00E7\u00F5es malsucedidas da permiss\u00E3o\nExecPermission/ExecOptionPermission. Para obter\ndocumenta\u00E7\u00E3o sobre como configurar a seguran\u00E7a rmid, consulte:\n\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n
 
 # "rmid", "-port", "-log", "-stop", "-C" and "-J" should not be translated,
 # because they are syntax
-rmid.usage=Uso: {0} <options>\n\nem que <options> inclui:\n  -port <port>        especifica a porta que rmid usar\u00e1\n  -log <directory>    especifica o diret\u00f3rio no qual o rmid grava o registro\n  -stop               para a chamada atual de rmid (para a porta especificada)\n  -C<runtime flag>    passa o argumento para cada processo filho (grupo de ativa\u00e7\u00e3o)\n  -J<runtime flag>    passa o argumento para o int\u00e9rprete de java\n
+rmid.usage=Uso: {0} <op\u00E7\u00F5es>\n\nem que <op\u00E7\u00F5es> inclui:\n  -port <porta>        especifica a porta que rmid usar\u00E1\n  -log <diret\u00F3rio>    especifica o diret\u00F3rio no qual o rmid grava o log\n  -stop               para a chamada atual de rmid (para a porta especificada)\n  -C<flag de runtime>    especifica o argumento para cada processo filho (grupo de ativa\u00E7\u00E3o)\n  -J<flag de runtime>    especifica o argumento para o int\u00E9rprete de java\n
 # This means "The currently running activation daemon has been shut down,
 # and is about to exit".
-rmid.daemon.shutdown=encerramento do daemon de ativa\u00e7\u00e3o
+rmid.daemon.shutdown=shutdown do daemon de ativa\u00E7\u00E3o
 
 # "rmid" should not be translated
-rmid.restart.group.warning=\nrmid: (AVISO) reiniciar grupo gera:
+rmid.restart.group.warning=\nrmid: (ADVERT\u00CANCIA) a reinicializa\u00E7\u00E3o do grupo gera:
 
 # "rmid" should not be translated
-rmid.restart.service.warning=\nrmid: (AVISO) reiniciar servi\u00e7o gera:
+rmid.restart.service.warning=\nrmid: (ADVERT\u00CANCIA) a reinicializa\u00E7\u00E3o do servi\u00E7o gera:
 
 # "rmid" should not be translated
-rmid.log.update.warning=\nrmid: (AVISO) registrar atualiza\u00e7\u00e3o gera:
+rmid.log.update.warning=\nrmid: (ADVERT\u00CANCIA) o registro da atualiza\u00E7\u00E3o gera:
 
 # "rmid" should not be translated
-rmid.log.snapshot.warning=\nrmid: (GRAVE) registrar instant\u00e2neo gera:
+rmid.log.snapshot.warning=\nrmid: (GRAVE) o registro do snapshot gera:
 
 # "rmid" should not be translated
-rmid.log.recover.warning=\nrmid: (AVISO) {0}: ignorando registro durante a recupera\u00e7\u00e3o:
+rmid.log.recover.warning=\nrmid: (ADVERT\u00CANCIA) {0}: ignorando registro de log durante a recupera\u00E7\u00E3o:
--- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_sv.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_sv.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2005, 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
@@ -25,109 +25,72 @@
 #
 
 # "rmid", inetd", and "wait" should not be translated.
-rmid.syntax.exec.invalid=\
-    rmid startades fr\u00e5n inetd med ogiltig status (m\u00e5ste vara wait)
+rmid.syntax.exec.invalid=rmid startades fr\u00E5n inetd med ogiltig status (m\u00E5ste vara wait)
 
 # "rmid" and "inetd" should not be translated.
-rmid.syntax.port.badarg=\
-    port kan inte anges om rmid startas fr\u00e5n inetd
+rmid.syntax.port.badarg=port kan inte anges om rmid startas fr\u00E5n inetd
 
 # "port" here refers to a TCP port for the server to listen on.
-rmid.syntax.port.badnumber=\
-    port \u00e4r inte ett nummer
+rmid.syntax.port.badnumber=port \u00E4r inte ett tal
 
 # "-port" should not be translated, because it's part of command syntax.
-rmid.syntax.port.missing=\
-    alternativet -port kr\u00e4ver argument
+rmid.syntax.port.missing=alternativet -port kr\u00E4ver argument
 
 # "-log" should not be translated, because it's part of command syntax.
-rmid.syntax.log.missing=\
-    alternativet -log kr\u00e4ver argument
+rmid.syntax.log.missing=alternativet -log kr\u00E4ver argument
 
 # "-log" should not be translated, because it's part of command syntax.
-rmid.syntax.log.required=\
-    alternativet -log kr\u00e4vs
+rmid.syntax.log.required=alternativet -log kr\u00E4vs
 
 # {0} = the (string) illegal argument in question
-rmid.syntax.illegal.option=\
-ogiltigt alternativ: {0}
+rmid.syntax.illegal.option=otill\u00E5tet alternativ: {0}
 
 # {0} = the (string) reason text that came with a thrown exception
 # "Activation.main" should not be translated, because it's a codepoint
-rmid.unexpected.exception=\
-	Activation.main: ett undantagsavbrott har intr\u00e4ffat: {0}
+rmid.unexpected.exception=Activation.main: ett undantag uppstod: {0}
 
 # "java.home" should not be translated, because it's a property name
 # "ActivatorImpl" should not be translated, because it's a codepoint
-rmid.unfound.java.home.property=\
-	ActivatorImpl: det g\u00e5r inte att hitta java.home
+rmid.unfound.java.home.property=ActivatorImpl: hittar inte java.home
 
 # "rmid" should not be translated
-rmid.inherited.channel.info=\
-    uppstart av rmid med \u00e4rvd kanal
+rmid.inherited.channel.info=start av rmid med \u00E4rvd kanal
 
 # "Activation.main" should not be translated, because it's a codepoint
-rmid.exec.policy.invalid=\
-	Activation.main: ogiltig exec policy-klass
+rmid.exec.policy.invalid=Activation.main: ogiltig exec policy-klass
 
 # "rmid" should not be translated
-rmid.exec.policy.exception=\
-	rmid: f\u00f6rs\u00f6k att h\u00e4mta throws f\u00f6r exec-policy:
+rmid.exec.policy.exception=rmid: f\u00F6rs\u00F6k att h\u00E4mta throws f\u00F6r exec-policy:
 
 # "rmid" should not be translated
-rmid.exec.command=\
-	rmid: debugExec: k\u00f6r "{0}"
+rmid.exec.command=rmid: debugExec: k\u00F6r "{0}"
 
 # "rmid" should not be translated
-rmid.group.inactive=\
-	rmid: aktiveringsgruppen \u00e4r inaktiv: {0}
+rmid.group.inactive=rmid: aktiveringsgruppen \u00E4r inaktiv: {0}
 
 # "Activation.main", "sun.rmi.activation.execPolicy", "ExecPermission" and 
 # "ExecOptionPermission" should not be translated, since they refer to
 # class/permission names.
-rmid.exec.perms.inadequate=\
-    Activation.main: varning: systemegenskapen sun.rmi.activation.execPolicy\n\
-        \u00e4r inte specificerad och inga ExecPermissions/ExecOptionPermissions\n\
-        har utdelats. Efterf\u00f6ljande aktiveringsf\u00f6rs\u00f6k kan misslyckas p\u00e5 grund av misslyckade\n\
-    kontroller av ExecPermission/ExecOptionPermission-beh\u00f6righet.  Mer\n\
-    information om hur du konfigurerar rmid-s\u00e4kerhet finns i:\n\
-\n\
-        http://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\n\
-        http://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n
+rmid.exec.perms.inadequate=Activation.main: varning: systemegenskapen sun.rmi.activation.execPolicy\n\u00E4r inte specificerad och inga ExecPermissions/ExecOptionPermissions\nhar utdelats. Efterf\u00F6ljande aktiveringsf\u00F6rs\u00F6k kanske inte utf\u00F6rs p\u00E5 grund av ej utf\u00F6rda\nkontroller av ExecPermission/ExecOptionPermission-beh\u00F6righet.  Mer\ninformation om hur du konfigurerar rmid-s\u00E4kerhet finns i:\n\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n
 
 # "rmid", "-port", "-log", "-stop", "-C" and "-J" should not be translated,
 # because they are syntax
-rmid.usage=G\u00f6r s\u00e5 h\u00e4r: {0} <alternativ>\
-\n\
-\nd\u00e4r <alternativ> omfattar:\
-\n  -port <port>        Ange porten f\u00f6r rmid\
-\n  -log <katalog>      Ange katalogen d\u00e4r rmid ska spara loggen\
-\n  -stop               Stoppa p\u00e5g\u00e5ende rmid-anrop (f\u00f6r angiven port)\
-\n  -C<k\u00f6rtidsflagga>   Skicka argumentet till varje underordnad process (aktiveringsgrupp)\
-\n  -J<k\u00f6rtidsflagga>   Skicka argumentet till java-tolken\
-\n\
-
+rmid.usage=Syntax: {0} <alternativ>\n\nd\u00E4r <alternativ> inkluderar:\n  -port <port>        Ange porten f\u00F6r rmid\n  -log <katalog>      Ange katalogen d\u00E4r rmid ska spara loggen\n  -stop               Stoppa p\u00E5g\u00E5ende rmid-anrop (f\u00F6r angiven port)\n  -C<k\u00F6rningsflagga>   Skicka argumentet till varje underordnad process (aktiveringsgrupp)\n  -J<k\u00F6rningsflagga>   Skicka argumentet till Javatolken\n
 # This means "The currently running activation daemon has been shut down,
 # and is about to exit".
-rmid.daemon.shutdown=\
-	aktiveringsdemonen avslutas
+rmid.daemon.shutdown=aktiveringsdemonen avslutas
+
+# "rmid" should not be translated
+rmid.restart.group.warning=\nrmid: (VARNING) starta om gruppkast:
 
 # "rmid" should not be translated
-rmid.restart.group.warning=\
-\nrmid: (VARNING) starta om grupp-throws:
-
-# "rmid" should not be translated
-rmid.restart.service.warning=\
-\nrmid: (VARNING) starta om service-throws:
+rmid.restart.service.warning=\nrmid: (VARNING) starta om tj\u00E4nstekast:
 
 # "rmid" should not be translated
-rmid.log.update.warning=\
-\nrmid: (VARNING) logga uppdaterings-throws:
+rmid.log.update.warning=\nrmid: (VARNING) logga uppdateringskast:
 
 # "rmid" should not be translated
-rmid.log.snapshot.warning=\
-\nrmid: (ALLVARLIGT) logga \u00f6gonblicks-throws:
+rmid.log.snapshot.warning=\nrmid: (ALLVARLIGT) logga \u00F6gonblickskast:
 
 # "rmid" should not be translated
-rmid.log.recover.warning=\
-\nrmid: (VARNING) {0}: hoppa \u00f6ver loggpost under \u00e5terst\u00e4llning:
+rmid.log.recover.warning=\nrmid: (VARNING) {0}: hoppar \u00F6ver loggpost under \u00E5terst\u00E4llning:
--- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_zh_CN.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_zh_CN.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2005, 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
@@ -25,109 +25,72 @@
 #
 
 # "rmid", inetd", and "wait" should not be translated.
-rmid.syntax.exec.invalid=\
-        rmid \u5df2\u4ece inetd \u542f\u52a8\uff0c\u4e14\u72b6\u6001\u65e0\u6548 (\u5fc5\u987b\u7b49\u5f85)
+rmid.syntax.exec.invalid=rmid \u5DF2\u4ECE inetd \u542F\u52A8, \u4E14\u72B6\u6001\u65E0\u6548 (\u5FC5\u987B\u7B49\u5F85)
 
 # "rmid" and "inetd" should not be translated.
-rmid.syntax.port.badarg=\
-        \u5982\u679c rmid \u4ece inetd \u542f\u52a8\uff0c\u5219\u65e0\u6cd5\u6307\u5b9a\u7aef\u53e3
+rmid.syntax.port.badarg=\u5982\u679C rmid \u4ECE inetd \u542F\u52A8, \u5219\u65E0\u6CD5\u6307\u5B9A\u7AEF\u53E3
 
 # "port" here refers to a TCP port for the server to listen on.
-rmid.syntax.port.badnumber=\
-	\u7aef\u53e3\u4e0d\u662f\u4e00\u4e2a\u6570\u5b57
+rmid.syntax.port.badnumber=\u7AEF\u53E3\u4E0D\u662F\u4E00\u4E2A\u6570\u5B57
 
 # "-port" should not be translated, because it's part of command syntax.
-rmid.syntax.port.missing=\
-	-port \u9009\u9879\u9700\u8981\u53c2\u6570
+rmid.syntax.port.missing=-port \u9009\u9879\u9700\u8981\u53C2\u6570
 
 # "-log" should not be translated, because it's part of command syntax.
-rmid.syntax.log.missing=\
-	-log \u9009\u9879\u9700\u8981\u53c2\u6570
+rmid.syntax.log.missing=-log \u9009\u9879\u9700\u8981\u53C2\u6570
 
 # "-log" should not be translated, because it's part of command syntax.
-rmid.syntax.log.required=\
-        \u9700\u8981 -log \u9009\u9879
+rmid.syntax.log.required=\u9700\u8981 -log \u9009\u9879
 
 # {0} = the (string) illegal argument in question
-rmid.syntax.illegal.option=\
-	\u975e\u6cd5\u9009\u9879\uff1a{0}
+rmid.syntax.illegal.option=\u975E\u6CD5\u9009\u9879: {0}
 
 # {0} = the (string) reason text that came with a thrown exception
 # "Activation.main" should not be translated, because it's a codepoint
-rmid.unexpected.exception=\
-	Activation.main: \u51fa\u73b0\u5f02\u5e38\uff1a{0}
+rmid.unexpected.exception=Activation.main: \u51FA\u73B0\u5F02\u5E38\u9519\u8BEF: {0}
 
 # "java.home" should not be translated, because it's a property name
 # "ActivatorImpl" should not be translated, because it's a codepoint
-rmid.unfound.java.home.property=\
-	ActivatorImpl: \u65e0\u6cd5\u5b9a\u4f4d java.home
+rmid.unfound.java.home.property=ActivatorImpl: \u627E\u4E0D\u5230 java.home
 
 # "rmid" should not be translated
-rmid.inherited.channel.info=\
-        rmid \u901a\u8fc7\u7ee7\u627f\u7684\u4fe1\u9053\u542f\u52a8
+rmid.inherited.channel.info=rmid \u901A\u8FC7\u7EE7\u627F\u7684\u901A\u9053\u542F\u52A8
 
 # "Activation.main" should not be translated, because it's a codepoint
-rmid.exec.policy.invalid=\
-	Activation.main: \u65e0\u6548\u7684\u53ef\u6267\u884c policy \u7c7b
+rmid.exec.policy.invalid=Activation.main: \u65E0\u6548\u7684\u53EF\u6267\u884C policy \u7C7B
 
 # "rmid" should not be translated
-rmid.exec.policy.exception=\
-        rmid:  \u8bd5\u56fe\u83b7\u53d6\u53ef\u6267\u884c\u7b56\u7565\u629b\u51fa:
+rmid.exec.policy.exception=rmid: \u5C1D\u8BD5\u83B7\u53D6\u6267\u884C\u7B56\u7565\u629B\u51FA:
 
 # "rmid" should not be translated
-rmid.exec.command=\
-        rmid:  debugExec:  \u6b63\u5728\u8fd0\u884c\u201c{0}\u201d
+rmid.exec.command=rmid: debugExec: \u6B63\u5728\u8FD0\u884C "{0}"
 
 # "rmid" should not be translated
-rmid.group.inactive=\
-	rmid: \u6fc0\u6d3b\u7ec4\u65e0\u6548: {0}
+rmid.group.inactive=rmid: \u6FC0\u6D3B\u7EC4\u65E0\u6548: {0}
 
 # "Activation.main", "sun.rmi.activation.execPolicy", "ExecPermission" and 
 # "ExecOptionPermission" should not be translated, since they refer to
 # class/permission names.
-rmid.exec.perms.inadequate=\
-	Activation.main: \u8b66\u544a\uff1a sun.rmi.activation.execPolicy \u7cfb\u7edf\n\
-        \u5c5e\u6027\u672a\u88ab\u6307\u5b9a\u4e14 ExecPermissions/ExecOptionPermissions\n\
-        \u5747\u672a\u88ab\u6388\u6743\u3002\u968f\u540e\u7684\u6fc0\u6d3b\u5c1d\u8bd5\u5931\u8d25\uff0c\u539f\u56e0\u662f\u5bf9\n\
-	ExecPermission/ExecOptionPermission \u7684\u6743\u9650\u68c0\u67e5\u5931\u8d25\u3002 \u6709\u5173\u5982\u4f55\n\
-	\u914d\u7f6e rmid \u5b89\u5168\u6027\u7684\u6587\u6863\u8bf4\u660e\uff0c\u8bf7\u53c2\u9605\uff1a \n\
-\n\
-        http://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\n\
-        http://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n
+rmid.exec.perms.inadequate=Activation.main: \u8B66\u544A: sun.rmi.activation.execPolicy \u7CFB\u7EDF\n\u5C5E\u6027\u672A\u88AB\u6307\u5B9A\u4E14 ExecPermissions/ExecOptionPermissions\n\u5747\u672A\u88AB\u6388\u6743\u3002\u968F\u540E\u7684\u6FC0\u6D3B\u5C1D\u8BD5\u5931\u8D25, \u539F\u56E0\u662F\u5BF9\nExecPermission/ExecOptionPermission \u7684\u6743\u9650\u68C0\u67E5\u5931\u8D25\u3002\u6709\u5173\u5982\u4F55\n\u914D\u7F6E rmid \u5B89\u5168\u6027\u7684\u6587\u6863\u8BF4\u660E, \u8BF7\u53C2\u9605: \n\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n
 
 # "rmid", "-port", "-log", "-stop", "-C" and "-J" should not be translated,
 # because they are syntax
-rmid.usage=\u7528\u6cd5\uff1a{0} <option>\
-\n\
-\n\u5176\u4e2d\uff0c<option> \u5305\u62ec:\
-\n  -port <option>        \u6307\u5b9a\u4f9b rmid \u4f7f\u7528\u7684\u7aef\u53e3\
-\n  -log <directory>    \u6307\u5b9a rmid \u5c06\u65e5\u5fd7\u5199\u5165\u7684\u76ee\u5f55\
-\n  -stop               \u505c\u6b62\u5f53\u524d\u7684 rmid \u8c03\u7528\uff08\u5bf9\u6307\u5b9a\u7aef\u53e3\uff09\
-\n  -C<runtime \u6807\u8bb0>    \u5411\u6bcf\u4e2a\u5b50\u8fdb\u7a0b\u4f20\u9012\u53c2\u6570\uff08\u6fc0\u6d3b\u7ec4\uff09\
-\n  -J<runtime \u6807\u8bb0>    \u5411 java \u89e3\u91ca\u7a0b\u5e8f\u4f20\u9012\u53c2\u6570\
-\n\
-
+rmid.usage=\u7528\u6CD5: {0} <options>\n\n\u5176\u4E2D, <options> \u5305\u62EC:\n  -port <port>        \u6307\u5B9A\u4F9B rmid \u4F7F\u7528\u7684\u7AEF\u53E3\n  -log <directory>    \u6307\u5B9A rmid \u5C06\u65E5\u5FD7\u5199\u5165\u7684\u76EE\u5F55\n  -stop               \u505C\u6B62\u5F53\u524D\u7684 rmid \u8C03\u7528 (\u5BF9\u6307\u5B9A\u7AEF\u53E3)\n  -C<runtime flag>    \u5411\u6BCF\u4E2A\u5B50\u8FDB\u7A0B\u4F20\u9012\u53C2\u6570 (\u6FC0\u6D3B\u7EC4)\n  -J<runtime flag>    \u5411 java \u89E3\u91CA\u5668\u4F20\u9012\u53C2\u6570\n
 # This means "The currently running activation daemon has been shut down,
 # and is about to exit".
-rmid.daemon.shutdown=\
-	\u6fc0\u6d3b\u7aef\u53e3\u76d1\u63a7\u7a0b\u5e8f\u5173\u95ed
+rmid.daemon.shutdown=\u6FC0\u6D3B\u5B88\u62A4\u7A0B\u5E8F\u5DF2\u5173\u95ED
+
+# "rmid" should not be translated
+rmid.restart.group.warning=\nrmid: (\u8B66\u544A) \u91CD\u65B0\u542F\u52A8\u7EC4\u629B\u51FA:
 
 # "rmid" should not be translated
-rmid.restart.group.warning=\
-\nrmid:  (\u8b66\u544a) \u91cd\u65b0\u542f\u52a8\u7ec4\u629b\u51fa:
-
-# "rmid" should not be translated
-rmid.restart.service.warning=\
-\nrmid:  (\u8b66\u544a) \u91cd\u65b0\u542f\u52a8\u670d\u52a1\u629b\u51fa:
+rmid.restart.service.warning=\nrmid: (\u8B66\u544A) \u91CD\u65B0\u542F\u52A8\u670D\u52A1\u629B\u51FA:
 
 # "rmid" should not be translated
-rmid.log.update.warning=\
-\nrmid:  (\u8b66\u544a) \u65e5\u5fd7\u66f4\u65b0\u629b\u51fa:
+rmid.log.update.warning=\nrmid: (\u8B66\u544A) \u65E5\u5FD7\u66F4\u65B0\u629B\u51FA:
 
 # "rmid" should not be translated
-rmid.log.snapshot.warning=\
-\nrmid:  (\u4e25\u91cd\u8b66\u544a) \u65e5\u5fd7\u5feb\u7167\u629b\u51fa:
+rmid.log.snapshot.warning=\nrmid: (\u4E25\u91CD) \u65E5\u5FD7\u5FEB\u7167\u629B\u51FA:
 
 # "rmid" should not be translated
-rmid.log.recover.warning=\
-\nrmid:  (\u8b66\u544a) {0}:  \u6062\u590d\u671f\u95f4\u8df3\u8fc7\u65e5\u5fd7\u8bb0\u5f55:
+rmid.log.recover.warning=\nrmid: (\u8B66\u544A) {0}:  \u6062\u590D\u671F\u95F4\u8DF3\u8FC7\u65E5\u5FD7\u8BB0\u5F55:
--- a/jdk/src/share/classes/sun/rmi/server/resources/rmid_zh_TW.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/rmi/server/resources/rmid_zh_TW.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2005, 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
@@ -25,108 +25,72 @@
 #
 
 # "rmid", inetd", and "wait" should not be translated.
-rmid.syntax.exec.invalid=\
-        rmid \u5df2\u5f9e inetd \u555f\u52d5\uff0c\u4e14\u72c0\u614b\u7121\u6548 (\u5fc5\u9808\u662f wait)
+rmid.syntax.exec.invalid=rmid \u5DF2\u5F9E inetd \u555F\u52D5\uFF0C\u4F46\u72C0\u614B\u7121\u6548 (\u5FC5\u9808\u662F wait)
 
 # "rmid" and "inetd" should not be translated.
-rmid.syntax.port.badarg=\
-        \u5982\u679c rmid \u5f9e inetd \u555f\u52d5\uff0c\u5247\u7121\u6cd5\u6307\u5b9a\u9023\u63a5\u57e0
+rmid.syntax.port.badarg=\u5982\u679C rmid \u5F9E inetd \u555F\u52D5\uFF0C\u5247\u7121\u6CD5\u6307\u5B9A\u9023\u63A5\u57E0
 
 # "port" here refers to a TCP port for the server to listen on.
-rmid.syntax.port.badnumber=\
-	port \u4e0d\u662f\u4e00\u500b\u6578\u5b57
+rmid.syntax.port.badnumber=port \u4E0D\u662F\u4E00\u500B\u6578\u5B57
 
 # "-port" should not be translated, because it's part of command syntax.
-rmid.syntax.port.missing=\
-	-port \u9078\u9805\u9700\u8981\u5f15\u6578
+rmid.syntax.port.missing=-port \u9078\u9805\u9700\u8981\u5F15\u6578
 
 # "-log" should not be translated, because it's part of command syntax.
-rmid.syntax.log.missing=\
-	-log \u9078\u9805\u9700\u8981\u5f15\u6578
+rmid.syntax.log.missing=-log \u9078\u9805\u9700\u8981\u5F15\u6578
 
 # "-log" should not be translated, because it's part of command syntax.
-rmid.syntax.log.required=\
-        -log \u9078\u9805\u662f\u5fc5\u9700\u7684
+rmid.syntax.log.required=-log \u9078\u9805\u662F\u5FC5\u9700\u7684
 
 # {0} = the (string) illegal argument in question
-rmid.syntax.illegal.option=\
-	\u975e\u6cd5\u9078\u9805\uff1a{0}
+rmid.syntax.illegal.option=\u7121\u6548\u7684\u9078\u9805: {0}
 
 # {0} = the (string) reason text that came with a thrown exception
 # "Activation.main" should not be translated, because it's a codepoint
-rmid.unexpected.exception=\
-	Activation.main: \u767c\u751f\u7570\u5e38\u72c0\u6cc1\ufe55{0}
+rmid.unexpected.exception=Activation.main: \u767C\u751F\u7570\u5E38\u72C0\u6CC1: {0}
 
 # "java.home" should not be translated, because it's a property name
 # "ActivatorImpl" should not be translated, because it's a codepoint
-rmid.unfound.java.home.property=\
-	ActivatorImpl: \u627e\u4e0d\u5230 java.home \u7684\u6240\u5728
-
-# "rmid" should not be translated
-rmid.inherited.channel.info=\
-        rmid \u4f7f\u7528\u7e7c\u627f\u7684\u901a\u9053\u555f\u52d5
-
-# "Activation.main" should not be translated, because it's a codepoint
-rmid.exec.policy.invalid=\Activation.main: \u7121\u6548\u7684\u57f7\u884c\u7b56\u7565\u985e\u5225
+rmid.unfound.java.home.property=ActivatorImpl: \u627E\u4E0D\u5230 java.home \u7684\u6240\u5728
 
 # "rmid" should not be translated
-rmid.exec.policy.exception=\
-	rmid: \u5617\u8a66\u53d6\u5f97\u57f7\u884c\u7b56\u7565\u62cb\u68c4\uff1a
+rmid.inherited.channel.info=rmid \u4F7F\u7528\u7E7C\u627F\u7684\u901A\u9053\u555F\u52D5
+
+# "Activation.main" should not be translated, because it's a codepoint
+rmid.exec.policy.invalid=Activation.main: \u7121\u6548\u7684\u57F7\u884C\u539F\u5247\u985E\u5225
 
 # "rmid" should not be translated
-rmid.exec.command=\
-	rmid: debugExec\uff1a\u57f7\u884c "{0}"
+rmid.exec.policy.exception=rmid: \u5617\u8A66\u53D6\u5F97\u57F7\u884C\u539F\u5247\u62CB\u68C4: 
 
 # "rmid" should not be translated
-rmid.group.inactive=\
-	rmid:\u555f\u52d5\u7fa4\u7d44\u672a\u5728\u4f7f\u7528\u4e2d\ufe30{0}
+rmid.exec.command=rmid: debugExec: \u57F7\u884C "{0}"
+
+# "rmid" should not be translated
+rmid.group.inactive=rmid: \u555F\u52D5\u7FA4\u7D44\u672A\u5728\u4F7F\u7528\u4E2D: {0}
 
 # "Activation.main", "sun.rmi.activation.execPolicy", "ExecPermission" and 
 # "ExecOptionPermission" should not be translated, since they refer to
 # class/permission names.
-rmid.exec.perms.inadequate=\
-	Activation.main: \u8b66\u544a: sun.rmi.activation.execPolicy \u7cfb\u7d71\n\
-       \u5c6c\u6027\u672a\u6307\u5b9a\uff0c\u4e26\u4e14\u672a\u6388\u4e88 ExecPermissions/ExecOptionPermissions\uff1b\n\
-       \u5f8c\u7e8c\u7684\u555f\u52d5\u5617\u8a66\u53ef\u80fd\u6703\u56e0\u70ba\u672a\u6210\u529f\u7684\n\
-	ExecPermission/ExecOptionPermission \u8a31\u53ef\u6b0a\u6aa2\u67e5\u800c\u5931\u6557\u3002\u5982\u9700\n\
-	\u95dc\u65bc\u5982\u4f55\u914d\u7f6e rmid \u5b89\u5168\u7684\u8aaa\u660e\u6587\u4ef6\uff0c\u8acb\u53c3\u8003\uff1a\n\
-\n\
-        http://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\n\
-        http://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n
+rmid.exec.perms.inadequate=Activation.main: \u8B66\u544A: sun.rmi.activation.execPolicy \u7CFB\u7D71\n\u5C6C\u6027\u672A\u6307\u5B9A\uFF0C\u4E26\u4E14\u672A\u6388\u4E88 ExecPermissions/ExecOptionPermissions; \n\u5F8C\u7E8C\u7684\u555F\u52D5\u5617\u8A66\u53EF\u80FD\u6703\u56E0\u70BA\u672A\u6210\u529F\u7684\nExecPermission/ExecOptionPermission \u6B0A\u9650\u6AA2\u67E5\u800C\u5931\u6557\u3002\u5982\u9700\n\u95DC\u65BC\u5982\u4F55\u914D\u7F6E rmid \u5B89\u5168\u7684\u8AAA\u660E\u6587\u4EF6\uFF0C\u8ACB\u53C3\u8003:\n\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n
 
 # "rmid", "-port", "-log", "-stop", "-C" and "-J" should not be translated,
 # because they are syntax
-rmid.usage=\u7528\u6cd5: {0} <options>\
-\n\
-\n\u5176\u4e2d <options> \u5305\u62ec\uff1a\
-\n  -port <port>        \u6307\u5b9a\u4f9b rmid \u4f7f\u7528\u7684\u9023\u63a5\u57e0\
-\n  -log <directory>    \u6307\u5b9a\u4f9b rmid \u5beb\u5165\u65e5\u8a8c\u7684\u76ee\u9304\
-\n  -stop               \u505c\u6b62\u76ee\u524d rmid \u7684\u547c\u53eb (\u91dd\u5c0d\u6307\u5b9a\u7684\u9023\u63a5\u57e0)\
-\n  -C<runtime flag>    \u50b3\u905e\u5f15\u6578\u81f3\u6bcf\u4e00\u5b50\u904e\u7a0b (\u4f5c\u7528\u7fa4\u7d44)\
-\n  -J<runtime flag>    \u50b3\u905e\u5f15\u6578\u81f3 java \u89e3\u8b6f\u7a0b\u5f0f\
-\n\
-
+rmid.usage=\u7528\u6CD5: {0} <options>\n\n\u5176\u4E2D <options> \u5305\u62EC: \n  -port <port>        \u6307\u5B9A\u4F9B rmid \u4F7F\u7528\u7684\u9023\u63A5\u57E0\n  -log <directory>    \u6307\u5B9A\u4F9B rmid \u5BEB\u5165\u65E5\u8A8C\u7684\u76EE\u9304\n  -stop               \u505C\u6B62\u76EE\u524D rmid \u7684\u547C\u53EB (\u91DD\u5C0D\u6307\u5B9A\u7684\u9023\u63A5\u57E0)\n  -C<runtime flag>    \u50B3\u905E\u5F15\u6578\u81F3\u6BCF\u4E00\u5B50\u904E\u7A0B (\u4F5C\u7528\u7FA4\u7D44)\n  -J<runtime flag>    \u50B3\u905E\u5F15\u6578\u81F3 java \u89E3\u8B6F\u7A0B\u5F0F\n
 # This means "The currently running activation daemon has been shut down,
 # and is about to exit".
-rmid.daemon.shutdown=\
-	\u505c\u6b62 activation \u5e38\u99d0\u7a0b\u5f0f
+rmid.daemon.shutdown=\u95DC\u9589 activation \u5354\u52A9\u7A0B\u5F0F
+
+# "rmid" should not be translated
+rmid.restart.group.warning=\nrmid: (\u8B66\u544A) \u91CD\u65B0\u555F\u52D5\u7FA4\u7D44\u62CB\u68C4: 
 
 # "rmid" should not be translated
-rmid.restart.group.warning=\
-\nrmid: (\u8b66\u544a) \u91cd\u65b0\u555f\u52d5\u7fa4\u7d44\u62cb\u68c4\uff1a
-
-# "rmid" should not be translated
-rmid.restart.service.warning=\
-\nrmid: (\u8b66\u544a) \u91cd\u65b0\u555f\u52d5\u670d\u52d9\u62cb\u68c4\uff1a
+rmid.restart.service.warning=\nrmid: (\u8B66\u544A) \u91CD\u65B0\u555F\u52D5\u670D\u52D9\u62CB\u68C4: 
 
 # "rmid" should not be translated
-rmid.log.update.warning=\
-\nrmid: (\u8b66\u544a) \u8a18\u9304\u66f4\u65b0\u62cb\u68c4\uff1a
+rmid.log.update.warning=\nrmid: (\u8B66\u544A) \u8A18\u9304\u66F4\u65B0\u62CB\u68C4: 
 
 # "rmid" should not be translated
-rmid.log.snapshot.warning=\
-\nrmid: (\u56b4\u91cd) \u8a18\u9304\u5feb\u7167\u62cb\u68c4\uff1a
+rmid.log.snapshot.warning=\nrmid: (\u56B4\u91CD) \u8A18\u9304\u5FEB\u7167\u62CB\u68C4: 
 
 # "rmid" should not be translated
-rmid.log.recover.warning=\
-\nrmid: (\u8b66\u544a) {0}\uff1a\u5728\u56de\u5fa9\u904e\u7a0b\u4e2d\u7565\u904e\u65e5\u8a8c\u8a18\u9304\uff1a
+rmid.log.recover.warning=\nrmid: (\u8B66\u544A) {0}: \u5728\u56DE\u5FA9\u904E\u7A0B\u4E2D\u7565\u904E\u65E5\u8A8C\u8A18\u9304: 
--- a/jdk/src/share/classes/sun/security/krb5/KrbAsRep.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/krb5/KrbAsRep.java	Wed Jul 05 17:35:13 2017 +0200
@@ -173,7 +173,7 @@
     }
 
     Credentials getCreds() {
-        return Objects.nonNull(creds, "Creds not available yet.");
+        return Objects.requireNonNull(creds, "Creds not available yet.");
     }
 
     sun.security.krb5.internal.ccache.Credentials getCCreds() {
--- a/jdk/src/share/classes/sun/security/provider/SeedGenerator.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/provider/SeedGenerator.java	Wed Jul 05 17:35:13 2017 +0200
@@ -63,13 +63,14 @@
  * @author Gadi Guy
  */
 
-import java.lang.reflect.Method;
-import java.lang.reflect.InvocationTargetException;
 import java.security.*;
 import java.io.*;
 import java.util.Properties;
 import java.util.Enumeration;
 import java.net.*;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
 import java.util.Random;
 import sun.security.util.Debug;
 
@@ -177,37 +178,21 @@
 
                         // The temporary dir
                         File f = new File(p.getProperty("java.io.tmpdir"));
-
-                        // Go thru files in the tmp dir using NIO's
-                        // DirectoryStream. Fallback to File.list()
-                        // if NIO is not available.
-                        if (NIODirectoryStream.isAvailable()) {
-                            int count = 0;
-                            Iterable<?> stream =
-                                    NIODirectoryStream.newDirectoryStream(f);
+                        int count = 0;
+                        try (DirectoryStream<Path> stream = Files.newDirectoryStream(f.toPath())) {
                             // We use a Random object to choose what file names
                             // should be used. Otherwise on a machine with too
                             // many files, the same first 1024 files always get
                             // used. Any, We make sure the first 512 files are
                             // always used.
                             Random r = new Random();
-                            try {
-                                for (Object entry: stream) {
-                                    if (count < 512 || r.nextBoolean()) {
-                                        md.update(NIODirectoryStream.getName(
-                                                entry).getBytes());
-                                    }
-                                    if (count++ > 1024) {
-                                        break;
-                                    }
+                            for (Path entry: stream) {
+                                if (count < 512 || r.nextBoolean()) {
+                                    md.update(entry.getFileName().toString().getBytes());
                                 }
-                            } finally {
-                                ((Closeable)stream).close();
-                            }
-                        } else {
-                            String[] sa = f.list();
-                            for(int i = 0; i < sa.length; i++) {
-                                md.update(sa[i].getBytes());
+                                if (count++ > 1024) {
+                                    break;
+                                }
                             }
                         }
                     } catch (Exception ex) {
@@ -553,77 +538,4 @@
         }
 
     }
-
-    /**
-     * A wrapper of NIO DirectoryStream using reflection.
-     */
-    private static class NIODirectoryStream {
-        private static final Class<?> pathClass =
-                getClass("java.nio.file.Path");
-
-        private static final Method toPathMethod =
-                (pathClass == null) ? null : getMethod(File.class, "toPath");
-        private static final Method getNameMethod =
-                getMethod(pathClass, "getName");
-        private static final Method newDirectoryStreamMethod =
-                getMethod(pathClass, "newDirectoryStream");
-
-        private static Class<?> getClass(String name) {
-            try {
-                return Class.forName(name, true, null);
-            } catch (ClassNotFoundException e) {
-                return null;
-            }
-        }
-
-        private static Method getMethod(Class<?> clazz,
-                                        String name,
-                                        Class<?>... paramTypes) {
-            if (clazz != null) {
-                try {
-                    return clazz.getMethod(name, paramTypes);
-                } catch (NoSuchMethodException e) {
-                    throw new AssertionError(e);
-                }
-            } else {
-                return null;
-            }
-        }
-
-        static boolean isAvailable() {
-            return pathClass != null;
-        }
-
-        static Iterable<?> newDirectoryStream(File dir) throws IOException {
-            assert pathClass != null;
-            try {
-                Object path = toPathMethod.invoke(dir);
-                return (Iterable<?>)newDirectoryStreamMethod.invoke(path);
-            } catch (InvocationTargetException e) {
-                Throwable cause = e.getCause();
-                if (cause instanceof IOException)
-                    throw (IOException)cause;
-                if (cause instanceof RuntimeException)
-                    throw (RuntimeException)cause;
-                if (cause instanceof Error)
-                    throw (Error)cause;
-                throw new AssertionError(e);
-            } catch (IllegalAccessException iae) {
-                throw new AssertionError(iae);
-            }
-        }
-
-        static String getName(Object path) {
-            assert pathClass != null;
-            try {
-                Object name = getNameMethod.invoke(path);
-                return name.toString();
-            } catch (InvocationTargetException e) {
-                throw new AssertionError(e);
-            } catch (IllegalAccessException iae) {
-                throw new AssertionError(iae);
-            }
-        }
-    }
 }
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/sun/security/provider/certpath/AdaptableX509CertSelector.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,173 @@
+/*
+ * Copyright (c) 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.  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.provider.certpath;
+
+import java.io.IOException;
+import java.util.Date;
+
+import java.security.cert.Certificate;
+import java.security.cert.X509Certificate;
+import java.security.cert.X509CertSelector;
+import java.security.cert.CertificateException;
+
+import sun.security.util.DerOutputStream;
+import sun.security.x509.SerialNumber;
+import sun.security.x509.KeyIdentifier;
+import sun.security.x509.AuthorityKeyIdentifierExtension;
+
+/**
+ * An adaptable X509 certificate selector for forward certification path
+ * building.
+ *
+ * @since 1.7
+ */
+class AdaptableX509CertSelector extends X509CertSelector {
+    // The start date of a validity period.
+    private Date startDate = null;
+
+    // The end date of a validity period.
+    private Date endDate = null;
+
+    AdaptableX509CertSelector() {
+        super();
+    }
+
+    /**
+     * Sets the criterion of the X509Certificate validity period.
+     *
+     * Normally, we may not have to check that a certificate validity period
+     * must fall within its issuer's certificate validity period. However,
+     * when we face root CA key updates for version 1 certificates, according
+     * to scheme of RFC 4210 or 2510, the validity periods should be checked
+     * to determine the right issuer's certificate.
+     *
+     * Conservatively, we will only check the validity periods for version
+     * 1 and version 2 certificates. For version 3 certificates, we can
+     * determine the right issuer by authority and subject key identifier
+     * extensions.
+     *
+     * @param startDate the start date of a validity period that must fall
+     *        within the certificate validity period for the X509Certificate
+     * @param endDate the end date of a validity period that must fall
+     *        within the certificate validity period for the X509Certificate
+     */
+    void setValidityPeriod(Date startDate, Date endDate) {
+        this.startDate = startDate;
+        this.endDate = endDate;
+    }
+
+    /**
+     * Parse the authority key identifier extension.
+     *
+     * If the keyIdentifier field of the extension is non-null, set the
+     * subjectKeyIdentifier criterion. If the authorityCertSerialNumber
+     * field is non-null, set the serialNumber criterion.
+     *
+     * Note that we will not set the subject criterion according to the
+     * authorityCertIssuer field of the extension. The caller MUST set
+     * the subject criterion before call match().
+     *
+     * @param akidext the authorityKeyIdentifier extension
+     */
+    void parseAuthorityKeyIdentifierExtension(
+            AuthorityKeyIdentifierExtension akidext) throws IOException {
+        if (akidext != null) {
+            KeyIdentifier akid = (KeyIdentifier)akidext.get(akidext.KEY_ID);
+            if (akid != null) {
+                DerOutputStream derout = new DerOutputStream();
+                derout.putOctetString(akid.getIdentifier());
+                super.setSubjectKeyIdentifier(derout.toByteArray());
+            }
+
+            SerialNumber asn =
+                (SerialNumber)akidext.get(akidext.SERIAL_NUMBER);
+            if (asn != null) {
+                super.setSerialNumber(asn.getNumber());
+            }
+
+            // the subject criterion should be set by the caller.
+        }
+    }
+
+    /**
+     * Decides whether a <code>Certificate</code> should be selected.
+     *
+     * For the purpose of compatibility, when a certificate is of
+     * version 1 and version 2, or the certificate does not include
+     * a subject key identifier extension, the selection criterion
+     * of subjectKeyIdentifier will be disabled.
+     */
+    @Override
+    public boolean match(Certificate cert) {
+        if (!(cert instanceof X509Certificate)) {
+            return false;
+        }
+
+        X509Certificate xcert = (X509Certificate)cert;
+        int version = xcert.getVersion();
+
+        // Check the validity period for version 1 and 2 certificate.
+        if (version < 3) {
+            if (startDate != null) {
+                try {
+                    xcert.checkValidity(startDate);
+                } catch (CertificateException ce) {
+                    return false;
+                }
+            }
+
+            if (endDate != null) {
+                try {
+                    xcert.checkValidity(endDate);
+                } catch (CertificateException ce) {
+                    return false;
+                }
+            }
+        }
+
+        if (version < 3 || xcert.getExtensionValue("2.5.29.14") == null) {
+            // If no SubjectKeyIdentifier extension, don't bother to check it.
+            setSubjectKeyIdentifier(null);
+        }
+
+        return super.match(cert);
+    }
+
+    @Override
+    public Object clone() {
+        AdaptableX509CertSelector copy =
+                        (AdaptableX509CertSelector)super.clone();
+        if (startDate != null) {
+            copy.startDate = (Date)startDate.clone();
+        }
+
+        if (endDate != null) {
+            copy.endDate = (Date)endDate.clone();
+        }
+
+        return copy;
+    }
+}
--- a/jdk/src/share/classes/sun/security/provider/certpath/AlgorithmChecker.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/provider/certpath/AlgorithmChecker.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -46,6 +46,8 @@
 import java.security.cert.CRLException;
 import java.security.cert.CertificateException;
 import java.security.cert.CertPathValidatorException;
+import java.security.cert.CertPathValidatorException.BasicReason;
+import java.security.cert.PKIXReason;
 import java.io.IOException;
 import java.security.interfaces.*;
 import java.security.spec.*;
@@ -196,14 +198,16 @@
                 SIGNATURE_PRIMITIVE_SET,
                 currSigAlg, currSigAlgParams)) {
             throw new CertPathValidatorException(
-                "Algorithm constraints check failed: " + currSigAlg);
+                "Algorithm constraints check failed: " + currSigAlg,
+                null, null, -1, BasicReason.ALGORITHM_CONSTRAINED);
         }
 
         // check the key usage and key size
         boolean[] keyUsage = x509Cert.getKeyUsage();
         if (keyUsage != null && keyUsage.length < 9) {
             throw new CertPathValidatorException(
-                        "incorrect KeyUsage extension");
+                "incorrect KeyUsage extension",
+                null, null, -1, PKIXReason.INVALID_KEY_USAGE);
         }
 
         if (keyUsage != null) {
@@ -236,7 +240,8 @@
             if (!primitives.isEmpty()) {
                 if (!constraints.permits(primitives, currPubKey)) {
                     throw new CertPathValidatorException(
-                        "algorithm constraints check failed");
+                        "algorithm constraints check failed",
+                        null, null, -1, BasicReason.ALGORITHM_CONSTRAINED);
                 }
             }
         }
@@ -248,7 +253,8 @@
                         SIGNATURE_PRIMITIVE_SET,
                         currSigAlg, prevPubKey, currSigAlgParams)) {
                     throw new CertPathValidatorException(
-                        "Algorithm constraints check failed: " + currSigAlg);
+                        "Algorithm constraints check failed: " + currSigAlg,
+                        null, null, -1, BasicReason.ALGORITHM_CONSTRAINED);
                 }
             }
 
@@ -258,7 +264,7 @@
                 // Inherit DSA parameters from previous key
                 if (!(prevPubKey instanceof DSAPublicKey)) {
                     throw new CertPathValidatorException("Input key is not " +
-                         "of a appropriate type for inheriting parameters");
+                        "of a appropriate type for inheriting parameters");
                 }
 
                 DSAParams params = ((DSAPublicKey)prevPubKey).getParams();
@@ -352,7 +358,8 @@
         if (!certPathDefaultConstraints.permits(
                 SIGNATURE_PRIMITIVE_SET, sigAlgName, key, sigAlgParams)) {
             throw new CertPathValidatorException(
-                "algorithm check failed: " + sigAlgName + " is disabled");
+                "algorithm check failed: " + sigAlgName + " is disabled",
+                null, null, -1, BasicReason.ALGORITHM_CONSTRAINED);
         }
     }
 
--- a/jdk/src/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -317,7 +317,7 @@
 
             // we accept the case that a CRL issuer provide status
             // information for itself.
-            if (ForwardBuilder.issues(certImpl, crlImpl, provider)) {
+            if (issues(certImpl, crlImpl, provider)) {
                 // reset the public key used to verify the CRL's signature
                 prevKey = certImpl.getPublicKey();
             } else {
@@ -338,7 +338,7 @@
             if (!Arrays.equals(certAKID, crlAKID)) {
                 // we accept the case that a CRL issuer provide status
                 // information for itself.
-                if (ForwardBuilder.issues(certImpl, crlImpl, provider)) {
+                if (issues(certImpl, crlImpl, provider)) {
                     // reset the public key used to verify the CRL's signature
                     prevKey = certImpl.getPublicKey();
                 } else {
@@ -687,4 +687,41 @@
         fullNames.add(new GeneralName(fullName));
         return fullNames;
     }
+
+    /** Verifies whether a CRL is issued by a certain certificate
+     *
+     * @param cert the certificate
+     * @param crl the CRL to be verified
+     * @param provider the name of the signature provider
+     */
+    private static boolean issues(X509CertImpl cert, X509CRLImpl crl,
+            String provider) throws IOException {
+
+        AdaptableX509CertSelector issuerSelector =
+                                    new AdaptableX509CertSelector();
+
+        // check certificate's key usage
+        boolean[] usages = cert.getKeyUsage();
+        if (usages != null) {
+            usages[6] = true;       // cRLSign
+            issuerSelector.setKeyUsage(usages);
+        }
+
+        // check certificate's subject
+        X500Principal crlIssuer = crl.getIssuerX500Principal();
+        issuerSelector.setSubject(crlIssuer);
+
+        /*
+         * Facilitate certification path construction with authority
+         * key identifier and subject key identifier.
+         *
+         * In practice, conforming CAs MUST use the key identifier method,
+         * and MUST include authority key identifier extension in all CRLs
+         * issued. [section 5.2.1, RFC 2459]
+         */
+        issuerSelector.parseAuthorityKeyIdentifierExtension(
+                                        crl.getAuthKeyIdExtension());
+
+        return issuerSelector.match(cert);
+    }
 }
--- a/jdk/src/share/classes/sun/security/provider/certpath/ForwardBuilder.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/provider/certpath/ForwardBuilder.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -77,7 +77,7 @@
     private final Set<X500Principal> trustedSubjectDNs;
     private final Set<TrustAnchor> trustAnchors;
     private X509CertSelector eeSelector;
-    private X509CertSelector caSelector;
+    private AdaptableX509CertSelector caSelector;
     private X509CertSelector caTargetSelector;
     TrustAnchor trustAnchor;
     private Comparator<X509Certificate> comparator;
@@ -230,9 +230,11 @@
                     targetCertConstraints.clone();
 
                 /*
-                 * Match on certificate validity date
+                 * Since we don't check the validity period of trusted
+                 * certificates, please don't set the certificate valid
+                 * criterion unless the trusted certificate matching is
+                 * completed.
                  */
-                caTargetSelector.setCertificateValid(date);
 
                 /*
                  * Policy processing optimizations
@@ -246,17 +248,19 @@
              * at least as many CA certs that have already been traversed
              */
             caTargetSelector.setBasicConstraints(currentState.traversedCACerts);
+
             sel = caTargetSelector;
-
         } else {
 
             if (caSelector == null) {
                 caSelector = new AdaptableX509CertSelector();
 
                 /*
-                 * Match on certificate validity date.
+                 * Since we don't check the validity period of trusted
+                 * certificates, please don't set the certificate valid
+                 * criterion unless the trusted certificate matching is
+                 * completed.
                  */
-                caSelector.setCertificateValid(date);
 
                 /*
                  * Policy processing optimizations
@@ -290,42 +294,19 @@
              */
             AuthorityKeyIdentifierExtension akidext =
                     currentState.cert.getAuthorityKeyIdentifierExtension();
-            if (akidext != null) {
-                KeyIdentifier akid = (KeyIdentifier)akidext.get(akidext.KEY_ID);
-                if (akid != null) {
-                    DerOutputStream derout = new DerOutputStream();
-                    derout.putOctetString(akid.getIdentifier());
-                    caSelector.setSubjectKeyIdentifier(derout.toByteArray());
-                }
+            caSelector.parseAuthorityKeyIdentifierExtension(akidext);
 
-                SerialNumber asn =
-                    (SerialNumber)akidext.get(akidext.SERIAL_NUMBER);
-                if (asn != null) {
-                    caSelector.setSerialNumber(asn.getNumber());
-                }
-                // the subject criterion was set previously.
-            }
+            /*
+             * check the validity period
+             */
+            caSelector.setValidityPeriod(currentState.cert.getNotBefore(),
+                                            currentState.cert.getNotAfter());
 
             sel = caSelector;
         }
 
-        /*
-         * Check if any of the trusted certs could be a match.
-         * Since we are not validating the trusted cert, we can't
-         * re-use the selector we've built up (sel) - we need
-         * to use a new selector (trustedSel)
-         */
-        X509CertSelector trustedSel = null;
-        if (currentState.isInitial()) {
-            trustedSel = targetCertConstraints;
-        } else {
-            trustedSel = new X509CertSelector();
-            trustedSel.setSubject(currentState.issuerDN);
-        }
-
-        boolean foundMatchingCert = false;
         for (X509Certificate trustedCert : trustedCerts) {
-            if (trustedSel.match(trustedCert)) {
+            if (sel.match(trustedCert)) {
                 if (debug != null) {
                     debug.println("ForwardBuilder.getMatchingCACerts: "
                         + "found matching trust anchor");
@@ -336,6 +317,11 @@
             }
         }
 
+        /*
+         * The trusted certificate matching is completed. We need to match
+         * on certificate validity date.
+         */
+        sel.setCertificateValid(date);
 
         /*
          * If we have already traversed as many CA certs as the maxPathLength
@@ -348,8 +334,8 @@
            (buildParams.getMaxPathLength() == -1) ||
            (buildParams.getMaxPathLength() > currentState.traversedCACerts))
         {
-            if (addMatchingCerts(sel, certStores, caCerts, searchAllCertStores)
-                && !searchAllCertStores) {
+            if (addMatchingCerts(sel, certStores,
+                    caCerts, searchAllCertStores) && !searchAllCertStores) {
                 return;
             }
         }
@@ -939,120 +925,4 @@
     void removeFinalCertFromPath(LinkedList<X509Certificate> certPathList) {
         certPathList.removeFirst();
     }
-
-    /** Verifies whether a CRL is issued by a certain certificate
-     *
-     * @param cert the certificate
-     * @param crl the CRL to be verified
-     * @param provider the name of the signature provider
-     */
-    static boolean issues(X509CertImpl cert, X509CRLImpl crl, String provider)
-            throws IOException {
-
-        boolean kidmatched = false;
-
-        // check certificate's key usage
-        boolean[] usages = cert.getKeyUsage();
-        if (usages != null && !usages[6]) {
-            return false;
-        }
-
-        // check certificate's SKID and CRL's AKID
-        AuthorityKeyIdentifierExtension akidext = crl.getAuthKeyIdExtension();
-        if (akidext != null) {
-            // the highest priority, matching KID
-            KeyIdentifier akid = (KeyIdentifier)akidext.get(akidext.KEY_ID);
-            if (akid != null) {
-                SubjectKeyIdentifierExtension skidext =
-                            cert.getSubjectKeyIdentifierExtension();
-                if (skidext != null) {
-                    KeyIdentifier skid =
-                            (KeyIdentifier)skidext.get(skidext.KEY_ID);
-                    if (!akid.equals(skid)) {
-                        return false;
-                    }
-
-                    kidmatched = true;
-                }
-                // conservatively, in case of X509 V1 certificate,
-                // does return false here if no SKID extension.
-            }
-
-            // the medium priority, matching issuer name/serial number
-            SerialNumber asn = (SerialNumber)akidext.get(akidext.SERIAL_NUMBER);
-            GeneralNames anames = (GeneralNames)akidext.get(akidext.AUTH_NAME);
-            if (asn != null && anames != null) {
-                X500Name subject = (X500Name)cert.getSubjectDN();
-                BigInteger serial = cert.getSerialNumber();
-
-                if (serial != null && subject != null) {
-                    if (serial.equals(asn.getNumber())) {
-                        return false;
-                    }
-
-                    for (GeneralName name : anames.names()) {
-                        GeneralNameInterface gni = name.getName();
-                        if (subject.equals(gni)) {
-                            return true;
-                        }
-                    }
-                }
-
-                return false;
-            }
-
-            if (kidmatched) {
-                return true;
-            }
-        }
-
-        // the last priority, verify the CRL signature with the cert.
-        X500Principal crlIssuer = crl.getIssuerX500Principal();
-        X500Principal certSubject = cert.getSubjectX500Principal();
-        if (certSubject != null && certSubject.equals(crlIssuer)) {
-            try {
-                crl.verify(cert.getPublicKey(), provider);
-                return true;
-            } catch (Exception e) {
-                // ignore all exceptions.
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * An adaptable X509 certificate selector for forward certification path
-     * building.
-     */
-    private static class AdaptableX509CertSelector extends X509CertSelector {
-        public AdaptableX509CertSelector() {
-            super();
-        }
-
-        /**
-         * Decides whether a <code>Certificate</code> should be selected.
-         *
-         * For the purpose of compatibility, when a certificate is of
-         * version 1 and version 2, or the certificate does not include
-         * a subject key identifier extension, the selection criterion
-         * of subjectKeyIdentifier will be disabled.
-         *
-         * @Override
-         */
-        public boolean match(Certificate cert) {
-            if (!(cert instanceof X509Certificate)) {
-                return false;
-            }
-            X509Certificate xcert = (X509Certificate)cert;
-
-            if (xcert.getVersion() < 3 ||
-                xcert.getExtensionValue("2.5.29.14") == null) {
-                // disable the subjectKeyIdentifier criterion
-                setSubjectKeyIdentifier(null);
-            }
-
-            return super.match(cert);
-        }
-    }
 }
--- a/jdk/src/share/classes/sun/security/provider/certpath/PKIXCertPathValidator.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/provider/certpath/PKIXCertPathValidator.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -50,6 +50,9 @@
 import sun.security.action.GetBooleanSecurityPropertyAction;
 import sun.security.util.Debug;
 
+import sun.security.x509.X509CertImpl;
+
+
 /**
  * This class implements the PKIX validation algorithm for certification
  * paths consisting exclusively of <code>X509Certificates</code>. It uses
@@ -162,6 +165,7 @@
                     debug.println("PKIXCertPathValidator.engineValidate() "
                         + "anchor.getTrustedCert() != null");
                 }
+
                 // if this trust anchor is not worth trying,
                 // we move on to the next one
                 if (!isWorthTrying(trustedCert, firstCert)) {
@@ -211,8 +215,10 @@
      * worth trying to validate in the chain.
      */
     private boolean isWorthTrying(X509Certificate trustedCert,
-                                  X509Certificate firstCert)
-    {
+          X509Certificate firstCert) {
+
+        boolean worthy = false;
+
         if (debug != null) {
             debug.println("PKIXCertPathValidator.isWorthTrying() checking "
                 + "if this trusted cert is worth trying ...");
@@ -222,19 +228,46 @@
             return true;
         }
 
-        // the subject of the trusted cert should match the
-        // issuer of the first cert in the certpath
+        AdaptableX509CertSelector issuerSelector =
+                        new AdaptableX509CertSelector();
+
+        // check trusted certificate's key usage
+        boolean[] usages = trustedCert.getKeyUsage();
+        if (usages != null) {
+            usages[5] = true;    // keyCertSign
+            issuerSelector.setKeyUsage(usages);
+        }
+
+        // check trusted certificate's subject
+        issuerSelector.setSubject(firstCert.getIssuerX500Principal());
+
+        // check the validity period
+        issuerSelector.setValidityPeriod(firstCert.getNotBefore(),
+                                                firstCert.getNotAfter());
 
-        X500Principal trustedSubject = trustedCert.getSubjectX500Principal();
-        if (trustedSubject.equals(firstCert.getIssuerX500Principal())) {
-            if (debug != null)
+        /*
+         * Facilitate certification path construction with authority
+         * key identifier and subject key identifier.
+         */
+        try {
+            X509CertImpl firstCertImpl = X509CertImpl.toImpl(firstCert);
+            issuerSelector.parseAuthorityKeyIdentifierExtension(
+                        firstCertImpl.getAuthorityKeyIdentifierExtension());
+
+            worthy = issuerSelector.match(trustedCert);
+        } catch (Exception e) {
+            // It is not worth trying.
+        }
+
+        if (debug != null) {
+            if (worthy) {
                 debug.println("YES - try this trustedCert");
-            return true;
-        } else {
-            if (debug != null)
+            } else {
                 debug.println("NO - don't try this trustedCert");
-            return false;
+            }
         }
+
+        return worthy;
     }
 
     /**
--- a/jdk/src/share/classes/sun/security/tools/JarSignerResources_ja.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/tools/JarSignerResources_ja.java	Wed Jul 05 17:35:13 2017 +0200
@@ -35,199 +35,202 @@
     private static final Object[][] contents = {
 
         // shared (from jarsigner)
-        {" ", " "},
-        {"  ", "  "},
-        {"      ", "      "},
-        {", ", ", "},
+        {"SPACE", " "},
+        {"2SPACE", "  "},
+        {"6SPACE", "      "},
+        {"COMMA", ", "},
 
-        {"provName not a provider", "{0} \u306f\u30d7\u30ed\u30d0\u30a4\u30c0\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"signerClass is not a signing mechanism", "{0} \u306f\u7f72\u540d\u6a5f\u69cb\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"jarsigner error: ", "jarsigner \u30a8\u30e9\u30fc: "},
-        {"Illegal option: ", "\u4e0d\u6b63\u306a\u30aa\u30d7\u30b7\u30e7\u30f3: "},
-        {"-keystore must be NONE if -storetype is {0}",
-                "-storetype \u304c {0} \u306e\u5834\u5408 -keystore \u306f NONE \u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093"},
-        {"-keypass can not be specified if -storetype is {0}",
-                "-storetype \u304c {0} \u306e\u5834\u5408 -keypass \u306f\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093"},
-        {"If -protected is specified, then -storepass and -keypass must not be specified",
-                "-protected \u3092\u6307\u5b9a\u3059\u308b\u5834\u5408\u306f -storepass \u304a\u3088\u3073 -keypass \u3092\u6307\u5b9a\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002"},
-        {"If keystore is not password protected, then -storepass and -keypass must not be specified",
-                 "\u30ad\u30fc\u30b9\u30c8\u30a2\u304c\u30d1\u30b9\u30ef\u30fc\u30c9\u3067\u4fdd\u8b77\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408 -storepass \u304a\u3088\u3073 -keypass \u3092\u6307\u5b9a\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044"},
-        {"Usage: jarsigner [options] jar-file alias",
-                "\u4f7f\u3044\u65b9: jarsigner [options] jar-file alias"},
-        {"       jarsigner -verify [options] jar-file [alias...]",
+        {"provName.not.a.provider", "{0}\u306F\u30D7\u30ED\u30D0\u30A4\u30C0\u3067\u306F\u3042\u308A\u307E\u305B\u3093"},
+        {"signerClass.is.not.a.signing.mechanism", "{0}\u306F\u7F72\u540D\u30E1\u30AB\u30CB\u30BA\u30E0\u3067\u306F\u3042\u308A\u307E\u305B\u3093"},
+        {"jarsigner.error.", "jarsigner\u30A8\u30E9\u30FC: "},
+        {"Illegal.option.", "\u4E0D\u6B63\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: "},
+        {".keystore.must.be.NONE.if.storetype.is.{0}",
+                "-storetype\u304C{0}\u306E\u5834\u5408\u3001-keystore\u306FNONE\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
+        {".keypass.can.not.be.specified.if.storetype.is.{0}",
+                "-storetype\u304C{0}\u306E\u5834\u5408\u3001-keypass\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093"},
+        {"If.protected.is.specified.then.storepass.and.keypass.must.not.be.specified",
+                "-protected\u3092\u6307\u5B9A\u3059\u308B\u5834\u5408\u306F\u3001-storepass\u304A\u3088\u3073-keypass\u3092\u6307\u5B9A\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044"},
+        {"If.keystore.is.not.password.protected.then.storepass.and.keypass.must.not.be.specified",
+                 "\u30AD\u30FC\u30B9\u30C8\u30A2\u304C\u30D1\u30B9\u30EF\u30FC\u30C9\u3067\u4FDD\u8B77\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u3001-storepass\u304A\u3088\u3073-keypass\u3092\u6307\u5B9A\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044"},
+        {"Usage.jarsigner.options.jar.file.alias",
+                "\u4F7F\u7528\u65B9\u6CD5: jarsigner [options] jar-file alias"},
+        {".jarsigner.verify.options.jar.file.alias.",
                 "       jarsigner -verify [options] jar-file [alias...]"},
-        {"[-keystore <url>]           keystore location",
-                "[-keystore <url>]           \u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u4f4d\u7f6e"},
-        {"[-storepass <password>]     password for keystore integrity",
-            "[-storepass <password>]     \u30ad\u30fc\u30b9\u30c8\u30a2\u5b8c\u5168\u6027\u306e\u30d1\u30b9\u30ef\u30fc\u30c9"},
-        {"[-storetype <type>]         keystore type",
-                "[-storetype <type>]         \u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u578b"},
-        {"[-keypass <password>]       password for private key (if different)",
-                "[-keypass <password>]       \u975e\u516c\u958b\u9375\u306e\u30d1\u30b9\u30ef\u30fc\u30c9 (\u7570\u306a\u308b\u5834\u5408)"},
-        {"[-certchain <file>]         name of alternative certchain file",
-                "[-certchain <file>]         \u4ee3\u66ff\u8a3c\u660e\u9023\u9396\u30d5\u30a1\u30a4\u30eb\u306e\u540d\u524d"},
-        {"[-sigfile <file>]           name of .SF/.DSA file",
-                "[-sigfile <file>]           .SF/.DSA \u30d5\u30a1\u30a4\u30eb\u306e\u540d\u524d"},
-        {"[-signedjar <file>]         name of signed JAR file",
-                "[-signedjar <file>]         \u7f72\u540d\u4ed8\u304d JAR \u30d5\u30a1\u30a4\u30eb\u306e\u540d\u524d"},
-        {"[-digestalg <algorithm>]    name of digest algorithm",
-                "[-digestalg <algorithm>]    \u30c0\u30a4\u30b8\u30a7\u30b9\u30c8\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u540d\u524d"},
-        {"[-sigalg <algorithm>]       name of signature algorithm",
-                "[-sigalg <algorithm>]       \u7f72\u540d\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u540d\u524d"},
-        {"[-verify]                   verify a signed JAR file",
-                "[-verify]                   \u7f72\u540d\u4ed8\u304d JAR \u30d5\u30a1\u30a4\u30eb\u306e\u691c\u8a3c"},
-        {"[-verbose[:suboptions]]     verbose output when signing/verifying.",
-                "[-verbose[:suboptions]]     \u7f72\u540d/\u691c\u8a3c\u6642\u306e\u8a73\u7d30\u51fa\u529b"},
-        {"                            suboptions can be all, grouped or summary",
-                "                            \u30b5\u30d6\u30aa\u30d7\u30b7\u30e7\u30f3\u306f all\u3001grouped\u3001\u307e\u305f\u306f summary \u3067\u3059"},
-        {"[-certs]                    display certificates when verbose and verifying",
-                "[-certs]                    \u8a73\u7d30\u51fa\u529b\u304a\u3088\u3073\u691c\u8a3c\u6642\u306b\u8a3c\u660e\u66f8\u3092\u8868\u793a"},
-        {"[-tsa <url>]                location of the Timestamping Authority",
-                "[-tsa <url>]                \u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u5c40\u306e\u5834\u6240"},
-        {"[-tsacert <alias>]          public key certificate for Timestamping Authority",
-                "[-tsacert <alias>]          \u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u5c40\u306e\u516c\u958b\u9375\u8a3c\u660e\u66f8"},
-        {"[-altsigner <class>]        class name of an alternative signing mechanism",
-                "[-altsigner <class>]        \u4ee3\u66ff\u7f72\u540d\u6a5f\u69cb\u306e\u30af\u30e9\u30b9\u540d"},
-        {"[-altsignerpath <pathlist>] location of an alternative signing mechanism",
-                "[-altsignerpath <pathlist>] \u4ee3\u66ff\u7f72\u540d\u6a5f\u69cb\u306e\u4f4d\u7f6e"},
-        {"[-internalsf]               include the .SF file inside the signature block",
-                "[-internalsf]               \u7f72\u540d\u30d6\u30ed\u30c3\u30af\u306b .SF \u30d5\u30a1\u30a4\u30eb\u3092\u542b\u3081\u308b"},
-        {"[-sectionsonly]             don't compute hash of entire manifest",
-                "[-sectionsonly]             \u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u5168\u4f53\u306e\u30cf\u30c3\u30b7\u30e5\u306f\u8a08\u7b97\u3057\u306a\u3044"},
-        {"[-protected]                keystore has protected authentication path",
-                "[-protected]                \u8a8d\u8a3c\u30d1\u30b9\u304c\u4fdd\u8b77\u3055\u308c\u305f\u30ad\u30fc\u30b9\u30c8\u30a2"},
-        {"[-providerName <name>]      provider name",
-                "[-providerName <name>]      \u30d7\u30ed\u30d0\u30a4\u30c0\u540d"},
-        {"[-providerClass <class>     name of cryptographic service provider's",
-                "[-providerClass <class>     \u6697\u53f7\u5316\u30b5\u30fc\u30d3\u30b9\u30d7\u30ed\u30d0\u30a4\u30c0\u306e\u540d\u524d"},
-        {"  [-providerArg <arg>]] ... master class file and constructor argument",
-                "  [-providerArg <arg>]] ... \u30de\u30b9\u30bf\u30fc\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3068\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306e\u5f15\u6570"},
-        {"[-strict]                   treat warnings as errors",
-                "[-strict]                   \u8b66\u544a\u3092\u30a8\u30e9\u30fc\u3068\u3057\u3066\u53d6\u308a\u6271\u3044\u307e\u3059"},
-        {"Option lacks argument", "\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u5f15\u6570\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"Please type jarsigner -help for usage", "\u4f7f\u3044\u65b9\u3092\u898b\u308b\u306b\u306f jarsigner -help \u3068\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"Please specify jarfile name", "jar \u30d5\u30a1\u30a4\u30eb\u540d\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"Please specify alias name", "\u5225\u540d\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"Only one alias can be specified", "\u6307\u5b9a\u3067\u304d\u308b\u5225\u540d\u306f 1 \u3064\u3060\u3051\u3067\u3059\u3002"},
-        {"This jar contains signed entries which is not signed by the specified alias(es).",
-                 "\u3053\u306e jar \u306b\u542b\u307e\u308c\u3066\u3044\u308b\u7f72\u540d\u6e08\u307f\u30a8\u30f3\u30c8\u30ea\u306f\u3001\u6307\u5b9a\u3055\u308c\u305f\u5225\u540d\u3067\u7f72\u540d\u3055\u308c\u305f\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"This jar contains signed entries that's not signed by alias in this keystore.",
-                  "\u3053\u306e jar \u306b\u542b\u307e\u308c\u3066\u3044\u308b\u7f72\u540d\u6e08\u307f\u30a8\u30f3\u30c8\u30ea\u306f\u3001\u3053\u306e\u30ad\u30fc\u30b9\u30c8\u30a2\u3067\u7f72\u540d\u3055\u308c\u305f\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"},
+        {".keystore.url.keystore.location",
+                "[-keystore <url>]       \u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u4F4D\u7F6E"},
+        {".storepass.password.password.for.keystore.integrity",
+            "[-storepass <password>]   \u30AD\u30FC\u30B9\u30C8\u30A2\u6574\u5408\u6027\u306E\u305F\u3081\u306E\u30D1\u30B9\u30EF\u30FC\u30C9"},
+        {".storetype.type.keystore.type",
+                "[-storetype <type>]     \u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u578B"},
+        {".keypass.password.password.for.private.key.if.different.",
+                "[-keypass <password>]    \u79D8\u5BC6\u9375\u306E\u30D1\u30B9\u30EF\u30FC\u30C9(\u7570\u306A\u308B\u5834\u5408)"},
+        {".certchain.file.name.of.alternative.certchain.file",
+                "[-certchain <file>]         \u4EE3\u66FF\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u540D\u524D"},
+        {".sigfile.file.name.of.SF.DSA.file",
+                "[-sigfile <file>]       .SF/.DSA\u30D5\u30A1\u30A4\u30EB\u306E\u540D\u524D"},
+        {".signedjar.file.name.of.signed.JAR.file",
+                "[-signedjar <file>]     \u7F72\u540D\u4ED8\u304DJAR\u30D5\u30A1\u30A4\u30EB\u306E\u540D\u524D"},
+        {".digestalg.algorithm.name.of.digest.algorithm",
+                "[-digestalg <algorithm>]  \u30C0\u30A4\u30B8\u30A7\u30B9\u30C8\u30FB\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u306E\u540D\u524D"},
+        {".sigalg.algorithm.name.of.signature.algorithm",
+                "[-sigalg <algorithm>]    \u7F72\u540D\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u306E\u540D\u524D"},
+        {".crl.auto.file.include.CRL.in.signed.jar",
+                "[-crl[:auto| <file>]        \u7F72\u540D\u4ED8\u304Djar\u306BCRL\u3092\u542B\u3081\u308B"},
+        {".verify.verify.a.signed.JAR.file",
+                "[-verify]            \u7F72\u540D\u4ED8\u304DJAR\u30D5\u30A1\u30A4\u30EB\u306E\u691C\u8A3C"},
+        {".verbose.suboptions.verbose.output.when.signing.verifying.",
+                "[-verbose[:suboptions]]     \u7F72\u540D/\u691C\u8A3C\u6642\u306E\u8A73\u7D30\u51FA\u529B\u3002"},
+        {".suboptions.can.be.all.grouped.or.summary",
+                "                            \u30B5\u30D6\u30AA\u30D7\u30B7\u30E7\u30F3\u3068\u3057\u3066\u3001\u3059\u3079\u3066\u3001\u30B0\u30EB\u30FC\u30D7\u307E\u305F\u306F\u30B5\u30DE\u30EA\u30FC\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059"},
+        {".certs.display.certificates.when.verbose.and.verifying",
+                "[-certs]             \u8A73\u7D30\u51FA\u529B\u304A\u3088\u3073\u691C\u8A3C\u6642\u306B\u8A3C\u660E\u66F8\u3092\u8868\u793A"},
+        {".tsa.url.location.of.the.Timestamping.Authority",
+                "[-tsa <url>]          \u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u5C40\u306E\u5834\u6240"},
+        {".tsacert.alias.public.key.certificate.for.Timestamping.Authority",
+                "[-tsacert <alias>]      \u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u5C40\u306E\u516C\u958B\u9375\u8A3C\u660E\u66F8"},
+        {".altsigner.class.class.name.of.an.alternative.signing.mechanism",
+                "[-altsigner <class>]     \u4EE3\u66FF\u7F72\u540D\u30E1\u30AB\u30CB\u30BA\u30E0\u306E\u30AF\u30E9\u30B9\u540D"},
+        {".altsignerpath.pathlist.location.of.an.alternative.signing.mechanism",
+                "[-altsignerpath <pathlist>]\u4EE3\u66FF\u7F72\u540D\u30E1\u30AB\u30CB\u30BA\u30E0\u306E\u4F4D\u7F6E"},
+        {".internalsf.include.the.SF.file.inside.the.signature.block",
+                "[-internalsf]         \u7F72\u540D\u30D6\u30ED\u30C3\u30AF\u306B.SF\u30D5\u30A1\u30A4\u30EB\u3092\u542B\u3081\u308B"},
+        {".sectionsonly.don.t.compute.hash.of.entire.manifest",
+                "[-sectionsonly]        \u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u5168\u4F53\u306E\u30CF\u30C3\u30B7\u30E5\u306F\u8A08\u7B97\u3057\u306A\u3044"},
+        {".protected.keystore.has.protected.authentication.path",
+                "[-protected]          \u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u306F\u4FDD\u8B77\u3055\u308C\u305F\u8A8D\u8A3C\u30D1\u30B9\u304C\u3042\u308B"},
+        {".providerName.name.provider.name",
+                "[-providerName <name>]   \u30D7\u30ED\u30D0\u30A4\u30C0\u540D"},
+        {".providerClass.class.name.of.cryptographic.service.provider.s",
+                "[-providerClass <class>   \u6697\u53F7\u5316\u30B5\u30FC\u30D3\u30B9\u30FB\u30D7\u30ED\u30D0\u30A4\u30C0\u306E\u540D\u524D"},
+        {".providerArg.arg.master.class.file.and.constructor.argument",
+                "  [-providerArg <arg>]] ... \u30DE\u30B9\u30BF\u30FC\u30FB\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3068\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u5F15\u6570"},
+        {".strict.treat.warnings.as.errors",
+                "[-strict]                   \u8B66\u544A\u3092\u30A8\u30E9\u30FC\u3068\u3057\u3066\u51E6\u7406"},
+        {"Option.lacks.argument", "\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u5F15\u6570\u304C\u3042\u308A\u307E\u305B\u3093"},
+        {"Please.type.jarsigner.help.for.usage", "\u4F7F\u7528\u65B9\u6CD5\u306B\u3064\u3044\u3066\u306Fjarsigner -help\u3068\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044"},
+        {"Please.specify.jarfile.name", "jarfile\u540D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044"},
+        {"Please.specify.alias.name", "\u5225\u540D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044"},
+        {"Only.one.alias.can.be.specified", "\u5225\u540D\u306F1\u3064\u306E\u307F\u6307\u5B9A\u3067\u304D\u307E\u3059"},
+        {"This.jar.contains.signed.entries.which.is.not.signed.by.the.specified.alias.es.",
+                 "\u3053\u306Ejar\u306B\u542B\u307E\u308C\u308B\u7F72\u540D\u6E08\u30A8\u30F3\u30C8\u30EA\u306F\u3001\u6307\u5B9A\u3055\u308C\u305F\u5225\u540D\u306B\u3088\u3063\u3066\u7F72\u540D\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"This.jar.contains.signed.entries.that.s.not.signed.by.alias.in.this.keystore.",
+                  "\u3053\u306Ejar\u306B\u542B\u307E\u308C\u308B\u7F72\u540D\u6E08\u30A8\u30F3\u30C8\u30EA\u306F\u3001\u3053\u306E\u30AD\u30FC\u30B9\u30C8\u30A2\u5185\u306E\u5225\u540D\u306B\u3088\u3063\u3066\u7F72\u540D\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
         {"s", "s"},
         {"m", "m"},
         {"k", "k"},
         {"i", "i"},
-        {"(and %d more)", "(\u3055\u3089\u306b %d)"},
-        {"  s = signature was verified ",
-                "  s = \u7f72\u540d\u304c\u691c\u8a3c\u3055\u308c\u307e\u3057\u305f\u3002"},
-        {"  m = entry is listed in manifest",
-                "  m = \u30a8\u30f3\u30c8\u30ea\u304c\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u5185\u306b\u30ea\u30b9\u30c8\u3055\u308c\u307e\u3059\u3002"},
-        {"  k = at least one certificate was found in keystore",
-                "  k = 1 \u3064\u4ee5\u4e0a\u306e\u8a3c\u660e\u66f8\u304c\u30ad\u30fc\u30b9\u30c8\u30a2\u3067\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002"},
-        {"  i = at least one certificate was found in identity scope",
-                "  i = 1 \u3064\u4ee5\u4e0a\u306e\u8a3c\u660e\u66f8\u304c\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u30b9\u30b3\u30fc\u30d7\u3067\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002"},
-        {"  X = not signed by specified alias(es)",
-                "X = \u6307\u5b9a\u3055\u308c\u305f\u5225\u540d\u3067\u7f72\u540d\u3055\u308c\u305f\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"no manifest.", "\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002"},
-        {"(Signature related entries)","(\u7f72\u540d\u306b\u95a2\u9023\u3059\u308b\u30a8\u30f3\u30c8\u30ea)"},
-        {"(Unsigned entries)", "(\u7f72\u540d\u3055\u308c\u3066\u3044\u306a\u3044\u30a8\u30f3\u30c8\u30ea)"},
-        {"jar is unsigned. (signatures missing or not parsable)",
-                "jar \u306f\u7f72\u540d\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002(\u7f72\u540d\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u304b\u3001\u69cb\u6587\u89e3\u6790\u3067\u304d\u307e\u305b\u3093)"},
-        {"jar verified.", "jar \u304c\u691c\u8a3c\u3055\u308c\u307e\u3057\u305f\u3002"},
-        {"jarsigner: ", "jarsigner: "},
-        {"signature filename must consist of the following characters: A-Z, 0-9, _ or -",
-                "\u7f72\u540d\u306e\u30d5\u30a1\u30a4\u30eb\u540d\u306b\u4f7f\u7528\u3067\u304d\u308b\u6587\u5b57\u306f\u3001A-Z\u30010-9\u3001_\u3001- \u3060\u3051\u3067\u3059\u3002"},
-        {"unable to open jar file: ", "\u6b21\u306e jar \u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093: "},
-        {"unable to create: ", "\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093: "},
-        {"   adding: ", "   \u8ffd\u52a0\u4e2d: "},
-        {" updating: ", " \u66f4\u65b0\u4e2d: "},
-        {"  signing: ", "  \u7f72\u540d\u4e2d: "},
-        {"attempt to rename signedJarFile to jarFile failed",
-                "{0} \u3092 {1} \u306b\u5909\u66f4\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002"},
-        {"attempt to rename jarFile to origJar failed",
-                "{0} \u3092 {1} \u306b\u5909\u66f4\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002"},
-        {"unable to sign jar: ", "jar \u306b\u7f72\u540d\u3067\u304d\u307e\u305b\u3093: "},
-        {"Enter Passphrase for keystore: ", "\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044: "},
-        {"keystore load: ", "\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30ed\u30fc\u30c9: "},
-        {"certificate exception: ", "\u8a3c\u660e\u66f8\u4f8b\u5916: "},
-        {"unable to instantiate keystore class: ",
-                "\u30ad\u30fc\u30b9\u30c8\u30a2\u30af\u30e9\u30b9\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3067\u304d\u307e\u305b\u3093: "},
-        {"Certificate chain not found for: alias.  alias must reference a valid KeyStore key entry containing a private key and corresponding public key certificate chain.",
-                "\u6b21\u306e\u8a3c\u660e\u9023\u9396\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0}\u3002  {1} \u306f\u3001\u975e\u516c\u958b\u9375\u304a\u3088\u3073\u5bfe\u5fdc\u3059\u308b\u516c\u958b\u9375\u8a3c\u660e\u9023\u9396\u3092\u542b\u3080\u6709\u52b9\u306a KeyStore \u9375\u30a8\u30f3\u30c8\u30ea\u3092\u53c2\u7167\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"},
-        {"File specified by -certchain does not exist",
-                "-certchain \u3067\u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3057\u307e\u305b\u3093\u3002"},
-        {"Cannot restore certchain from file specified",
-                "\u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8a3c\u660e\u9023\u9396\u3092\u5fa9\u5143\u3067\u304d\u307e\u305b\u3093\u3002"},
-        {"Certificate chain not found in the file specified.",
-                "\u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u306b\u8a3c\u660e\u9023\u9396\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002"},
-        {"found non-X.509 certificate in signer's chain",
-                "\u7f72\u540d\u8005\u306e\u9023\u9396\u5185\u3067\u975e X.509 \u8a3c\u660e\u66f8\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002"},
-        {"incomplete certificate chain", "\u4e0d\u5b8c\u5168\u306a\u8a3c\u660e\u9023\u9396"},
-        {"Enter key password for alias: ", "{0} \u306e\u9375\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044: "},
-        {"unable to recover key from keystore",
-                "\u30ad\u30fc\u30b9\u30c8\u30a2\u304b\u3089\u9375\u3092\u5fa9\u5143\u3067\u304d\u307e\u305b\u3093\u3002"},
-        {"key associated with alias not a private key",
-                "{0} \u3068\u95a2\u9023\u4ed8\u3051\u3089\u308c\u305f\u9375\u306f\u3001\u975e\u516c\u958b\u9375\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"you must enter key password", "\u9375\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"},
-        {"unable to read password: ", "\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093: "},
-        {"certificate is valid from", "\u8a3c\u660e\u66f8\u306f {0} \u304b\u3089 {1} \u307e\u3067\u6709\u52b9\u3067\u3059"},
-        {"certificate expired on", "\u8a3c\u660e\u66f8\u306f {0} \u306b\u5931\u52b9\u3057\u307e\u3057\u305f"},
-        {"certificate is not valid until",
-                "\u8a3c\u660e\u66f8\u306f {0} \u307e\u3067\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093"},
-        {"certificate will expire on", "\u8a3c\u660e\u66f8\u306f {0} \u306b\u5931\u52b9\u3057\u307e\u3059"},
-        {"[CertPath not validated: ", "[CertPath \u304c\u691c\u8a3c\u3055\u308c\u3066\u3044\u307e\u305b\u3093:"},
-        {"requesting a signature timestamp",
-                "\u7f72\u540d\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u306e\u8981\u6c42"},
-        {"TSA location: ", "TSA \u306e\u5834\u6240: "},
-        {"TSA certificate: ", "TSA \u8a3c\u660e\u66f8: "},
-        {"no response from the Timestamping Authority. ",
-                "\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u5c40\u304b\u3089\u306e\u5fdc\u7b54\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"When connecting from behind a firewall then an HTTP proxy may need to be specified. ",
-                "\u30d5\u30a1\u30a4\u30a2\u30a6\u30a9\u30fc\u30eb\u3092\u4ecb\u3057\u3066\u63a5\u7d9a\u3059\u308b\u3068\u304d\u306f\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066 HTTP \u30d7\u30ed\u30ad\u30b7\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"Supply the following options to jarsigner: ",
-                "jarsigner \u306b\u6b21\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044: "},
-        {"Certificate not found for: alias.  alias must reference a valid KeyStore entry containing an X.509 public key certificate for the Timestamping Authority.",
-                "\u8a3c\u660e\u66f8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f: {0}\u3002{1} \u306f\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u5c40\u306e X.509 \u516c\u958b\u9375\u8a3c\u660e\u66f8\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u6709\u52b9\u306a KeyStore \u30a8\u30f3\u30c8\u30ea\u3092\u6307\u3057\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"},
-        {"using an alternative signing mechanism",
-                "\u4ee3\u66ff\u7f72\u540d\u6a5f\u69cb\u306e\u4f7f\u7528"},
-        {"entry was signed on", "\u30a8\u30f3\u30c8\u30ea\u306f {0} \u306b\u7f72\u540d\u3055\u308c\u307e\u3057\u305f"},
-        {"Warning: ", "\u8b66\u544a: "},
-        {"This jar contains unsigned entries which have not been integrity-checked. ",
-                "\u3053\u306e jar \u306b\u306f\u3001\u6574\u5408\u6027\u30c1\u30a7\u30c3\u30af\u3092\u3057\u3066\u3044\u306a\u3044\u672a\u7f72\u540d\u306e\u30a8\u30f3\u30c8\u30ea\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 "},
-        {"This jar contains entries whose signer certificate has expired. ",
-                "\u3053\u306e jar \u306b\u306f\u3001\u7f72\u540d\u8005\u306e\u8a3c\u660e\u66f8\u304c\u671f\u9650\u5207\u308c\u306e\u30a8\u30f3\u30c8\u30ea\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 "},
-        {"This jar contains entries whose signer certificate will expire within six months. ",
-                "\u3053\u306e jar \u306b\u306f\u3001\u7f72\u540d\u8005\u306e\u8a3c\u660e\u66f8\u304c 6 \u304b\u6708\u4ee5\u5185\u306b\u671f\u9650\u5207\u308c\u3068\u306a\u308b\u30a8\u30f3\u30c8\u30ea\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 "},
-        {"This jar contains entries whose signer certificate is not yet valid. ",
-                "\u3053\u306e jar \u306b\u306f\u3001\u7f72\u540d\u8005\u306e\u8a3c\u660e\u66f8\u304c\u307e\u3060\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u306a\u3044\u30a8\u30f3\u30c8\u30ea\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 "},
-        {"Re-run with the -verbose option for more details.",
-                "\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f -verbose \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u518d\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"Re-run with the -verbose and -certs options for more details.",
-                "\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f -verbose \u304a\u3088\u3073 -certs \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u518d\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"The signer certificate has expired.",
-                "\u7f72\u540d\u8005\u306e\u8a3c\u660e\u66f8\u306f\u671f\u9650\u5207\u308c\u3067\u3059\u3002"},
-        {"The signer certificate will expire within six months.",
-                "\u7f72\u540d\u8005\u306e\u8a3c\u660e\u66f8\u306f 6 \u304b\u6708\u4ee5\u5185\u306b\u671f\u9650\u5207\u308c\u306b\u306a\u308a\u307e\u3059\u3002"},
-        {"The signer certificate is not yet valid.",
-                "\u7f72\u540d\u8005\u306e\u8a3c\u660e\u66f8\u306f\u307e\u3060\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"The signer certificate's KeyUsage extension doesn't allow code signing.",
-                 "\u7f72\u540d\u8005\u8a3c\u660e\u66f8\u306e KeyUsage \u62e1\u5f35\u6a5f\u80fd\u3067\u306f\u3001\u30b3\u30fc\u30c9\u7f72\u540d\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002"},
-        {"The signer certificate's ExtendedKeyUsage extension doesn't allow code signing.",
-                 "\u7f72\u540d\u8005\u8a3c\u660e\u66f8\u306e ExtendedKeyUsage \u62e1\u5f35\u6a5f\u80fd\u3067\u306f\u3001\u30b3\u30fc\u30c9\u7f72\u540d\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002"},
-        {"The signer certificate's NetscapeCertType extension doesn't allow code signing.",
-                 "\u7f72\u540d\u8005\u8a3c\u660e\u66f8\u306e NetscapeCertType \u62e1\u5f35\u6a5f\u80fd\u3067\u306f\u3001\u30b3\u30fc\u30c9\u7f72\u540d\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002"},
-        {"This jar contains entries whose signer certificate's KeyUsage extension doesn't allow code signing.",
-                 "\u3053\u306e jar \u306b\u306f\u3001\u7f72\u540d\u8005\u8a3c\u660e\u66f8\u306e KeyUsage \u62e1\u5f35\u6a5f\u80fd\u304c\u30b3\u30fc\u30c9\u7f72\u540d\u3092\u8a31\u53ef\u3057\u306a\u3044\u30a8\u30f3\u30c8\u30ea\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002"},
-        {"This jar contains entries whose signer certificate's ExtendedKeyUsage extension doesn't allow code signing.",
-                 "\u3053\u306e jar \u306b\u306f\u3001\u7f72\u540d\u8005\u8a3c\u660e\u66f8\u306e ExtendedKeyUsage \u62e1\u5f35\u6a5f\u80fd\u304c\u30b3\u30fc\u30c9\u7f72\u540d\u3092\u8a31\u53ef\u3057\u306a\u3044\u30a8\u30f3\u30c8\u30ea\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002"},
-        {"This jar contains entries whose signer certificate's NetscapeCertType extension doesn't allow code signing.",
-                 "\u3053\u306e jar \u306b\u306f\u3001\u7f72\u540d\u8005\u8a3c\u660e\u66f8\u306e NetscapeCertType \u62e1\u5f35\u6a5f\u80fd\u304c\u30b3\u30fc\u30c9\u7f72\u540d\u3092\u8a31\u53ef\u3057\u306a\u3044\u30a8\u30f3\u30c8\u30ea\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002"},
-        {"[{0} extension does not support code signing]",
-                 "[{0} \u62e1\u5f35\u6a5f\u80fd\u306f\u30b3\u30fc\u30c9\u7f72\u540d\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u305b\u3093]"},
-        {"The signer's certificate chain is not validated.",
-                "\u7f72\u540d\u8005\u306e\u8a3c\u660e\u9023\u9396\u304c\u691c\u8a3c\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"This jar contains entries whose certificate chain is not validated.",
-                 "\u3053\u306e jar \u306b\u306f\u8a3c\u660e\u9023\u9396\u304c\u691c\u8a3c\u3055\u308c\u3066\u3044\u306a\u3044\u30a8\u30f3\u30c8\u30ea\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002"},
+        {".and.d.more.", "(\u4ED6\u306B\u3082%d\u500B)"},
+        {".s.signature.was.verified.",
+                "  s=\u7F72\u540D\u304C\u691C\u8A3C\u3055\u308C\u307E\u3057\u305F "},
+        {".m.entry.is.listed.in.manifest",
+                "  m=\u30A8\u30F3\u30C8\u30EA\u304C\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u5185\u306B\u30EA\u30B9\u30C8\u3055\u308C\u307E\u3059"},
+        {".k.at.least.one.certificate.was.found.in.keystore",
+                "  k=1\u3064\u4EE5\u4E0A\u306E\u8A3C\u660E\u66F8\u304C\u30AD\u30FC\u30B9\u30C8\u30A2\u3067\u691C\u51FA\u3055\u308C\u307E\u3057\u305F"},
+        {".i.at.least.one.certificate.was.found.in.identity.scope",
+                "  i=1\u3064\u4EE5\u4E0A\u306E\u8A3C\u660E\u66F8\u304C\u30A2\u30A4\u30C7\u30F3\u30C6\u30A3\u30C6\u30A3\u30FB\u30B9\u30B3\u30FC\u30D7\u3067\u691C\u51FA\u3055\u308C\u307E\u3057\u305F"},
+        {".X.not.signed.by.specified.alias.es.",
+                "  X =\u6307\u5B9A\u3057\u305F\u5225\u540D\u3067\u7F72\u540D\u3055\u308C\u3066\u3044\u307E\u305B\u3093"},
+        {"no.manifest.", "\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u306F\u5B58\u5728\u3057\u307E\u305B\u3093\u3002"},
+        {".Signature.related.entries.","(\u7F72\u540D\u95A2\u9023\u30A8\u30F3\u30C8\u30EA)"},
+        {".Unsigned.entries.", "(\u672A\u7F72\u540D\u306E\u30A8\u30F3\u30C8\u30EA)"},
+        {"jar.is.unsigned.signatures.missing.or.not.parsable.",
+                "jar\u306F\u7F72\u540D\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002(\u7F72\u540D\u304C\u898B\u3064\u304B\u3089\u306A\u3044\u304B\u3001\u69CB\u6587\u89E3\u6790\u3067\u304D\u307E\u305B\u3093)"},
+        {"jar.verified.", "jar\u304C\u691C\u8A3C\u3055\u308C\u307E\u3057\u305F\u3002"},
+        {"jarsigner.", "jarsigner: "},
+        {"signature.filename.must.consist.of.the.following.characters.A.Z.0.9.or.",
+                "\u7F72\u540D\u306E\u30D5\u30A1\u30A4\u30EB\u540D\u306B\u4F7F\u7528\u3067\u304D\u308B\u6587\u5B57\u306F\u3001A-Z\u30010-9\u3001_\u3001- \u306E\u307F\u3067\u3059\u3002"},
+        {"unable.to.open.jar.file.", "\u6B21\u306Ejar\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093: "},
+        {"unable.to.create.", "\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093: "},
+        {".adding.", "   \u8FFD\u52A0\u4E2D: "},
+        {".updating.", " \u66F4\u65B0\u4E2D: "},
+        {".signing.", "  \u7F72\u540D\u4E2D: "},
+        {"attempt.to.rename.signedJarFile.to.jarFile.failed",
+                "{0}\u306E\u540D\u524D\u3092{1}\u306B\u5909\u66F4\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F\u304C\u5931\u6557\u3057\u307E\u3057\u305F"},
+        {"attempt.to.rename.jarFile.to.origJar.failed",
+                "{0}\u306E\u540D\u524D\u3092{1}\u306B\u5909\u66F4\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F\u304C\u5931\u6557\u3057\u307E\u3057\u305F"},
+        {"unable.to.sign.jar.", "jar\u306B\u7F72\u540D\u3067\u304D\u307E\u305B\u3093: "},
+        {"Enter.Passphrase.for.keystore.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: "},
+        {"keystore.load.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30ED\u30FC\u30C9: "},
+        {"certificate.exception.", "\u8A3C\u660E\u66F8\u4F8B\u5916: "},
+        {"unable.to.instantiate.keystore.class.",
+                "\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30AF\u30E9\u30B9\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093: "},
+        {"Certificate.chain.not.found.for.alias.alias.must.reference.a.valid.KeyStore.key.entry.containing.a.private.key.and",
+                "\u6B21\u306E\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0}\u3002{1}\u306F\u3001\u79D8\u5BC6\u9375\u304A\u3088\u3073\u5BFE\u5FDC\u3059\u308B\u516C\u958B\u9375\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u3092\u542B\u3080\u6709\u52B9\u306AKeyStore\u9375\u30A8\u30F3\u30C8\u30EA\u3092\u53C2\u7167\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002"},
+        {"File.specified.by.certchain.does.not.exist",
+                "-certchain\u3067\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u30D5\u30A1\u30A4\u30EB\u306F\u5B58\u5728\u3057\u307E\u305B\u3093"},
+        {"Cannot.restore.certchain.from.file.specified",
+                "\u6307\u5B9A\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u3092\u5FA9\u5143\u3067\u304D\u307E\u305B\u3093"},
+        {"Certificate.chain.not.found.in.the.file.specified.",
+                "\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u306F\u6307\u5B9A\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u306B\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002"},
+        {"found.non.X.509.certificate.in.signer.s.chain",
+                "\u7F72\u540D\u8005\u306E\u9023\u9396\u5185\u3067\u975EX.509\u8A3C\u660E\u66F8\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F"},
+        {"incomplete.certificate.chain", "\u4E0D\u5B8C\u5168\u306A\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3"},
+        {"Enter.key.password.for.alias.", "{0}\u306E\u9375\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: "},
+        {"unable.to.recover.key.from.keystore",
+                "\u30AD\u30FC\u30B9\u30C8\u30A2\u304B\u3089\u9375\u3092\u5FA9\u5143\u3067\u304D\u307E\u305B\u3093"},
+        {"key.associated.with.alias.not.a.private.key",
+                "{0}\u3068\u95A2\u9023\u4ED8\u3051\u3089\u308C\u305F\u9375\u306F\u3001\u79D8\u5BC6\u9375\u3067\u306F\u3042\u308A\u307E\u305B\u3093"},
+        {"you.must.enter.key.password", "\u9375\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
+        {"unable.to.read.password.", "\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093: "},
+        {"certificate.is.valid.from", "\u8A3C\u660E\u66F8\u306F{0}\u304B\u3089{1}\u307E\u3067\u6709\u52B9\u3067\u3059"},
+        {"certificate.expired.on", "\u8A3C\u660E\u66F8\u306F{0}\u306B\u5931\u52B9\u3057\u307E\u3057\u305F"},
+        {"certificate.is.not.valid.until",
+                "\u8A3C\u660E\u66F8\u306F{0}\u307E\u3067\u6709\u52B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093"},
+        {"certificate.will.expire.on", "\u8A3C\u660E\u66F8\u306F{0}\u306B\u5931\u52B9\u3057\u307E\u3059"},
+        {".CertPath.not.validated.", "[CertPath\u304C\u691C\u8A3C\u3055\u308C\u3066\u3044\u307E\u305B\u3093: "},
+        {"requesting.a.signature.timestamp",
+                "\u7F72\u540D\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u306E\u30EA\u30AF\u30A8\u30B9\u30C8"},
+        {"TSA.location.", "TSA\u306E\u5834\u6240: "},
+        {"TSA.certificate.", "TSA\u8A3C\u660E\u66F8: "},
+        {"no.response.from.the.Timestamping.Authority.",
+                "\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u5C40\u304B\u3089\u306E\u30EC\u30B9\u30DD\u30F3\u30B9\u304C\u3042\u308A\u307E\u305B\u3093\u3002 "},
+        {"When.connecting.from.behind.a.firewall.then.an.HTTP.proxy.may.need.to.be.specified.",
+                "\u30D5\u30A1\u30A4\u30A2\u30A6\u30A9\u30FC\u30EB\u3092\u4ECB\u3057\u3066\u63A5\u7D9A\u3059\u308B\u3068\u304D\u306F\u3001\u5FC5\u8981\u306B\u5FDC\u3058\u3066HTTP\u30D7\u30ED\u30AD\u30B7\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002 "},
+        {"Supply.the.following.options.to.jarsigner.",
+                "jarsigner\u306B\u6B21\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: "},
+        {"Certificate.not.found.for.alias.alias.must.reference.a.valid.KeyStore.entry.containing.an.X.509.public.key.certificate.for.the",
+                "\u8A3C\u660E\u66F8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F: {0}\u3002{1}\u306F\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u5C40\u306EX.509\u516C\u958B\u9375\u8A3C\u660E\u66F8\u304C\u542B\u307E\u308C\u3066\u3044\u308B\u6709\u52B9\u306AKeyStore\u30A8\u30F3\u30C8\u30EA\u3092\u53C2\u7167\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002"},
+        {"using.an.alternative.signing.mechanism",
+                "\u4EE3\u66FF\u7F72\u540D\u30E1\u30AB\u30CB\u30BA\u30E0\u306E\u4F7F\u7528"},
+        {"entry.was.signed.on", "\u30A8\u30F3\u30C8\u30EA\u306F{0}\u306B\u7F72\u540D\u3055\u308C\u307E\u3057\u305F"},
+        {"with.a.CRL.including.d.entries", "%d\u500B\u306E\u30A8\u30F3\u30C8\u30EA\u3092\u542B\u3080CRL\u3092\u4F7F\u7528"},
+        {"Warning.", "\u8B66\u544A: "},
+        {"This.jar.contains.unsigned.entries.which.have.not.been.integrity.checked.",
+                "\u3053\u306Ejar\u306B\u306F\u3001\u6574\u5408\u6027\u30C1\u30A7\u30C3\u30AF\u3092\u3057\u3066\u3044\u306A\u3044\u672A\u7F72\u540D\u306E\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002 "},
+        {"This.jar.contains.entries.whose.signer.certificate.has.expired.",
+                "\u3053\u306Ejar\u306B\u306F\u3001\u7F72\u540D\u8005\u306E\u8A3C\u660E\u66F8\u304C\u671F\u9650\u5207\u308C\u306E\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002 "},
+        {"This.jar.contains.entries.whose.signer.certificate.will.expire.within.six.months.",
+                "\u3053\u306Ejar\u306B\u306F\u3001\u7F72\u540D\u8005\u306E\u8A3C\u660E\u66F8\u304C6\u304B\u6708\u4EE5\u5185\u306B\u671F\u9650\u5207\u308C\u3068\u306A\u308B\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002 "},
+        {"This.jar.contains.entries.whose.signer.certificate.is.not.yet.valid.",
+                "\u3053\u306Ejar\u306B\u306F\u3001\u7F72\u540D\u8005\u306E\u8A3C\u660E\u66F8\u304C\u307E\u3060\u6709\u52B9\u306B\u306A\u3063\u3066\u3044\u306A\u3044\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002 "},
+        {"Re.run.with.the.verbose.option.for.more.details.",
+                "\u8A73\u7D30\u306F\u3001-verbose\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u3066\u518D\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
+        {"Re.run.with.the.verbose.and.certs.options.for.more.details.",
+                "\u8A73\u7D30\u306F\u3001-verbose\u304A\u3088\u3073-certs\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u3066\u518D\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
+        {"The.signer.certificate.has.expired.",
+                "\u7F72\u540D\u8005\u306E\u8A3C\u660E\u66F8\u306F\u671F\u9650\u5207\u308C\u3067\u3059\u3002"},
+        {"The.signer.certificate.will.expire.within.six.months.",
+                "\u7F72\u540D\u8005\u306E\u8A3C\u660E\u66F8\u306F6\u304B\u6708\u4EE5\u5185\u306B\u671F\u9650\u5207\u308C\u306B\u306A\u308A\u307E\u3059\u3002"},
+        {"The.signer.certificate.is.not.yet.valid.",
+                "\u7F72\u540D\u8005\u306E\u8A3C\u660E\u66F8\u306F\u307E\u3060\u6709\u52B9\u306B\u306A\u3063\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"The.signer.certificate.s.KeyUsage.extension.doesn.t.allow.code.signing.",
+                 "\u7F72\u540D\u8005\u8A3C\u660E\u66F8\u306EKeyUsage\u62E1\u5F35\u6A5F\u80FD\u3067\u306F\u3001\u30B3\u30FC\u30C9\u7F72\u540D\u306F\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093\u3002"},
+        {"The.signer.certificate.s.ExtendedKeyUsage.extension.doesn.t.allow.code.signing.",
+                 "\u7F72\u540D\u8005\u8A3C\u660E\u66F8\u306EExtendedKeyUsage\u62E1\u5F35\u6A5F\u80FD\u3067\u306F\u3001\u30B3\u30FC\u30C9\u7F72\u540D\u306F\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093\u3002"},
+        {"The.signer.certificate.s.NetscapeCertType.extension.doesn.t.allow.code.signing.",
+                 "\u7F72\u540D\u8005\u8A3C\u660E\u66F8\u306ENetscapeCertType\u62E1\u5F35\u6A5F\u80FD\u3067\u306F\u3001\u30B3\u30FC\u30C9\u7F72\u540D\u306F\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093\u3002"},
+        {"This.jar.contains.entries.whose.signer.certificate.s.KeyUsage.extension.doesn.t.allow.code.signing.",
+                 "\u3053\u306Ejar\u306B\u306F\u3001\u7F72\u540D\u8005\u8A3C\u660E\u66F8\u306EKeyUsage\u62E1\u5F35\u6A5F\u80FD\u304C\u30B3\u30FC\u30C9\u7F72\u540D\u3092\u8A31\u53EF\u3057\u306A\u3044\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002"},
+        {"This.jar.contains.entries.whose.signer.certificate.s.ExtendedKeyUsage.extension.doesn.t.allow.code.signing.",
+                 "\u3053\u306Ejar\u306B\u306F\u3001\u7F72\u540D\u8005\u8A3C\u660E\u66F8\u306EExtendedKeyUsage\u62E1\u5F35\u6A5F\u80FD\u304C\u30B3\u30FC\u30C9\u7F72\u540D\u3092\u8A31\u53EF\u3057\u306A\u3044\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002"},
+        {"This.jar.contains.entries.whose.signer.certificate.s.NetscapeCertType.extension.doesn.t.allow.code.signing.",
+                 "\u3053\u306Ejar\u306B\u306F\u3001\u7F72\u540D\u8005\u8A3C\u660E\u66F8\u306ENetscapeCertType\u62E1\u5F35\u6A5F\u80FD\u304C\u30B3\u30FC\u30C9\u7F72\u540D\u3092\u8A31\u53EF\u3057\u306A\u3044\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002"},
+        {".{0}.extension.does.not.support.code.signing.",
+                 "[{0}\u62E1\u5F35\u6A5F\u80FD\u306F\u30B3\u30FC\u30C9\u7F72\u540D\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093]"},
+        {"The.signer.s.certificate.chain.is.not.validated.",
+                "\u7F72\u540D\u8005\u306E\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u304C\u307E\u3060\u691C\u8A3C\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"This.jar.contains.entries.whose.certificate.chain.is.not.validated.",
+                 "\u3053\u306Ejar\u306B\u306F\u3001\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u304C\u307E\u3060\u691C\u8A3C\u3055\u308C\u3066\u3044\u306A\u3044\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002"},
     };
 
     /**
--- a/jdk/src/share/classes/sun/security/tools/JarSignerResources_zh_CN.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/tools/JarSignerResources_zh_CN.java	Wed Jul 05 17:35:13 2017 +0200
@@ -35,199 +35,202 @@
     private static final Object[][] contents = {
 
         // shared (from jarsigner)
-        {" ", " "},
-        {"  ", "  "},
-        {"      ", "      "},
-        {", ", ", "},
+        {"SPACE", " "},
+        {"2SPACE", "  "},
+        {"6SPACE", "      "},
+        {"COMMA", ", "},
 
-        {"provName not a provider", "{0} \u4e0d\u662f\u63d0\u4f9b\u8005"},
-        {"signerClass is not a signing mechanism", "{0} \u4e0d\u662f\u7b7e\u540d\u673a\u5236"},
-        {"jarsigner error: ", "jarsigner \u9519\u8bef\uff1a "},
-        {"Illegal option: ", "\u975e\u6cd5\u9009\u9879\uff1a "},
-        {"-keystore must be NONE if -storetype is {0}",
-                "\u5982\u679c -storetype \u4e3a {0}\uff0c\u5219 -keystore \u5fc5\u987b\u4e3a NONE"},
-        {"-keypass can not be specified if -storetype is {0}",
-                "\u5982\u679c -storetype \u4e3a {0}\uff0c\u5219\u4e0d\u80fd\u6307\u5b9a -keypass"},
-        {"If -protected is specified, then -storepass and -keypass must not be specified",
-                "\u5982\u679c\u6307\u5b9a\u4e86 -protected\uff0c\u5219\u4e0d\u80fd\u6307\u5b9a -storepass \u548c -keypass"},
-        {"If keystore is not password protected, then -storepass and -keypass must not be specified",
-                 "\u5982\u679c\u5bc6\u94a5\u5e93\u672a\u53d7\u5bc6\u7801\u4fdd\u62a4\uff0c\u5219\u8bf7\u52ff\u6307\u5b9a -storepass \u548c -keypass"},
-        {"Usage: jarsigner [options] jar-file alias",
-                "\u7528\u6cd5\uff1ajarsigner [\u9009\u9879] jar \u6587\u4ef6\u522b\u540d"},
-        {"       jarsigner -verify [options] jar-file [alias...]",
-                "       jarsigner -verify [\u9009\u9879] jar \u6587\u4ef6 [\u522b\u540d...]"},
-        {"[-keystore <url>]           keystore location",
-                "[-keystore <url>]           \u5bc6\u94a5\u5e93\u4f4d\u7f6e"},
-        {"[-storepass <password>]     password for keystore integrity",
-            "[-storepass <\u53e3\u4ee4>]         \u7528\u4e8e\u5bc6\u94a5\u5e93\u5b8c\u6574\u6027\u7684\u53e3\u4ee4"},
-        {"[-storetype <type>]         keystore type",
-                "[-storetype <\u7c7b\u578b>]         \u5bc6\u94a5\u5e93\u7c7b\u578b"},
-        {"[-keypass <password>]       password for private key (if different)",
-                "[-keypass <\u53e3\u4ee4>]           \u4e13\u7528\u5bc6\u94a5\u7684\u53e3\u4ee4\uff08\u5982\u679c\u4e0d\u540c\uff09"},
-        {"[-certchain <file>]         name of alternative certchain file",
-                "[-certchain <\u6587\u4ef6>]         \u66ff\u4ee3\u8bc1\u4e66\u94fe\u6587\u4ef6\u7684\u540d\u79f0"},
-        {"[-sigfile <file>]           name of .SF/.DSA file",
-                "[-sigfile <\u6587\u4ef6>]           .SF/.DSA \u6587\u4ef6\u7684\u540d\u79f0"},
-        {"[-signedjar <file>]         name of signed JAR file",
-                "[-signedjar <\u6587\u4ef6>]         \u5df2\u7b7e\u540d\u7684 JAR \u6587\u4ef6\u7684\u540d\u79f0"},
-        {"[-digestalg <algorithm>]    name of digest algorithm",
-                "[-digestalg <\u7b97\u6cd5>]    \u6458\u8981\u7b97\u6cd5\u7684\u540d\u79f0"},
-        {"[-sigalg <algorithm>]       name of signature algorithm",
-                "[-sigalg <\u7b97\u6cd5>]       \u7b7e\u540d\u7b97\u6cd5\u7684\u540d\u79f0"},
-        {"[-verify]                   verify a signed JAR file",
-                "[-verify]                   \u9a8c\u8bc1\u5df2\u7b7e\u540d\u7684 JAR \u6587\u4ef6"},
-        {"[-verbose[:suboptions]]     verbose output when signing/verifying.",
-                "[-verbose[:\u5b50\u9009\u9879]]     \u7b7e\u540d/\u9a8c\u8bc1\u65f6\u8f93\u51fa\u8be6\u7ec6\u4fe1\u606f\u3002"},
-        {"                            suboptions can be all, grouped or summary",
-                "                            \u5b50\u9009\u9879\u53ef\u4ee5\u4e3a all\u3001grouped \u6216 summary"},
-        {"[-certs]                    display certificates when verbose and verifying",
-                "[-certs]                    \u8f93\u51fa\u8be6\u7ec6\u4fe1\u606f\u548c\u9a8c\u8bc1\u65f6\u663e\u793a\u8bc1\u4e66"},
-        {"[-tsa <url>]                location of the Timestamping Authority",
-                "[-tsa <url>]                \u65f6\u95f4\u6233\u673a\u6784\u7684\u4f4d\u7f6e"},
-        {"[-tsacert <alias>]          public key certificate for Timestamping Authority",
-                "[-tsacert <\u522b\u540d>]           \u65f6\u95f4\u6233\u673a\u6784\u7684\u516c\u5171\u5bc6\u94a5\u8bc1\u4e66"},
-        {"[-altsigner <class>]        class name of an alternative signing mechanism",
-                "[-altsigner <\u7c7b>]           \u66ff\u4ee3\u7684\u7b7e\u540d\u673a\u5236\u7684\u7c7b\u540d"},
-        {"[-altsignerpath <pathlist>] location of an alternative signing mechanism",
-                "[-altsignerpath <\u8def\u5f84\u5217\u8868>] \u66ff\u4ee3\u7684\u7b7e\u540d\u673a\u5236\u7684\u4f4d\u7f6e"},
-        {"[-internalsf]               include the .SF file inside the signature block",
-                "[-internalsf]               \u5728\u7b7e\u540d\u5757\u5185\u5305\u542b .SF \u6587\u4ef6"},
-        {"[-sectionsonly]             don't compute hash of entire manifest",
-                "[-sectionsonly]             \u4e0d\u8ba1\u7b97\u6574\u4e2a\u6e05\u5355\u7684\u6563\u5217"},
-        {"[-protected]                keystore has protected authentication path",
-                "[-protected]                \u5bc6\u94a5\u5e93\u5df2\u4fdd\u62a4\u9a8c\u8bc1\u8def\u5f84"},
-        {"[-providerName <name>]      provider name",
-                "[-providerName <\u540d\u79f0>]      \u63d0\u4f9b\u8005\u540d\u79f0"},
-        {"[-providerClass <class>     name of cryptographic service provider's",
-                "[-providerClass <\u7c7b>        \u52a0\u5bc6\u670d\u52a1\u63d0\u4f9b\u8005\u7684\u540d\u79f0"},
-        {"  [-providerArg <arg>]] ... master class file and constructor argument",
-                "  [-providerArg <\u53c2\u6570>]] ... \u4e3b\u7c7b\u6587\u4ef6\u548c\u6784\u9020\u51fd\u6570\u53c2\u6570"},
-        {"[-strict]                   treat warnings as errors",
-                "[-strict]                   \u5c06\u8b66\u544a\u89c6\u4e3a\u9519\u8bef"},
-        {"Option lacks argument", "\u9009\u9879\u7f3a\u5c11\u53c2\u6570"},
-        {"Please type jarsigner -help for usage", "\u6709\u5173\u7528\u6cd5\uff0c\u8bf7\u952e\u5165 jarsigner -help"},
-        {"Please specify jarfile name", "\u8bf7\u6307\u5b9a jarfile \u540d\u79f0"},
-        {"Please specify alias name", "\u8bf7\u6307\u5b9a\u522b\u540d"},
-        {"Only one alias can be specified", "\u53ea\u80fd\u6307\u5b9a\u4e00\u4e2a\u522b\u540d"},
-        {"This jar contains signed entries which is not signed by the specified alias(es).",
-                 "\u6b64 jar \u5305\u542b\u6307\u5b9a\u522b\u540d\u672a\u7b7e\u540d\u7684\u7b7e\u540d\u6761\u76ee\u3002"},
-        {"This jar contains signed entries that's not signed by alias in this keystore.",
-                  "\u6b64 jar \u5305\u542b\u6b64\u5bc6\u94a5\u5e93\u4e2d\u522b\u540d\u672a\u7b7e\u540d\u7684\u7b7e\u540d\u6761\u76ee\u3002"},
+        {"provName.not.a.provider", "{0}\u4E0D\u662F\u63D0\u4F9B\u65B9"},
+        {"signerClass.is.not.a.signing.mechanism", "{0}\u4E0D\u662F\u7B7E\u540D\u673A\u5236"},
+        {"jarsigner.error.", "jarsigner \u9519\u8BEF: "},
+        {"Illegal.option.", "\u975E\u6CD5\u9009\u9879: "},
+        {".keystore.must.be.NONE.if.storetype.is.{0}",
+                "\u5982\u679C -storetype \u4E3A {0}, \u5219 -keystore \u5FC5\u987B\u4E3A NONE"},
+        {".keypass.can.not.be.specified.if.storetype.is.{0}",
+                "\u5982\u679C -storetype \u4E3A {0}, \u5219\u4E0D\u80FD\u6307\u5B9A -keypass"},
+        {"If.protected.is.specified.then.storepass.and.keypass.must.not.be.specified",
+                "\u5982\u679C\u6307\u5B9A\u4E86 -protected, \u5219\u4E0D\u80FD\u6307\u5B9A -storepass \u548C -keypass"},
+        {"If.keystore.is.not.password.protected.then.storepass.and.keypass.must.not.be.specified",
+                 "\u5982\u679C\u5BC6\u94A5\u5E93\u672A\u53D7\u53E3\u4EE4\u4FDD\u62A4, \u5219\u4E0D\u80FD\u6307\u5B9A -storepass \u548C -keypass"},
+        {"Usage.jarsigner.options.jar.file.alias",
+                "\u7528\u6CD5: jarsigner [\u9009\u9879] jar \u6587\u4EF6\u522B\u540D"},
+        {".jarsigner.verify.options.jar.file.alias.",
+                "       jarsigner -verify [options] jar-file [alias...]"},
+        {".keystore.url.keystore.location",
+                "[-keystore <url>]           \u5BC6\u94A5\u5E93\u4F4D\u7F6E"},
+        {".storepass.password.password.for.keystore.integrity",
+            "[-storepass <\u53E3\u4EE4>]         \u7528\u4E8E\u5BC6\u94A5\u5E93\u5B8C\u6574\u6027\u7684\u53E3\u4EE4"},
+        {".storetype.type.keystore.type",
+                "[-storetype <\u7C7B\u578B>]         \u5BC6\u94A5\u5E93\u7C7B\u578B"},
+        {".keypass.password.password.for.private.key.if.different.",
+                "[-keypass <\u53E3\u4EE4>]           \u79C1\u6709\u5BC6\u94A5\u7684\u53E3\u4EE4 (\u5982\u679C\u4E0D\u540C)"},
+        {".certchain.file.name.of.alternative.certchain.file",
+                "[-certchain <file>]         \u66FF\u4EE3 certchain \u6587\u4EF6\u7684\u540D\u79F0"},
+        {".sigfile.file.name.of.SF.DSA.file",
+                "[-sigfile <\u6587\u4EF6>]           .SF/.DSA \u6587\u4EF6\u7684\u540D\u79F0"},
+        {".signedjar.file.name.of.signed.JAR.file",
+                "[-signedjar <\u6587\u4EF6>]         \u5DF2\u7B7E\u540D\u7684 JAR \u6587\u4EF6\u7684\u540D\u79F0"},
+        {".digestalg.algorithm.name.of.digest.algorithm",
+                "[-digestalg <\u7B97\u6CD5>]    \u6458\u8981\u7B97\u6CD5\u7684\u540D\u79F0"},
+        {".sigalg.algorithm.name.of.signature.algorithm",
+                "[-sigalg <\u7B97\u6CD5>]       \u7B7E\u540D\u7B97\u6CD5\u7684\u540D\u79F0"},
+        {".crl.auto.file.include.CRL.in.signed.jar",
+                "[-crl[:auto| <file>]        \u5728\u5DF2\u7B7E\u540D\u7684 jar \u4E2D\u5305\u542B CRL"},
+        {".verify.verify.a.signed.JAR.file",
+                "[-verify]                   \u9A8C\u8BC1\u5DF2\u7B7E\u540D\u7684 JAR \u6587\u4EF6"},
+        {".verbose.suboptions.verbose.output.when.signing.verifying.",
+                "[-verbose[:suboptions]]     \u7B7E\u540D/\u9A8C\u8BC1\u65F6\u8F93\u51FA\u8BE6\u7EC6\u4FE1\u606F\u3002"},
+        {".suboptions.can.be.all.grouped.or.summary",
+                "                            \u5B50\u9009\u9879\u53EF\u4EE5\u662F all, grouped \u6216 summary"},
+        {".certs.display.certificates.when.verbose.and.verifying",
+                "[-certs]                    \u8F93\u51FA\u8BE6\u7EC6\u4FE1\u606F\u548C\u9A8C\u8BC1\u65F6\u663E\u793A\u8BC1\u4E66"},
+        {".tsa.url.location.of.the.Timestamping.Authority",
+                "[-tsa <url>]                \u65F6\u95F4\u6233\u9881\u53D1\u673A\u6784\u7684\u4F4D\u7F6E"},
+        {".tsacert.alias.public.key.certificate.for.Timestamping.Authority",
+                "[-tsacert <\u522B\u540D>]           \u65F6\u95F4\u6233\u9881\u53D1\u673A\u6784\u7684\u516C\u5171\u5BC6\u94A5\u8BC1\u4E66"},
+        {".altsigner.class.class.name.of.an.alternative.signing.mechanism",
+                "[-altsigner <\u7C7B>]           \u66FF\u4EE3\u7684\u7B7E\u540D\u673A\u5236\u7684\u7C7B\u540D"},
+        {".altsignerpath.pathlist.location.of.an.alternative.signing.mechanism",
+                "[-altsignerpath <\u8DEF\u5F84\u5217\u8868>] \u66FF\u4EE3\u7684\u7B7E\u540D\u673A\u5236\u7684\u4F4D\u7F6E"},
+        {".internalsf.include.the.SF.file.inside.the.signature.block",
+                "[-internalsf]               \u5728\u7B7E\u540D\u5757\u5185\u5305\u542B .SF \u6587\u4EF6"},
+        {".sectionsonly.don.t.compute.hash.of.entire.manifest",
+                "[-sectionsonly]             \u4E0D\u8BA1\u7B97\u6574\u4E2A\u6E05\u5355\u7684\u6563\u5217"},
+        {".protected.keystore.has.protected.authentication.path",
+                "[-protected]                \u5BC6\u94A5\u5E93\u5177\u6709\u53D7\u4FDD\u62A4\u9A8C\u8BC1\u8DEF\u5F84"},
+        {".providerName.name.provider.name",
+                "[-providerName <\u540D\u79F0>]      \u63D0\u4F9B\u65B9\u540D\u79F0"},
+        {".providerClass.class.name.of.cryptographic.service.provider.s",
+                "[-providerClass <\u7C7B>        \u52A0\u5BC6\u670D\u52A1\u63D0\u4F9B\u65B9\u7684\u540D\u79F0"},
+        {".providerArg.arg.master.class.file.and.constructor.argument",
+                "  [-providerArg <\u53C2\u6570>]]... \u4E3B\u7C7B\u6587\u4EF6\u548C\u6784\u9020\u5668\u53C2\u6570"},
+        {".strict.treat.warnings.as.errors",
+                "[-strict]                   \u5C06\u8B66\u544A\u89C6\u4E3A\u9519\u8BEF"},
+        {"Option.lacks.argument", "\u9009\u9879\u7F3A\u5C11\u53C2\u6570"},
+        {"Please.type.jarsigner.help.for.usage", "\u8BF7\u952E\u5165 jarsigner -help \u4EE5\u4E86\u89E3\u7528\u6CD5"},
+        {"Please.specify.jarfile.name", "\u8BF7\u6307\u5B9A jarfile \u540D\u79F0"},
+        {"Please.specify.alias.name", "\u8BF7\u6307\u5B9A\u522B\u540D"},
+        {"Only.one.alias.can.be.specified", "\u53EA\u80FD\u6307\u5B9A\u4E00\u4E2A\u522B\u540D"},
+        {"This.jar.contains.signed.entries.which.is.not.signed.by.the.specified.alias.es.",
+                 "\u6B64 jar \u5305\u542B\u672A\u7531\u6307\u5B9A\u522B\u540D\u7B7E\u540D\u7684\u5DF2\u7B7E\u540D\u6761\u76EE\u3002"},
+        {"This.jar.contains.signed.entries.that.s.not.signed.by.alias.in.this.keystore.",
+                  "\u6B64 jar \u5305\u542B\u672A\u7531\u6B64\u5BC6\u94A5\u5E93\u4E2D\u7684\u522B\u540D\u7B7E\u540D\u7684\u5DF2\u7B7E\u540D\u6761\u76EE\u3002"},
         {"s", "s"},
         {"m", "m"},
         {"k", "k"},
         {"i", "i"},
-        {"(and %d more)", "\uff08\u8fd8\u6709 %d\uff09"},
-        {"  s = signature was verified ",
-                "  s = \u5df2\u9a8c\u8bc1\u7b7e\u540d "},
-        {"  m = entry is listed in manifest",
-                "  m = \u5728\u6e05\u5355\u4e2d\u5217\u51fa\u6761\u76ee"},
-        {"  k = at least one certificate was found in keystore",
-                "  k = \u5728\u5bc6\u94a5\u5e93\u4e2d\u81f3\u5c11\u627e\u5230\u4e86\u4e00\u4e2a\u8bc1\u4e66"},
-        {"  i = at least one certificate was found in identity scope",
-                "  i = \u5728\u8eab\u4efd\u4f5c\u7528\u57df\u5185\u81f3\u5c11\u627e\u5230\u4e86\u4e00\u4e2a\u8bc1\u4e66"},
-        {"  X = not signed by specified alias(es)",
-                "  X = \u672a\u7ecf\u6307\u5b9a\u522b\u540d\u7b7e\u540d"},
-        {"no manifest.", "\u6ca1\u6709\u6e05\u5355\u3002"},
-        {"(Signature related entries)","\uff08\u4e0e\u7b7e\u540d\u6709\u5173\u7684\u6761\u76ee\uff09"},
-        {"(Unsigned entries)", "\uff08\u672a\u7b7e\u540d\u7684\u6761\u76ee\uff09"},
-        {"jar is unsigned. (signatures missing or not parsable)",
-                "jar \u672a\u7b7e\u540d\u3002\uff08\u7f3a\u5c11\u7b7e\u540d\u6216\u7b7e\u540d\u65e0\u6cd5\u89e3\u6790\uff09"},
-        {"jar verified.", "jar \u5df2\u9a8c\u8bc1\u3002"},
-        {"jarsigner: ", "jarsigner\uff1a "},
-        {"signature filename must consist of the following characters: A-Z, 0-9, _ or -",
-                "\u7b7e\u540d\u6587\u4ef6\u540d\u5fc5\u987b\u5305\u542b\u4ee5\u4e0b\u5b57\u7b26\uff1aA-Z\u30010-9\u3001_ \u6216 -"},
-        {"unable to open jar file: ", "\u65e0\u6cd5\u6253\u5f00 jar \u6587\u4ef6\uff1a "},
-        {"unable to create: ", "\u65e0\u6cd5\u521b\u5efa\uff1a "},
-        {"   adding: ", "   \u6b63\u5728\u6dfb\u52a0\uff1a "},
-        {" updating: ", " \u6b63\u5728\u66f4\u65b0\uff1a "},
-        {"  signing: ", "  \u6b63\u5728\u7b7e\u540d\uff1a "},
-        {"attempt to rename signedJarFile to jarFile failed",
-                "\u5c1d\u8bd5\u5c06 {0} \u91cd\u547d\u540d\u4e3a {1} \u5931\u8d25"},
-        {"attempt to rename jarFile to origJar failed",
-                "\u5c1d\u8bd5\u5c06 {0} \u91cd\u547d\u540d\u4e3a {1} \u5931\u8d25"},
-        {"unable to sign jar: ", "\u65e0\u6cd5\u5bf9 jar \u8fdb\u884c\u7b7e\u540d\uff1a "},
-        {"Enter Passphrase for keystore: ", "\u8f93\u5165\u5bc6\u94a5\u5e93\u7684\u53e3\u4ee4\u77ed\u8bed\uff1a "},
-        {"keystore load: ", "\u5bc6\u94a5\u5e93\u88c5\u5165\uff1a "},
-        {"certificate exception: ", "\u8bc1\u4e66\u5f02\u5e38\uff1a "},
-        {"unable to instantiate keystore class: ",
-                "\u65e0\u6cd5\u5b9e\u4f8b\u5316\u5bc6\u94a5\u5e93\u7c7b\uff1a "},
-        {"Certificate chain not found for: alias.  alias must reference a valid KeyStore key entry containing a private key and corresponding public key certificate chain.",
-                "\u627e\u4e0d\u5230 {0} \u7684\u8bc1\u4e66\u94fe\u3002{1} \u5fc5\u987b\u5f15\u7528\u5305\u542b\u4e13\u7528\u5bc6\u94a5\u548c\u76f8\u5e94\u7684\u516c\u5171\u5bc6\u94a5\u8bc1\u4e66\u94fe\u7684\u6709\u6548\u5bc6\u94a5\u5e93\u5bc6\u94a5\u6761\u76ee\u3002"},
-        {"File specified by -certchain does not exist",
-                "-certchain \u6307\u5b9a\u7684\u6587\u4ef6\u4e0d\u5b58\u5728"},
-        {"Cannot restore certchain from file specified",
-                "\u65e0\u6cd5\u4ece\u6307\u5b9a\u6587\u4ef6\u6062\u590d\u8bc1\u4e66\u94fe"},
-        {"Certificate chain not found in the file specified.",
-                "\u5728\u6307\u5b9a\u6587\u4ef6\u4e2d\u672a\u627e\u5230\u8bc1\u4e66\u94fe\u3002"},
-        {"found non-X.509 certificate in signer's chain",
-                "\u5728\u7b7e\u540d\u8005\u7684\u94fe\u4e2d\u627e\u5230\u975e X.509 \u8bc1\u4e66"},
-        {"incomplete certificate chain", "\u8bc1\u4e66\u94fe\u4e0d\u5b8c\u6574"},
-        {"Enter key password for alias: ", "\u8f93\u5165 {0} \u7684\u5bc6\u94a5\u53e3\u4ee4\uff1a "},
-        {"unable to recover key from keystore",
-                "\u65e0\u6cd5\u4ece\u5bc6\u94a5\u5e93\u4e2d\u6062\u590d\u5bc6\u94a5"},
-        {"key associated with alias not a private key",
-                "\u4e0e {0} \u76f8\u5173\u7684\u5bc6\u94a5\u4e0d\u662f\u4e13\u7528\u5bc6\u94a5"},
-        {"you must enter key password", "\u60a8\u5fc5\u987b\u8f93\u5165\u5bc6\u94a5\u53e3\u4ee4"},
-        {"unable to read password: ", "\u65e0\u6cd5\u8bfb\u53d6\u53e3\u4ee4\uff1a "},
-        {"certificate is valid from", "\u8bc1\u4e66\u7684\u6709\u6548\u671f\u4e3a {0} \u81f3 {1}"},
-        {"certificate expired on", "\u8bc1\u4e66\u5230\u671f\u65e5\u671f\u4e3a {0}"},
-        {"certificate is not valid until",
-                "\u76f4\u5230 {0}\uff0c\u8bc1\u4e66\u624d\u6709\u6548"},
-        {"certificate will expire on", "\u8bc1\u4e66\u5c06\u5728 {0} \u5230\u671f"},
-        {"[CertPath not validated: ", "[\u8bc1\u4e66\u8def\u5f84\u672a\u7ecf\u8fc7\u9a8c\u8bc1\uff1a"},
-        {"requesting a signature timestamp",
-                "\u6b63\u5728\u8bf7\u6c42\u7b7e\u540d\u65f6\u95f4\u6233"},
-        {"TSA location: ", "TSA \u4f4d\u7f6e\uff1a "},
-        {"TSA certificate: ", "TSA \u8bc1\u4e66\uff1a "},
-        {"no response from the Timestamping Authority. ",
-                "\u65f6\u95f4\u6233\u673a\u6784\u6ca1\u6709\u54cd\u5e94\u3002 "},
-        {"When connecting from behind a firewall then an HTTP proxy may need to be specified. ",
-                "\u5982\u679c\u8981\u4ece\u9632\u706b\u5899\u540e\u9762\u8fde\u63a5\uff0c\u5219\u53ef\u80fd\u9700\u8981\u6307\u5b9a HTTP \u4ee3\u7406\u3002 "},
-        {"Supply the following options to jarsigner: ",
-                "\u8bf7\u4e3a jarsigner \u63d0\u4f9b\u4ee5\u4e0b\u9009\u9879\uff1a "},
-        {"Certificate not found for: alias.  alias must reference a valid KeyStore entry containing an X.509 public key certificate for the Timestamping Authority.",
-                "\u627e\u4e0d\u5230 {0} \u7684\u8bc1\u4e66\u3002{1} \u5fc5\u987b\u5f15\u7528\u5305\u542b\u65f6\u95f4\u6233\u673a\u6784\u7684 X.509 \u516c\u5171\u5bc6\u94a5\u8bc1\u4e66\u7684\u6709\u6548\u5bc6\u94a5\u5e93\u6761\u76ee\u3002"},
-        {"using an alternative signing mechanism",
-                "\u6b63\u5728\u4f7f\u7528\u66ff\u4ee3\u7684\u7b7e\u540d\u673a\u5236"},
-        {"entry was signed on", "\u6761\u76ee\u7684\u7b7e\u540d\u65e5\u671f\u4e3a {0}"},
-        {"Warning: ", "\u8b66\u544a\uff1a "},
-        {"This jar contains unsigned entries which have not been integrity-checked. ",
-                "\u6b64 jar \u5305\u542b\u5c1a\u672a\u8fdb\u884c\u5b8c\u6574\u6027\u68c0\u67e5\u7684\u672a\u7b7e\u540d\u6761\u76ee\u3002 "},
-        {"This jar contains entries whose signer certificate has expired. ",
-                "\u6b64 jar \u5305\u542b\u7b7e\u540d\u8005\u8bc1\u4e66\u5df2\u8fc7\u671f\u7684\u6761\u76ee\u3002 "},
-        {"This jar contains entries whose signer certificate will expire within six months. ",
-                "\u6b64 jar \u5305\u542b\u7b7e\u540d\u8005\u8bc1\u4e66\u5c06\u5728\u516d\u4e2a\u6708\u5185\u8fc7\u671f\u7684\u6761\u76ee\u3002 "},
-        {"This jar contains entries whose signer certificate is not yet valid. ",
-                "\u6b64 jar \u5305\u542b\u7b7e\u540d\u8005\u8bc1\u4e66\u4ecd\u65e0\u6548\u7684\u6761\u76ee\u3002 "},
-        {"Re-run with the -verbose option for more details.",
-                "\u8981\u4e86\u89e3\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u4f7f\u7528 -verbose \u9009\u9879\u91cd\u65b0\u8fd0\u884c\u3002"},
-        {"Re-run with the -verbose and -certs options for more details.",
-                "\u8981\u4e86\u89e3\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u4f7f\u7528 -verbose \u548c -certs \u9009\u9879\u91cd\u65b0\u8fd0\u884c\u3002"},
-        {"The signer certificate has expired.",
-                "\u7b7e\u540d\u8005\u8bc1\u4e66\u5df2\u8fc7\u671f\u3002"},
-        {"The signer certificate will expire within six months.",
-                "\u7b7e\u540d\u8005\u8bc1\u4e66\u5c06\u5728\u516d\u4e2a\u6708\u5185\u8fc7\u671f\u3002"},
-        {"The signer certificate is not yet valid.",
-                "\u7b7e\u540d\u8005\u8bc1\u4e66\u4ecd\u65e0\u6548\u3002"},
-        {"The signer certificate's KeyUsage extension doesn't allow code signing.",
-                 "\u7531\u4e8e\u7b7e\u540d\u8005\u8bc1\u4e66\u7684 KeyUsage \u6269\u5c55\u800c\u65e0\u6cd5\u8fdb\u884c\u4ee3\u7801\u7b7e\u540d\u3002"},
-        {"The signer certificate's ExtendedKeyUsage extension doesn't allow code signing.",
-                 "\u7531\u4e8e\u7b7e\u540d\u8005\u8bc1\u4e66\u7684 ExtendedKeyUsage \u6269\u5c55\u800c\u65e0\u6cd5\u8fdb\u884c\u4ee3\u7801\u7b7e\u540d\u3002"},
-        {"The signer certificate's NetscapeCertType extension doesn't allow code signing.",
-                 "\u7531\u4e8e\u7b7e\u540d\u8005\u8bc1\u4e66\u7684 NetscapeCertType \u6269\u5c55\u800c\u65e0\u6cd5\u8fdb\u884c\u4ee3\u7801\u7b7e\u540d\u3002"},
-        {"This jar contains entries whose signer certificate's KeyUsage extension doesn't allow code signing.",
-                 "\u6b64 jar \u5305\u542b\u7531\u4e8e\u7b7e\u540d\u8005\u8bc1\u4e66\u7684 KeyUsage \u6269\u5c55\u800c\u65e0\u6cd5\u8fdb\u884c\u4ee3\u7801\u7b7e\u540d\u7684\u6761\u76ee\u3002"},
-        {"This jar contains entries whose signer certificate's ExtendedKeyUsage extension doesn't allow code signing.",
-                 "\u6b64 jar \u5305\u542b\u7531\u4e8e\u7b7e\u540d\u8005\u8bc1\u4e66\u7684 ExtendedKeyUsage \u6269\u5c55\u800c\u65e0\u6cd5\u8fdb\u884c\u4ee3\u7801\u7b7e\u540d\u7684\u6761\u76ee\u3002"},
-        {"This jar contains entries whose signer certificate's NetscapeCertType extension doesn't allow code signing.",
-                 "\u6b64 jar \u5305\u542b\u7531\u4e8e\u7b7e\u540d\u8005\u8bc1\u4e66\u7684 NetscapeCertType \u6269\u5c55\u800c\u65e0\u6cd5\u8fdb\u884c\u4ee3\u7801\u7b7e\u540d\u7684\u6761\u76ee\u3002"},
-        {"[{0} extension does not support code signing]",
-                 "[{0} \u6269\u5c55\u4e0d\u652f\u6301\u4ee3\u7801\u7b7e\u540d]"},
-        {"The signer's certificate chain is not validated.",
-                "\u7b7e\u540d\u8005\u7684\u8bc1\u4e66\u94fe\u672a\u7ecf\u8fc7\u9a8c\u8bc1\u3002"},
-        {"This jar contains entries whose certificate chain is not validated.",
-                 "\u6b64 jar \u5305\u542b\u8bc1\u4e66\u94fe\u672a\u7ecf\u8fc7\u9a8c\u8bc1\u7684\u6761\u76ee\u3002"},
+        {".and.d.more.", "(%d \u53CA\u4EE5\u4E0A)"},
+        {".s.signature.was.verified.",
+                "  s = \u5DF2\u9A8C\u8BC1\u7B7E\u540D "},
+        {".m.entry.is.listed.in.manifest",
+                "  m = \u5728\u6E05\u5355\u4E2D\u5217\u51FA\u6761\u76EE"},
+        {".k.at.least.one.certificate.was.found.in.keystore",
+                "  k = \u5728\u5BC6\u94A5\u5E93\u4E2D\u81F3\u5C11\u627E\u5230\u4E86\u4E00\u4E2A\u8BC1\u4E66"},
+        {".i.at.least.one.certificate.was.found.in.identity.scope",
+                "  i = \u5728\u8EAB\u4EFD\u4F5C\u7528\u57DF\u5185\u81F3\u5C11\u627E\u5230\u4E86\u4E00\u4E2A\u8BC1\u4E66"},
+        {".X.not.signed.by.specified.alias.es.",
+                "  X = \u672A\u7531\u6307\u5B9A\u522B\u540D\u7B7E\u540D"},
+        {"no.manifest.", "\u6CA1\u6709\u6E05\u5355\u3002"},
+        {".Signature.related.entries.","(\u4E0E\u7B7E\u540D\u76F8\u5173\u7684\u6761\u76EE)"},
+        {".Unsigned.entries.", "(\u672A\u7B7E\u540D\u6761\u76EE)"},
+        {"jar.is.unsigned.signatures.missing.or.not.parsable.",
+                "jar \u672A\u7B7E\u540D\u3002(\u7F3A\u5C11\u7B7E\u540D\u6216\u65E0\u6CD5\u5BF9\u7B7E\u540D\u8FDB\u884C\u8BED\u6CD5\u5206\u6790)"},
+        {"jar.verified.", "jar \u5DF2\u9A8C\u8BC1\u3002"},
+        {"jarsigner.", "jarsigner: "},
+        {"signature.filename.must.consist.of.the.following.characters.A.Z.0.9.or.",
+                "\u7B7E\u540D\u6587\u4EF6\u540D\u5FC5\u987B\u5305\u542B\u4EE5\u4E0B\u5B57\u7B26: A-Z, 0-9, _ \u6216 -"},
+        {"unable.to.open.jar.file.", "\u65E0\u6CD5\u6253\u5F00 jar \u6587\u4EF6: "},
+        {"unable.to.create.", "\u65E0\u6CD5\u521B\u5EFA: "},
+        {".adding.", "   \u6B63\u5728\u6DFB\u52A0: "},
+        {".updating.", " \u6B63\u5728\u66F4\u65B0: "},
+        {".signing.", "  \u6B63\u5728\u7B7E\u540D: "},
+        {"attempt.to.rename.signedJarFile.to.jarFile.failed",
+                "\u5C1D\u8BD5\u5C06{0}\u91CD\u547D\u540D\u4E3A{1}\u65F6\u5931\u8D25"},
+        {"attempt.to.rename.jarFile.to.origJar.failed",
+                "\u5C1D\u8BD5\u5C06{0}\u91CD\u547D\u540D\u4E3A{1}\u65F6\u5931\u8D25"},
+        {"unable.to.sign.jar.", "\u65E0\u6CD5\u5BF9 jar \u8FDB\u884C\u7B7E\u540D: "},
+        {"Enter.Passphrase.for.keystore.", "\u8F93\u5165\u5BC6\u94A5\u5E93\u7684\u5BC6\u7801\u77ED\u8BED: "},
+        {"keystore.load.", "\u5BC6\u94A5\u5E93\u52A0\u8F7D: "},
+        {"certificate.exception.", "\u8BC1\u4E66\u5F02\u5E38\u9519\u8BEF: "},
+        {"unable.to.instantiate.keystore.class.",
+                "\u65E0\u6CD5\u5B9E\u4F8B\u5316\u5BC6\u94A5\u5E93\u7C7B: "},
+        {"Certificate.chain.not.found.for.alias.alias.must.reference.a.valid.KeyStore.key.entry.containing.a.private.key.and",
+                "\u627E\u4E0D\u5230{0}\u7684\u8BC1\u4E66\u94FE\u3002{1}\u5FC5\u987B\u5F15\u7528\u5305\u542B\u79C1\u6709\u5BC6\u94A5\u548C\u76F8\u5E94\u7684\u516C\u5171\u5BC6\u94A5\u8BC1\u4E66\u94FE\u7684\u6709\u6548 KeyStore \u5BC6\u94A5\u6761\u76EE\u3002"},
+        {"File.specified.by.certchain.does.not.exist",
+                "\u7531 -certchain \u6307\u5B9A\u7684\u6587\u4EF6\u4E0D\u5B58\u5728"},
+        {"Cannot.restore.certchain.from.file.specified",
+                "\u65E0\u6CD5\u4ECE\u6307\u5B9A\u7684\u6587\u4EF6\u8FD8\u539F certchain"},
+        {"Certificate.chain.not.found.in.the.file.specified.",
+                "\u5728\u6307\u5B9A\u7684\u6587\u4EF6\u4E2D\u627E\u4E0D\u5230\u8BC1\u4E66\u94FE\u3002"},
+        {"found.non.X.509.certificate.in.signer.s.chain",
+                "\u5728\u7B7E\u540D\u8005\u7684\u94FE\u4E2D\u627E\u5230\u975E X.509 \u8BC1\u4E66"},
+        {"incomplete.certificate.chain", "\u8BC1\u4E66\u94FE\u4E0D\u5B8C\u6574"},
+        {"Enter.key.password.for.alias.", "\u8F93\u5165{0}\u7684\u5BC6\u94A5\u53E3\u4EE4: "},
+        {"unable.to.recover.key.from.keystore",
+                "\u65E0\u6CD5\u4ECE\u5BC6\u94A5\u5E93\u4E2D\u6062\u590D\u5BC6\u94A5"},
+        {"key.associated.with.alias.not.a.private.key",
+                "\u4E0E{0}\u5173\u8054\u7684\u5BC6\u94A5\u4E0D\u662F\u79C1\u6709\u5BC6\u94A5"},
+        {"you.must.enter.key.password", "\u5FC5\u987B\u8F93\u5165\u5BC6\u94A5\u53E3\u4EE4"},
+        {"unable.to.read.password.", "\u65E0\u6CD5\u8BFB\u53D6\u53E3\u4EE4: "},
+        {"certificate.is.valid.from", "\u8BC1\u4E66\u7684\u6709\u6548\u671F\u4E3A{0}\u81F3{1}"},
+        {"certificate.expired.on", "\u8BC1\u4E66\u5230\u671F\u65E5\u671F\u4E3A {0}"},
+        {"certificate.is.not.valid.until",
+                "\u76F4\u5230{0}, \u8BC1\u4E66\u624D\u6709\u6548"},
+        {"certificate.will.expire.on", "\u8BC1\u4E66\u5C06\u5728{0}\u5230\u671F"},
+        {".CertPath.not.validated.", "[CertPath \u672A\u9A8C\u8BC1: "},
+        {"requesting.a.signature.timestamp",
+                "\u6B63\u5728\u8BF7\u6C42\u7B7E\u540D\u65F6\u95F4\u6233"},
+        {"TSA.location.", "TSA \u4F4D\u7F6E: "},
+        {"TSA.certificate.", "TSA \u8BC1\u4E66: "},
+        {"no.response.from.the.Timestamping.Authority.",
+                "\u65F6\u95F4\u6233\u9881\u53D1\u673A\u6784\u6CA1\u6709\u54CD\u5E94\u3002"},
+        {"When.connecting.from.behind.a.firewall.then.an.HTTP.proxy.may.need.to.be.specified.",
+                "\u5982\u679C\u8981\u4ECE\u9632\u706B\u5899\u540E\u9762\u8FDE\u63A5, \u5219\u53EF\u80FD\u9700\u8981\u6307\u5B9A HTTP \u4EE3\u7406\u3002 "},
+        {"Supply.the.following.options.to.jarsigner.",
+                "\u8BF7\u4E3A jarsigner \u63D0\u4F9B\u4EE5\u4E0B\u9009\u9879: "},
+        {"Certificate.not.found.for.alias.alias.must.reference.a.valid.KeyStore.entry.containing.an.X.509.public.key.certificate.for.the",
+                "\u627E\u4E0D\u5230{0}\u7684\u8BC1\u4E66\u3002{1}\u5FC5\u987B\u5F15\u7528\u5305\u542B\u65F6\u95F4\u6233\u9881\u53D1\u673A\u6784\u7684 X.509 \u516C\u5171\u5BC6\u94A5\u8BC1\u4E66\u7684\u6709\u6548 KeyStore \u6761\u76EE\u3002"},
+        {"using.an.alternative.signing.mechanism",
+                "\u6B63\u5728\u4F7F\u7528\u66FF\u4EE3\u7684\u7B7E\u540D\u673A\u5236"},
+        {"entry.was.signed.on", "\u6761\u76EE\u7684\u7B7E\u540D\u65E5\u671F\u4E3A {0}"},
+        {"with.a.CRL.including.d.entries", "\u5177\u6709\u5305\u542B %d \u4E2A\u6761\u76EE\u7684 CRL"},
+        {"Warning.", "\u8B66\u544A: "},
+        {"This.jar.contains.unsigned.entries.which.have.not.been.integrity.checked.",
+                "\u6B64 jar \u5305\u542B\u5C1A\u672A\u8FDB\u884C\u5B8C\u6574\u6027\u68C0\u67E5\u7684\u672A\u7B7E\u540D\u6761\u76EE\u3002 "},
+        {"This.jar.contains.entries.whose.signer.certificate.has.expired.",
+                "\u6B64 jar \u5305\u542B\u7B7E\u540D\u8005\u8BC1\u4E66\u5DF2\u8FC7\u671F\u7684\u6761\u76EE\u3002 "},
+        {"This.jar.contains.entries.whose.signer.certificate.will.expire.within.six.months.",
+                "\u6B64 jar \u5305\u542B\u7B7E\u540D\u8005\u8BC1\u4E66\u5C06\u5728\u516D\u4E2A\u6708\u5185\u8FC7\u671F\u7684\u6761\u76EE\u3002 "},
+        {"This.jar.contains.entries.whose.signer.certificate.is.not.yet.valid.",
+                "\u6B64 jar \u5305\u542B\u7B7E\u540D\u8005\u8BC1\u4E66\u4ECD\u65E0\u6548\u7684\u6761\u76EE\u3002 "},
+        {"Re.run.with.the.verbose.option.for.more.details.",
+                "\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u4F7F\u7528 -verbose \u9009\u9879\u91CD\u65B0\u8FD0\u884C\u3002"},
+        {"Re.run.with.the.verbose.and.certs.options.for.more.details.",
+                "\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u4F7F\u7528 -verbose \u548C -certs \u9009\u9879\u91CD\u65B0\u8FD0\u884C\u3002"},
+        {"The.signer.certificate.has.expired.",
+                "\u7B7E\u540D\u8005\u8BC1\u4E66\u5DF2\u8FC7\u671F\u3002"},
+        {"The.signer.certificate.will.expire.within.six.months.",
+                "\u7B7E\u540D\u8005\u8BC1\u4E66\u5C06\u5728\u516D\u4E2A\u6708\u5185\u8FC7\u671F\u3002"},
+        {"The.signer.certificate.is.not.yet.valid.",
+                "\u7B7E\u540D\u8005\u8BC1\u4E66\u4ECD\u65E0\u6548\u3002"},
+        {"The.signer.certificate.s.KeyUsage.extension.doesn.t.allow.code.signing.",
+                 "\u7531\u4E8E\u7B7E\u540D\u8005\u8BC1\u4E66\u7684 KeyUsage \u6269\u5C55\u800C\u65E0\u6CD5\u8FDB\u884C\u4EE3\u7801\u7B7E\u540D\u3002"},
+        {"The.signer.certificate.s.ExtendedKeyUsage.extension.doesn.t.allow.code.signing.",
+                 "\u7531\u4E8E\u7B7E\u540D\u8005\u8BC1\u4E66\u7684 ExtendedKeyUsage \u6269\u5C55\u800C\u65E0\u6CD5\u8FDB\u884C\u4EE3\u7801\u7B7E\u540D\u3002"},
+        {"The.signer.certificate.s.NetscapeCertType.extension.doesn.t.allow.code.signing.",
+                 "\u7531\u4E8E\u7B7E\u540D\u8005\u8BC1\u4E66\u7684 NetscapeCertType \u6269\u5C55\u800C\u65E0\u6CD5\u8FDB\u884C\u4EE3\u7801\u7B7E\u540D\u3002"},
+        {"This.jar.contains.entries.whose.signer.certificate.s.KeyUsage.extension.doesn.t.allow.code.signing.",
+                 "\u6B64 jar \u5305\u542B\u7531\u4E8E\u7B7E\u540D\u8005\u8BC1\u4E66\u7684 KeyUsage \u6269\u5C55\u800C\u65E0\u6CD5\u8FDB\u884C\u4EE3\u7801\u7B7E\u540D\u7684\u6761\u76EE\u3002"},
+        {"This.jar.contains.entries.whose.signer.certificate.s.ExtendedKeyUsage.extension.doesn.t.allow.code.signing.",
+                 "\u6B64 jar \u5305\u542B\u7531\u4E8E\u7B7E\u540D\u8005\u8BC1\u4E66\u7684 ExtendedKeyUsage \u6269\u5C55\u800C\u65E0\u6CD5\u8FDB\u884C\u4EE3\u7801\u7B7E\u540D\u7684\u6761\u76EE\u3002"},
+        {"This.jar.contains.entries.whose.signer.certificate.s.NetscapeCertType.extension.doesn.t.allow.code.signing.",
+                 "\u6B64 jar \u5305\u542B\u7531\u4E8E\u7B7E\u540D\u8005\u8BC1\u4E66\u7684 NetscapeCertType \u6269\u5C55\u800C\u65E0\u6CD5\u8FDB\u884C\u4EE3\u7801\u7B7E\u540D\u7684\u6761\u76EE\u3002"},
+        {".{0}.extension.does.not.support.code.signing.",
+                 "[{0} \u6269\u5C55\u4E0D\u652F\u6301\u4EE3\u7801\u7B7E\u540D]"},
+        {"The.signer.s.certificate.chain.is.not.validated.",
+                "\u7B7E\u540D\u8005\u7684\u8BC1\u4E66\u94FE\u672A\u9A8C\u8BC1\u3002"},
+        {"This.jar.contains.entries.whose.certificate.chain.is.not.validated.",
+                 "\u6B64 jar \u5305\u542B\u8BC1\u4E66\u94FE\u672A\u9A8C\u8BC1\u7684\u6761\u76EE\u3002"},
     };
 
     /**
--- a/jdk/src/share/classes/sun/security/util/AuthResources_de.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/util/AuthResources_de.java	Wed Jul 05 17:35:13 2017 +0200
@@ -40,103 +40,103 @@
     private static final Object[][] contents = {
 
         // NT principals
-        {"invalid null input: value", "Ung\u00fcltige Nulleingabe: {0}"},
-        {"NTDomainPrincipal: name", "NT-Dom\u00e4nen-Principal: {0}"},
-        {"NTNumericCredential: name", "NT numerische Authentisierung: {0}"},
-        {"Invalid NTSid value", "Ung\u00fcltiger NTSid-Wert"},
-        {"NTSid: name", "NTSid: {0}"},
-        {"NTSidDomainPrincipal: name", "NT-Sid-Dom\u00e4nen-Principal: {0}"},
-        {"NTSidGroupPrincipal: name", "NT-Sid-Gruppen-Principal: {0}"},
-        {"NTSidPrimaryGroupPrincipal: name", "NT-Sid-Prim\u00e4rgruppen-Principal: {0}"},
-        {"NTSidUserPrincipal: name", "NT-Sid-Benutzer-Principal: {0}"},
-        {"NTUserPrincipal: name", "NT-Benutzer-Principal: {0}"},
+        {"invalid.null.input.value", "Ung\u00FCltige Nulleingabe: {0}"},
+        {"NTDomainPrincipal.name", "NTDomainPrincipal: {0}"},
+        {"NTNumericCredential.name", "NTNumericCredential: {0}"},
+        {"Invalid.NTSid.value", "Ung\u00FCltiger NTSid-Wert"},
+        {"NTSid.name", "NTSid: {0}"},
+        {"NTSidDomainPrincipal.name", "NTSidDomainPrincipal: {0}"},
+        {"NTSidGroupPrincipal.name", "NTSidGroupPrincipal: {0}"},
+        {"NTSidPrimaryGroupPrincipal.name", "NTSidPrimaryGroupPrincipal: {0}"},
+        {"NTSidUserPrincipal.name", "NTSidUserPrincipal: {0}"},
+        {"NTUserPrincipal.name", "NTUserPrincipal: {0}"},
 
         // UnixPrincipals
-        {"UnixNumericGroupPrincipal [Primary Group]: name",
-                "Unix numerischer Gruppen-Principal [Prim\u00e4rgruppe]: {0}"},
-        {"UnixNumericGroupPrincipal [Supplementary Group]: name",
-                "Unix numerische Gruppen-Principal [Zusatzgruppe]: {0}"},
-        {"UnixNumericUserPrincipal: name", "Unix numerischer Benutzer-Principal: {0}"},
-        {"UnixPrincipal: name", "Unix-Principal: {0}"},
+        {"UnixNumericGroupPrincipal.Primary.Group.name",
+                "UnixNumericGroupPrincipal [Prim\u00E4rgruppe]: {0}"},
+        {"UnixNumericGroupPrincipal.Supplementary.Group.name",
+                "UnixNumericGroupPrincipal [Zusatzgruppe]: {0}"},
+        {"UnixNumericUserPrincipal.name", "UnixNumericUserPrincipal: {0}"},
+        {"UnixPrincipal.name", "UnixPrincipal: {0}"},
 
         // com.sun.security.auth.login.ConfigFile
-        {"Unable to properly expand config", "{0} kann nicht ordnungsgem\u00e4\u00df erweitert werden."},
-        {"extra_config (No such file or directory)",
-                "{0} (Datei oder Verzeichnis existiert nicht.)"},
-        {"Configuration Error:\n\tNo such file or directory",
-                "Konfigurationsfehler: \n\tKeine Datei oder kein Verzeichnis dieser Art vorhanden"},
-        {"Configuration Error:\n\tInvalid control flag, flag",
-                "Konfigurationsfehler:\n\tUng\u00fcltiges Steuerflag, {0}"},
-        {"Configuration Error:\n\tCan not specify multiple entries for appName",
-            "Konfigurationsfehler:\n\tEs k\u00f6nnen nicht mehrere Angaben f\u00fcr {0} gemacht werden."},
-        {"Configuration Error:\n\texpected [expect], read [end of file]",
-                "Konfigurationsfehler:\n\terwartet [{0}], gelesen [Dateiende]"},
-        {"Configuration Error:\n\tLine line: expected [expect], found [value]",
-            "Konfigurationsfehler:\n\tZeile {0}: erwartet [{1}], gefunden [{2}]"},
-        {"Configuration Error:\n\tLine line: expected [expect]",
-            "Konfigurationsfehler:\n\tZeile {0}: erwartet [{1}]"},
-        {"Configuration Error:\n\tLine line: system property [value] expanded to empty value",
+        {"Unable.to.properly.expand.config", "{0} kann nicht ordnungsgem\u00E4\u00DF erweitert werden"},
+        {"extra.config.No.such.file.or.directory.",
+                "{0} (Datei oder Verzeichnis nicht vorhanden)"},
+        {"Configuration.Error.No.such.file.or.directory",
+                "Konfigurationsfehler:\n\tDatei oder Verzeichnis nicht vorhanden"},
+        {"Configuration.Error.Invalid.control.flag.flag",
+                "Konfigurationsfehler:\n\tUng\u00FCltiges Steuerkennzeichen {0}"},
+        {"Configuration.Error.Can.not.specify.multiple.entries.for.appName",
+            "Konfigurationsfehler:\n\tEs k\u00F6nnen nicht mehrere Angaben f\u00FCr {0} gemacht werden."},
+        {"Configuration.Error.expected.expect.read.end.of.file.",
+                "Konfigurationsfehler:\n\t[{0}] erwartet, [Dateiende] gelesen"},
+        {"Configuration.Error.Line.line.expected.expect.found.value.",
+            "Konfigurationsfehler:\n\tZeile {0}: [{1}] erwartet, [{2}] gefunden"},
+        {"Configuration.Error.Line.line.expected.expect.",
+            "Konfigurationsfehler:\n\tZeile {0}: [{1}] erwartet"},
+        {"Configuration.Error.Line.line.system.property.value.expanded.to.empty.value",
             "Konfigurationsfehler:\n\tZeile {0}: Systemeigenschaft [{1}] auf leeren Wert erweitert"},
 
         // com.sun.security.auth.module.JndiLoginModule
-        {"username: ","Benutzername: "},
-        {"password: ","Passwort: "},
+        {"username.","Benutzername: "},
+        {"password.","Kennwort: "},
 
         // com.sun.security.auth.module.KeyStoreLoginModule
-        {"Please enter keystore information",
-                "Bitte geben Sie die Keystore-Informationen ein"},
-        {"Keystore alias: ","Keystore-Alias: "},
-        {"Keystore password: ","Keystore-Passwort: "},
-        {"Private key password (optional): ",
-            "Privates Schl\u00fcsselpasswort (optional): "},
+        {"Please.enter.keystore.information",
+                "Geben Sie die Keystore-Informationen ein"},
+        {"Keystore.alias.","Keystore-Alias: "},
+        {"Keystore.password.","Keystore-Kennwort: "},
+        {"Private.key.password.optional.",
+            "Private Key-Kennwort (optional): "},
 
         // com.sun.security.auth.module.Krb5LoginModule
-        {"Kerberos username [[defUsername]]: ",
+        {"Kerberos.username.defUsername.",
                 "Kerberos-Benutzername [{0}]: "},
-        {"Kerberos password for [username]: ",
-                "Kerberos-Passwort f\u00fcr {0}: "},
+        {"Kerberos.password.for.username.",
+                "Kerberos-Kennwort f\u00FCr {0}: "},
 
         /***    EVERYTHING BELOW IS DEPRECATED  ***/
 
         // com.sun.security.auth.PolicyFile
-        {": error parsing ", ": Parser-Fehler "},
-        {": ", ": "},
-        {": error adding Permission ", ": Fehler beim Hinzuf\u00fcgen der Berechtigung "},
-        {" ", " "},
-        {": error adding Entry ", ": Fehler beim Hinzuf\u00fcgen des Eintrags "},
-        {"(", "("},
-        {")", ")"},
-        {"attempt to add a Permission to a readonly PermissionCollection",
-            "Es wurde versucht, eine Berechtigung zu einer schreibgesch\u00fctzten Berechtigungssammlung hinzuzuf\u00fcgen."},
+        {".error.parsing.", ": Parsefehler "},
+        {"COLON", ": "},
+        {".error.adding.Permission.", ": Fehler beim Hinzuf\u00FCgen der Berechtigung "},
+        {"SPACE", " "},
+        {".error.adding.Entry.", ": Fehler beim Hinzuf\u00FCgen des Eintrags "},
+        {"LPARAM", "("},
+        {"RPARAM", ")"},
+        {"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection",
+            "Es wurde versucht, eine Berechtigung zu einer schreibgesch\u00FCtzten PermissionCollection hinzuzuf\u00FCgen"},
 
         // com.sun.security.auth.PolicyParser
-        {"expected keystore type", "erwarteter Keystore-Typ"},
-        {"can not specify Principal with a ",
+        {"expected.keystore.type", "Keystore-Typ erwartet"},
+        {"can.not.specify.Principal.with.a.",
                 "Principal kann nicht mit einer "},
-        {"wildcard class without a wildcard name",
-                "Wildcard-Klasse ohne Wildcard-Namen angegeben werden."},
-        {"expected codeBase or SignedBy", "codeBase oder SignedBy erwartet"},
-        {"only Principal-based grant entries permitted",
-                "Nur Principal-basierte Berechtigungseintr\u00e4ge erlaubt"},
-        {"expected permission entry", "Berechtigungseintrag erwartet"},
-        {"number ", "Nummer "},
-        {"expected ", "erwartet "},
-        {", read end of file", ", Dateiende lesen"},
-        {"expected ';', read end of file", "';' erwartet, Dateiende lesen"},
-        {"line ", "Zeile "},
-        {": expected '", ": erwartet '"},
-        {"', found '", "', gefunden '"},
-        {"'", "'"},
+        {"wildcard.class.without.a.wildcard.name",
+                "Platzhalterklasse ohne Platzhalternamen angegeben werden"},
+        {"expected.codeBase.or.SignedBy", "codeBase oder SignedBy erwartet"},
+        {"only.Principal.based.grant.entries.permitted",
+                "Nur Principal-basierte Berechtigungseintr\u00E4ge zul\u00E4ssig"},
+        {"expected.permission.entry", "Berechtigungseintrag erwartet"},
+        {"number.", "Nummer "},
+        {"expected.", "erwartet "},
+        {".read.end.of.file", ", Dateiende gelesen"},
+        {"expected.read.end.of.file", "\";\" erwartet, Dateiende gelesen"},
+        {"line.", "Zeile "},
+        {".expected.", ": erwartet: \""},
+        {".found.", "\", gefunden: \""},
+        {"QUOTE", "'"},
 
         // SolarisPrincipals
-        {"SolarisNumericGroupPrincipal [Primary Group]: ",
-                "Solaris numerischer Gruppen-Principal [Prim\u00e4rgruppe]: "},
-        {"SolarisNumericGroupPrincipal [Supplementary Group]: ",
-                "Solaris numerischer Gruppen-Principal [Zusatzgruppe]: "},
-        {"SolarisNumericUserPrincipal: ",
-                "Solaris numerischer Benutzer-Principal: "},
-        {"SolarisPrincipal: ", "Solaris-Principal: "},
-        {"provided null name", "enthielt leeren Namen"}
+        {"SolarisNumericGroupPrincipal.Primary.Group.",
+                "SolarisNumericGroupPrincipal [Prim\u00E4rgruppe]: "},
+        {"SolarisNumericGroupPrincipal.Supplementary.Group.",
+                "SolarisNumericGroupPrincipal [Zusatzgruppe]: "},
+        {"SolarisNumericUserPrincipal.",
+                "SolarisNumericUserPrincipal: "},
+        {"SolarisPrincipal.", "SolarisPrincipal: "},
+        {"provided.null.name", "Nullname angegeben"}
 
     };
 
--- a/jdk/src/share/classes/sun/security/util/AuthResources_es.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/util/AuthResources_es.java	Wed Jul 05 17:35:13 2017 +0200
@@ -40,103 +40,103 @@
     private static final Object[][] contents = {
 
         // NT principals
-        {"invalid null input: value", "entrada nula no v\u00e1lida: {0}"},
-        {"NTDomainPrincipal: name", "NTDomainPrincipal: {0}"},
-        {"NTNumericCredential: name", "NTNumericCredential: {0}"},
-        {"Invalid NTSid value", "Valor de NTSid no v\u00e1lido"},
-        {"NTSid: name", "NTSid: {0}"},
-        {"NTSidDomainPrincipal: name", "NTSidDomainPrincipal: {0}"},
-        {"NTSidGroupPrincipal: name", "NTSidGroupPrincipal: {0}"},
-        {"NTSidPrimaryGroupPrincipal: name", "NTSidPrimaryGroupPrincipal: {0}"},
-        {"NTSidUserPrincipal: name", "NTSidUserPrincipal: {0}"},
-        {"NTUserPrincipal: name", "NTUserPrincipal: {0}"},
+        {"invalid.null.input.value", "entrada nula no v\u00E1lida: {0}"},
+        {"NTDomainPrincipal.name", "NTDomainPrincipal: {0}"},
+        {"NTNumericCredential.name", "NTNumericCredential: {0}"},
+        {"Invalid.NTSid.value", "Valor de NTSid no v\u00E1lido"},
+        {"NTSid.name", "NTSid: {0}"},
+        {"NTSidDomainPrincipal.name", "NTSidDomainPrincipal: {0}"},
+        {"NTSidGroupPrincipal.name", "NTSidGroupPrincipal: {0}"},
+        {"NTSidPrimaryGroupPrincipal.name", "NTSidPrimaryGroupPrincipal: {0}"},
+        {"NTSidUserPrincipal.name", "NTSidUserPrincipal: {0}"},
+        {"NTUserPrincipal.name", "NTUserPrincipal: {0}"},
 
         // UnixPrincipals
-        {"UnixNumericGroupPrincipal [Primary Group]: name",
-                "UnixNumericGroupPrincipal [Grupo principal] {0}"},
-        {"UnixNumericGroupPrincipal [Supplementary Group]: name",
-                "UnixNumericGroupPrincipal [Grupo adicional] {0}"},
-        {"UnixNumericUserPrincipal: name", "UnixNumericUserPrincipal: {0}"},
-        {"UnixPrincipal: name", "UnixPrincipal: {0}"},
+        {"UnixNumericGroupPrincipal.Primary.Group.name",
+                "UnixNumericGroupPrincipal [Grupo Principal] {0}"},
+        {"UnixNumericGroupPrincipal.Supplementary.Group.name",
+                "UnixNumericGroupPrincipal [Grupo Adicional] {0}"},
+        {"UnixNumericUserPrincipal.name", "UnixNumericUserPrincipal: {0}"},
+        {"UnixPrincipal.name", "UnixPrincipal: {0}"},
 
         // com.sun.security.auth.login.ConfigFile
-        {"Unable to properly expand config", "No se puede ampliar correctamente {0}"},
-        {"extra_config (No such file or directory)",
+        {"Unable.to.properly.expand.config", "No se ha podido ampliar correctamente {0}"},
+        {"extra.config.No.such.file.or.directory.",
                 "{0} (No existe tal archivo o directorio)"},
-        {"Configuration Error:\n\tNo such file or directory",
-                "Error de configuraci\u00f3n:\n\tNo se encuentra archivo o directorio"},
-        {"Configuration Error:\n\tInvalid control flag, flag",
-                "Error de configuraci\u00f3n:\n\tIndicador de control no v\u00e1lido, {0}"},
-        {"Configuration Error:\n\tCan not specify multiple entries for appName",
-            "Error de configuraci\u00f3n:\n\tNo se pueden especificar m\u00faltiples entradas para {0}"},
-        {"Configuration Error:\n\texpected [expect], read [end of file]",
-                "Error de configuraci\u00f3n:\n\tse esperaba [{0}], se ha le\u00eddo [end of file]"},
-        {"Configuration Error:\n\tLine line: expected [expect], found [value]",
-            "Error de configuraci\u00f3n:\n\tL\u00ednea {0}: se esperaba [{1}], se ha encontrado [{2}]"},
-        {"Configuration Error:\n\tLine line: expected [expect]",
-            "Error de configuraci\u00f3n:\n\tL\u00ednea {0}: se esperaba [{1}]"},
-        {"Configuration Error:\n\tLine line: system property [value] expanded to empty value",
-            "Error de configuraci\u00f3n:\n\tL\u00ednea {0}: propiedad de sistema [{1}] ampliada a valor vac\u00edo"},
+        {"Configuration.Error.No.such.file.or.directory",
+                "Error de Configuraci\u00F3n:\n\tNo existe tal archivo o directorio"},
+        {"Configuration.Error.Invalid.control.flag.flag",
+                "Error de Configuraci\u00F3n:\n\tIndicador de control no v\u00E1lido, {0}"},
+        {"Configuration.Error.Can.not.specify.multiple.entries.for.appName",
+            "Error de Configuraci\u00F3n:\n\tNo se pueden especificar varias entradas para {0}"},
+        {"Configuration.Error.expected.expect.read.end.of.file.",
+                "Error de configuraci\u00F3n:\n\tse esperaba [{0}], se ha le\u00EDdo [final de archivo]"},
+        {"Configuration.Error.Line.line.expected.expect.found.value.",
+            "Error de configuraci\u00F3n:\n\tL\u00EDnea {0}: se esperaba [{1}], se ha encontrado [{2}]"},
+        {"Configuration.Error.Line.line.expected.expect.",
+            "Error de configuraci\u00F3n:\n\tL\u00EDnea {0}: se esperaba [{1}]"},
+        {"Configuration.Error.Line.line.system.property.value.expanded.to.empty.value",
+            "Error de configuraci\u00F3n:\n\tL\u00EDnea {0}: propiedad de sistema [{1}] ampliada a valor vac\u00EDo"},
 
         // com.sun.security.auth.module.JndiLoginModule
-        {"username: ","nombre de usuario: "},
-        {"password: ","contrase\u00f1a: "},
+        {"username.","nombre de usuario: "},
+        {"password.","contrase\u00F1a: "},
 
         // com.sun.security.auth.module.KeyStoreLoginModule
-        {"Please enter keystore information",
-                "Introduzca la informaci\u00f3n del almac\u00e9n de claves"},
-        {"Keystore alias: ","Alias de almac\u00e9n de claves: "},
-        {"Keystore password: ","Contrase\u00f1a de almac\u00e9n de claves: "},
-        {"Private key password (optional): ",
-            "Contrase\u00f1a de clave privada (opcional): "},
+        {"Please.enter.keystore.information",
+                "Introduzca la informaci\u00F3n del almac\u00E9n de claves"},
+        {"Keystore.alias.","Alias de Almac\u00E9n de Claves: "},
+        {"Keystore.password.","Contrase\u00F1a de Almac\u00E9n de Claves: "},
+        {"Private.key.password.optional.",
+            "Contrase\u00F1a de Clave Privada (opcional): "},
 
         // com.sun.security.auth.module.Krb5LoginModule
-        {"Kerberos username [[defUsername]]: ",
+        {"Kerberos.username.defUsername.",
                 "Nombre de usuario de Kerberos [{0}]: "},
-        {"Kerberos password for [username]: ",
-                "Contrase\u00f1a de Kerberos de {0}: "},
+        {"Kerberos.password.for.username.",
+                "Contrase\u00F1a de Kerberos de {0}: "},
 
         /***    EVERYTHING BELOW IS DEPRECATED  ***/
 
         // com.sun.security.auth.PolicyFile
-        {": error parsing ", ": error de an\u00e1lisis "},
-        {": ", ": "},
-        {": error adding Permission ", ": error al agregar Permiso "},
-        {" ", " "},
-        {": error adding Entry ", ": error al agregar Entrada "},
-        {"(", "("},
-        {")", ")"},
-        {"attempt to add a Permission to a readonly PermissionCollection",
-            "se ha intentado agregar un Permiso a una Colecci\u00f3n de permisos de s\u00f3lo lectura"},
+        {".error.parsing.", ": error de an\u00E1lisis "},
+        {"COLON", ": "},
+        {".error.adding.Permission.", ": error al agregar el permiso "},
+        {"SPACE", " "},
+        {".error.adding.Entry.", ": error al agregar la entrada "},
+        {"LPARAM", "("},
+        {"RPARAM", ")"},
+        {"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection",
+            "se ha intentado agregar un permiso a una recopilaci\u00F3n de permisos de s\u00F3lo lectura"},
 
         // com.sun.security.auth.PolicyParser
-        {"expected keystore type", "se esperaba un tipo de almac\u00e9n de claves"},
-        {"can not specify Principal with a ",
+        {"expected.keystore.type", "se esperaba un tipo de almac\u00E9n de claves"},
+        {"can.not.specify.Principal.with.a.",
                 "no se puede especificar Principal con una "},
-        {"wildcard class without a wildcard name",
-                "clase comod\u00edn sin nombre de comod\u00edn"},
-        {"expected codeBase or SignedBy", "se esperaba base de c\u00f3digos o SignedBy"},
-        {"only Principal-based grant entries permitted",
-                "s\u00f3lo se permite conceder entradas basadas en Principal"},
-        {"expected permission entry", "se esperaba un permiso de entrada"},
-        {"number ", "n\u00famero "},
-        {"expected ", "se esperaba "},
-        {", read end of file", ", se ha le\u00eddo final de archivo"},
-        {"expected ';', read end of file", "se esperaba ';', se ha le\u00eddo final de archivo"},
-        {"line ", "l\u00ednea "},
-        {": expected '", ": se esperaba '"},
-        {"', found '", "', se ha encontrado '"},
-        {"'", "'"},
+        {"wildcard.class.without.a.wildcard.name",
+                "clase comod\u00EDn sin nombre de comod\u00EDn"},
+        {"expected.codeBase.or.SignedBy", "se esperaba codeBase o SignedBy"},
+        {"only.Principal.based.grant.entries.permitted",
+                "s\u00F3lo se permite otorgar entradas basadas en Principal"},
+        {"expected.permission.entry", "se esperaba un permiso de entrada"},
+        {"number.", "n\u00FAmero "},
+        {"expected.", "se esperaba "},
+        {".read.end.of.file", ", se ha le\u00EDdo el final de archivo"},
+        {"expected.read.end.of.file", "se esperaba ';', se ha le\u00EDdo el final de archivo"},
+        {"line.", "l\u00EDnea "},
+        {".expected.", ": se esperaba '"},
+        {".found.", "', se ha encontrado '"},
+        {"QUOTE", "'"},
 
         // SolarisPrincipals
-        {"SolarisNumericGroupPrincipal [Primary Group]: ",
-                "SolarisNumericGroupPrincipal [Grupo principal]: "},
-        {"SolarisNumericGroupPrincipal [Supplementary Group]: ",
-                "SolarisNumericGroupPrincipal [Grupo adicional]: "},
-        {"SolarisNumericUserPrincipal: ",
+        {"SolarisNumericGroupPrincipal.Primary.Group.",
+                "SolarisNumericGroupPrincipal [Grupo Principal]: "},
+        {"SolarisNumericGroupPrincipal.Supplementary.Group.",
+                "SolarisNumericGroupPrincipal [Grupo Adicional]: "},
+        {"SolarisNumericUserPrincipal.",
                 "SolarisNumericUserPrincipal: "},
-        {"SolarisPrincipal: ", "SolarisPrincipal: "},
-        {"provided null name", "se ha proporcionado un nombre nulo"}
+        {"SolarisPrincipal.", "SolarisPrincipal: "},
+        {"provided.null.name", "se ha proporcionado un nombre nulo"}
 
     };
 
--- a/jdk/src/share/classes/sun/security/util/AuthResources_fr.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/util/AuthResources_fr.java	Wed Jul 05 17:35:13 2017 +0200
@@ -40,103 +40,103 @@
     private static final Object[][] contents = {
 
         // NT principals
-        {"invalid null input: value", "entr\u00e9e Null non valide {0}"},
-        {"NTDomainPrincipal: name", "NTDomainPrincipal : {0}"},
-        {"NTNumericCredential: name", "NTNumericCredential : {0}"},
-        {"Invalid NTSid value", "Valeur de NTSid non valide"},
-        {"NTSid: name", "NTSid : {0}"},
-        {"NTSidDomainPrincipal: name", "NTSidDomainPrincipal : {0}"},
-        {"NTSidGroupPrincipal: name", "NTSidGroupPrincipal : {0}"},
-        {"NTSidPrimaryGroupPrincipal: name", "NTSidPrimaryGroupPrincipal : {0}"},
-        {"NTSidUserPrincipal: name", "NTSidUserPrincipal : {0}"},
-        {"NTUserPrincipal: name", "NTUserPrincipal : {0}"},
+        {"invalid.null.input.value", "entr\u00E9e NULL non valide : {0}"},
+        {"NTDomainPrincipal.name", "NTDomainPrincipal : {0}"},
+        {"NTNumericCredential.name", "NTNumericCredential : {0}"},
+        {"Invalid.NTSid.value", "Valeur de NTSid non valide"},
+        {"NTSid.name", "NTSid : {0}"},
+        {"NTSidDomainPrincipal.name", "NTSidDomainPrincipal : {0}"},
+        {"NTSidGroupPrincipal.name", "NTSidGroupPrincipal : {0}"},
+        {"NTSidPrimaryGroupPrincipal.name", "NTSidPrimaryGroupPrincipal : {0}"},
+        {"NTSidUserPrincipal.name", "NTSidUserPrincipal : {0}"},
+        {"NTUserPrincipal.name", "NTUserPrincipal : {0}"},
 
         // UnixPrincipals
-        {"UnixNumericGroupPrincipal [Primary Group]: name",
+        {"UnixNumericGroupPrincipal.Primary.Group.name",
                 "UnixNumericGroupPrincipal [groupe principal] : {0}"},
-        {"UnixNumericGroupPrincipal [Supplementary Group]: name",
-                "UnixNumericGroupPrincipal [groupe suppl\u00e9mentaire] : {0}"},
-        {"UnixNumericUserPrincipal: name", "UnixNumericUserPrincipal : {0}"},
-        {"UnixPrincipal: name", "UnixPrincipal : {0}"},
+        {"UnixNumericGroupPrincipal.Supplementary.Group.name",
+                "UnixNumericGroupPrincipal [groupe suppl\u00E9mentaire] : {0}"},
+        {"UnixNumericUserPrincipal.name", "UnixNumericUserPrincipal : {0}"},
+        {"UnixPrincipal.name", "UnixPrincipal : {0}"},
 
         // com.sun.security.auth.login.ConfigFile
-        {"Unable to properly expand config", "Impossible de d\u00e9velopper {0} correctement"},
-        {"extra_config (No such file or directory)",
-                "{0} (fichier ou r\u00e9pertoire introuvable)"},
-        {"Configuration Error:\n\tNo such file or directory",
-                "Erreur de configuration\u00a0:\n\tAucun fichier ou r\u00e9pertoire de ce type"},
-        {"Configuration Error:\n\tInvalid control flag, flag",
-                "Erreur de configuration :\n\tIndicateur de contr\u00f4le non valide, {0}"},
-        {"Configuration Error:\n\tCan not specify multiple entries for appName",
-            "Erreur de configuration :\n\tImpossible de sp\u00e9cifier des entr\u00e9es multiples pour {0}"},
-        {"Configuration Error:\n\texpected [expect], read [end of file]",
-                "Erreur de configuration :\n\tattendu [{0}], lecture [fin de fichier]"},
-        {"Configuration Error:\n\tLine line: expected [expect], found [value]",
-            "Erreur de configuration :\n\tLigne {0} : attendu [{1}], trouv\u00e9 [{2}]"},
-        {"Configuration Error:\n\tLine line: expected [expect]",
+        {"Unable.to.properly.expand.config", "Impossible de d\u00E9velopper {0} correctement"},
+        {"extra.config.No.such.file.or.directory.",
+                "{0} (fichier ou r\u00E9pertoire inexistant)"},
+        {"Configuration.Error.No.such.file.or.directory",
+                "Erreur de configuration :\n\tCe fichier ou r\u00E9pertoire n'existe pas"},
+        {"Configuration.Error.Invalid.control.flag.flag",
+                "Erreur de configuration :\n\tIndicateur de contr\u00F4le non valide, {0}"},
+        {"Configuration.Error.Can.not.specify.multiple.entries.for.appName",
+            "Erreur de configuration :\n\tImpossible de sp\u00E9cifier des entr\u00E9es multiples pour {0}"},
+        {"Configuration.Error.expected.expect.read.end.of.file.",
+                "Erreur de configuration :\n\tAttendu : [{0}], lu : [fin de fichier]"},
+        {"Configuration.Error.Line.line.expected.expect.found.value.",
+            "Erreur de configuration :\n\tLigne {0} : attendu [{1}], trouv\u00E9 [{2}]"},
+        {"Configuration.Error.Line.line.expected.expect.",
             "Erreur de configuration :\n\tLigne {0} : attendu [{1}]"},
-        {"Configuration Error:\n\tLine line: system property [value] expanded to empty value",
-            "Erreur de configuration :\n\tLigne {0} : propri\u00e9t\u00e9 syst\u00e8me [{1}] d\u00e9velopp\u00e9e en valeur vide"},
+        {"Configuration.Error.Line.line.system.property.value.expanded.to.empty.value",
+            "Erreur de configuration :\n\tLigne {0} : propri\u00E9t\u00E9 syst\u00E8me [{1}] d\u00E9velopp\u00E9e en valeur vide"},
 
         // com.sun.security.auth.module.JndiLoginModule
-        {"username: ","Nom d'utilisateur : "},
-        {"password: ","Mot de passe : "},
+        {"username.","nom utilisateur : "},
+        {"password.","mot de passe : "},
 
         // com.sun.security.auth.module.KeyStoreLoginModule
-        {"Please enter keystore information",
-                "Veuillez entrer les informations relatives \u00e0 Keystore"},
-        {"Keystore alias: ","Alias pour Keystore : "},
-        {"Keystore password: ","Mot de passe pour Keystore : "},
-        {"Private key password (optional): ",
-            "Mot de passe de cl\u00e9 priv\u00e9e (facultatif) : "},
+        {"Please.enter.keystore.information",
+                "Entrez les informations du fichier de cl\u00E9s"},
+        {"Keystore.alias.","Alias du fichier de cl\u00E9s : "},
+        {"Keystore.password.","Mot de passe pour fichier de cl\u00E9s : "},
+        {"Private.key.password.optional.",
+            "Mot de passe de la cl\u00E9 priv\u00E9e (facultatif) : "},
 
         // com.sun.security.auth.module.Krb5LoginModule
-        {"Kerberos username [[defUsername]]: ",
-                "Nom d''utilisateur Kerberos [{0}] : "},
-        {"Kerberos password for [username]: ",
-                "Mot de pass\u00e9 Kerberos pour {0} : "},
+        {"Kerberos.username.defUsername.",
+                "Nom utilisateur Kerberos [{0}] : "},
+        {"Kerberos.password.for.username.",
+                "Mot de passe Kerberos pour {0} : "},
 
         /***    EVERYTHING BELOW IS DEPRECATED  ***/
 
         // com.sun.security.auth.PolicyFile
-        {": error parsing ", " : erreur d'analyse "},
-        {": ", ": "},
-        {": error adding Permission ", " : erreur d'ajout de permission "},
-        {" ", " "},
-        {": error adding Entry ", " : erreur d'ajout d'entr\u00e9e "},
-        {"(", "("},
-        {")", ")"},
-        {"attempt to add a Permission to a readonly PermissionCollection",
-            "tentative d'ajout de permission \u00e0 un ensemble de permissions en lecture seule"},
+        {".error.parsing.", ": erreur d'analyse "},
+        {"COLON", ": "},
+        {".error.adding.Permission.", ": erreur d'ajout de droit "},
+        {"SPACE", " "},
+        {".error.adding.Entry.", ": erreur d'ajout d'entr\u00E9e "},
+        {"LPARAM", "("},
+        {"RPARAM", ")"},
+        {"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection",
+            "tentative d'ajout de droit \u00E0 un ensemble de droits en lecture seule"},
 
         // com.sun.security.auth.PolicyParser
-        {"expected keystore type", "type de Keystore attendu"},
-        {"can not specify Principal with a ",
-                "impossible de sp\u00e9cifier Principal avec une "},
-        {"wildcard class without a wildcard name",
-                "classe g\u00e9n\u00e9rique sans nom g\u00e9n\u00e9rique"},
-        {"expected codeBase or SignedBy", "codeBase ou SignedBy attendu"},
-        {"only Principal-based grant entries permitted",
-                "seules les entr\u00e9es bas\u00e9es sur Principal sont autoris\u00e9es"},
-        {"expected permission entry", "entr\u00e9e de permission attendue"},
-        {"number ", "nombre "},
-        {"expected ", "attendu "},
-        {", read end of file", ", lecture de fin de fichier"},
-        {"expected ';', read end of file", "attendu ';', lecture de fin de fichier"},
-        {"line ", "ligne "},
-        {": expected '", " : attendu '"},
-        {"', found '", "', trouv\u00e9 '"},
-        {"'", "'"},
+        {"expected.keystore.type", "type de fichier de cl\u00E9s attendu"},
+        {"can.not.specify.Principal.with.a.",
+                "impossible de sp\u00E9cifier le principal avec une "},
+        {"wildcard.class.without.a.wildcard.name",
+                "classe g\u00E9n\u00E9rique sans nom g\u00E9n\u00E9rique"},
+        {"expected.codeBase.or.SignedBy", "codeBase ou SignedBy attendu"},
+        {"only.Principal.based.grant.entries.permitted",
+                "seules les entr\u00E9es bas\u00E9es sur Principal sont autoris\u00E9es"},
+        {"expected.permission.entry", "entr\u00E9e de droit attendue"},
+        {"number.", "nombre "},
+        {"expected.", "attendu "},
+        {".read.end.of.file", ", lecture de fin de fichier"},
+        {"expected.read.end.of.file", "attendu ';', lecture de fin de fichier"},
+        {"line.", "ligne "},
+        {".expected.", ": attendu '"},
+        {".found.", "', trouv\u00E9 '"},
+        {"QUOTE", "'"},
 
         // SolarisPrincipals
-        {"SolarisNumericGroupPrincipal [Primary Group]: ",
+        {"SolarisNumericGroupPrincipal.Primary.Group.",
                 "SolarisNumericGroupPrincipal [groupe principal] : "},
-        {"SolarisNumericGroupPrincipal [Supplementary Group]: ",
-                "SolarisNumericGroupPrincipal [groupe suppl\u00e9mentaire] : "},
-        {"SolarisNumericUserPrincipal: ",
+        {"SolarisNumericGroupPrincipal.Supplementary.Group.",
+                "SolarisNumericGroupPrincipal [groupe suppl\u00E9mentaire] : "},
+        {"SolarisNumericUserPrincipal.",
                 "SolarisNumericUserPrincipal : "},
-        {"SolarisPrincipal: ", "SolarisPrincipal : "},
-        {"provided null name", "nom Null sp\u00e9cifi\u00e9"}
+        {"SolarisPrincipal.", "SolarisPrincipal : "},
+        {"provided.null.name", "nom NULL fourni"}
 
     };
 
--- a/jdk/src/share/classes/sun/security/util/AuthResources_it.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/util/AuthResources_it.java	Wed Jul 05 17:35:13 2017 +0200
@@ -38,104 +38,105 @@
 public class AuthResources_it extends java.util.ListResourceBundle {
 
     private static final Object[][] contents = {
+
         // NT principals
-        {"invalid null input: value", "input nullo non valido: {0}"},
-        {"NTDomainPrincipal: name", "NTDomainPrincipal: {0}"},
-        {"NTNumericCredential: name", "NTNumericCredential: {0}"},
-        {"Invalid NTSid value", "Valore NTSid non valido"},
-        {"NTSid: name", "NTSid: {0}"},
-        {"NTSidDomainPrincipal: name", "NTSidDomainPrincipal: {0}"},
-        {"NTSidGroupPrincipal: name", "NTSidGroupPrincipal: {0}"},
-        {"NTSidPrimaryGroupPrincipal: name", "NTSidPrimaryGroupPrincipal: {0}"},
-        {"NTSidUserPrincipal: name", "NTSidUserPrincipal: {0}"},
-        {"NTUserPrincipal: name", "NTUserPrincipal: {0}"},
+        {"invalid.null.input.value", "input nullo non valido: {0}"},
+        {"NTDomainPrincipal.name", "NTDomainPrincipal: {0}"},
+        {"NTNumericCredential.name", "NTNumericCredential: {0}"},
+        {"Invalid.NTSid.value", "Valore NTSid non valido"},
+        {"NTSid.name", "NTSid: {0}"},
+        {"NTSidDomainPrincipal.name", "NTSidDomainPrincipal: {0}"},
+        {"NTSidGroupPrincipal.name", "NTSidGroupPrincipal: {0}"},
+        {"NTSidPrimaryGroupPrincipal.name", "NTSidPrimaryGroupPrincipal: {0}"},
+        {"NTSidUserPrincipal.name", "NTSidUserPrincipal: {0}"},
+        {"NTUserPrincipal.name", "NTUserPrincipal: {0}"},
 
         // UnixPrincipals
-        {"UnixNumericGroupPrincipal [Primary Group]: name",
+        {"UnixNumericGroupPrincipal.Primary.Group.name",
                 "UnixNumericGroupPrincipal [gruppo primario]: {0}"},
-        {"UnixNumericGroupPrincipal [Supplementary Group]: name",
+        {"UnixNumericGroupPrincipal.Supplementary.Group.name",
                 "UnixNumericGroupPrincipal [gruppo supplementare]: {0}"},
-        {"UnixNumericUserPrincipal: name", "UnixNumericUserPrincipal: {0}"},
-        {"UnixPrincipal: name", "UnixPrincipal: {0}"},
+        {"UnixNumericUserPrincipal.name", "UnixNumericUserPrincipal: {0}"},
+        {"UnixPrincipal.name", "UnixPrincipal: {0}"},
 
         // com.sun.security.auth.login.ConfigFile
-        {"Unable to properly expand config", "Impossibile espandere correttamente {0}"},
-        {"extra_config (No such file or directory)",
+        {"Unable.to.properly.expand.config", "Impossibile espandere correttamente {0}"},
+        {"extra.config.No.such.file.or.directory.",
                 "{0} (file o directory inesistente)"},
-        {"Configuration Error:\n\tNo such file or directory",
-                "Errore di configurazione:\n\tfile o directory inesistente"},
-        {"Configuration Error:\n\tInvalid control flag, flag",
+        {"Configuration.Error.No.such.file.or.directory",
+                "Errore di configurazione:\n\tFile o directory inesistente"},
+        {"Configuration.Error.Invalid.control.flag.flag",
                 "Errore di configurazione:\n\tflag di controllo non valido, {0}"},
-        {"Configuration Error:\n\tCan not specify multiple entries for appName",
-            "Errore di configurazione:\n\timpossibile specificare pi\u00f9 valori per {0}"},
-        {"Configuration Error:\n\texpected [expect], read [end of file]",
+        {"Configuration.Error.Can.not.specify.multiple.entries.for.appName",
+            "Errore di configurazione:\n\timpossibile specificare pi\u00F9 valori per {0}"},
+        {"Configuration.Error.expected.expect.read.end.of.file.",
                 "Errore di configurazione:\n\tprevisto [{0}], letto [end of file]"},
-        {"Configuration Error:\n\tLine line: expected [expect], found [value]",
+        {"Configuration.Error.Line.line.expected.expect.found.value.",
             "Errore di configurazione:\n\triga {0}: previsto [{1}], trovato [{2}]"},
-        {"Configuration Error:\n\tLine line: expected [expect]",
+        {"Configuration.Error.Line.line.expected.expect.",
             "Errore di configurazione:\n\triga {0}: previsto [{1}]"},
-        {"Configuration Error:\n\tLine line: system property [value] expanded to empty value",
-            "Errore di configurazione:\n\triga {0}: propriet\u00e0 di sistema [{1}] espansa a valore vuoto"},
+        {"Configuration.Error.Line.line.system.property.value.expanded.to.empty.value",
+            "Errore di configurazione:\n\triga {0}: propriet\u00E0 di sistema [{1}] espansa a valore vuoto"},
 
         // com.sun.security.auth.module.JndiLoginModule
-        {"username: ","Nome utente: "},
-        {"password: ","Password: "},
+        {"username.","Nome utente: "},
+        {"password.","Password: "},
 
         // com.sun.security.auth.module.KeyStoreLoginModule
-        {"Please enter keystore information",
-                "Inserire le informazioni per il keystore"},
-        {"Keystore alias: ","Alias keystore: "},
-        {"Keystore password: ","Password keystore: "},
-        {"Private key password (optional): ",
+        {"Please.enter.keystore.information",
+                "Immettere le informazioni per il keystore"},
+        {"Keystore.alias.","Alias keystore: "},
+        {"Keystore.password.","Password keystore: "},
+        {"Private.key.password.optional.",
             "Password chiave privata (opzionale): "},
 
         // com.sun.security.auth.module.Krb5LoginModule
-        {"Kerberos username [[defUsername]]: ",
+        {"Kerberos.username.defUsername.",
                 "Nome utente Kerberos [{0}]: "},
-        {"Kerberos password for [username]: ",
+        {"Kerberos.password.for.username.",
                 "Password Kerberos per {0}: "},
 
         /***    EVERYTHING BELOW IS DEPRECATED  ***/
 
         // com.sun.security.auth.PolicyFile
-        {": error parsing ", ": errore nell'analisi "},
-        {": ", ": "},
-        {": error adding Permission ", ": errore nell'aggiunta del permesso "},
-        {" ", "  "},
-        {": error adding Entry ", ": errore nell'aggiunta dell'entry "},
-        {"(", "("},
-        {")", ")"},
-        {"attempt to add a Permission to a readonly PermissionCollection",
-            "tentativo di aggiungere un permesso a una PermissionCollection di sola lettura"},
+        {".error.parsing.", ": errore durante l'analisi "},
+        {"COLON", ": "},
+        {".error.adding.Permission.", ": errore durante l'aggiunta dell'autorizzazione "},
+        {"SPACE", " "},
+        {".error.adding.Entry.", ": errore durante l'aggiunta della voce "},
+        {"LPARAM", "("},
+        {"RPARAM", ")"},
+        {"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection",
+            "tentativo di aggiungere un'autorizzazione a una PermissionCollection di sola lettura"},
 
         // com.sun.security.auth.PolicyParser
-        {"expected keystore type", "tipo di keystore previsto"},
-        {"can not specify Principal with a ",
-                "impossibile specificare Principal con una "},
-        {"wildcard class without a wildcard name",
-                "classe wildcard senza un nome wildcard"},
-        {"expected codeBase or SignedBy", "previsto codeBase o SignedBy"},
-        {"only Principal-based grant entries permitted",
-                "sono permessi solo valori garantiti basati su Principal"},
-        {"expected permission entry", "prevista entry di permesso"},
-        {"number ", "numero "},
-        {"expected ", "previsto "},
-        {", read end of file", ", letto end of file"},
-        {"expected ';', read end of file", "previsto ';', letto end of file"},
-        {"line ", "riga "},
-        {": expected '", ": previsto '"},
-        {"', found '", "', trovato '"},
-        {"'", "'"},
+        {"expected.keystore.type", "tipo keystore previsto"},
+        {"can.not.specify.Principal.with.a.",
+                "impossibile specificare il principal con una "},
+        {"wildcard.class.without.a.wildcard.name",
+                "classe carattere jolly senza un nome carattere jolly"},
+        {"expected.codeBase.or.SignedBy", "previsto codeBase o SignedBy"},
+        {"only.Principal.based.grant.entries.permitted",
+                "sono consentiti solo valori garantiti basati sul principal"},
+        {"expected.permission.entry", "prevista voce di autorizzazione"},
+        {"number.", "numero "},
+        {"expected.", "previsto "},
+        {".read.end.of.file", ", letto end of file"},
+        {"expected.read.end.of.file", "previsto ';', letto end of file"},
+        {"line.", "riga "},
+        {".expected.", ": previsto '"},
+        {".found.", "', trovato '"},
+        {"QUOTE", "'"},
 
         // SolarisPrincipals
-        {"SolarisNumericGroupPrincipal [Primary Group]: ",
+        {"SolarisNumericGroupPrincipal.Primary.Group.",
                 "SolarisNumericGroupPrincipal [gruppo primario]: "},
-        {"SolarisNumericGroupPrincipal [Supplementary Group]: ",
+        {"SolarisNumericGroupPrincipal.Supplementary.Group.",
                 "SolarisNumericGroupPrincipal [gruppo supplementare]: "},
-        {"SolarisNumericUserPrincipal: ",
+        {"SolarisNumericUserPrincipal.",
                 "SolarisNumericUserPrincipal: "},
-        {"SolarisPrincipal: ", "SolarisPrincipal: "},
-        {"provided null name", "il nome fornito \u00e8 nullo"}
+        {"SolarisPrincipal.", "SolarisPrincipal: "},
+        {"provided.null.name", "il nome fornito \u00E8 nullo"}
 
     };
 
--- a/jdk/src/share/classes/sun/security/util/AuthResources_ja.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/util/AuthResources_ja.java	Wed Jul 05 17:35:13 2017 +0200
@@ -40,103 +40,103 @@
     private static final Object[][] contents = {
 
         // NT principals
-        {"invalid null input: value", "\u7121\u52b9\u306a null \u306e\u5165\u529b: {0}"},
-        {"NTDomainPrincipal: name", "NTDomainPrincipal: {0}"},
-        {"NTNumericCredential: name", "NTNumericCredential: {0}"},
-        {"Invalid NTSid value", "\u7121\u52b9\u306a NTSid \u5024"},
-        {"NTSid: name", "NTSid: {0}"},
-        {"NTSidDomainPrincipal: name", "NTSidDomainPrincipal: {0}"},
-        {"NTSidGroupPrincipal: name", "NTSidGroupPrincipal: {0}"},
-        {"NTSidPrimaryGroupPrincipal: name", "NTSidPrimaryGroupPrincipal: {0}"},
-        {"NTSidUserPrincipal: name", "NTSidUserPrincipal: {0}"},
-        {"NTUserPrincipal: name", "NTUserPrincipal: {0}"},
+        {"invalid.null.input.value", "\u7121\u52B9\u306Anull\u306E\u5165\u529B: {0}"},
+        {"NTDomainPrincipal.name", "NTDomainPrincipal: {0}"},
+        {"NTNumericCredential.name", "NTNumericCredential: {0}"},
+        {"Invalid.NTSid.value", "\u7121\u52B9\u306ANTSid\u5024"},
+        {"NTSid.name", "NTSid: {0}"},
+        {"NTSidDomainPrincipal.name", "NTSidDomainPrincipal: {0}"},
+        {"NTSidGroupPrincipal.name", "NTSidGroupPrincipal: {0}"},
+        {"NTSidPrimaryGroupPrincipal.name", "NTSidPrimaryGroupPrincipal: {0}"},
+        {"NTSidUserPrincipal.name", "NTSidUserPrincipal: {0}"},
+        {"NTUserPrincipal.name", "NTUserPrincipal: {0}"},
 
         // UnixPrincipals
-        {"UnixNumericGroupPrincipal [Primary Group]: name",
-                "UnixNumericGroupPrincipal [\u4e3b\u30b0\u30eb\u30fc\u30d7]: {0}"},
-        {"UnixNumericGroupPrincipal [Supplementary Group]: name",
-                "UnixNumericGroupPrincipal [\u88dc\u52a9\u30b0\u30eb\u30fc\u30d7]: {0}"},
-        {"UnixNumericUserPrincipal: name", "UnixNumericUserPrincipal: {0}"},
-        {"UnixPrincipal: name", "UnixPrincipal: {0}"},
+        {"UnixNumericGroupPrincipal.Primary.Group.name",
+                "UnixNumericGroupPrincipal [\u4E3B\u30B0\u30EB\u30FC\u30D7]: {0}"},
+        {"UnixNumericGroupPrincipal.Supplementary.Group.name",
+                "UnixNumericGroupPrincipal [\u88DC\u52A9\u30B0\u30EB\u30FC\u30D7]: {0}"},
+        {"UnixNumericUserPrincipal.name", "UnixNumericUserPrincipal: {0}"},
+        {"UnixPrincipal.name", "UnixPrincipal: {0}"},
 
         // com.sun.security.auth.login.ConfigFile
-        {"Unable to properly expand config", "{0} \u3092\u6b63\u3057\u304f\u5c55\u958b\u3067\u304d\u307e\u305b\u3093\u3002"},
-        {"extra_config (No such file or directory)",
-                "{0} (\u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u307e\u305f\u306f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u5b58\u5728\u3057\u307e\u305b\u3093)"},
-        {"Configuration Error:\n\tNo such file or directory",
-                "\u69cb\u6210\u30a8\u30e9\u30fc:\n\t\u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u307e\u305f\u306f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002"},
-        {"Configuration Error:\n\tInvalid control flag, flag",
-                "\u69cb\u6210\u30a8\u30e9\u30fc:\n\t\u7121\u52b9\u306a\u5236\u5fa1\u30d5\u30e9\u30b0: {0}"},
-        {"Configuration Error:\n\tCan not specify multiple entries for appName",
-            "\u69cb\u6210\u30a8\u30e9\u30fc:\n\t{0} \u306b\u8907\u6570\u306e\u30a8\u30f3\u30c8\u30ea\u3092\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002"},
-        {"Configuration Error:\n\texpected [expect], read [end of file]",
-                "\u69cb\u6210\u30a8\u30e9\u30fc:\n\t[{0}] \u3067\u306f\u306a\u304f\u3001[\u30d5\u30a1\u30a4\u30eb\u306e\u7d42\u308f\u308a] \u304c\u8aad\u307f\u8fbc\u307e\u308c\u307e\u3057\u305f\u3002"},
-        {"Configuration Error:\n\tLine line: expected [expect], found [value]",
-            "\u69cb\u6210\u30a8\u30e9\u30fc:\n\t\u884c {0}: [{1}] \u3067\u306f\u306a\u304f\u3001[{2}] \u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002"},
-        {"Configuration Error:\n\tLine line: expected [expect]",
-            "\u69cb\u6210\u30a8\u30e9\u30fc:\n\t\u884c {0}: [{1}] \u304c\u8981\u6c42\u3055\u308c\u307e\u3057\u305f\u3002"},
-        {"Configuration Error:\n\tLine line: system property [value] expanded to empty value",
-            "\u69cb\u6210\u30a8\u30e9\u30fc:\n\t\u884c {0}: \u30b7\u30b9\u30c6\u30e0\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc [{1}] \u304c\u7a7a\u306e\u5024\u306b\u5c55\u958b\u3055\u308c\u307e\u3057\u305f\u3002"},
+        {"Unable.to.properly.expand.config", "{0}\u3092\u6B63\u3057\u304F\u5C55\u958B\u3067\u304D\u307E\u305B\u3093"},
+        {"extra.config.No.such.file.or.directory.",
+                "{0}(\u6307\u5B9A\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306F\u5B58\u5728\u3057\u307E\u305B\u3093)"},
+        {"Configuration.Error.No.such.file.or.directory",
+                "\u69CB\u6210\u30A8\u30E9\u30FC:\n\t\u6307\u5B9A\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306F\u5B58\u5728\u3057\u307E\u305B\u3093"},
+        {"Configuration.Error.Invalid.control.flag.flag",
+                "\u69CB\u6210\u30A8\u30E9\u30FC:\n\t\u7121\u52B9\u306A\u5236\u5FA1\u30D5\u30E9\u30B0: {0}"},
+        {"Configuration.Error.Can.not.specify.multiple.entries.for.appName",
+            "\u69CB\u6210\u30A8\u30E9\u30FC:\n\t{0}\u306B\u8907\u6570\u306E\u30A8\u30F3\u30C8\u30EA\u3092\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093"},
+        {"Configuration.Error.expected.expect.read.end.of.file.",
+                "\u69CB\u6210\u30A8\u30E9\u30FC:\n\t[{0}]\u3067\u306F\u306A\u304F\u3001[\u30D5\u30A1\u30A4\u30EB\u306E\u7D42\u308F\u308A]\u304C\u8AAD\u307F\u8FBC\u307E\u308C\u307E\u3057\u305F"},
+        {"Configuration.Error.Line.line.expected.expect.found.value.",
+            "\u69CB\u6210\u30A8\u30E9\u30FC:\n\t\u884C{0}: [{1}]\u3067\u306F\u306A\u304F\u3001[{2}]\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F"},
+        {"Configuration.Error.Line.line.expected.expect.",
+            "\u69CB\u6210\u30A8\u30E9\u30FC:\n\t\u884C{0}: [{1}]\u304C\u8981\u6C42\u3055\u308C\u307E\u3057\u305F"},
+        {"Configuration.Error.Line.line.system.property.value.expanded.to.empty.value",
+            "\u69CB\u6210\u30A8\u30E9\u30FC:\n\t\u884C{0}: \u30B7\u30B9\u30C6\u30E0\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3[{1}]\u304C\u7A7A\u306E\u5024\u306B\u5C55\u958B\u3055\u308C\u307E\u3057\u305F"},
 
         // com.sun.security.auth.module.JndiLoginModule
-        {"username: ","\u30e6\u30fc\u30b6\u540d: "},
-        {"password: ","\u30d1\u30b9\u30ef\u30fc\u30c9: "},
+        {"username.","\u30E6\u30FC\u30B6\u30FC\u540D: "},
+        {"password.","\u30D1\u30B9\u30EF\u30FC\u30C9: "},
 
         // com.sun.security.auth.module.KeyStoreLoginModule
-        {"Please enter keystore information",
-                "\u30ad\u30fc\u30b9\u30c8\u30a2\u60c5\u5831\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"Keystore alias: ","\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u5225\u540d: "},
-        {"Keystore password: ","\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30d1\u30b9\u30ef\u30fc\u30c9: "},
-        {"Private key password (optional): ",
-            "\u975e\u516c\u958b\u9375\u306e\u30d1\u30b9\u30ef\u30fc\u30c9 (\u30aa\u30d7\u30b7\u30e7\u30f3): "},
+        {"Please.enter.keystore.information",
+                "\u30AD\u30FC\u30B9\u30C8\u30A2\u60C5\u5831\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044"},
+        {"Keystore.alias.","\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u5225\u540D: "},
+        {"Keystore.password.","\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9: "},
+        {"Private.key.password.optional.",
+            "\u79D8\u5BC6\u9375\u306E\u30D1\u30B9\u30EF\u30FC\u30C9(\u30AA\u30D7\u30B7\u30E7\u30F3): "},
 
         // com.sun.security.auth.module.Krb5LoginModule
-        {"Kerberos username [[defUsername]]: ",
-                "Kerberos \u30e6\u30fc\u30b6\u540d [{0}]: "},
-        {"Kerberos password for [username]: ",
-                "{0} \u306e Kerberos \u30d1\u30b9\u30ef\u30fc\u30c9: "},
+        {"Kerberos.username.defUsername.",
+                "Kerberos\u30E6\u30FC\u30B6\u30FC\u540D[{0}]: "},
+        {"Kerberos.password.for.username.",
+                "{0}\u306EKerberos\u30D1\u30B9\u30EF\u30FC\u30C9: "},
 
         /***    EVERYTHING BELOW IS DEPRECATED  ***/
 
         // com.sun.security.auth.PolicyFile
-        {": error parsing ", ": \u69cb\u6587\u89e3\u6790\u30a8\u30e9\u30fc "},
-        {": ", ": "},
-        {": error adding Permission ", ": \u30a2\u30af\u30bb\u30b9\u6a29\u306e\u8ffd\u52a0\u30a8\u30e9\u30fc "},
-        {" ", " "},
-        {": error adding Entry ", ": \u30a8\u30f3\u30c8\u30ea\u306e\u8ffd\u52a0\u30a8\u30e9\u30fc "},
-        {"(", "("},
-        {")", ")"},
-        {"attempt to add a Permission to a readonly PermissionCollection",
-            "\u8aad\u307f\u53d6\u308a\u5c02\u7528\u306e PermissionCollection \u306b\u30a2\u30af\u30bb\u30b9\u6a29\u306e\u8ffd\u52a0\u304c\u8a66\u884c\u3055\u308c\u307e\u3057\u305f\u3002"},
+        {".error.parsing.", ": \u89E3\u6790\u30A8\u30E9\u30FC "},
+        {"COLON", ": "},
+        {".error.adding.Permission.", ": \u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u8FFD\u52A0\u30A8\u30E9\u30FC "},
+        {"SPACE", " "},
+        {".error.adding.Entry.", ": \u30A8\u30F3\u30C8\u30EA\u306E\u8FFD\u52A0\u30A8\u30E9\u30FC "},
+        {"LPARAM", "("},
+        {"RPARAM", ")"},
+        {"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection",
+            "\u8AAD\u53D6\u308A\u5C02\u7528\u306EPermissionCollection\u306B\u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u8FFD\u52A0\u304C\u8A66\u884C\u3055\u308C\u307E\u3057\u305F"},
 
         // com.sun.security.auth.PolicyParser
-        {"expected keystore type", "\u671f\u5f85\u3055\u308c\u305f\u30ad\u30fc\u30b9\u30c8\u30a2\u578b"},
-        {"can not specify Principal with a ",
-                "\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9\u540d\u306e\u306a\u3044\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9\u30af\u30e9\u30b9\u3092"},
-        {"wildcard class without a wildcard name",
-                "\u4f7f\u3063\u3066 Principal \u3092\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002"},
-        {"expected codeBase or SignedBy", "\u671f\u5f85\u3055\u308c\u305f codeBase \u307e\u305f\u306f SignedBy"},
-        {"only Principal-based grant entries permitted",
-                "Principal \u30d9\u30fc\u30b9\u306e\u30a8\u30f3\u30c8\u30ea\u3060\u3051\u304c\u8a31\u53ef\u3055\u308c\u307e\u3059\u3002"},
-        {"expected permission entry", "\u671f\u5f85\u3055\u308c\u305f\u30a2\u30af\u30bb\u30b9\u6a29\u306e\u30a8\u30f3\u30c8\u30ea"},
-        {"number ", "\u6570 "},
-        {"expected ", "\u671f\u5f85\u5024 "},
-        {", read end of file", ", \u30d5\u30a1\u30a4\u30eb\u306e\u7d42\u308f\u308a\u304c\u8aad\u307f\u8fbc\u307e\u308c\u307e\u3057\u305f\u3002"},
-        {"expected ';', read end of file", "\u671f\u5f85\u5024 ';', \u30d5\u30a1\u30a4\u30eb\u306e\u7d42\u308f\u308a\u304c\u8aad\u307f\u8fbc\u307e\u308c\u307e\u3057\u305f"},
-        {"line ", "\u884c\u756a\u53f7 "},
-        {": expected '", ": \u671f\u5f85\u5024 '"},
-        {"', found '", "', \u691c\u51fa\u5024 '"},
-        {"'", "'"},
+        {"expected.keystore.type", "\u4E88\u60F3\u3055\u308C\u305F\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30BF\u30A4\u30D7"},
+        {"can.not.specify.Principal.with.a.",
+                "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306F\u3001\u6B21\u306E\u3082\u306E\u3092\u4F7F\u7528\u3057\u3066\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093 "},
+        {"wildcard.class.without.a.wildcard.name",
+                "\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u540D\u306E\u306A\u3044\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u30FB\u30AF\u30E9\u30B9"},
+        {"expected.codeBase.or.SignedBy", "\u4E88\u60F3\u3055\u308C\u305FcodeBase\u307E\u305F\u306FSignedBy"},
+        {"only.Principal.based.grant.entries.permitted",
+                "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u30FB\u30D9\u30FC\u30B9\u306E\u30A8\u30F3\u30C8\u30EA\u306E\u307F\u304C\u8A31\u53EF\u3055\u308C\u307E\u3059\u3002"},
+        {"expected.permission.entry", "\u4E88\u60F3\u3055\u308C\u305F\u30A2\u30AF\u30BB\u30B9\u6A29\u30A8\u30F3\u30C8\u30EA"},
+        {"number.", "\u6570 "},
+        {"expected.", "\u4E88\u60F3\u5024 "},
+        {".read.end.of.file", ", \u30D5\u30A1\u30A4\u30EB\u306E\u7D42\u308F\u308A\u304C\u8AAD\u307F\u8FBC\u307E\u308C\u307E\u3057\u305F\u3002"},
+        {"expected.read.end.of.file", "\u4E88\u60F3\u5024\u306F';'\u3067\u3059\u304C\u3001\u30D5\u30A1\u30A4\u30EB\u306E\u7D42\u308F\u308A\u304C\u8AAD\u307F\u8FBC\u307E\u308C\u307E\u3057\u305F"},
+        {"line.", "\u884C\u756A\u53F7 "},
+        {".expected.", ": \u4E88\u60F3\u5024'"},
+        {".found.", "',\u691C\u51FA\u5024'"},
+        {"QUOTE", "'"},
 
         // SolarisPrincipals
-        {"SolarisNumericGroupPrincipal [Primary Group]: ",
-                "SolarisNumericGroupPrincipal [\u4e3b\u30b0\u30eb\u30fc\u30d7]: "},
-        {"SolarisNumericGroupPrincipal [Supplementary Group]: ",
-                "SolarisNumericGroupPrincipal [\u88dc\u52a9\u30b0\u30eb\u30fc\u30d7]: "},
-        {"SolarisNumericUserPrincipal: ",
+        {"SolarisNumericGroupPrincipal.Primary.Group.",
+                "SolarisNumericGroupPrincipal [\u4E3B\u30B0\u30EB\u30FC\u30D7]: "},
+        {"SolarisNumericGroupPrincipal.Supplementary.Group.",
+                "SolarisNumericGroupPrincipal [\u88DC\u52A9\u30B0\u30EB\u30FC\u30D7]: "},
+        {"SolarisNumericUserPrincipal.",
                 "SolarisNumericUserPrincipal: "},
-        {"SolarisPrincipal: ", "SolarisPrincipal: "},
-        {"provided null name", "\u6307\u5b9a\u3055\u308c\u305f null \u540d"}
+        {"SolarisPrincipal.", "SolarisPrincipal: "},
+        {"provided.null.name", "null\u306E\u540D\u524D\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F"}
 
     };
 
--- a/jdk/src/share/classes/sun/security/util/AuthResources_ko.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/util/AuthResources_ko.java	Wed Jul 05 17:35:13 2017 +0200
@@ -40,103 +40,103 @@
     private static final Object[][] contents = {
 
         // NT principals
-        {"invalid null input: value", "\uc798\ubabb\ub41c \ub110 \uc785\ub825:  {0}"},
-        {"NTDomainPrincipal: name", "NTDomainPrincipal: {0}"},
-        {"NTNumericCredential: name", "NTNumericCredential: {0}"},
-        {"Invalid NTSid value", "\uc798\ubabb\ub41c NTSid \uac12"},
-        {"NTSid: name", "NTSid: {0}"},
-        {"NTSidDomainPrincipal: name", "NTSidDomainPrincipal: {0}"},
-        {"NTSidGroupPrincipal: name", "NTSidGroupPrincipal: {0}"},
-        {"NTSidPrimaryGroupPrincipal: name", "NTSidPrimaryGroupPrincipal: {0}"},
-        {"NTSidUserPrincipal: name", "NTSidUserPrincipal: {0}"},
-        {"NTUserPrincipal: name", "NTUserPrincipal: {0}"},
+        {"invalid.null.input.value", "\uBD80\uC801\uD569\uD55C \uB110 \uC785\uB825: {0}"},
+        {"NTDomainPrincipal.name", "NTDomainPrincipal: {0}"},
+        {"NTNumericCredential.name", "NTNumericCredential: {0}"},
+        {"Invalid.NTSid.value", "NTSid \uAC12\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4."},
+        {"NTSid.name", "NTSid: {0}"},
+        {"NTSidDomainPrincipal.name", "NTSidDomainPrincipal: {0}"},
+        {"NTSidGroupPrincipal.name", "NTSidGroupPrincipal: {0}"},
+        {"NTSidPrimaryGroupPrincipal.name", "NTSidPrimaryGroupPrincipal: {0}"},
+        {"NTSidUserPrincipal.name", "NTSidUserPrincipal: {0}"},
+        {"NTUserPrincipal.name", "NTUserPrincipal: {0}"},
 
         // UnixPrincipals
-        {"UnixNumericGroupPrincipal [Primary Group]: name",
-                "UnixNumericGroupPrincipal [\uae30\ubcf8 \uadf8\ub8f9]:  {0}"},
-        {"UnixNumericGroupPrincipal [Supplementary Group]: name",
-                "UnixNumericGroupPrincipal [\ubcf4\uc870 \uadf8\ub8f9]:  {0}"},
-        {"UnixNumericUserPrincipal: name", "UnixNumericUserPrincipal: {0}"},
-        {"UnixPrincipal: name", "UnixPrincipal: {0}"},
+        {"UnixNumericGroupPrincipal.Primary.Group.name",
+                "UnixNumericGroupPrincipal [\uAE30\uBCF8 \uADF8\uB8F9]: {0}"},
+        {"UnixNumericGroupPrincipal.Supplementary.Group.name",
+                "UnixNumericGroupPrincipal [\uBCF4\uC870 \uADF8\uB8F9]: {0}"},
+        {"UnixNumericUserPrincipal.name", "UnixNumericUserPrincipal: {0}"},
+        {"UnixPrincipal.name", "UnixPrincipal: {0}"},
 
         // com.sun.security.auth.login.ConfigFile
-        {"Unable to properly expand config", "\uc801\uc808\ud788 \ud655\uc7a5\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. {0}"},
-        {"extra_config (No such file or directory)",
-                "{0} (\ud574\ub2f9 \ud30c\uc77c\uc774\ub098 \ub514\ub809\ud1a0\ub9ac\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.)"},
-        {"Configuration Error:\n\tNo such file or directory",
-                "\uad6c\uc131 \uc624\ub958:\n\t\ud574\ub2f9 \ud30c\uc77c\uc774\ub098 \ub514\ub809\ud1a0\ub9ac\uac00 \uc5c6\uc2b5\ub2c8\ub2e4."},
-        {"Configuration Error:\n\tInvalid control flag, flag",
-                "\uad6c\uc131 \uc624\ub958:\n\t\uc798\ubabb\ub41c \ucee8\ud2b8\ub864 \ud50c\ub798\uadf8, {0}"},
-        {"Configuration Error:\n\tCan not specify multiple entries for appName",
-            "\uad6c\uc131 \uc624\ub958:\n\t{0}\uc5d0 \ub300\ud574 \uc5ec\ub7ec \ud56d\ubaa9\uc744 \uc9c0\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
-        {"Configuration Error:\n\texpected [expect], read [end of file]",
-                "\uad6c\uc131 \uc624\ub958:\n\t\uc608\uc0c1 [{0}], \uc77d\uc74c [\ud30c\uc77c\uc758 \ub05d]"},
-        {"Configuration Error:\n\tLine line: expected [expect], found [value]",
-            "\uad6c\uc131 \uc624\ub958:\n\t\uc904 {0}: \uc608\uc0c1 [{1}], \ubc1c\uacac [{2}]"},
-        {"Configuration Error:\n\tLine line: expected [expect]",
-            "\uad6c\uc131 \uc624\ub958:\n\t\uc904 {0}: \uc608\uc0c1 [{1}]"},
-        {"Configuration Error:\n\tLine line: system property [value] expanded to empty value",
-            "\uad6c\uc131 \uc624\ub958:\n\t\uc904 {0}: \uc2dc\uc2a4\ud15c \ub4f1\ub85d \uc815\ubcf4 [{1}]\uc774(\uac00) \ube48 \uac12\uc73c\ub85c \ud655\uc7a5\ub418\uc5c8\uc2b5\ub2c8\ub2e4."},
+        {"Unable.to.properly.expand.config", "{0}\uC744(\uB97C) \uC81C\uB300\uB85C \uD655\uC7A5\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"extra.config.No.such.file.or.directory.",
+                "{0}(\uD574\uB2F9 \uD30C\uC77C \uB610\uB294 \uB514\uB809\uD1A0\uB9AC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.)"},
+        {"Configuration.Error.No.such.file.or.directory",
+                "\uAD6C\uC131 \uC624\uB958:\n\t\uD574\uB2F9 \uD30C\uC77C \uB610\uB294 \uB514\uB809\uD1A0\uB9AC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"Configuration.Error.Invalid.control.flag.flag",
+                "\uAD6C\uC131 \uC624\uB958:\n\t\uC81C\uC5B4 \uD50C\uB798\uADF8\uAC00 \uBD80\uC801\uD569\uD568, {0}"},
+        {"Configuration.Error.Can.not.specify.multiple.entries.for.appName",
+            "\uAD6C\uC131 \uC624\uB958:\n\t{0}\uC5D0 \uB300\uD574 \uC5EC\uB7EC \uD56D\uBAA9\uC744 \uC9C0\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"Configuration.Error.expected.expect.read.end.of.file.",
+                "\uAD6C\uC131 \uC624\uB958:\n\t[{0}]\uC774(\uAC00) \uD544\uC694\uD558\uC9C0\uB9CC [\uD30C\uC77C\uC758 \uB05D]\uC5D0 \uB3C4\uB2EC\uD588\uC2B5\uB2C8\uB2E4."},
+        {"Configuration.Error.Line.line.expected.expect.found.value.",
+            "\uAD6C\uC131 \uC624\uB958:\n\t{0} \uD589: [{1}]\uC774(\uAC00) \uD544\uC694\uD558\uC9C0\uB9CC [{2}]\uC774(\uAC00) \uBC1C\uACAC\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+        {"Configuration.Error.Line.line.expected.expect.",
+            "\uAD6C\uC131 \uC624\uB958:\n\t{0} \uD589: [{1}]\uC774(\uAC00) \uD544\uC694\uD569\uB2C8\uB2E4."},
+        {"Configuration.Error.Line.line.system.property.value.expanded.to.empty.value",
+            "\uAD6C\uC131 \uC624\uB958:\n\t{0} \uD589: \uC2DC\uC2A4\uD15C \uC18D\uC131 [{1}]\uC774(\uAC00) \uBE48 \uAC12\uC73C\uB85C \uD655\uC7A5\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
 
         // com.sun.security.auth.module.JndiLoginModule
-        {"username: ","\uc0ac\uc6a9\uc790 \uc774\ub984: "},
-        {"password: ","\uc554\ud638: "},
+        {"username.","\uC0AC\uC6A9\uC790 \uC774\uB984: "},
+        {"password.","\uBE44\uBC00\uBC88\uD638: "},
 
         // com.sun.security.auth.module.KeyStoreLoginModule
-        {"Please enter keystore information",
-                "Keystore \uc815\ubcf4\ub97c \uc785\ub825\ud558\uc2ed\uc2dc\uc624."},
-        {"Keystore alias: ","Keystore \ubcc4\uba85: "},
-        {"Keystore password: ","Keystore \uc554\ud638: "},
-        {"Private key password (optional): ",
-            "\uac1c\uc778 \ud0a4 \uc554\ud638(\uc120\ud0dd \uc0ac\ud56d): "},
+        {"Please.enter.keystore.information",
+                "\uD0A4 \uC800\uC7A5\uC18C \uC815\uBCF4\uB97C \uC785\uB825\uD558\uC2ED\uC2DC\uC624."},
+        {"Keystore.alias.","\uD0A4 \uC800\uC7A5\uC18C \uBCC4\uCE6D: "},
+        {"Keystore.password.","\uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638: "},
+        {"Private.key.password.optional.",
+            "\uC804\uC6A9 \uD0A4 \uBE44\uBC00\uBC88\uD638(\uC120\uD0DD \uC0AC\uD56D): "},
 
         // com.sun.security.auth.module.Krb5LoginModule
-        {"Kerberos username [[defUsername]]: ",
-                "Kerberos \uc0ac\uc6a9\uc790 \uc774\ub984 [{0}]: "},
-        {"Kerberos password for [username]: ",
-                "{0}\uc758 Kerberos \uc554\ud638: "},
+        {"Kerberos.username.defUsername.",
+                "Kerberos \uC0AC\uC6A9\uC790 \uC774\uB984 [{0}]: "},
+        {"Kerberos.password.for.username.",
+                "{0}\uC758 Kerberos \uBE44\uBC00\uBC88\uD638: "},
 
         /***    EVERYTHING BELOW IS DEPRECATED  ***/
 
         // com.sun.security.auth.PolicyFile
-        {": error parsing ", ": \uad6c\ubb38 \ubd84\uc11d \uc624\ub958 "},
-        {": ", ": "},
-        {": error adding Permission ", ": \uc0ac\uc6a9 \uad8c\ud55c \ucd94\uac00 \uc911 \uc624\ub958 "},
-        {" ", " "},
-        {": error adding Entry ", ": \uc785\ub825 \ud56d\ubaa9 \ucd94\uac00 \uc911 \uc624\ub958 "},
-        {"(", "("},
-        {")", ")"},
-        {"attempt to add a Permission to a readonly PermissionCollection",
-            "\uc77d\uae30 \uc804\uc6a9 PermissionCollection\uc5d0 \uc0ac\uc6a9 \uad8c\ud55c\uc744 \ucd94\uac00\ud558\ub824\uace0 \uc2dc\ub3c4\ud588\uc2b5\ub2c8\ub2e4."},
+        {".error.parsing.", ": \uAD6C\uBB38 \uBD84\uC11D \uC624\uB958 "},
+        {"COLON", ": "},
+        {".error.adding.Permission.", ": \uAD8C\uD55C \uCD94\uAC00 \uC624\uB958 "},
+        {"SPACE", " "},
+        {".error.adding.Entry.", ": \uD56D\uBAA9 \uCD94\uAC00 \uC624\uB958 "},
+        {"LPARAM", "("},
+        {"RPARAM", ")"},
+        {"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection",
+            "\uC77D\uAE30 \uC804\uC6A9 PermissionCollection\uC5D0 \uAD8C\uD55C\uC744 \uCD94\uAC00\uD558\uB824\uACE0 \uC2DC\uB3C4\uD588\uC2B5\uB2C8\uB2E4."},
 
         // com.sun.security.auth.PolicyParser
-        {"expected keystore type", "Keystore \uc720\ud615\uc774 \ud544\uc694\ud569\ub2c8\ub2e4."},
-        {"can not specify Principal with a ",
-                "\uc640\uc77c\ub4dc\uce74\ub4dc \ud074\ub798\uc2a4\ub97c \uc640\uc77c\ub4dc\uce74\ub4dc \uc774\ub984\uc774 \uc5c6\uc774 "},
-        {"wildcard class without a wildcard name",
-                "\uae30\ubcf8\uac12\uc744 \uc9c0\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
-        {"expected codeBase or SignedBy", "codeBase \ub610\ub294 SignedBy\uac00 \ud544\uc694\ud569\ub2c8\ub2e4."},
-        {"only Principal-based grant entries permitted",
-                "\uae30\ubcf8\uac12 \uae30\ubc18 \ubd80\uc5ec \uc785\ub825 \ud56d\ubaa9\ub9cc \ud5c8\uc6a9\ub429\ub2c8\ub2e4."},
-        {"expected permission entry", "\uc0ac\uc6a9 \uad8c\ud55c \uc785\ub825 \ud56d\ubaa9\uc774 \ud544\uc694\ud569\ub2c8\ub2e4."},
-        {"number ", "\uc22b\uc790 "},
-        {"expected ", "\ud544\uc694\ud569\ub2c8\ub2e4. "},
-        {", read end of file", ", \ud30c\uc77c\uc758 \ub05d\uc744 \uc77d\uc5c8\uc2b5\ub2c8\ub2e4."},
-        {"expected ';', read end of file", "';'\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. \ud30c\uc77c\uc758 \ub05d\uc744 \uc77d\uc5c8\uc2b5\ub2c8\ub2e4."},
-        {"line ", "\uc904 "},
-        {": expected '", ":  '\uc774 \ud544\uc694\ud569\ub2c8\ub2e4."},
-        {"', found '", "', '\uc744 \ucc3e\uc558\uc2b5\ub2c8\ub2e4."},
-        {"'", "'"},
+        {"expected.keystore.type", "\uD0A4 \uC800\uC7A5\uC18C \uC720\uD615\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."},
+        {"can.not.specify.Principal.with.a.",
+                "\uC640\uC77C\uB4DC \uCE74\uB4DC \uBB38\uC790 \uC774\uB984 \uC5C6\uC774 \uC640\uC77C\uB4DC \uCE74\uB4DC \uBB38\uC790 \uD074\uB798\uC2A4\uB97C \uC0AC\uC6A9\uD558\uB294"},
+        {"wildcard.class.without.a.wildcard.name",
+                "\uC8FC\uCCB4\uB97C \uC9C0\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"expected.codeBase.or.SignedBy", "codeBase \uB610\uB294 SignedBy\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4."},
+        {"only.Principal.based.grant.entries.permitted",
+                "\uC8FC\uCCB4 \uAE30\uBC18 \uAD8C\uD55C \uBD80\uC5EC \uD56D\uBAA9\uB9CC \uD5C8\uC6A9\uB429\uB2C8\uB2E4."},
+        {"expected.permission.entry", "\uAD8C\uD55C \uD56D\uBAA9\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."},
+        {"number.", "\uC22B\uC790 "},
+        {"expected.", "\uD544\uC694\uD55C \uD56D\uBAA9: "},
+        {".read.end.of.file", ", \uD30C\uC77C\uC758 \uB05D\uC5D0 \uB3C4\uB2EC\uD588\uC2B5\uB2C8\uB2E4."},
+        {"expected.read.end.of.file", "';'\uC774 \uD544\uC694\uD558\uC9C0\uB9CC \uD30C\uC77C\uC758 \uB05D\uC5D0 \uB3C4\uB2EC\uD588\uC2B5\uB2C8\uB2E4."},
+        {"line.", "\uD589 "},
+        {".expected.", ": \uD544\uC694\uD55C \uD56D\uBAA9: '"},
+        {".found.", "', \uBC1C\uACAC\uB41C \uD56D\uBAA9: '"},
+        {"QUOTE", "'"},
 
         // SolarisPrincipals
-        {"SolarisNumericGroupPrincipal [Primary Group]: ",
-                "SolarisNumericGroupPrincipal [\uae30\ubcf8 \uadf8\ub8f9]: "},
-        {"SolarisNumericGroupPrincipal [Supplementary Group]: ",
-                "SolarisNumericGroupPrincipal [\ubcf4\uc870 \uadf8\ub8f9]: "},
-        {"SolarisNumericUserPrincipal: ",
+        {"SolarisNumericGroupPrincipal.Primary.Group.",
+                "SolarisNumericGroupPrincipal [\uAE30\uBCF8 \uADF8\uB8F9]: "},
+        {"SolarisNumericGroupPrincipal.Supplementary.Group.",
+                "SolarisNumericGroupPrincipal [\uBCF4\uC870 \uADF8\uB8F9]: "},
+        {"SolarisNumericUserPrincipal.",
                 "SolarisNumericUserPrincipal: "},
-        {"SolarisPrincipal: ", "SolarisPrincipal: "},
-        {"provided null name", "\uc81c\uacf5\ub41c \ub110 \uc774\ub984"}
+        {"SolarisPrincipal.", "SolarisPrincipal: "},
+        {"provided.null.name", "\uB110 \uC774\uB984\uC744 \uC81C\uACF5\uD588\uC2B5\uB2C8\uB2E4."}
 
     };
 
--- a/jdk/src/share/classes/sun/security/util/AuthResources_pt_BR.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/util/AuthResources_pt_BR.java	Wed Jul 05 17:35:13 2017 +0200
@@ -34,110 +34,109 @@
  * <li> com.sun.security.auth.login
  * </ol>
  *
- * @version 1.6, 01/23/01
  */
 public class AuthResources_pt_BR extends java.util.ListResourceBundle {
 
     private static final Object[][] contents = {
 
-    // NT principals
-    {"invalid null input: value", "entrada nula inv\u00e1lida: {0}"},
-    {"NTDomainPrincipal: name", "NTDomainPrincipal: {0}"},
-    {"NTNumericCredential: name", "NTNumericCredential: {0}"},
-    {"Invalid NTSid value", "Valor de NTSid inv\u00e1lido"},
-    {"NTSid: name", "NTSid: {0}"},
-    {"NTSidDomainPrincipal: name", "NTSidDomainPrincipal: {0}"},
-    {"NTSidGroupPrincipal: name", "NTSidGroupPrincipal: {0}"},
-    {"NTSidPrimaryGroupPrincipal: name", "NTSidPrimaryGroupPrincipal: {0}"},
-    {"NTSidUserPrincipal: name", "NTSidUserPrincipal: {0}"},
-    {"NTUserPrincipal: name", "NTUserPrincipal: {0}"},
+        // NT principals
+        {"invalid.null.input.value", "entrada nula inv\u00E1lida: {0}"},
+        {"NTDomainPrincipal.name", "NTDomainPrincipal: {0}"},
+        {"NTNumericCredential.name", "NTNumericCredential: {0}"},
+        {"Invalid.NTSid.value", "Valor de NTSid inv\u00E1lido"},
+        {"NTSid.name", "NTSid: {0}"},
+        {"NTSidDomainPrincipal.name", "NTSidDomainPrincipal: {0}"},
+        {"NTSidGroupPrincipal.name", "NTSidGroupPrincipal: {0}"},
+        {"NTSidPrimaryGroupPrincipal.name", "NTSidPrimaryGroupPrincipal: {0}"},
+        {"NTSidUserPrincipal.name", "NTSidUserPrincipal: {0}"},
+        {"NTUserPrincipal.name", "NTUserPrincipal: {0}"},
 
-    // UnixPrincipals
-    {"UnixNumericGroupPrincipal [Primary Group]: name",
-        "UnixNumericGroupPrincipal [grupo principal]: {0}"},
-    {"UnixNumericGroupPrincipal [Supplementary Group]: name",
-        "UnixNumericGroupPrincipal [grupo complement\u00e1rio]: {0}"},
-    {"UnixNumericUserPrincipal: name", "UnixNumericUserPrincipal: {0}"},
-    {"UnixPrincipal: name", "UnixPrincipal: {0}"},
+        // UnixPrincipals
+        {"UnixNumericGroupPrincipal.Primary.Group.name",
+                "UnixNumericGroupPrincipal [Grupo Principal]: {0}"},
+        {"UnixNumericGroupPrincipal.Supplementary.Group.name",
+                "UnixNumericGroupPrincipal [Grupo Complementar]: {0}"},
+        {"UnixNumericUserPrincipal.name", "UnixNumericUserPrincipal: {0}"},
+        {"UnixPrincipal.name", "UnixPrincipal: {0}"},
 
-    // com.sun.security.auth.login.ConfigFile
-    {"Unable to properly expand config", "N\u00e3o \u00e9 poss\u00edvel expandir corretamente {0}"},
-    {"extra_config (No such file or directory)",
-        "{0} (tal arquivo ou diret\u00f3rio n\u00e3o existe)"},
-    {"Unable to locate a login configuration",
-        "N\u00e3o \u00e9 poss\u00edvel localizar uma configura\u00e7\u00e3o de logon"},
-    {"Configuration Error:\n\tInvalid control flag, flag",
-        "Erro de configura\u00e7\u00e3o:\n\tSinalizador de controle inv\u00e1lido, {0}"},
-    {"Configuration Error:\n\tCan not specify multiple entries for appName",
-        "Erro de configura\u00e7\u00e3o:\n\tN\u00e3o \u00e9 poss\u00edvel especificar v\u00e1rias entradas para {0}"},
-    {"Configuration Error:\n\texpected [expect], read [end of file]",
-        "Erro de configura\u00e7\u00e3o:\n\tesperado [{0}], lido [fim do arquivo]"},
-    {"Configuration Error:\n\tLine line: expected [expect], found [value]",
-        "Erro de configura\u00e7\u00e3o:\n\tlinha {0}: esperado [{1}], encontrado [{2}]"},
-    {"Configuration Error:\n\tLine line: expected [expect]",
-        "Erro de configura\u00e7\u00e3o:\n\tlinha {0}: esperado [{1}]"},
-    {"Configuration Error:\n\tLine line: system property [value] expanded to empty value",
-        "Erro de configura\u00e7\u00e3o:\n\tlinha {0}: propriedade do sistema [{1}] expandida para valor vazio"},
+        // com.sun.security.auth.login.ConfigFile
+        {"Unable.to.properly.expand.config", "N\u00E3o \u00E9 poss\u00EDvel expandir corretamente {0}"},
+        {"extra.config.No.such.file.or.directory.",
+                "{0} (tal arquivo ou diret\u00F3rio n\u00E3o existe)"},
+        {"Configuration.Error.No.such.file.or.directory",
+                "Erro de Configura\u00E7\u00E3o:\n\tN\u00E3o h\u00E1 tal arquivo ou diret\u00F3rio"},
+        {"Configuration.Error.Invalid.control.flag.flag",
+                "Erro de Configura\u00E7\u00E3o:\n\tFlag de controle inv\u00E1lido, {0}"},
+        {"Configuration.Error.Can.not.specify.multiple.entries.for.appName",
+            "Erro de Configura\u00E7\u00E3o:\n\tN\u00E3o \u00E9 poss\u00EDvel especificar v\u00E1rias entradas para {0}"},
+        {"Configuration.Error.expected.expect.read.end.of.file.",
+                "Erro de Configura\u00E7\u00E3o:\n\tesperado [{0}], lido [fim do arquivo]"},
+        {"Configuration.Error.Line.line.expected.expect.found.value.",
+            "Erro de Configura\u00E7\u00E3o:\n\tLinha {0}: esperada [{1}], encontrada [{2}]"},
+        {"Configuration.Error.Line.line.expected.expect.",
+            "Erro de Configura\u00E7\u00E3o:\n\tLinha {0}: esperada [{1}]"},
+        {"Configuration.Error.Line.line.system.property.value.expanded.to.empty.value",
+            "Erro de Configura\u00E7\u00E3o:\n\tLinha {0}: propriedade do sistema [{1}] expandida para valor vazio"},
 
-    // com.sun.security.auth.module.JndiLoginModule
-    {"username: ","nome de usu\u00e1rio: "},
-    {"password: ","senha: "},
+        // com.sun.security.auth.module.JndiLoginModule
+        {"username.","nome do usu\u00E1rio: "},
+        {"password.","senha: "},
 
-    // com.sun.security.auth.module.KeyStoreLoginModule
-    {"Please enter keystore information",
-        "Insira as informa\u00e7\u00f5es do armazenamento de chaves"},
-    {"Keystore alias: ","Alias do armazenamento de chaves: "},
-    {"Keystore password: ","Senha do armazenamento de chaves: "},
-    {"Private key password (optional): ",
-        "Senha da chave privada (opcional): "},
+        // com.sun.security.auth.module.KeyStoreLoginModule
+        {"Please.enter.keystore.information",
+                "Especifique as informa\u00E7\u00F5es do armazenamento de chaves"},
+        {"Keystore.alias.","Alias do armazenamento de chaves: "},
+        {"Keystore.password.","Senha do armazenamento de chaves: "},
+        {"Private.key.password.optional.",
+            "Senha da chave privada (opcional): "},
 
-    // com.sun.security.auth.module.Krb5LoginModule
-    {"Kerberos username [[defUsername]]: ",
-        "Nome de usu\u00e1rio de Kerberos [{0}]: "},
-    {"Kerberos password for [username]: ",
-            "Senha de Kerberos de {0}: "},
+        // com.sun.security.auth.module.Krb5LoginModule
+        {"Kerberos.username.defUsername.",
+                "Nome do usu\u00E1rio de Kerberos [{0}]: "},
+        {"Kerberos.password.for.username.",
+                "Senha de Kerberos de {0}: "},
 
-    /***    EVERYTHING BELOW IS DEPRECATED    ***/
+        /***    EVERYTHING BELOW IS DEPRECATED  ***/
 
-    // com.sun.security.auth.PolicyFile
-    {": error parsing ", ": erro ao analisar "},
-    {": ", ": "},
-    {": error adding Permission ", ": erro ao adicionar permiss\u00e3o "},
-    {" ", " "},
-    {": error adding Entry ", ": erro ao adicionar entrada "},
-    {"(", "("},
-    {")", ")"},
-    {"attempt to add a Permission to a readonly PermissionCollection",
-        "tentativa de adicionar uma permiss\u00e3o ao um PermissionCollection de somente leitura"},
+        // com.sun.security.auth.PolicyFile
+        {".error.parsing.", ": erro de parse "},
+        {"COLON", ": "},
+        {".error.adding.Permission.", ": erro ao adicionar a Permiss\u00E3o "},
+        {"SPACE", " "},
+        {".error.adding.Entry.", ": erro ao adicionar a Entrada "},
+        {"LPARAM", "("},
+        {"RPARAM", ")"},
+        {"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection",
+            "tentativa de adicionar uma Permiss\u00E3o a um PermissionCollection somente para leitura"},
 
-    // com.sun.security.auth.PolicyParser
-    {"expected keystore type", "tipo de armazenamento de chaves esperado"},
-    {"can not specify Principal with a ",
-        "n\u00e3o \u00e9 poss\u00edvel especificar um principal com uma "},
-    {"wildcard class without a wildcard name",
-        "de coringa sem um nome de coringa"},
-    {"expected codeBase or SignedBy", "CodeBase ou SignedBy esperado"},
-    {"only Principal-based grant entries permitted",
-        "somente \u00e9 permitido conceder entradas com base no principal"},
-    {"expected permission entry", "entrada de permiss\u00e3o esperada"},
-    {"number ", "n\u00famero "},
-    {"expected ", "esperado "},
-    {", read end of file", ", fim de arquivo lido"},
-    {"expected ';', read end of file", "esperado ';', fim de arquivo lido"},
-    {"line ", "linha "},
-    {": expected '", ": esperado '"},
-    {"', found '", "', encontrado '"},
-    {"'", "'"},
+        // com.sun.security.auth.PolicyParser
+        {"expected.keystore.type", "tipo de armazenamento de chaves esperado"},
+        {"can.not.specify.Principal.with.a.",
+                "n\u00E3o \u00E9 poss\u00EDvel especificar um Principal com uma "},
+        {"wildcard.class.without.a.wildcard.name",
+                "de curinga sem um nome de curinga"},
+        {"expected.codeBase.or.SignedBy", "CodeBase ou SignedBy esperado"},
+        {"only.Principal.based.grant.entries.permitted",
+                "somente \u00E9 permitido conceder entradas com base no Principal"},
+        {"expected.permission.entry", "entrada de permiss\u00E3o esperada"},
+        {"number.", "n\u00FAmero "},
+        {"expected.", "esperado "},
+        {".read.end.of.file", ", fim de arquivo lido"},
+        {"expected.read.end.of.file", "esperado ';', fim de arquivo lido"},
+        {"line.", "linha "},
+        {".expected.", ": esperado '"},
+        {".found.", "', encontrado '"},
+        {"QUOTE", "'"},
 
-    // SolarisPrincipals
-    {"SolarisNumericGroupPrincipal [Primary Group]: ",
-        "SolarisNumericGroupPrincipal [grupo principal]: "},
-    {"SolarisNumericGroupPrincipal [Supplementary Group]: ",
-        "SolarisNumericGroupPrincipal [grupo complement\u00e1rio]: "},
-    {"SolarisNumericUserPrincipal: ",
-        "SolarisNumericUserPrincipal: "},
-    {"SolarisPrincipal: ", "SolarisPrincipal: "},
-    {"provided null name", "nome nulo fornecido"}
+        // SolarisPrincipals
+        {"SolarisNumericGroupPrincipal.Primary.Group.",
+                "SolarisNumericGroupPrincipal [Grupo Principal]: "},
+        {"SolarisNumericGroupPrincipal.Supplementary.Group.",
+                "SolarisNumericGroupPrincipal [Grupo Complementar]: "},
+        {"SolarisNumericUserPrincipal.",
+                "SolarisNumericUserPrincipal: "},
+        {"SolarisPrincipal.", "SolarisPrincipal: "},
+        {"provided.null.name", "nome nulo fornecido"}
 
     };
 
@@ -149,6 +148,6 @@
      * @return the contents of this <code>ResourceBundle</code>.
      */
     public Object[][] getContents() {
-    return contents;
+        return contents;
     }
 }
--- a/jdk/src/share/classes/sun/security/util/AuthResources_sv.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/util/AuthResources_sv.java	Wed Jul 05 17:35:13 2017 +0200
@@ -40,103 +40,103 @@
     private static final Object[][] contents = {
 
         // NT principals
-        {"invalid null input: value", "ogiltiga null-indata: {0}"},
-        {"NTDomainPrincipal: name", "NTDomainPrincipal: {0}"},
-        {"NTNumericCredential: name", "NTNumericCredential: {0}"},
-        {"Invalid NTSid value", "Ogiltigt NTSid-v\u00e4rde"},
-        {"NTSid: name", "NTSid: {0}"},
-        {"NTSidDomainPrincipal: name", "NTSidDomainPrincipal: {0}"},
-        {"NTSidGroupPrincipal: name", "NTSidGroupPrincipal: {0}"},
-        {"NTSidPrimaryGroupPrincipal: name", "NTSidPrimaryGroupPrincipal: {0}"},
-        {"NTSidUserPrincipal: name", "NTSidUserPrincipal: {0}"},
-        {"NTUserPrincipal: name", "NTUserPrincipal: {0}"},
+        {"invalid.null.input.value", "ogiltiga null-indata: {0}"},
+        {"NTDomainPrincipal.name", "NTDomainPrincipal: {0}"},
+        {"NTNumericCredential.name", "NTNumericCredential: {0}"},
+        {"Invalid.NTSid.value", "Ogiltigt NTSid-v\u00E4rde"},
+        {"NTSid.name", "NTSid: {0}"},
+        {"NTSidDomainPrincipal.name", "NTSidDomainPrincipal: {0}"},
+        {"NTSidGroupPrincipal.name", "NTSidGroupPrincipal: {0}"},
+        {"NTSidPrimaryGroupPrincipal.name", "NTSidPrimaryGroupPrincipal: {0}"},
+        {"NTSidUserPrincipal.name", "NTSidUserPrincipal: {0}"},
+        {"NTUserPrincipal.name", "NTUserPrincipal: {0}"},
 
         // UnixPrincipals
-        {"UnixNumericGroupPrincipal [Primary Group]: name",
-                "UnixNumericGroupPrincipal [prim\u00e4r grupp]: {0}"},
-        {"UnixNumericGroupPrincipal [Supplementary Group]: name",
-                "UnixNumericGroupPrincipal [till\u00e4ggsgrupp]: {0}"},
-        {"UnixNumericUserPrincipal: name", "UnixNumericUserPrincipal: {0}"},
-        {"UnixPrincipal: name", "UnixPrincipal: {0}"},
+        {"UnixNumericGroupPrincipal.Primary.Group.name",
+                "UnixNumericGroupPrincipal [prim\u00E4r grupp]: {0}"},
+        {"UnixNumericGroupPrincipal.Supplementary.Group.name",
+                "UnixNumericGroupPrincipal [till\u00E4ggsgrupp]: {0}"},
+        {"UnixNumericUserPrincipal.name", "UnixNumericUserPrincipal: {0}"},
+        {"UnixPrincipal.name", "UnixPrincipal: {0}"},
 
         // com.sun.security.auth.login.ConfigFile
-        {"Unable to properly expand config", "Det g\u00e5r inte att utvidga korrekt {0}"},
-        {"extra_config (No such file or directory)",
-                "{0} (Det finns ingen s\u00e5dan fil eller katalog.)"},
-        {"Configuration Error:\n\tNo such file or directory",
-                "Konfigurationsfel:\n\tDet finns ingen s\u00e5dan fil eller katalog."},
-        {"Configuration Error:\n\tInvalid control flag, flag",
+        {"Unable.to.properly.expand.config", "Kan inte ut\u00F6ka korrekt {0}"},
+        {"extra.config.No.such.file.or.directory.",
+                "{0} (det finns ingen s\u00E5dan fil eller katalog)"},
+        {"Configuration.Error.No.such.file.or.directory",
+                "Konfigurationsfel:\n\tFilen eller katalogen finns inte"},
+        {"Configuration.Error.Invalid.control.flag.flag",
                 "Konfigurationsfel:\n\tOgiltig kontrollflagga, {0}"},
-        {"Configuration Error:\n\tCan not specify multiple entries for appName",
-            "Konfigurationsfel:\n\tDet g\u00e5r inte att ange flera poster f\u00f6r {0}"},
-        {"Configuration Error:\n\texpected [expect], read [end of file]",
-                "Konfigurationsfel:\n\tf\u00f6rv\u00e4ntade [{0}], l\u00e4ste [end of file]"},
-        {"Configuration Error:\n\tLine line: expected [expect], found [value]",
-            "Konfigurationsfel:\n\tLine {0}: f\u00f6rv\u00e4ntade [{1}], hittade [{2}]"},
-        {"Configuration Error:\n\tLine line: expected [expect]",
-            "Konfigurationsfel:\n\tLine {0}: f\u00f6rv\u00e4ntade [{1}]"},
-        {"Configuration Error:\n\tLine line: system property [value] expanded to empty value",
-            "Konfigurationsfel:\n\tLine {0}: systemegenskapen [{1}] utvidgad till tomt v\u00e4rde"},
+        {"Configuration.Error.Can.not.specify.multiple.entries.for.appName",
+            "Konfigurationsfel:\n\tKan inte ange flera poster f\u00F6r {0}"},
+        {"Configuration.Error.expected.expect.read.end.of.file.",
+                "Konfigurationsfel:\n\tf\u00F6rv\u00E4ntade [{0}], l\u00E4ste [end of file]"},
+        {"Configuration.Error.Line.line.expected.expect.found.value.",
+            "Konfigurationsfel:\n\tLine {0}: f\u00F6rv\u00E4ntade [{1}], hittade [{2}]"},
+        {"Configuration.Error.Line.line.expected.expect.",
+            "Konfigurationsfel:\n\tLine {0}: f\u00F6rv\u00E4ntade [{1}]"},
+        {"Configuration.Error.Line.line.system.property.value.expanded.to.empty.value",
+            "Konfigurationsfel:\n\tRad {0}: systemegenskapen [{1}] ut\u00F6kad till tomt v\u00E4rde"},
 
         // com.sun.security.auth.module.JndiLoginModule
-        {"username: ","anv\u00e4ndarnamn: "},
-        {"password: ","l\u00f6senord: "},
+        {"username.","anv\u00E4ndarnamn: "},
+        {"password.","l\u00F6senord: "},
 
         // com.sun.security.auth.module.KeyStoreLoginModule
-        {"Please enter keystore information",
-                "Ange keystore-information"},
-        {"Keystore alias: ","Keystore-alias: "},
-        {"Keystore password: ","Keystore-l\u00f6senord: "},
-        {"Private key password (optional): ",
-            "L\u00f6senord f\u00f6r personlig nyckel (valfritt): "},
+        {"Please.enter.keystore.information",
+                "Ange nyckellagerinformation"},
+        {"Keystore.alias.","Nyckellageralias: "},
+        {"Keystore.password.","Nyckellagerl\u00F6senord: "},
+        {"Private.key.password.optional.",
+            "L\u00F6senord f\u00F6r personlig nyckel (valfritt): "},
 
         // com.sun.security.auth.module.Krb5LoginModule
-        {"Kerberos username [[defUsername]]: ",
-                "Kerberos-anv\u00e4ndarnamn [{0}]: "},
-        {"Kerberos password for [username]: ",
-                "Kerberos-l\u00f6senord f\u00f6r {0}: "},
+        {"Kerberos.username.defUsername.",
+                "Kerberos-anv\u00E4ndarnamn [{0}]: "},
+        {"Kerberos.password.for.username.",
+                "Kerberos-l\u00F6senord f\u00F6r {0}: "},
 
         /***    EVERYTHING BELOW IS DEPRECATED  ***/
 
         // com.sun.security.auth.PolicyFile
-        {": error parsing ", ": analysfel "},
-        {": ", ": "},
-        {": error adding Permission ", ": fel vid till\u00e4gg av beh\u00f6righet "},
-        {" ", " "},
-        {": error adding Entry ", ": fel vid till\u00e4gg av post "},
-        {"(", "("},
-        {")", ")"},
-        {"attempt to add a Permission to a readonly PermissionCollection",
-            "f\u00f6rs\u00f6k att l\u00e4gga till beh\u00f6righet till skrivskyddad PermissionCollection"},
+        {".error.parsing.", ": tolkningsfel "},
+        {"COLON", ": "},
+        {".error.adding.Permission.", ": fel vid till\u00E4gg av beh\u00F6righet "},
+        {"SPACE", " "},
+        {".error.adding.Entry.", ": fel vid till\u00E4gg av post "},
+        {"LPARAM", "("},
+        {"RPARAM", ")"},
+        {"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection",
+            "f\u00F6rs\u00F6k att l\u00E4gga till beh\u00F6righet till skrivskyddad PermissionCollection"},
 
         // com.sun.security.auth.PolicyParser
-        {"expected keystore type", "f\u00f6rv\u00e4ntad keystore-typ"},
-        {"can not specify Principal with a ",
-                "det g\u00e5r inte att specificera n\u00e5gon principal med "},
-        {"wildcard class without a wildcard name",
-                "jokertecken f\u00f6r klass men inte f\u00f6r namn"},
-        {"expected codeBase or SignedBy", "f\u00f6rv\u00e4ntade codeBase eller SignedBy"},
-        {"only Principal-based grant entries permitted",
-                "enbart Principal-baserade poster till\u00e5tna"},
-        {"expected permission entry", "f\u00f6rv\u00e4ntade beh\u00f6righetspost"},
-        {"number ", "antal "},
-        {"expected ", "f\u00f6rv\u00e4ntade "},
-        {", read end of file", ", l\u00e4ste filslut"},
-        {"expected ';', read end of file", "f\u00f6rv\u00e4ntade ';', l\u00e4ste filslut"},
-        {"line ", "rad "},
-        {": expected '", ": f\u00f6rv\u00e4ntade '"},
-        {"', found '", "', hittade '"},
-        {"'", "'"},
+        {"expected.keystore.type", "f\u00F6rv\u00E4ntad nyckellagertyp"},
+        {"can.not.specify.Principal.with.a.",
+                "kan inte ange identitetshavare med "},
+        {"wildcard.class.without.a.wildcard.name",
+                "jokerteckenklass utan jokerteckennamn"},
+        {"expected.codeBase.or.SignedBy", "f\u00F6rv\u00E4ntade codeBase eller SignedBy"},
+        {"only.Principal.based.grant.entries.permitted",
+                "endast identitetshavarbaserade poster till\u00E5ts"},
+        {"expected.permission.entry", "f\u00F6rv\u00E4ntade beh\u00F6righetspost"},
+        {"number.", "antal "},
+        {"expected.", "f\u00F6rv\u00E4ntade "},
+        {".read.end.of.file", ", l\u00E4ste filslut"},
+        {"expected.read.end.of.file", "f\u00F6rv\u00E4ntade ';', l\u00E4ste filslut"},
+        {"line.", "rad "},
+        {".expected.", ": f\u00F6rv\u00E4ntade '"},
+        {".found.", "', hittade '"},
+        {"QUOTE", "'"},
 
         // SolarisPrincipals
-        {"SolarisNumericGroupPrincipal [Primary Group]: ",
-                "SolarisNumericGroupPrincipal [prim\u00e4r grupp]: "},
-        {"SolarisNumericGroupPrincipal [Supplementary Group]: ",
-                "SolarisNumericGroupPrincipal [till\u00e4ggsgrupp]: "},
-        {"SolarisNumericUserPrincipal: ",
+        {"SolarisNumericGroupPrincipal.Primary.Group.",
+                "SolarisNumericGroupPrincipal [prim\u00E4r grupp]: "},
+        {"SolarisNumericGroupPrincipal.Supplementary.Group.",
+                "SolarisNumericGroupPrincipal [till\u00E4ggsgrupp]: "},
+        {"SolarisNumericUserPrincipal.",
                 "SolarisNumericUserPrincipal: "},
-        {"SolarisPrincipal: ", "SolarisPrincipal: "},
-        {"provided null name", "gav null-namn"}
+        {"SolarisPrincipal.", "SolarisPrincipal: "},
+        {"provided.null.name", "angav null-namn"}
 
     };
 
--- a/jdk/src/share/classes/sun/security/util/AuthResources_zh_CN.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/util/AuthResources_zh_CN.java	Wed Jul 05 17:35:13 2017 +0200
@@ -40,103 +40,103 @@
     private static final Object[][] contents = {
 
         // NT principals
-        {"invalid null input: value", "\u65e0\u6548\u7684\u7a7a\u8f93\u5165\uff1a {0}"},
-        {"NTDomainPrincipal: name", "NTDomainPrincipal: {0}"},
-        {"NTNumericCredential: name", "NTNumericCredential: {0}"},
-        {"Invalid NTSid value", "\u65e0\u6548\u7684 NTSid \u503c"},
-        {"NTSid: name", "NTSid: {0}"},
-        {"NTSidDomainPrincipal: name", "NTSidDomainPrincipal: {0}"},
-        {"NTSidGroupPrincipal: name", "NTSidGroupPrincipal: {0}"},
-        {"NTSidPrimaryGroupPrincipal: name", "NTSidPrimaryGroupPrincipal: {0}"},
-        {"NTSidUserPrincipal: name", "NTSidUserPrincipal: {0}"},
-        {"NTUserPrincipal: name", "NTUserPrincipal: {0}"},
+        {"invalid.null.input.value", "\u65E0\u6548\u7684\u7A7A\u8F93\u5165: {0}"},
+        {"NTDomainPrincipal.name", "NTDomainPrincipal: {0}"},
+        {"NTNumericCredential.name", "NTNumericCredential: {0}"},
+        {"Invalid.NTSid.value", "\u65E0\u6548\u7684 NTSid \u503C"},
+        {"NTSid.name", "NTSid: {0}"},
+        {"NTSidDomainPrincipal.name", "NTSidDomainPrincipal: {0}"},
+        {"NTSidGroupPrincipal.name", "NTSidGroupPrincipal: {0}"},
+        {"NTSidPrimaryGroupPrincipal.name", "NTSidPrimaryGroupPrincipal: {0}"},
+        {"NTSidUserPrincipal.name", "NTSidUserPrincipal: {0}"},
+        {"NTUserPrincipal.name", "NTUserPrincipal: {0}"},
 
         // UnixPrincipals
-        {"UnixNumericGroupPrincipal [Primary Group]: name",
-                "UnixNumericGroupPrincipal [\u4e3b\u7fa4\u7ec4]\uff1a {0}"},
-        {"UnixNumericGroupPrincipal [Supplementary Group]: name",
-                "UnixNumericGroupPrincipal [\u9644\u52a0\u7fa4\u7ec4]\uff1a {0}"},
-        {"UnixNumericUserPrincipal: name", "UnixNumericUserPrincipal: {0}"},
-        {"UnixPrincipal: name", "UnixPrincipal\uff1a {0}"},
+        {"UnixNumericGroupPrincipal.Primary.Group.name",
+                "UnixNumericGroupPrincipal [\u4E3B\u7EC4]: {0}"},
+        {"UnixNumericGroupPrincipal.Supplementary.Group.name",
+                "UnixNumericGroupPrincipal [\u8865\u5145\u7EC4]: {0}"},
+        {"UnixNumericUserPrincipal.name", "UnixNumericUserPrincipal: {0}"},
+        {"UnixPrincipal.name", "UnixPrincipal: {0}"},
 
         // com.sun.security.auth.login.ConfigFile
-        {"Unable to properly expand config", "\u65e0\u6cd5\u5b8c\u5168\u6269\u5145 {0}"},
-        {"extra_config (No such file or directory)",
-                "{0} \uff08\u6ca1\u6709\u6b64\u6587\u4ef6\u6216\u76ee\u5f55\uff09"},
-        {"Configuration Error:\n\tNo such file or directory",
-                "\u914d\u7f6e\u9519\u8bef\uff1a\n\t\u6ca1\u6709\u6b64\u6587\u4ef6\u6216\u76ee\u5f55"},
-        {"Configuration Error:\n\tInvalid control flag, flag",
-                "\u914d\u7f6e\u9519\u8bef\uff1a\n\t\u65e0\u6548\u7684\u63a7\u5236\u6807\u8bb0\uff0c {0}"},
-        {"Configuration Error:\n\tCan not specify multiple entries for appName",
-            "\u914d\u7f6e\u9519\u8bef\uff1a\n\t\u65e0\u6cd5\u6307\u5b9a\u591a\u4e2a\u9879\u76ee {0}"},
-        {"Configuration Error:\n\texpected [expect], read [end of file]",
-                "\u914d\u7f6e\u9519\u8bef\uff1a\n\t\u9884\u671f\u7684 [{0}], \u8bfb\u53d6 [\u6587\u4ef6\u672b\u7aef]"},
-        {"Configuration Error:\n\tLine line: expected [expect], found [value]",
-            "\u914d\u7f6e\u9519\u8bef\uff1a\n\t\u884c {0}: \u9884\u671f\u7684 [{1}], \u627e\u5230 [{2}]"},
-        {"Configuration Error:\n\tLine line: expected [expect]",
-            "\u914d\u7f6e\u9519\u8bef\uff1a\n\t\u884c {0}: \u9884\u671f\u7684 [{1}]"},
-        {"Configuration Error:\n\tLine line: system property [value] expanded to empty value",
-            "\u914d\u7f6e\u9519\u8bef\uff1a\n\t\u884c {0}: \u7cfb\u7edf\u5c5e\u6027 [{1}] \u6269\u5145\u81f3\u7a7a\u503c"},
+        {"Unable.to.properly.expand.config", "\u65E0\u6CD5\u6B63\u786E\u6269\u5C55{0}"},
+        {"extra.config.No.such.file.or.directory.",
+                "{0} (\u6CA1\u6709\u8FD9\u6837\u7684\u6587\u4EF6\u6216\u76EE\u5F55)"},
+        {"Configuration.Error.No.such.file.or.directory",
+                "\u914D\u7F6E\u9519\u8BEF:\n\t\u6CA1\u6709\u6B64\u6587\u4EF6\u6216\u76EE\u5F55"},
+        {"Configuration.Error.Invalid.control.flag.flag",
+                "\u914D\u7F6E\u9519\u8BEF: \n\t\u65E0\u6548\u7684\u63A7\u5236\u6807\u8BB0, {0}"},
+        {"Configuration.Error.Can.not.specify.multiple.entries.for.appName",
+            "\u914D\u7F6E\u9519\u8BEF:\n\t\u65E0\u6CD5\u6307\u5B9A{0}\u7684\u591A\u4E2A\u6761\u76EE"},
+        {"Configuration.Error.expected.expect.read.end.of.file.",
+                "\u914D\u7F6E\u9519\u8BEF: \n\t\u5E94\u4E3A [{0}], \u8BFB\u53D6\u7684\u662F [\u6587\u4EF6\u7ED3\u5C3E]"},
+        {"Configuration.Error.Line.line.expected.expect.found.value.",
+            "\u914D\u7F6E\u9519\u8BEF: \n\t\u884C {0}: \u5E94\u4E3A [{1}], \u627E\u5230 [{2}]"},
+        {"Configuration.Error.Line.line.expected.expect.",
+            "\u914D\u7F6E\u9519\u8BEF: \n\t\u884C {0}: \u5E94\u4E3A [{1}]"},
+        {"Configuration.Error.Line.line.system.property.value.expanded.to.empty.value",
+            "\u914D\u7F6E\u9519\u8BEF: \n\t\u884C {0}: \u7CFB\u7EDF\u5C5E\u6027 [{1}] \u6269\u5C55\u5230\u7A7A\u503C"},
 
         // com.sun.security.auth.module.JndiLoginModule
-        {"username: ","\u7528\u6237\u540d\uff1a "},
-        {"password: ","\u5bc6\u7801\uff1a "},
+        {"username.","\u7528\u6237\u540D: "},
+        {"password.","\u53E3\u4EE4: "},
 
         // com.sun.security.auth.module.KeyStoreLoginModule
-        {"Please enter keystore information",
-                "\u8bf7\u8f93\u5165 keystore \u4fe1\u606f"},
-        {"Keystore alias: ","Keystore \u522b\u540d\uff1a "},
-        {"Keystore password: ","Keystore \u5bc6\u7801\uff1a "},
-        {"Private key password (optional): ",
-            "\u79c1\u4eba\u5173\u952e\u5bc6\u7801\uff08\u53ef\u9009\u7684\uff09\uff1a "},
+        {"Please.enter.keystore.information",
+                "\u8BF7\u8F93\u5165\u5BC6\u94A5\u5E93\u4FE1\u606F"},
+        {"Keystore.alias.","\u5BC6\u94A5\u5E93\u522B\u540D: "},
+        {"Keystore.password.","\u5BC6\u94A5\u5E93\u53E3\u4EE4: "},
+        {"Private.key.password.optional.",
+            "\u79C1\u6709\u5BC6\u94A5\u53E3\u4EE4 (\u53EF\u9009): "},
 
         // com.sun.security.auth.module.Krb5LoginModule
-        {"Kerberos username [[defUsername]]: ",
-                "Kerberos \u7528\u6237\u540d [{0}]: "},
-        {"Kerberos password for [username]: ",
-                " {0} \u7684 Kerberos \u5bc6\u7801: "},
+        {"Kerberos.username.defUsername.",
+                "Kerberos \u7528\u6237\u540D [{0}]: "},
+        {"Kerberos.password.for.username.",
+                "{0}\u7684 Kerberos \u53E3\u4EE4: "},
 
         /***    EVERYTHING BELOW IS DEPRECATED  ***/
 
         // com.sun.security.auth.PolicyFile
-        {": error parsing ", "\uff1a\u8bed\u6cd5\u89e3\u6790\u9519\u8bef "},
-        {": ", ": "},
-        {": error adding Permission ", "\uff1a\u6dfb\u52a0\u6743\u9650\u9519\u8bef "},
-        {" ", " "},
-        {": error adding Entry ", "\u6dfb\u52a0\u9879\u76ee\u9519\u8bef "},
-        {"(", "("},
-        {")", ")"},
-        {"attempt to add a Permission to a readonly PermissionCollection",
-            "\u8bd5\u56fe\u5c06\u6743\u9650\u6dfb\u52a0\u81f3\u53ea\u8bfb\u7684 PermissionCollection"},
+        {".error.parsing.", ": \u8FDB\u884C\u8BED\u6CD5\u5206\u6790\u65F6\u51FA\u9519 "},
+        {"COLON", ": "},
+        {".error.adding.Permission.", ": \u6DFB\u52A0\u6743\u9650\u65F6\u51FA\u9519 "},
+        {"SPACE", " "},
+        {".error.adding.Entry.", ": \u6DFB\u52A0\u6761\u76EE\u65F6\u51FA\u9519 "},
+        {"LPARAM", "("},
+        {"RPARAM", ")"},
+        {"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection",
+            "\u5C1D\u8BD5\u5C06\u6743\u9650\u6DFB\u52A0\u81F3\u53EA\u8BFB\u7684 PermissionCollection"},
 
         // com.sun.security.auth.PolicyParser
-        {"expected keystore type", "\u9884\u671f\u7684 keystore \u7c7b\u578b"},
-        {"can not specify Principal with a ",
-                "\u65e0\u6cd5\u4ee5\u6b64\u6765\u6307\u5b9a Principal "},
-        {"wildcard class without a wildcard name",
-                "\u65e0\u901a\u914d\u5b57\u7b26\u540d\u79f0\u7684\u901a\u914d\u5b57\u7b26\u7c7b"},
-        {"expected codeBase or SignedBy", "\u9884\u671f\u7684 codeBase \u6216 SignedBy"},
-        {"only Principal-based grant entries permitted",
-                "\u53ea\u5141\u8bb8\u57fa\u4e8e Principal \u7684\u6388\u6743\u9879\u76ee"},
-        {"expected permission entry", "\u9884\u671f\u7684\u6743\u9650\u9879\u76ee"},
-        {"number ", "\u53f7\u7801 "},
-        {"expected ", "\u9884\u671f\u7684 "},
-        {", read end of file", "\uff0c\u8bfb\u53d6\u6587\u4ef6\u672b\u7aef"},
-        {"expected ';', read end of file", "\u9884\u671f\u7684 ';', \u8bfb\u53d6\u6587\u4ef6\u672b\u7aef"},
-        {"line ", "\u884c "},
-        {": expected '", ": \u9884\u671f\u7684 '"},
-        {"', found '", "', \u627e\u5230 '"},
-        {"'", "'"},
+        {"expected.keystore.type", "\u5E94\u4E3A\u5BC6\u94A5\u5E93\u7C7B\u578B"},
+        {"can.not.specify.Principal.with.a.",
+                "\u6CA1\u6709\u901A\u914D\u7B26\u540D\u79F0, \u65E0\u6CD5\u4F7F\u7528"},
+        {"wildcard.class.without.a.wildcard.name",
+                "\u901A\u914D\u7B26\u7C7B\u6307\u5B9A\u4E3B\u7528\u6237"},
+        {"expected.codeBase.or.SignedBy", "\u5E94\u4E3A codeBase \u6216 SignedBy"},
+        {"only.Principal.based.grant.entries.permitted",
+                "\u53EA\u5141\u8BB8\u57FA\u4E8E\u4E3B\u7528\u6237\u7684\u6388\u6743\u6761\u76EE"},
+        {"expected.permission.entry", "\u5E94\u4E3A\u6743\u9650\u6761\u76EE"},
+        {"number.", "\u7F16\u53F7 "},
+        {"expected.", "\u5E94\u4E3A "},
+        {".read.end.of.file", ", \u8BFB\u53D6\u7684\u662F\u6587\u4EF6\u7ED3\u5C3E"},
+        {"expected.read.end.of.file", "\u5E94\u4E3A ';', \u8BFB\u53D6\u7684\u662F\u6587\u4EF6\u7ED3\u5C3E"},
+        {"line.", "\u884C "},
+        {".expected.", ": \u5E94\u4E3A '"},
+        {".found.", "', \u627E\u5230 '"},
+        {"QUOTE", "'"},
 
         // SolarisPrincipals
-        {"SolarisNumericGroupPrincipal [Primary Group]: ",
-                "SolarisNumericGroupPrincipal [\u4e3b\u7fa4\u7ec4]\uff1a "},
-        {"SolarisNumericGroupPrincipal [Supplementary Group]: ",
-                "SolarisNumericGroupPrincipal [\u9644\u52a0\u7fa4\u7ec4]\uff1a "},
-        {"SolarisNumericUserPrincipal: ",
+        {"SolarisNumericGroupPrincipal.Primary.Group.",
+                "SolarisNumericGroupPrincipal [\u4E3B\u7EC4]: "},
+        {"SolarisNumericGroupPrincipal.Supplementary.Group.",
+                "SolarisNumericGroupPrincipal [\u8865\u5145\u7EC4]: "},
+        {"SolarisNumericUserPrincipal.",
                 "SolarisNumericUserPrincipal: "},
-        {"SolarisPrincipal: ", "SolarisPrincipal: "},
-        {"provided null name", "\u5df2\u63d0\u4f9b\u7684\u7a7a\u540d\u79f0"}
+        {"SolarisPrincipal.", "SolarisPrincipal: "},
+        {"provided.null.name", "\u63D0\u4F9B\u7684\u540D\u79F0\u4E3A\u7A7A\u503C"}
 
     };
 
--- a/jdk/src/share/classes/sun/security/util/AuthResources_zh_TW.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/util/AuthResources_zh_TW.java	Wed Jul 05 17:35:13 2017 +0200
@@ -40,103 +40,103 @@
     private static final Object[][] contents = {
 
         // NT principals
-        {"invalid null input: value", "\u7121\u6548\u7a7a\u8f38\u5165\uff1a {0}"},
-        {"NTDomainPrincipal: name", "NTDomainPrincipal: {0}"},
-        {"NTNumericCredential: name", "NTNumericCredential: {0}"},
-        {"Invalid NTSid value", "\u7121\u6548 NTSid \u503c"},
-        {"NTSid: name", "NTSid: {0}"},
-        {"NTSidDomainPrincipal: name", "NTSidDomainPrincipal: {0}"},
-        {"NTSidGroupPrincipal: name", "NTSidGroupPrincipal: {0}"},
-        {"NTSidPrimaryGroupPrincipal: name", "NTSidPrimaryGroupPrincipal: {0}"},
-        {"NTSidUserPrincipal: name", "NTSidUserPrincipal: {0}"},
-        {"NTUserPrincipal: name", "NTUserPrincipal: {0}"},
+        {"invalid.null.input.value", "\u7121\u6548\u7A7A\u503C\u8F38\u5165: {0}"},
+        {"NTDomainPrincipal.name", "NTDomainPrincipal: {0}"},
+        {"NTNumericCredential.name", "NTNumericCredential: {0}"},
+        {"Invalid.NTSid.value", "\u7121\u6548 NTSid \u503C"},
+        {"NTSid.name", "NTSid: {0}"},
+        {"NTSidDomainPrincipal.name", "NTSidDomainPrincipal: {0}"},
+        {"NTSidGroupPrincipal.name", "NTSidGroupPrincipal: {0}"},
+        {"NTSidPrimaryGroupPrincipal.name", "NTSidPrimaryGroupPrincipal: {0}"},
+        {"NTSidUserPrincipal.name", "NTSidUserPrincipal: {0}"},
+        {"NTUserPrincipal.name", "NTUserPrincipal: {0}"},
 
         // UnixPrincipals
-        {"UnixNumericGroupPrincipal [Primary Group]: name",
-                "UnixNumericGroupPrincipal [\u4e3b\u7fa4\u7d44]\uff1a {0}"},
-        {"UnixNumericGroupPrincipal [Supplementary Group]: name",
-                "UnixNumericGroupPrincipal [\u9644\u52a0\u7fa4\u7d44]\uff1a {0}"},
-        {"UnixNumericUserPrincipal: name", "UnixNumericUserPrincipal: {0}"},
-        {"UnixPrincipal: name", "UnixPrincipal\uff1a {0}"},
+        {"UnixNumericGroupPrincipal.Primary.Group.name",
+                "UnixNumericGroupPrincipal [\u4E3B\u7FA4\u7D44]: {0}"},
+        {"UnixNumericGroupPrincipal.Supplementary.Group.name",
+                "UnixNumericGroupPrincipal [\u9644\u52A0\u7FA4\u7D44]: {0}"},
+        {"UnixNumericUserPrincipal.name", "UnixNumericUserPrincipal: {0}"},
+        {"UnixPrincipal.name", "UnixPrincipal: {0}"},
 
         // com.sun.security.auth.login.ConfigFile
-        {"Unable to properly expand config", "\u7121\u6cd5\u5b8c\u5168\u64f4\u5145 {0}"},
-        {"extra_config (No such file or directory)",
-                "{0} \uff08\u6c92\u6709\u6b64\u6a94\u6848\u6216\u76ee\u9304\uff09"},
-        {"Configuration Error:\n\tNo such file or directory",
-                "\u914d\u7f6e\u932f\u8aa4\uff1a\n\t\u6c92\u6709\u9019\u985e\u7684\u6a94\u6848\u6216\u76ee\u9304"},
-        {"Configuration Error:\n\tInvalid control flag, flag",
-                "\u914d\u7f6e\u932f\u8aa4\uff1a\n\t\u7121\u6548\u7684\u63a7\u5236\u65d7\u865f\uff0c {0}"},
-        {"Configuration Error:\n\tCan not specify multiple entries for appName",
-            "\u914d\u7f6e\u932f\u8aa4\uff1a\n\t\u7121\u6cd5\u6307\u5b9a\u591a\u91cd\u9805\u76ee {0}"},
-        {"Configuration Error:\n\texpected [expect], read [end of file]",
-                "\u914d\u7f6e\u932f\u8aa4\uff1a\n\t\u9810\u671f\u7684 [{0}], \u8b80\u53d6 [\u6a94\u6848\u672b\u7aef]"},
-        {"Configuration Error:\n\tLine line: expected [expect], found [value]",
-            "\u914d\u7f6e\u932f\u8aa4\uff1a\n\t\u884c {0}: \u9810\u671f\u7684 [{1}], \u767c\u73fe [{2}]"},
-        {"Configuration Error:\n\tLine line: expected [expect]",
-            "\u914d\u7f6e\u932f\u8aa4\uff1a\n\t\u884c {0}: \u9810\u671f\u7684 [{1}]"},
-        {"Configuration Error:\n\tLine line: system property [value] expanded to empty value",
-            "\u914d\u7f6e\u932f\u8aa4\uff1a\n\t\u884c {0}: \u7cfb\u7d71\u5c6c\u6027 [{1}] \u64f4\u5145\u81f3\u7a7a\u503c"},
+        {"Unable.to.properly.expand.config", "\u7121\u6CD5\u9069\u7576\u5730\u64F4\u5145 {0}"},
+        {"extra.config.No.such.file.or.directory.",
+                "{0} (\u6C92\u6709\u6B64\u6A94\u6848\u6216\u76EE\u9304)"},
+        {"Configuration.Error.No.such.file.or.directory",
+                "\u7D44\u614B\u932F\u8AA4:\n\t\u7121\u6B64\u6A94\u6848\u6216\u76EE\u9304"},
+        {"Configuration.Error.Invalid.control.flag.flag",
+                "\u7D44\u614B\u932F\u8AA4:\n\t\u7121\u6548\u7684\u63A7\u5236\u65D7\u6A19\uFF0C{0}"},
+        {"Configuration.Error.Can.not.specify.multiple.entries.for.appName",
+            "\u7D44\u614B\u932F\u8AA4: \n\t\u7121\u6CD5\u6307\u5B9A\u591A\u91CD\u9805\u76EE {0}"},
+        {"Configuration.Error.expected.expect.read.end.of.file.",
+                "\u7D44\u614B\u932F\u8AA4: \n\t\u9810\u671F\u7684 [{0}], \u8B80\u53D6 [end of file]"},
+        {"Configuration.Error.Line.line.expected.expect.found.value.",
+            "\u7D44\u614B\u932F\u8AA4: \n\t\u884C {0}: \u9810\u671F\u7684 [{1}], \u767C\u73FE [{2}]"},
+        {"Configuration.Error.Line.line.expected.expect.",
+            "\u7D44\u614B\u932F\u8AA4: \n\t\u884C {0}: \u9810\u671F\u7684 [{1}]"},
+        {"Configuration.Error.Line.line.system.property.value.expanded.to.empty.value",
+            "\u7D44\u614B\u932F\u8AA4: \n\t\u884C {0}: \u7CFB\u7D71\u5C6C\u6027 [{1}] \u64F4\u5145\u81F3\u7A7A\u503C"},
 
         // com.sun.security.auth.module.JndiLoginModule
-        {"username: ","\u4f7f\u7528\u8005\u540d\u7a31\uff1a "},
-        {"password: ","\u5bc6\u78bc\uff1a "},
+        {"username.","\u4F7F\u7528\u8005\u540D\u7A31: "},
+        {"password.","\u5BC6\u78BC: "},
 
         // com.sun.security.auth.module.KeyStoreLoginModule
-        {"Please enter keystore information",
-                "\u8acb\u8f38\u5165 keystore \u8cc7\u8a0a"},
-        {"Keystore alias: ","Keystore \u5225\u540d\uff1a "},
-        {"Keystore password: ","Keystore \u5bc6\u78bc\uff1a "},
-        {"Private key password (optional): ",
-            "\u79c1\u4eba\u95dc\u9375\u5bc6\u78bc\uff08\u9078\u64c7\u6027\u7684\uff09\uff1a "},
+        {"Please.enter.keystore.information",
+                "\u8ACB\u8F38\u5165\u91D1\u9470\u5132\u5B58\u5EAB\u8CC7\u8A0A"},
+        {"Keystore.alias.","\u91D1\u9470\u5132\u5B58\u5EAB\u5225\u540D: "},
+        {"Keystore.password.","\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC: "},
+        {"Private.key.password.optional.",
+            "\u79C1\u4EBA\u91D1\u9470\u5BC6\u78BC (\u9078\u64C7\u6027\u7684): "},
 
         // com.sun.security.auth.module.Krb5LoginModule
-        {"Kerberos username [[defUsername]]: ",
-                "Kerberos \u4f7f\u7528\u8005\u540d\u7a31 [{0}]: "},
-        {"Kerberos password for [username]: ",
-                "Kerberos \u7684 {0} \u5bc6\u78bc\uff1a  "},
+        {"Kerberos.username.defUsername.",
+                "Kerberos \u4F7F\u7528\u8005\u540D\u7A31 [{0}]: "},
+        {"Kerberos.password.for.username.",
+                "Kerberos \u5BC6\u78BC [{0}]: "},
 
         /***    EVERYTHING BELOW IS DEPRECATED  ***/
 
         // com.sun.security.auth.PolicyFile
-        {": error parsing ", "\uff1a\u8a9e\u6cd5\u932f\u8aa4 "},
-        {": ", ": "},
-        {": error adding Permission ", "\uff1a\u65b0\u589e\u8a31\u53ef\u6b0a\u932f\u8aa4 "},
-        {" ", " "},
-        {": error adding Entry ", "\u65b0\u589e\u8f38\u5165\u932f\u8aa4 "},
-        {"(", "("},
-        {")", ")"},
-        {"attempt to add a Permission to a readonly PermissionCollection",
-            "\u8a66\u8457\u65b0\u589e\u8a31\u53ef\u6b0a\u81f3\u552f\u8b80\u7684 PermissionCollection"},
+        {".error.parsing.", ": \u5256\u6790\u932F\u8AA4 "},
+        {"COLON", ": "},
+        {".error.adding.Permission.", ": \u65B0\u589E\u6B0A\u9650\u932F\u8AA4 "},
+        {"SPACE", " "},
+        {".error.adding.Entry.", ": \u65B0\u589E\u8F38\u5165\u932F\u8AA4 "},
+        {"LPARAM", "("},
+        {"RPARAM", ")"},
+        {"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection",
+            "\u8A66\u8457\u65B0\u589E\u6B0A\u9650\u81F3\u552F\u8B80\u7684 PermissionCollection"},
 
         // com.sun.security.auth.PolicyParser
-        {"expected keystore type", "\u9810\u671f\u7684 keystore \u985e\u578b"},
-        {"can not specify Principal with a ",
-                "\u7121\u6cd5\u4ee5\u6b64\u4f86\u6307\u5b9a Principal "},
-        {"wildcard class without a wildcard name",
-                "\u842c\u7528\u5b57\u5143\u985e\u5225\u672a\u9644\u842c\u7528\u5b57\u5143\u540d\u7a31"},
-        {"expected codeBase or SignedBy", "\u9810\u671f\u7684 codeBase \u6216 SignedBy"},
-        {"only Principal-based grant entries permitted",
-                "\u53ea\u5141\u8a31\u4ee5 Principal \u70ba\u57fa\u790e\u7684\u6388\u6b0a\u8f38\u5165"},
-        {"expected permission entry", "\u9810\u671f\u8a31\u53ef\u8f38\u5165"},
-        {"number ", "\u865f\u78bc "},
-        {"expected ", "\u9810\u671f\u7684 "},
-        {", read end of file", "\uff0c\u8b80\u53d6\u6a94\u6848\u672b\u7aef"},
-        {"expected ';', read end of file", "\u9810\u671f\u7684 ';', \u8b80\u53d6\u6a94\u6848\u672b\u7aef"},
-        {"line ", "\u884c "},
-        {": expected '", ": \u9810\u671f '"},
-        {"', found '", "', \u767c\u73fe '"},
-        {"'", "'"},
+        {"expected.keystore.type", "\u9810\u671F\u7684\u91D1\u9470\u5132\u5B58\u5EAB\u985E\u578B"},
+        {"can.not.specify.Principal.with.a.",
+                "\u6C92\u6709\u842C\u7528\u5B57\u5143\u540D\u7A31\uFF0C\u7121\u6CD5\u6307\u5B9A"},
+        {"wildcard.class.without.a.wildcard.name",
+                "\u542B\u6709\u842C\u7528\u5B57\u5143\u985E\u5225\u7684 Principal"},
+        {"expected.codeBase.or.SignedBy", "\u9810\u671F\u7684 codeBase \u6216 SignedBy"},
+        {"only.Principal.based.grant.entries.permitted",
+                "\u53EA\u5141\u8A31\u4EE5 Principal \u70BA\u57FA\u790E\u7684\u6388\u6B0A\u9805\u76EE"},
+        {"expected.permission.entry", "\u9810\u671F\u7684\u6B0A\u9650\u9805\u76EE"},
+        {"number.", "\u865F\u78BC "},
+        {"expected.", "\u9810\u671F\u7684 "},
+        {".read.end.of.file", "\uFF0C\u8B80\u53D6\u6A94\u6848\u7D50\u5C3E"},
+        {"expected.read.end.of.file", "\u9810\u671F\u7684 ';'\uFF0C\u8B80\u53D6\u6A94\u6848\u7D50\u5C3E"},
+        {"line.", "\u884C "},
+        {".expected.", ": \u9810\u671F '"},
+        {".found.", "'\uFF0C\u767C\u73FE '"},
+        {"QUOTE", "'"},
 
         // SolarisPrincipals
-        {"SolarisNumericGroupPrincipal [Primary Group]: ",
-                "SolarisNumericGroupPrincipal [\u4e3b\u7fa4\u7d44]\uff1a "},
-        {"SolarisNumericGroupPrincipal [Supplementary Group]: ",
-                "SolarisNumericGroupPrincipal [\u9644\u52a0\u7fa4\u7d44]\uff1a "},
-        {"SolarisNumericUserPrincipal: ",
+        {"SolarisNumericGroupPrincipal.Primary.Group.",
+                "SolarisNumericGroupPrincipal [\u4E3B\u7FA4\u7D44]: "},
+        {"SolarisNumericGroupPrincipal.Supplementary.Group.",
+                "SolarisNumericGroupPrincipal [\u9644\u52A0\u7FA4\u7D44]: "},
+        {"SolarisNumericUserPrincipal.",
                 "SolarisNumericUserPrincipal: "},
-        {"SolarisPrincipal: ", "SolarisPrincipal: "},
-        {"provided null name", "\u63d0\u4f9b\u7684\u7a7a\u540d\u7a31"}
+        {"SolarisPrincipal.", "SolarisPrincipal: "},
+        {"provided.null.name", "\u63D0\u4F9B\u7A7A\u503C\u540D\u7A31"}
 
     };
 
--- a/jdk/src/share/classes/sun/security/util/Resources_de.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/util/Resources_de.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, 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
@@ -35,605 +35,627 @@
     private static final Object[][] contents = {
 
         // shared (from jarsigner)
-        {" ", " "},
-        {"  ", "  "},
-        {"      ", "      "},
-        {", ", ", "},
+        {"SPACE", " "},
+        {"2SPACE", "  "},
+        {"6SPACE", "      "},
+        {"COMMA", ", "},
         // shared (from keytool)
-        {"\n", "\n"},
-        {"*******************************************",
+        {"NEWLINE", "\n"},
+        {"STAR",
                 "*******************************************"},
-        {"*******************************************\n\n",
+        {"STARNN",
                 "*******************************************\n\n"},
 
-        // keytool
-        {"keytool error: ", "Keytool-Fehler: "},
-        {"Illegal option:  ", "Unzul\u00e4ssige Option:  "},
-        {"Try keytool -help","Verwenden Sie den Befehl keytool -help"},
-        {"Command option <flag> needs an argument.", "Befehlsoption {0} ben\u00f6tigt ein Argument."},
-        {"Warning:  Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified <command> value.",
-                "Warnung: Keine Unterst\u00fctzung f\u00fcr unterschiedliche Speicher- und Schl\u00fcsselpassw\u00f6rter bei PKCS12 KeyStores. Der benutzerdefinierte Wert {0} wird ignoriert."},
-        {"-keystore must be NONE if -storetype is {0}",
-                "-keystore muss NONE sein, wenn -storetype gleich {0} ist"},
-        {"Too may retries, program terminated",
-                 "Zu viele erneute Versuche, das Programm wird beendet."},
-        {"-storepasswd and -keypasswd commands not supported if -storetype is {0}",
-                "Die Befehle -storepasswd und -keypasswd werden nicht unterst\u00fctzt, wenn -storetype gleich {0} ist"},
-        {"-keypasswd commands not supported if -storetype is PKCS12",
-                "Befehle des Typs -keypasswd werden nicht unterst\u00fctzt, wenn -storetype gleich PKCS12"},
-        {"-keypass and -new can not be specified if -storetype is {0}",
-                "Die Befehle -keypass und -new k\u00f6nnen nicht spezifiziert werden, wenn -storetype gleich {0} ist"},
-        {"if -protected is specified, then -storepass, -keypass, and -new must not be specified",
-                "Wenn -protected angegeben ist, d\u00fcrfen -storepass, -keypass und -new nicht angegeben werden"},
-        {"if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified",
-                "wenn -srcprotected angegeben ist, d\u00fcrfen -srcstorepass und -srckeypass nicht angegeben sein"},
-        {"if keystore is not password protected, then -storepass, -keypass, and -new must not be specified",
-                "Wenn der Keystore nicht passwortgesch\u00fctzt ist, d\u00fcrfen -storepass, -keypass und -new nicht spezifiziert werden"},
-        {"if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified",
-                "Wenn der Quell-Keystore nicht passwortgesch\u00fctzt ist, d\u00fcrfen -srcstorepass und -srckeypass nicht spezifiziert werden"},
-        {"Validity must be greater than zero",
-                "G\u00fcltigkeit muss gr\u00f6\u00dfer als Null sein"},
-        {"provName not a provider", "{0} kein Provider"},
-        {"Usage error: no command provided", "Verwendungsfehler: kein Befehl angegeben"},
-        {"Usage error, <arg> is not a legal command", "Verwendungsfehler: {0} ist kein g\u00fcltiger Befehl"},
-        {"Source keystore file exists, but is empty: ", "Datei f\u00fcr Quell-Keystore ist zwar vorhanden, aber leer: "},
-        {"Please specify -srckeystore", "Geben Sie \u0096srckeystore an"},
-        {"Must not specify both -v and -rfc with 'list' command",
-                "-v und -rfc d\u00fcrfen bei Befehl 'list' nicht beide angegeben werden"},
-        {"Key password must be at least 6 characters",
-                "Schl\u00fcsselpasswort muss mindestens 6 Zeichen lang sein"},
-        {"New password must be at least 6 characters",
-                "Neues Passwort muss mindest 6 Zeichen lang sein"},
-        {"Keystore file exists, but is empty: ",
-                "Keystore-Datei vorhanden, aber leer: "},
-        {"Keystore file does not exist: ",
-                "Keystore-Datei nicht vorhanden: "},
-        {"Must specify destination alias", "Zielalias muss angegeben werden."},
-        {"Must specify alias", "Alias muss angegeben werden."},
-        {"Keystore password must be at least 6 characters",
-                "Keystore-Passwort muss mindestens 6 Zeichen lang sein."},
-        {"Enter keystore password:  ", "Geben Sie das Keystore-Passwort ein:  "},
-        {"Enter source keystore password:  ", "Geben Sie das Passwort f\u00fcr den Quell-Keystore ein:  "},
-        {"Enter destination keystore password:  ", "Geben Sie das Passwort f\u00fcr den Ziel-Keystore ein:  "},
-        {"Keystore password is too short - must be at least 6 characters",
-         "Keystore-Passwort zu kurz - muss mindestens 6 Zeichen lang sein."},
-        {"Unknown Entry Type", "Unbekannter Eintragstyp"},
-        {"Too many failures. Alias not changed", "Zu viele Fehler. Alias nicht ge\u00e4ndert"},
-        {"Entry for alias <alias> successfully imported.",
-                 "Eintrag f\u00fcr Alias {0} erfolgreich importiert."},
-        {"Entry for alias <alias> not imported.", "Eintrag f\u00fcr Alias {0} nicht importiert."},
-        {"Problem importing entry for alias <alias>: <exception>.\nEntry for alias <alias> not imported.",
-                 "Fehler beim Importieren des Eintrags f\u00fcr Alias {0}: {1}.\nEintrag f\u00fcr Alias {0} nicht importiert."},
-        {"Import command completed:  <ok> entries successfully imported, <fail> entries failed or cancelled",
-                 "Importbefehl abgeschlossen:  {0} Eintr\u00e4ge erfolgreich importiert, Fehler oder Abbruch bei {1} Eintr\u00e4gen"},
-        {"Warning: Overwriting existing alias <alias> in destination keystore",
-                 "Warnung: \u00dcberschreiben von vorhandenem Alias {0} in Ziel-Keystore"},
-        {"Existing entry alias <alias> exists, overwrite? [no]:  ",
-                 "Eintrags-Alias {0} bereits vorhanden. \u00dcberschreiben? [Nein]:  "},
-        {"Too many failures - try later", "Zu viele Fehler - versuchen Sie es sp\u00e4ter noch einmal."},
-        {"Certification request stored in file <filename>",
-                "Zertifizierungsanforderung in Datei <{0}> gespeichert."},
-        {"Submit this to your CA", "Reichen Sie dies bei Ihrem CA ein."},
-        {"if alias not specified, destalias, srckeypass, and destkeypass must not be specified",
-            "wenn kein Alias angegeben ist, m\u00fcssen destalias, srckeypass und destkeypass nicht angegeben werden"},
-        {"Certificate stored in file <filename>",
-                "Zertifikat in Datei <{0}> gespeichert."},
-        {"Certificate reply was installed in keystore",
-                "Zertifikatantwort wurde in Keystore installiert."},
-        {"Certificate reply was not installed in keystore",
-                "Zertifikatantwort wurde nicht in Keystore installiert."},
-        {"Certificate was added to keystore",
-                "Zertifikat wurde zu Keystore hinzugef\u00fcgt."},
-        {"Certificate was not added to keystore",
-                "Zertifikat wurde nicht zu Keystore hinzugef\u00fcgt."},
-        {"[Storing ksfname]", "[{0} wird gesichert.]"},
-        {"alias has no public key (certificate)",
-                "{0} hat keinen \u00f6ffentlichen Schl\u00fcssel (Zertifikat)."},
-        {"Cannot derive signature algorithm",
-                "Signaturalgorithmus kann nicht abgeleitet werden."},
-        {"Alias <alias> does not exist",
-                "Alias <{0}> existiert nicht."},
-        {"Alias <alias> has no certificate",
-                "Alias <{0}> hat kein Zertifikat."},
-        {"Key pair not generated, alias <alias> already exists",
-                "Schl\u00fcsselpaar wurde nicht erzeugt, Alias <{0}> ist bereits vorhanden."},
-        {"Cannot derive signature algorithm",
-                "Signaturalgorithmus kann nicht abgeleitet werden."},
-        {"Generating keysize bit keyAlgName key pair and self-signed certificate (sigAlgName) with a validity of validality days\n\tfor: x500Name",
-                "Erstellen von Schl\u00fcsselpaar (Typ {1}, {0} Bit) und selbstunterzeichnetem Zertifikat ({2}) mit einer G\u00fcltigkeit von {3} Tagen\n\tf\u00fcr: {4}"},
-        {"Enter key password for <alias>", "Geben Sie das Passwort f\u00fcr <{0}> ein."},
-        {"\t(RETURN if same as keystore password):  ",
-                "\t(EINGABETASTE, wenn Passwort dasselbe wie f\u00fcr Keystore):  "},
-        {"Key password is too short - must be at least 6 characters",
-                "Schl\u00fcsselpasswort zu kurz - muss mindestens 6 Zeichen lang sein."},
-        {"Too many failures - key not added to keystore",
-                "Zu viele Fehler - Schl\u00fcssel wurde nicht zu Keystore hinzugef\u00fcgt."},
-        {"Destination alias <dest> already exists",
+        // keytool: Help part
+        {".OPTION.", " [OPTION]..."},
+        {"Options.", "Optionen:"},
+        {"Use.keytool.help.for.all.available.commands",
+                 "\"keytool -help\" f\u00FCr alle verf\u00FCgbaren Befehle verwenden"},
+        {"Key.and.Certificate.Management.Tool",
+                 "Schl\u00FCssel- und Zertifikatsverwaltungstool"},
+        {"Commands.", "Befehle:"},
+        {"Use.keytool.command.name.help.for.usage.of.command.name",
+                "\"keytool -command_name -help\" f\u00FCr Verwendung von command_name verwenden"},
+        // keytool: help: commands
+        {"Generates.a.certificate.request",
+                "Generiert eine Zertifikatanforderung"}, //-certreq
+        {"Changes.an.entry.s.alias",
+                "\u00C4ndert den Alias eines Eintrags"}, //-changealias
+        {"Deletes.an.entry",
+                "L\u00F6scht einen Eintrag"}, //-delete
+        {"Exports.certificate",
+                "Exportiert ein Zertifikat"}, //-exportcert
+        {"Generates.a.key.pair",
+                "Generiert ein Schl\u00FCsselpaar"}, //-genkeypair
+        {"Generates.a.secret.key",
+                "Generiert einen Secret Key"}, //-genseckey
+        {"Generates.certificate.from.a.certificate.request",
+                "Generiert ein Zertifikat aus einer Zertifikatanforderung"}, //-gencert
+        {"Generates.CRL", "Generiert eine CRL"}, //-gencrl
+        {"Imports.entries.from.a.JDK.1.1.x.style.identity.database",
+                "Importiert Eintr\u00E4ge aus einer Identity-Datenbank im JDK 1.1.x-Stil"}, //-identitydb
+        {"Imports.a.certificate.or.a.certificate.chain",
+                "Importiert ein Zertifikat oder eine Zertifikatkette"}, //-importcert
+        {"Imports.one.or.all.entries.from.another.keystore",
+                "Importiert einen oder alle Eintr\u00E4ge aus einem anderen Keystore"}, //-importkeystore
+        {"Clones.a.key.entry",
+                "Clont einen Schl\u00FCsseleintrag"}, //-keyclone
+        {"Changes.the.key.password.of.an.entry",
+                "\u00C4ndert das Schl\u00FCsselkennwort eines Eintrags"}, //-keypasswd
+        {"Lists.entries.in.a.keystore",
+                "Listet die Eintr\u00E4ge in einem Keystore auf"}, //-list
+        {"Prints.the.content.of.a.certificate",
+                "Druckt den Content eines Zertifikats"}, //-printcert
+        {"Prints.the.content.of.a.certificate.request",
+                "Druckt den Content einer Zertifikatanforderung"}, //-printcertreq
+        {"Prints.the.content.of.a.CRL.file",
+                "Druckt den Content einer CRL-Datei"}, //-printcrl
+        {"Generates.a.self.signed.certificate",
+                "Generiert ein selbst signiertes Zertifikat"}, //-selfcert
+        {"Changes.the.store.password.of.a.keystore",
+                "\u00C4ndert das Speicherkennwort eines Keystores"}, //-storepasswd
+        // keytool: help: options
+        {"alias.name.of.the.entry.to.process",
+                "Aliasname des zu verarbeitenden Eintrags"}, //-alias
+        {"destination.alias",
+                "Zielalias"}, //-destalias
+        {"destination.key.password",
+                "Zielschl\u00FCssel-Kennwort"}, //-destkeypass
+        {"destination.keystore.name",
+                "Ziel-Keystore-Name"}, //-destkeystore
+        {"destination.keystore.password.protected",
+                "Ziel-Keystore kennwortgesch\u00FCtzt"}, //-destprotected
+        {"destination.keystore.provider.name",
+                "Ziel-Keystore-Providername"}, //-destprovidername
+        {"destination.keystore.password",
+                "Ziel-Keystore-Kennwort"}, //-deststorepass
+        {"destination.keystore.type",
+                "Ziel-Keystore-Typ"}, //-deststoretype
+        {"distinguished.name",
+                "Distinguished Name"}, //-dname
+        {"X.509.extension",
+                "X.509-Erweiterung"}, //-ext
+        {"output.file.name",
+                "Ausgabedateiname"}, //-file and -outfile
+        {"input.file.name",
+                "Eingabedateiname"}, //-file and -infile
+        {"key.algorithm.name",
+                "Schl\u00FCsselalgorithmusname"}, //-keyalg
+        {"key.password",
+                "Schl\u00FCsselkennwort"}, //-keypass
+        {"key.bit.size",
+                "Schl\u00FCsselbitgr\u00F6\u00DFe"}, //-keysize
+        {"keystore.name",
+                "Keystore-Name"}, //-keystore
+        {"new.password",
+                "Neues Kennwort"}, //-new
+        {"do.not.prompt",
+                "Kein Prompt"}, //-noprompt
+        {"password.through.protected.mechanism",
+                "Kennwort \u00FCber gesch\u00FCtzten Mechanismus"}, //-protected
+        {"provider.argument",
+                "Providerargument"}, //-providerarg
+        {"provider.class.name",
+                "Providerklassenname"}, //-providerclass
+        {"provider.name",
+                "Providername"}, //-providername
+        {"provider.classpath",
+                "Provider-Classpath"}, //-providerpath
+        {"output.in.RFC.style",
+                "Ausgabe in RFC-Stil"}, //-rfc
+        {"signature.algorithm.name",
+                "Signaturalgorithmusname"}, //-sigalg
+        {"source.alias",
+                "Quellalias"}, //-srcalias
+        {"source.key.password",
+                "Quellschl\u00FCssel-Kennwort"}, //-srckeypass
+        {"source.keystore.name",
+                "Quell-Keystore-Name"}, //-srckeystore
+        {"source.keystore.password.protected",
+                "Quell-Keystore kennwortgesch\u00FCtzt"}, //-srcprotected
+        {"source.keystore.provider.name",
+                "Quell-Keystore-Providername"}, //-srcprovidername
+        {"source.keystore.password",
+                "Quell-Keystore-Kennwort"}, //-srcstorepass
+        {"source.keystore.type",
+                "Quell-Keystore-Typ"}, //-srcstoretype
+        {"SSL.server.host.and.port",
+                "SSL-Serverhost und -port"}, //-sslserver
+        {"signed.jar.file",
+                "Signierte JAR-Datei"}, //=jarfile
+        {"certificate.validity.start.date.time",
+                "Anfangsdatum/-zeit f\u00FCr Zertifikatsg\u00FCltigkeit"}, //-startdate
+        {"keystore.password",
+                "Keystore-Kennwort"}, //-storepass
+        {"keystore.type",
+                "Keystore-Typ"}, //-storetype
+        {"trust.certificates.from.cacerts",
+                "Zertifikaten aus cacerts vertrauen"}, //-trustcacerts
+        {"verbose.output",
+                "Verbose-Ausgabe"}, //-v
+        {"validity.number.of.days",
+                "G\u00FCltigkeitsdauer (Tage)"}, //-validity
+        {"Serial.ID.of.cert.to.revoke",
+                 "Serielle ID des zu entziehenden Certs"}, //-id
+        // keytool: Running part
+        {"keytool.error.", "Keytool-Fehler: "},
+        {"Illegal.option.", "Ung\u00FCltige Option:  "},
+        {"Illegal.value.", "Ung\u00FCltiger Wert: "},
+        {"Unknown.password.type.", "Unbekannter Kennworttyp: "},
+        {"Cannot.find.environment.variable.",
+                "Umgebungsvariable kann nicht gefunden werden: "},
+        {"Cannot.find.file.", "Datei kann nicht gefunden werden: "},
+        {"Command.option.flag.needs.an.argument.", "Befehlsoption {0} ben\u00F6tigt ein Argument."},
+        {"Warning.Different.store.and.key.passwords.not.supported.for.PKCS12.KeyStores.Ignoring.user.specified.command.value.",
+                "Warnung: Keine Unterst\u00FCtzung f\u00FCr unterschiedliche Speicher- und Schl\u00FCsselkennw\u00F6rter bei PKCS12 KeyStores. Der benutzerdefinierte Wert {0} wird ignoriert."},
+        {".keystore.must.be.NONE.if.storetype.is.{0}",
+                "-keystore muss NONE sein, wenn -storetype {0} ist"},
+        {"Too.many.retries.program.terminated",
+                 "Zu viele erneute Versuche. Programm wird beendet"},
+        {".storepasswd.and.keypasswd.commands.not.supported.if.storetype.is.{0}",
+                "Befehle -storepasswd und -keypasswd werden nicht unterst\u00FCtzt, wenn -storetype {0} ist"},
+        {".keypasswd.commands.not.supported.if.storetype.is.PKCS12",
+                "Befehle des Typs -keypasswd werden nicht unterst\u00FCtzt, wenn -storetype PKCS12 ist"},
+        {".keypass.and.new.can.not.be.specified.if.storetype.is.{0}",
+                "-keypass und -new k\u00F6nnen nicht angegeben werden, wenn -storetype {0} ist"},
+        {"if.protected.is.specified.then.storepass.keypass.and.new.must.not.be.specified",
+                "Wenn -protected angegeben ist, d\u00FCrfen -storepass, -keypass und -new nicht angegeben werden"},
+        {"if.srcprotected.is.specified.then.srcstorepass.and.srckeypass.must.not.be.specified",
+                "Wenn -srcprotected angegeben ist, d\u00FCrfen -srcstorepass und -srckeypass nicht angegeben werden"},
+        {"if.keystore.is.not.password.protected.then.storepass.keypass.and.new.must.not.be.specified",
+                "Wenn der Keystore nicht kennwortgesch\u00FCtzt ist, d\u00FCrfen -storepass, -keypass und -new nicht angegeben werden"},
+        {"if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified",
+                "Wenn der Quell-Keystore nicht kennwortgesch\u00FCtzt ist, d\u00FCrfen -srcstorepass und -srckeypass nicht angegeben werden"},
+        {"Illegal.startdate.value", "Ung\u00FCltiger Wert f\u00FCr Anfangsdatum"},
+        {"Validity.must.be.greater.than.zero",
+                "G\u00FCltigkeit muss gr\u00F6\u00DFer als null sein"},
+        {"provName.not.a.provider", "{0} kein Provider"},
+        {"Usage.error.no.command.provided", "Verwendungsfehler: Kein Befehl angegeben"},
+        {"Source.keystore.file.exists.but.is.empty.", "Quell-Keystore-Datei ist zwar vorhanden, ist aber leer: "},
+        {"Please.specify.srckeystore", "Geben Sie -srckeystore an"},
+        {"Must.not.specify.both.v.and.rfc.with.list.command",
+                "-v und -rfc d\u00FCrfen bei Befehl \"list\" nicht beide angegeben werden"},
+        {"Key.password.must.be.at.least.6.characters",
+                "Schl\u00FCsselkennwort muss mindestens sechs Zeichen lang sein"},
+        {"New.password.must.be.at.least.6.characters",
+                "Neues Kennwort muss mindestens sechs Zeichen lang sein"},
+        {"Keystore.file.exists.but.is.empty.",
+                "Keystore-Datei ist vorhanden, ist aber leer: "},
+        {"Keystore.file.does.not.exist.",
+                "Keystore-Datei ist nicht vorhanden: "},
+        {"Must.specify.destination.alias", "Sie m\u00FCssen einen Zielalias angeben"},
+        {"Must.specify.alias", "Sie m\u00FCssen einen Alias angeben"},
+        {"Keystore.password.must.be.at.least.6.characters",
+                "Keystore-Kennwort muss mindestens sechs Zeichen lang sein"},
+        {"Enter.keystore.password.", "Keystore-Kennwort eingeben:  "},
+        {"Enter.source.keystore.password.", "Quell-Keystore-Kennwort eingeben:  "},
+        {"Enter.destination.keystore.password.", "Ziel-Keystore-Kennwort eingeben:  "},
+        {"Keystore.password.is.too.short.must.be.at.least.6.characters",
+         "Keystore-Kennwort ist zu kurz. Es muss mindestens sechs Zeichen lang sein"},
+        {"Unknown.Entry.Type", "Unbekannter Eintragstyp"},
+        {"Too.many.failures.Alias.not.changed", "Zu viele Fehler. Alias nicht ge\u00E4ndert"},
+        {"Entry.for.alias.alias.successfully.imported.",
+                 "Eintrag f\u00FCr Alias {0} erfolgreich importiert."},
+        {"Entry.for.alias.alias.not.imported.", "Eintrag f\u00FCr Alias {0} nicht importiert."},
+        {"Problem.importing.entry.for.alias.alias.exception.Entry.for.alias.alias.not.imported.",
+                 "Problem beim Importieren des Eintrags f\u00FCr Alias {0}: {1}.\nEintrag f\u00FCr Alias {0} nicht importiert."},
+        {"Import.command.completed.ok.entries.successfully.imported.fail.entries.failed.or.cancelled",
+                 "Importbefehl abgeschlossen: {0} Eintr\u00E4ge erfolgreich importiert, {1} Eintr\u00E4ge nicht erfolgreich oder abgebrochen"},
+        {"Warning.Overwriting.existing.alias.alias.in.destination.keystore",
+                 "Warnung: Vorhandener Alias {0} in Ziel-Keystore wird \u00FCberschrieben"},
+        {"Existing.entry.alias.alias.exists.overwrite.no.",
+                 "Eintragsalias {0} ist bereits vorhanden. \u00DCberschreiben? [Nein]:  "},
+        {"Too.many.failures.try.later", "Zu viele Fehler. Versuchen Sie es sp\u00E4ter erneut"},
+        {"Certification.request.stored.in.file.filename.",
+                "Zertifizierungsanforderung in Datei <{0}> gespeichert"},
+        {"Submit.this.to.your.CA", "Leiten Sie dies an die CA weiter"},
+        {"if.alias.not.specified.destalias.srckeypass.and.destkeypass.must.not.be.specified",
+            "Wenn kein Alias angegeben ist, d\u00FCrfen destalias, srckeypass und destkeypass nicht angegeben werden"},
+        {"Certificate.stored.in.file.filename.",
+                "Zertifikat in Datei <{0}> gespeichert"},
+        {"Certificate.reply.was.installed.in.keystore",
+                "Zertifikatantwort wurde in Keystore installiert"},
+        {"Certificate.reply.was.not.installed.in.keystore",
+                "Zertifikatantwort wurde nicht in Keystore installiert"},
+        {"Certificate.was.added.to.keystore",
+                "Zertifikat wurde Keystore hinzugef\u00FCgt"},
+        {"Certificate.was.not.added.to.keystore",
+                "Zertifikat wurde nicht zu Keystore hinzugef\u00FCgt"},
+        {".Storing.ksfname.", "[{0} wird gesichert]"},
+        {"alias.has.no.public.key.certificate.",
+                "{0} hat keinen Public Key (Zertifikat)"},
+        {"Cannot.derive.signature.algorithm",
+                "Signaturalgorithmus kann nicht abgeleitet werden"},
+        {"Alias.alias.does.not.exist",
+                "Alias <{0}> ist nicht vorhanden"},
+        {"Alias.alias.has.no.certificate",
+                "Alias <{0}> hat kein Zertifikat"},
+        {"Key.pair.not.generated.alias.alias.already.exists",
+                "Schl\u00FCsselpaar wurde nicht generiert. Alias <{0}> ist bereits vorhanden"},
+        {"Generating.keysize.bit.keyAlgName.key.pair.and.self.signed.certificate.sigAlgName.with.a.validity.of.validality.days.for",
+                "Generieren von Schl\u00FCsselpaar (Typ {1}, {0} Bit) und selbst signiertem Zertifikat ({2}) mit einer G\u00FCltigkeit von {3} Tagen\n\tf\u00FCr: {4}"},
+        {"Enter.key.password.for.alias.", "Schl\u00FCsselkennwort f\u00FCr <{0}> eingeben"},
+        {".RETURN.if.same.as.keystore.password.",
+                "\t(RETURN, wenn identisch mit Keystore-Kennwort):  "},
+        {"Key.password.is.too.short.must.be.at.least.6.characters",
+                "Schl\u00FCsselkennwort ist zu kurz. Es muss mindestens sechs Zeichen lang sein"},
+        {"Too.many.failures.key.not.added.to.keystore",
+                "Zu viele Fehler. Schl\u00FCssel wurde nicht zu Keystore hinzugef\u00FCgt"},
+        {"Destination.alias.dest.already.exists",
                 "Zielalias <{0}> bereits vorhanden"},
-        {"Password is too short - must be at least 6 characters",
-                "Passwort zu kurz - muss mindestens 6 Zeichen lang sein"},
-        {"Too many failures. Key entry not cloned",
-                "Zu viele Fehler. Schl\u00fcsseleingabe wurde nicht dupliziert."},
-        {"key password for <alias>", "Schl\u00fcsselpasswort f\u00fcr <{0}>"},
-        {"Keystore entry for <id.getName()> already exists",
-                "Keystore-Eintrag f\u00fcr <{0}> bereits vorhanden"},
-        {"Creating keystore entry for <id.getName()> ...",
-                "Keystore-Eintrag f\u00fcr <{0}> wird erstellt ..."},
-        {"No entries from identity database added",
-                "Keine Eintr\u00e4ge von Identit\u00e4tsdatenbank hinzugef\u00fcgt"},
-        {"Alias name: alias", "Aliasname: {0}"},
-        {"Creation date: keyStore.getCreationDate(alias)",
+        {"Password.is.too.short.must.be.at.least.6.characters",
+                "Kennwort ist zu kurz. Es muss mindestens sechs Zeichen lang sein"},
+        {"Too.many.failures.Key.entry.not.cloned",
+                "Zu viele Fehler. Schl\u00FCsseleintrag wurde nicht geclont"},
+        {"key.password.for.alias.", "Schl\u00FCsselkennwort f\u00FCr <{0}>"},
+        {"Keystore.entry.for.id.getName.already.exists",
+                "Keystore-Eintrag f\u00FCr <{0}> bereits vorhanden"},
+        {"Creating.keystore.entry.for.id.getName.",
+                "Keystore-Eintrag f\u00FCr <{0}> wird erstellt..."},
+        {"No.entries.from.identity.database.added",
+                "Keine Eintr\u00E4ge aus Identity-Datenbank hinzugef\u00FCgt"},
+        {"Alias.name.alias", "Aliasname: {0}"},
+        {"Creation.date.keyStore.getCreationDate.alias.",
                 "Erstellungsdatum: {0,date}"},
-        {"alias, keyStore.getCreationDate(alias), ",
+        {"alias.keyStore.getCreationDate.alias.",
                 "{0}, {1,date}, "},
-        {"alias, ", "{0}, "},
-        {"Entry type: <type>", "Eintragstyp: {0}"},
-        {"Certificate chain length: ", "Zertifikatskettenl\u00e4nge: "},
-        {"Certificate[(i + 1)]:", "Zertifikat[{0,number,integer}]:"},
-        {"Certificate fingerprint (MD5): ", "Zertifikatsfingerabdruck (MD5): "},
-        {"Entry type: trustedCertEntry\n", "Eintragstyp: trustedCertEntry\n"},
-        {"trustedCertEntry,", "trustedCertEntry,"},
-        {"Keystore type: ", "Keystore-Typ: "},
-        {"Keystore provider: ", "Keystore-Provider: "},
-        {"Your keystore contains keyStore.size() entry",
-                "Ihr Keystore enth\u00e4lt {0,number,integer} Eintrag/-\u00e4ge."},
-        {"Your keystore contains keyStore.size() entries",
-                "Ihr Keystore enth\u00e4lt {0,number,integer} Eintr\u00e4ge."},
-        {"Failed to parse input", "Eingabe konnte nicht analysiert werden."},
-        {"Empty input", "Leere Eingabe"},
-        {"Not X.509 certificate", "Kein X.509-Zertifikat"},
-        {"Cannot derive signature algorithm",
-                "Signaturalgorithmus kann nicht abgeleitet werden."},
-        {"alias has no public key", "{0} hat keinen \u00f6ffentlichen Schl\u00fcssel."},
-        {"alias has no X.509 certificate", "{0} hat kein X.509-Zertifikat."},
-        {"New certificate (self-signed):", "Neues Zertifikat (selbstsigniert):"},
-        {"Reply has no certificates", "Antwort hat keine Zertifikate."},
-        {"Certificate not imported, alias <alias> already exists",
-                "Zertifikat nicht importiert, Alias <{0}> bereits vorhanden"},
-        {"Input not an X.509 certificate", "Eingabe kein X.509-Zertifikat"},
-        {"Certificate already exists in keystore under alias <trustalias>",
-                "Zertifikat in Keystore bereits unter Alias <{0}> vorhanden"},
-        {"Do you still want to add it? [no]:  ",
-                "M\u00f6chten Sie es trotzdem hinzuf\u00fcgen? [Nein]:  "},
-        {"Certificate already exists in system-wide CA keystore under alias <trustalias>",
-                "Zertifikat in systemweiten CA-Keystore bereits unter Alias <{0}> vorhanden."},
-        {"Do you still want to add it to your own keystore? [no]:  ",
-                "M\u00f6chten Sie es trotzdem zu Ihrem eigenen Keystore hinzuf\u00fcgen? [Nein]:  "},
-        {"Trust this certificate? [no]:  ", "Diesem Zertifikat vertrauen? [Nein]:  "},
+        {"alias.", "{0}, "},
+        {"Entry.type.type.", "Eintragstyp: {0}"},
+        {"Certificate.chain.length.", "Zertifikatkettenl\u00E4nge: "},
+        {"Certificate.i.1.", "Zertifikat[{0,number,integer}]:"},
+        {"Certificate.fingerprint.SHA1.", "Zertifikat-Fingerprint (SHA1): "},
+        {"Entry.type.trustedCertEntry.", "Eintragstyp: trustedCertEntry\n"},
+        {"trustedCertEntry.", "trustedCertEntry,"},
+        {"Keystore.type.", "Keystore-Typ: "},
+        {"Keystore.provider.", "Keystore-Provider: "},
+        {"Your.keystore.contains.keyStore.size.entry",
+                "Keystore enth\u00E4lt {0,number,integer} Eintrag"},
+        {"Your.keystore.contains.keyStore.size.entries",
+                "Keystore enth\u00E4lt {0,number,integer} Eintr\u00E4ge"},
+        {"Failed.to.parse.input", "Eingabe konnte nicht geparst werden"},
+        {"Empty.input", "Leere Eingabe"},
+        {"Not.X.509.certificate", "Kein X.509-Zertifikat"},
+        {"alias.has.no.public.key", "{0} hat keinen Public Key"},
+        {"alias.has.no.X.509.certificate", "{0} hat kein X.509-Zertifikat"},
+        {"New.certificate.self.signed.", "Neues Zertifikat (selbst signiert):"},
+        {"Reply.has.no.certificates", "Antwort hat keine Zertifikate"},
+        {"Certificate.not.imported.alias.alias.already.exists",
+                "Zertifikat nicht importiert. Alias <{0}> ist bereits vorhanden"},
+        {"Input.not.an.X.509.certificate", "Eingabe kein X.509-Zertifikat"},
+        {"Certificate.already.exists.in.keystore.under.alias.trustalias.",
+                "Zertifikat ist bereits unter Alias <{0}> im Keystore vorhanden"},
+        {"Do.you.still.want.to.add.it.no.",
+                "M\u00F6chten Sie es trotzdem hinzuf\u00FCgen? [Nein]:  "},
+        {"Certificate.already.exists.in.system.wide.CA.keystore.under.alias.trustalias.",
+                "Zertifikat ist bereits unter Alias <{0}> im systemweiten CA-Keystore vorhanden"},
+        {"Do.you.still.want.to.add.it.to.your.own.keystore.no.",
+                "M\u00F6chten Sie es trotzdem zu Ihrem eigenen Keystore hinzuf\u00FCgen? [Nein]:  "},
+        {"Trust.this.certificate.no.", "Diesem Zertifikat vertrauen? [Nein]:  "},
         {"YES", "JA"},
-        {"New prompt: ", "Neues {0}: "},
-        {"Passwords must differ", "Passw\u00f6rter m\u00fcssen sich unterscheiden"},
-        {"Re-enter new prompt: ", "Neues {0} nochmals eingeben: "},
-        {"Re-enter new password: ", "Geben Sie das Passwort erneut ein: "},
-        {"They don't match. Try again", "Keine \u00dcbereinstimmung. Versuchen Sie es erneut."},
-        {"Enter prompt alias name:  ", "Geben Sie den Aliasnamen von {0} ein:  "},
-        {"Enter new alias name\t(RETURN to cancel import for this entry):  ",
-                 "Geben Sie einen neuen Alias-Namen ein.\t(Dr\u00fccken Sie die Eingabetaste, um das Importieren dieses Eintrags abzubrechen.):  "},
-        {"Enter alias name:  ", "Geben Sie den Aliasnamen ein:  "},
-        {"\t(RETURN if same as for <otherAlias>)",
-                "\t(EINGABETASTE, wenn selber Name wie f\u00fcr <{0}>)"},
-        {"*PATTERN* printX509Cert",
-                "Eigner: {0}\nAussteller: {1}\nSeriennummer: {2}\nG\u00fcltig von: {3} bis: {4}\nDigitaler Fingerabdruck des Zertifikats:\n\t MD5:  {5}\n\t SHA1: {6}\n\t Unterschrift-Algorithmusname: {7}\n\t Version: {8}"},
-        {"What is your first and last name?",
+        {"New.prompt.", "Neues {0}: "},
+        {"Passwords.must.differ", "Kennw\u00F6rter m\u00FCssen sich unterscheiden"},
+        {"Re.enter.new.prompt.", "Neues {0} erneut eingeben: "},
+        {"Re.enter.new.password.", "Neues Kennwort erneut eingeben: "},
+        {"They.don.t.match.Try.again", "Keine \u00DCbereinstimmung. Wiederholen Sie den Vorgang"},
+        {"Enter.prompt.alias.name.", "{0}-Aliasnamen eingeben:  "},
+        {"Enter.new.alias.name.RETURN.to.cancel.import.for.this.entry.",
+                 "Geben Sie einen neuen Aliasnamen ein\t(RETURN, um den Import dieses Eintrags abzubrechen):  "},
+        {"Enter.alias.name.", "Aliasnamen eingeben:  "},
+        {".RETURN.if.same.as.for.otherAlias.",
+                "\t(RETURN, wenn identisch mit <{0}>)"},
+        {".PATTERN.printX509Cert",
+                "Eigent\u00FCmer: {0}\nAussteller: {1}\nSeriennummer: {2}\nG\u00FCltig von: {3} bis: {4}\nZertifikat-Fingerprints:\n\t MD5:  {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t Signaturalgorithmusname: {8}\n\t Version: {9}"},
+        {"What.is.your.first.and.last.name.",
                 "Wie lautet Ihr Vor- und Nachname?"},
-        {"What is the name of your organizational unit?",
+        {"What.is.the.name.of.your.organizational.unit.",
                 "Wie lautet der Name Ihrer organisatorischen Einheit?"},
-        {"What is the name of your organization?",
+        {"What.is.the.name.of.your.organization.",
                 "Wie lautet der Name Ihrer Organisation?"},
-        {"What is the name of your City or Locality?",
+        {"What.is.the.name.of.your.City.or.Locality.",
                 "Wie lautet der Name Ihrer Stadt oder Gemeinde?"},
-        {"What is the name of your State or Province?",
-                "Wie lautet der Name Ihres Bundeslandes oder Ihrer Provinz?"},
-        {"What is the two-letter country code for this unit?",
-                "Wie lautet der Landescode (zwei Buchstaben) f\u00fcr diese Einheit?"},
-        {"Is <name> correct?", "Ist {0} richtig?"},
+        {"What.is.the.name.of.your.State.or.Province.",
+                "Wie lautet der Name Ihres Bundeslands?"},
+        {"What.is.the.two.letter.country.code.for.this.unit.",
+                "Wie lautet der L\u00E4ndercode (zwei Buchstaben) f\u00FCr diese Einheit?"},
+        {"Is.name.correct.", "Ist {0} richtig?"},
         {"no", "Nein"},
         {"yes", "Ja"},
         {"y", "J"},
-        {"  [defaultValue]:  ", " [{0}]:  "},
-        {"Alias <alias> has no key",
-                "Alias <{0}> verf\u00fcgt \u00fcber keinen Schl\u00fcssel"},
-        {"Alias <alias> references an entry type that is not a private key entry.  The -keyclone command only supports cloning of private key entries",
-                 "Alias <{0}> verweist auf einen Eintragstyp, der nicht einem Eintrag f\u00fcr einen privaten Schl\u00fcssel entspricht.  Der Befehl -keyclone unterst\u00fctzt nur das Klonen von privaten Schl\u00fcsseleintr\u00e4gen"},
+        {".defaultValue.", "  [{0}]:  "},
+        {"Alias.alias.has.no.key",
+                "Alias <{0}> verf\u00FCgt \u00FCber keinen Schl\u00FCssel"},
+        {"Alias.alias.references.an.entry.type.that.is.not.a.private.key.entry.The.keyclone.command.only.supports.cloning.of.private.key",
+                 "Alias <{0}> verweist auf einen Eintragstyp, der kein Private Key-Eintrag ist. Der Befehl -keyclone unterst\u00FCtzt nur das Clonen von Private Key-Eintr\u00E4gen"},
 
-        {"*****************  WARNING WARNING WARNING  *****************",
-            "*****************  WARNUNG WARNUNG WARNUNG  *****************"},
+        {".WARNING.WARNING.WARNING.",
+            "*****************  WARNING WARNING WARNING  *****************"},
+        {"Signer.d.", "Signaturgeber #%d:"},
+        {"Timestamp.", "Zeitstempel:"},
+        {"Signature.", "Signatur:"},
+        {"CRLs.", "CRLs:"},
+        {"Certificate.owner.", "Zertifikateigent\u00FCmer: "},
+        {"Not.a.signed.jar.file", "Keine signierte JAR-Datei"},
+        {"No.certificate.from.the.SSL.server",
+                "Kein Zertifikat vom SSL-Server"},
 
         // Translators of the following 5 pairs, ATTENTION:
         // the next 5 string pairs are meant to be combined into 2 paragraphs,
         // 1+3+4 and 2+3+5. make sure your translation also does.
-        {"* The integrity of the information stored in your keystore  *",
-            "* Die Integrit\u00e4t der in Ihrem Keystore gespeicherten Informationen  *"},
-        {"* The integrity of the information stored in the srckeystore*",
-            "* Die Integrit\u00e4t der in srckeystore gespeicherten Informationen*"},
-        {"* has NOT been verified!  In order to verify its integrity, *",
-            "* ist NICHT verifiziert worden! Damit die Integrit\u00e4t verifiziert werden kann, *"},
-        {"* you must provide your keystore password.                  *",
-            "* m\u00fcssen Sie Ihr Keystore-Passwort eingeben. *"},
-        {"* you must provide the srckeystore password.                *",
-            "* Sie m\u00fcssen das Passwort f\u00fcr srckeystore angeben.                *"},
+        {".The.integrity.of.the.information.stored.in.your.keystore.",
+            "* Integrit\u00E4t der im Keystore gespeicherten Informationen  *"},
+        {".The.integrity.of.the.information.stored.in.the.srckeystore.",
+            "* Integrit\u00E4t der in srckeystore gespeicherten Informationen*"},
+        {".has.NOT.been.verified.In.order.to.verify.its.integrity.",
+            "* ist NICHT verifiziert worden. Damit die Integrit\u00E4t verifiziert werden kann, *"},
+        {".you.must.provide.your.keystore.password.",
+            "* m\u00FCssen Sie Ihr Keystore-Kennwort angeben.                  *"},
+        {".you.must.provide.the.srckeystore.password.",
+            "* m\u00FCssen Sie das Kennwort f\u00FCr srckeystore angeben.                *"},
 
 
-        {"Certificate reply does not contain public key for <alias>",
-                "Zertifikatantwort enth\u00e4lt keinen \u00f6ffentlichen Schl\u00fcssel f\u00fcr <{0}>."},
-        {"Incomplete certificate chain in reply",
-                "Unvollst\u00e4ndige Zertifikatskette in Antwort"},
-        {"Certificate chain in reply does not verify: ",
-                "Zertifikatskette in Antwort verifiziert nicht: "},
-        {"Top-level certificate in reply:\n",
-                "Toplevel-Zertifikat in Antwort:\n"},
-        {"... is not trusted. ", "... wird nicht vertraut. "},
-        {"Install reply anyway? [no]:  ", "Antwort trotzdem installieren? [Nein]:  "},
+        {"Certificate.reply.does.not.contain.public.key.for.alias.",
+                "Zertifikatantwort enth\u00E4lt keinen Public Key f\u00FCr <{0}>"},
+        {"Incomplete.certificate.chain.in.reply",
+                "Unvollst\u00E4ndige Zertifikatkette in Antwort"},
+        {"Certificate.chain.in.reply.does.not.verify.",
+                "Zertifikatkette in Antwort verifiziert nicht: "},
+        {"Top.level.certificate.in.reply.",
+                "Zertifikat der obersten Ebene in Antwort:\n"},
+        {".is.not.trusted.", "... ist nicht vertrauensw\u00FCrdig. "},
+        {"Install.reply.anyway.no.", "Antwort trotzdem installieren? [Nein]:  "},
         {"NO", "NEIN"},
-        {"Public keys in reply and keystore don't match",
-                "\u00d6ffentliche Schl\u00fcssel in Antwort und Keystore stimmen nicht \u00fcberein."},
-        {"Certificate reply and certificate in keystore are identical",
-                "Zertifikatantwort und Zertifikat in Keystore sind identisch."},
-        {"Failed to establish chain from reply",
-                "Kette konnte nicht aus Antwort entnommen werden."},
+        {"Public.keys.in.reply.and.keystore.don.t.match",
+                "Public Keys in Antwort und Keystore stimmen nicht \u00FCberein"},
+        {"Certificate.reply.and.certificate.in.keystore.are.identical",
+                "Zertifikatantwort und Zertifikat in Keystore sind identisch"},
+        {"Failed.to.establish.chain.from.reply",
+                "Kette konnte der Antwort nicht entnommen werden"},
         {"n", "N"},
-        {"Wrong answer, try again", "Falsche Antwort, versuchen Sie es noch einmal."},
-        {"Secret key not generated, alias <alias> already exists",
-                "Geheimschl\u00fcssel wurde nicht erstellt, Alias <{0}> bereits vorhanden"},
-        {"Please provide -keysize for secret key generation",
-                "Geben Sie -keysize zum Erstellen eines Geheimschl\u00fcssels an"},
-        {"keytool usage:\n", "Keytool-Syntax:\n"},
-
-        {"Extensions: ", "Erweiterungen: "},
-
-        {"-certreq     [-v] [-protected]",
-                "-certreq     [-v] [-protected]"},
-        {"\t     [-alias <alias>] [-sigalg <sigalg>]",
-                "\t     [-alias <Alias>] [-sigalg <Sigalg>]"},
-        {"\t     [-file <csr_file>] [-keypass <keypass>]",
-                "\t     [-file <csr_Datei>] [-keypass <Keypass>]"},
-        {"\t     [-keystore <keystore>] [-storepass <storepass>]",
-                "\t     [-keystore <Keystore>] [-storepass <Storepass>]"},
-        {"\t     [-storetype <storetype>] [-providername <name>]",
-                "\t     [-storetype <Speichertyp>] [-providername <Name>]"},
-        {"\t     [-providerclass <provider_class_name> [-providerarg <arg>]] ...",
-                "\t     [-providerclass <Name der Providerklasse> [-providerarg <Argument>]] ..."},
-        {"\t     [-providerpath <pathlist>]",
-                "\t     [-providerpath <Pfadliste>]"},
-        {"-delete      [-v] [-protected] -alias <alias>",
-                "-delete      [-v] [-protected] -alias <Alias>"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-export      [-v] [-rfc] [-protected]",
-        //       "-export      [-v] [-rfc] [-protected]"},
-        {"-exportcert  [-v] [-rfc] [-protected]",
-                "-exportcert  [-v] [-rfc] [-protected]"},
-        {"\t     [-alias <alias>] [-file <cert_file>]",
-                "\t     [-alias <Alias>] [-file <Zert_datei>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-genkey      [-v] [-protected]",
-        //        "-genkey      [-v] [-protected]"},
-        {"-genkeypair  [-v] [-protected]",
-                "-genkeypair  [-v] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <Alias>]"},
-        {"\t     [-keyalg <keyalg>] [-keysize <keysize>]",
-                "\t     [-keyalg <Schl\u00fcssel-Alg>] [-keysize <Schl\u00fcsselgr\u00f6\u00dfe>]"},
-        {"\t     [-sigalg <sigalg>] [-dname <dname>]",
-                "\t     [-sigalg <Signal-Alg>] [-dname <Dname>]"},
-        {"\t     [-validity <valDays>] [-keypass <keypass>]",
-                "\t     [-validity <G\u00fcltigkeitTage>] [-keypass <Schl\u00fcsselpass>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-genseckey   [-v] [-protected]",
-                "-genseckey   [-v] [-protected]"},
-        /** rest is same as -certreq starting from -keystore **/
+        {"Wrong.answer.try.again", "Falsche Antwort. Wiederholen Sie den Vorgang"},
+        {"Secret.key.not.generated.alias.alias.already.exists",
+                "Secret Key wurde nicht generiert. Alias <{0}> ist bereits vorhanden"},
+        {"Please.provide.keysize.for.secret.key.generation",
+                "Geben Sie -keysize zum Erstellen eines Secret Keys an"},
 
-        {"-help", "-help"},
-        //{"-identitydb  [-v] [-protected]",
-        //      "-identitydb  [-v] [-protected]"},
-        //{"\t     [-file <idb_file>]", "\t     [-file <idb_file>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-import      [-v] [-noprompt] [-trustcacerts] [-protected]",
-        //       "-import      [-v] [-noprompt] [-trustcacerts] [-protected]"},
-        {"-importcert  [-v] [-noprompt] [-trustcacerts] [-protected]",
-                "-importcert  [-v] [-noprompt] [-trustcacerts] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <Alias>]"},
-        {"\t     [-alias <alias>] [-keypass <keypass>]",
-            "\t     [-alias <Alias>] [-keypass <Keypass>]"},
-        {"\t     [-file <cert_file>] [-keypass <keypass>]",
-                "\t     [-file <Zert_Datei>] [-keypass <Schl\u00fcsselpass>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-importkeystore [-v] ",
-                "-importkeystore [-v] "},
-        {"\t     [-srckeystore <srckeystore>] [-destkeystore <destkeystore>]",
-                "\t     [-srckeystore <Quell-Keystore>] [-destkeystore <Ziel-Keystore>]"},
-        {"\t     [-srcstoretype <srcstoretype>] [-deststoretype <deststoretype>]",
-                "\t     [-srcstoretype <Typ des Quell-Keystore>] [-deststoretype <Typ des Ziel-Keystore>]"},
-        {"\t     [-srcprotected] [-destprotected]",
-                "\t     [-srcprotected] [-destprotected]"},
-        {"\t     [-srcstorepass <srcstorepass>] [-deststorepass <deststorepass>]",
-                "\t     [-srcstorepass <Passwort f\u00fcr Quell-Keystore>] [-deststorepass <Passwort f\u00fcr Ziel-Keystore>]"},
-        {"\t     [-srcprovidername <srcprovidername>]\n\t     [-destprovidername <destprovidername>]",  // Zeile zu lang, zwei Zeilen verwenden
-                 "\t     [-srcprovidername <Name des Quell-Providers>]\n\t     [-destprovidername <Name des Ziel-Providers>]"},
-        {"\t     [-srcalias <srcalias> [-destalias <destalias>]",
-                "\t     [-srcalias <Quell-Alias> [-destalias <Ziel-Alias>]"},
-        {"\t       [-srckeypass <srckeypass>] [-destkeypass <destkeypass>]]",
-                "\t       [-srckeypass <Passwort f\u00fcr Quell-Keystore>] [-destkeypass <Passwort f\u00fcr Ziel-Keystore>]]"},
-        {"\t     [-noprompt]", "\t     [-noprompt]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-changealias [-v] [-protected] -alias <alias> -destalias <destalias>",
-                "-changealias [-v] [-protected] -alias <Alias> -destalias <Ziel-Alias>"},
-        {"\t     [-keypass <keypass>]", "\t     [-keypass <Keypass>]"},
-
-        //{"-keyclone    [-v] [-protected]",
-        //      "-keyclone    [-v] [-protected]"},
-        //{"\t     [-alias <alias>] -dest <dest_alias>",
-        //      "\t     [-alias <alias>] -dest <dest_alias>"},
-        //{"\t     [-keypass <keypass>] [-new <new_keypass>]",
-        //      "\t     [-keypass <keypass>] [-new <new_keypass>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-keypasswd   [-v] [-alias <alias>]",
-                "-keypasswd   [-v] [-alias <Alias>]"},
-        {"\t     [-keypass <old_keypass>] [-new <new_keypass>]",
-                "\t     [-keypass <alt_Schl\u00fcsselpass>] [-new <neu_Schl\u00fcsselpass>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-list        [-v | -rfc] [-protected]",
-                        "-list        [-v | -rfc] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <Alias>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-printcert   [-v] [-file <cert_file>]",
-                "-printcert   [-v] [-file <Zert_Datei>]"},
-
-        //{"-selfcert    [-v] [-protected]",
-        //      "-selfcert    [-v] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <Alias>]"},
-        //{"\t     [-dname <dname>] [-validity <valDays>]",
-        //      "\t     [-dname <dname>] [-validity <valDays>]"},
-        //{"\t     [-keypass <keypass>] [-sigalg <sigalg>]",
-        //      "\t     [-keypass <keypass>] [-sigalg <sigalg>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-storepasswd [-v] [-new <new_storepass>]",
-                "-storepasswd [-v] [-new <neu_Storepass>]"},
-        /** rest is same as -certreq starting from -keystore **/
+        {"Extensions.", "Erweiterungen: "},
+        {".Empty.value.", "(Leerer Wert)"},
+        {"Extension.Request.", "Erweiterungsanforderung:"},
+        {"PKCS.10.Certificate.Request.Version.1.0.Subject.s.Public.Key.s.format.s.key.",
+                "PKCS #10-Zertifikatanforderung (Version 1.0)\nSubjekt: %s\nPublic Key: %s Format %s Schl\u00FCssel\n"},
+        {"Unknown.keyUsage.type.", "Unbekannter keyUsage-Typ: "},
+        {"Unknown.extendedkeyUsage.type.", "Unbekannter extendedkeyUsage-Typ: "},
+        {"Unknown.AccessDescription.type.", "Unbekannter AccessDescription-Typ: "},
+        {"Unrecognized.GeneralName.type.", "Unbekannter GeneralName-Typ: "},
+        {"This.extension.cannot.be.marked.as.critical.",
+                 "Erweiterung kann nicht als \"Kritisch\" markiert werden. "},
+        {"Odd.number.of.hex.digits.found.", "Ungerade Anzahl hexadezimaler Ziffern gefunden: "},
+        {"Unknown.extension.type.", "Unbekannter Erweiterungstyp: "},
+        {"command.{0}.is.ambiguous.", "Befehl {0} ist mehrdeutig:"},
 
         // policytool
-        {"Warning: A public key for alias 'signers[i]' does not exist.  Make sure a KeyStore is properly configured.",
-                "Warnung: Kein \u00f6ffentlicher Schl\u00fcssel f\u00fcr Alias {0} vorhanden.  Vergewissern Sie sich, dass der KeyStore ordnungsgem\u00e4\u00df konfiguriert ist."},
-        {"Warning: Class not found: class", "Warnung: Klasse nicht gefunden: {0}"},
-        {"Warning: Invalid argument(s) for constructor: arg",
-                "Warnung: Ung\u00fcltige(s) Argument(e) f\u00fcr Konstruktor: {0}"},
-        {"Illegal Principal Type: type", "Unzul\u00e4ssiger Principal-Typ: {0}"},
-        {"Illegal option: option", "Unzul\u00e4ssige Option: {0}"},
-        {"Usage: policytool [options]", "Syntax: policytool [Optionen]"},
-        {"  [-file <file>]    policy file location",
-                " [-file <Datei>]    Verzeichnis der Richtliniendatei"},
+        {"Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured.",
+                "Warnung: Kein Public Key f\u00FCr Alias {0} vorhanden. Vergewissern Sie sich, dass der KeyStore ordnungsgem\u00E4\u00DF konfiguriert ist."},
+        {"Warning.Class.not.found.class", "Warnung: Klasse nicht gefunden: {0}"},
+        {"Warning.Invalid.argument.s.for.constructor.arg",
+                "Warnung: Ung\u00FCltige(s) Argument(e) f\u00FCr Constructor: {0}"},
+        {"Illegal.Principal.Type.type", "Ung\u00FCltiger Principal-Typ: {0}"},
+        {"Illegal.option.option", "Ung\u00FCltige Option: {0}"},
+        {"Usage.policytool.options.", "Verwendung: policytool [Optionen]"},
+        {".file.file.policy.file.location",
+                " [-file <Datei>]    Policy-Dateiverzeichnis"},
         {"New", "Neu"},
-        {"Open", "\u00d6ffnen"},
+        {"Open", "\u00D6ffnen"},
         {"Save", "Speichern"},
-        {"Save As", "Speichern unter"},
-        {"View Warning Log", "Warnungsprotokoll anzeigen"},
+        {"Save.As", "Speichern unter"},
+        {"View.Warning.Log", "Warnungslog anzeigen"},
         {"Exit", "Beenden"},
-        {"Add Policy Entry", "Richtlinieneintrag hinzuf\u00fcgen"},
-        {"Edit Policy Entry", "Richtlinieneintrag bearbeiten"},
-        {"Remove Policy Entry", "Richtlinieneintrag l\u00f6schen"},
+        {"Add.Policy.Entry", "Policy-Eintrag hinzuf\u00FCgen"},
+        {"Edit.Policy.Entry", "Policy-Eintrag bearbeiten"},
+        {"Remove.Policy.Entry", "Policy-Eintrag entfernen"},
         {"Edit", "Bearbeiten"},
         {"Retain", "Beibehalten"},
 
-        {"Warning: File name may include escaped backslash characters. " +
-                        "It is not necessary to escape backslash characters " +
-                        "(the tool escapes characters as necessary when writing " +
-                        "the policy contents to the persistent store).\n\n" +
-                        "Click on Retain to retain the entered name, or click on " +
-                        "Edit to edit the name.",
-            "Warning: File name may include escaped backslash characters. " +
-                        "It is not necessary to escape backslash characters " +
-                        "(the tool escapes characters as necessary when writing " +
-                        "the policy contents to the persistent store).\n\n" +
-                        "Click on Retain to retain the entered name, or click on " +
-                        "Edit to edit the name."},
+        {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
+            "Warnung: M\u00F6glicherweise enth\u00E4lt der Dateiname Escape-Zeichen mit Backslash. Es ist nicht notwendig, Backslash-Zeichen zu escapen (das Tool f\u00FChrt dies automatisch beim Schreiben des Policy-Contents in den persistenten Speicher aus).\n\nKlicken Sie auf \"Beibehalten\", um den eingegebenen Namen beizubehalten oder auf \"Bearbeiten\", um den Namen zu bearbeiten."},
 
-        {"Add Public Key Alias", "Alias f\u00fcr \u00f6ffentlichen Schl\u00fcssel hinzuf\u00fcgen"},
-        {"Remove Public Key Alias", "Alias f\u00fcr \u00f6ffentlichen Schl\u00fcssel l\u00f6schen"},
+        {"Add.Public.Key.Alias", "Public Key-Alias hinzuf\u00FCgen"},
+        {"Remove.Public.Key.Alias", "Public Key-Alias entfernen"},
         {"File", "Datei"},
         {"KeyStore", "KeyStore"},
-        {"Policy File:", "Richtliniendatei:"},
-        {"Could not open policy file: policyFile: e.toString()",
-                "Richtliniendatei konnte nicht ge\u00f6ffnet werden: {0}: {1}"},
-        {"Policy Tool", "Richtlinientool"},
-        {"Errors have occurred while opening the policy configuration.  View the Warning Log for more information.",
-                "Beim \u00d6ffnen der Richtlinienkonfiguration sind Fehler aufgetreten. Weitere Informationen finden Sie im Warnungsprotokoll."},
+        {"Policy.File.", "Policy-Datei:"},
+        {"Could.not.open.policy.file.policyFile.e.toString.",
+                "Policy-Datei konnte nicht ge\u00F6ffnet werden: {0}: {1}"},
+        {"Policy.Tool", "Policy-Tool"},
+        {"Errors.have.occurred.while.opening.the.policy.configuration.View.the.Warning.Log.for.more.information.",
+                "Beim \u00D6ffnen der Policy-Konfiguration sind Fehler aufgetreten. Weitere Informationen finden Sie im Warnungslog."},
         {"Error", "Fehler"},
         {"OK", "OK"},
         {"Status", "Status"},
         {"Warning", "Warnung"},
-        {"Permission:                                                       ",
+        {"Permission.",
                 "Berechtigung:                                                       "},
-        {"Principal Type:", "Principal-Typ:"},
-        {"Principal Name:", "Principal-Name:"},
-        {"Target Name:                                                    ",
+        {"Principal.Type.", "Principal-Typ:"},
+        {"Principal.Name.", "Principal-Name:"},
+        {"Target.Name.",
                 "Zielname:                                                    "},
-        {"Actions:                                                             ",
+        {"Actions.",
                 "Aktionen:                                                             "},
-        {"OK to overwrite existing file filename?",
-                "Vorhandene Datei {0} \u00fcberschreiben?"},
+        {"OK.to.overwrite.existing.file.filename.",
+                "Vorhandene Datei {0} \u00FCberschreiben?"},
         {"Cancel", "Abbrechen"},
-        {"CodeBase:", "Code-Basis:"},
-        {"SignedBy:", "Signiert von:"},
-        {"Add Principal", "Principal hinzuf\u00fcgen"},
-        {"Edit Principal", "Principal bearbeiten"},
-        {"Remove Principal", "Principal l\u00f6schen"},
-        {"Principals:", "Principals:"},
-        {"  Add Permission", " Berechtigung hinzuf\u00fcgen"},
-        {"  Edit Permission", " Berechtigung \u00e4ndern"},
-        {"Remove Permission", "Berechtigung l\u00f6schen"},
+        {"CodeBase.", "CodeBase:"},
+        {"SignedBy.", "SignedBy:"},
+        {"Add.Principal", "Principal hinzuf\u00FCgen"},
+        {"Edit.Principal", "Principal bearbeiten"},
+        {"Remove.Principal", "Principal entfernen"},
+        {"Principals.", "Principals:"},
+        {".Add.Permission", "  Berechtigung hinzuf\u00FCgen"},
+        {".Edit.Permission", "  Berechtigung bearbeiten"},
+        {"Remove.Permission", "Berechtigung entfernen"},
         {"Done", "Fertig"},
-        {"KeyStore URL:", "KeyStore-URL:"},
-        {"KeyStore Type:", "KeyStore-Typ:"},
-        {"KeyStore Provider:", "KeyStore-Anbieter:"},
-        {"KeyStore Password URL:", "KeyStore-Passwort-URL:"},
+        {"KeyStore.URL.", "KeyStore-URL:"},
+        {"KeyStore.Type.", "KeyStore-Typ:"},
+        {"KeyStore.Provider.", "KeyStore-Provider:"},
+        {"KeyStore.Password.URL.", "KeyStore-Kennwort-URL:"},
         {"Principals", "Principals"},
-        {"  Edit Principal:", " Principal bearbeiten:"},
-        {"  Add New Principal:", " Neuen Principal hinzuf\u00fcgen:"},
+        {".Edit.Principal.", "  Principal bearbeiten:"},
+        {".Add.New.Principal.", "  Neuen Principal hinzuf\u00FCgen:"},
         {"Permissions", "Berechtigungen"},
-        {"  Edit Permission:", " Berechtigung \u00e4ndern:"},
-        {"  Add New Permission:", " Neue Berechtigung hinzuf\u00fcgen:"},
-        {"Signed By:", "Signiert von:"},
-        {"Cannot Specify Principal with a Wildcard Class without a Wildcard Name",
-            "Principal kann nicht mit einer Wildcard-Klasse ohne Wildcard-Namen angegeben werden"},
-        {"Cannot Specify Principal without a Name",
+        {".Edit.Permission.", "  Berechtigung bearbeiten:"},
+        {".Add.New.Permission.", "  Neue Berechtigung hinzuf\u00FCgen:"},
+        {"Signed.By.", "Signiert von:"},
+        {"Cannot.Specify.Principal.with.a.Wildcard.Class.without.a.Wildcard.Name",
+            "Principal kann nicht mit einer Platzhalterklasse ohne Platzhalternamen angegeben werden"},
+        {"Cannot.Specify.Principal.without.a.Name",
             "Principal kann nicht ohne einen Namen angegeben werden"},
-        {"Permission and Target Name must have a value",
-                "Berechtigung und Zielname m\u00fcssen einen Wert haben"},
-        {"Remove this Policy Entry?", "Diesen Richtlinieneintrag l\u00f6schen?"},
-        {"Overwrite File", "Datei \u00fcberschreiben"},
-        {"Policy successfully written to filename",
-                "Richtlinien erfolgreich in {0} geschrieben"},
-        {"null filename", "Null als Dateiname"},
-        {"Save changes?", "\u00c4nderungen speichern?"},
+        {"Permission.and.Target.Name.must.have.a.value",
+                "Berechtigung und Zielname m\u00FCssen einen Wert haben"},
+        {"Remove.this.Policy.Entry.", "Diesen Policy-Eintrag entfernen?"},
+        {"Overwrite.File", "Datei \u00FCberschreiben"},
+        {"Policy.successfully.written.to.filename",
+                "Policy erfolgreich in {0} geschrieben"},
+        {"null.filename", "Null-Dateiname"},
+        {"Save.changes.", "\u00C4nderungen speichern?"},
         {"Yes", "Ja"},
         {"No", "Nein"},
-        {"Policy Entry", "Richtlinieneintrag"},
-        {"Save Changes", "\u00c4nderungen speichern"},
-        {"No Policy Entry selected", "Kein Richtlinieneintrag ausgew\u00e4hlt"},
-        {"Unable to open KeyStore: ex.toString()",
-                "KeyStore konnte nicht ge\u00f6ffnet werden: {0}"},
-        {"No principal selected", "Kein Principal ausgew\u00e4hlt"},
-        {"No permission selected", "Keine Berechtigung ausgew\u00e4hlt"},
+        {"Policy.Entry", "Policy-Eintrag"},
+        {"Save.Changes", "\u00C4nderungen speichern"},
+        {"No.Policy.Entry.selected", "Kein Policy-Eintrag ausgew\u00E4hlt"},
+        {"Unable.to.open.KeyStore.ex.toString.",
+                "KeyStore kann nicht ge\u00F6ffnet werden: {0}"},
+        {"No.principal.selected", "Kein Principal ausgew\u00E4hlt"},
+        {"No.permission.selected", "Keine Berechtigung ausgew\u00E4hlt"},
         {"name", "Name"},
-        {"configuration type", "Konfigurationstyp"},
-        {"environment variable name", "Name der Umgebungsvariable"},
-        {"library name", "Bibliotheksname"},
-        {"package name", "Paketname"},
-        {"policy type", "Richtlinientyp"},
-        {"property name", "Eigenschaftsname"},
-        {"provider name", "Providername"},
-        {"Principal List", "Principal-Liste"},
-        {"Permission List", "Berechtigungsliste"},
-        {"Code Base", "Code-Basis"},
-        {"KeyStore U R L:", "KeyStore-URL:"},
-        {"KeyStore Password U R L:", "KeyStore-Passwort-URL:"},
+        {"configuration.type", "Konfigurationstyp"},
+        {"environment.variable.name", "Umgebungsvariablenname"},
+        {"library.name", "Library-Name"},
+        {"package.name", "Packagename"},
+        {"policy.type", "Policy-Typ"},
+        {"property.name", "Eigenschaftsname"},
+        {"Principal.List", "Principal-Liste"},
+        {"Permission.List", "Berechtigungsliste"},
+        {"Code.Base", "Codebase"},
+        {"KeyStore.U.R.L.", "KeyStore-URL:"},
+        {"KeyStore.Password.U.R.L.", "KeyStore-Kennwort-URL:"},
 
 
         // javax.security.auth.PrivateCredentialPermission
-        {"invalid null input(s)", "Ung\u00fcltige Null-Eingabe(n)"},
-        {"actions can only be 'read'", "Aktionen k\u00f6nnen nur 'gelesen' werden"},
-        {"permission name [name] syntax invalid: ",
-                "Syntax f\u00fcr Berechtigungsnamen [{0}] ung\u00fcltig: "},
-        {"Credential Class not followed by a Principal Class and Name",
-                "Nach Authentisierungsklasse folgt keine Principal-Klasse und kein Name."},
-        {"Principal Class not followed by a Principal Name",
+        {"invalid.null.input.s.", "Ung\u00FCltige Nulleingabe(n)"},
+        {"actions.can.only.be.read.", "Aktionen k\u00F6nnen nur \"lesen\" sein"},
+        {"permission.name.name.syntax.invalid.",
+                "Syntax f\u00FCr Berechtigungsnamen [{0}] ung\u00FCltig: "},
+        {"Credential.Class.not.followed.by.a.Principal.Class.and.Name",
+                "Nach Zugangsdatenklasse folgt keine Principal-Klasse und kein Name"},
+        {"Principal.Class.not.followed.by.a.Principal.Name",
                 "Nach Principal-Klasse folgt kein Principal-Name"},
-        {"Principal Name must be surrounded by quotes",
-                "Principal-Name muss vorn und hinten mit Anf\u00fchrungsstrichen versehen sein"},
-        {"Principal Name missing end quote",
-                "Abschlie\u00dfendes Anf\u00fchrungszeichen f\u00fcr Principal-Name fehlt"},
-        {"PrivateCredentialPermission Principal Class can not be a wildcard (*) value if Principal Name is not a wildcard (*) value",
-                "Private Authentisierungsberechtigung Principal-Klasse kann kein Wildcardwert (*) sein, wenn der Principal-Name kein Wildcardwert (*) ist."},
-        {"CredOwner:\n\tPrincipal Class = class\n\tPrincipal Name = name",
-                "Authentisierungsbesitzer:\n\tPrincipal-Klasse = {0}\n\tPrincipal-Name = {1}"},
+        {"Principal.Name.must.be.surrounded.by.quotes",
+                "Principal-Name muss in Anf\u00FChrungszeichen stehen"},
+        {"Principal.Name.missing.end.quote",
+                "Abschlie\u00DFendes Anf\u00FChrungszeichen f\u00FCr Principal-Name fehlt"},
+        {"PrivateCredentialPermission.Principal.Class.can.not.be.a.wildcard.value.if.Principal.Name.is.not.a.wildcard.value",
+                "Principal-Klasse PrivateCredentialPermission kann kein Platzhalterwert (*) sein, wenn der Principal-Name kein Platzhalterwert (*) ist"},
+        {"CredOwner.Principal.Class.class.Principal.Name.name",
+                "CredOwner:\n\tPrincipal-Klasse = {0}\n\tPrincipal-Name = {1}"},
 
         // javax.security.auth.x500
-        {"provided null name", "hat Null als Namen geliefert"},
-        {"provided null keyword map", "Leere Schl\u00fcsselwort-Map"},
-        {"provided null OID map", "Leere OID-Map"},
+        {"provided.null.name", "Nullname angegeben"},
+        {"provided.null.keyword.map", "Null-Schl\u00FCsselwortzuordnung angegeben"},
+        {"provided.null.OID.map", "Null-OID-Zuordnung angegeben"},
 
         // javax.security.auth.Subject
-        {"invalid null AccessControlContext provided",
-                "Ung\u00fcltige Null als Zugangskontrollkontext geliefert"},
-        {"invalid null action provided", "Ung\u00fcltige Null als Aktion geliefert"},
-        {"invalid null Class provided", "Ung\u00fcltige Null als Klasse geliefert"},
-        {"Subject:\n", "Betreff:\n"},
-        {"\tPrincipal: ", "\tPrincipal: "},
-        {"\tPublic Credential: ", "\t\u00d6ffentliche Authentisierung: "},
-        {"\tPrivate Credentials inaccessible\n",
-                "\tKein Zugriff auf private Authentisierungen m\u00f6glich\n"},
-        {"\tPrivate Credential: ", "\tPrivate Authentisierung: "},
-        {"\tPrivate Credential inaccessible\n",
-                "\tKein Zugriff auf private Authentisierung m\u00f6glich\n"},
-        {"Subject is read-only", "Betreff ist schreibgesch\u00fctzt"},
-        {"attempting to add an object which is not an instance of java.security.Principal to a Subject's Principal Set",
-                "Es wird versucht, ein Objekt hinzuzuf\u00fcgen, das keine Instanz von java.security.Principal f\u00fcr eine Principal-Gruppe eines Betreffs ist."},
-        {"attempting to add an object which is not an instance of class",
-                "Es wird versucht, ein Objekt hinzuzuf\u00fcgen, das keine Instanz von {0} ist."},
+        {"invalid.null.AccessControlContext.provided",
+                "Ung\u00FCltiger Nullwert f\u00FCr AccessControlContext angegeben"},
+        {"invalid.null.action.provided", "Ung\u00FCltige Nullaktion angegeben"},
+        {"invalid.null.Class.provided", "Ung\u00FCltige Nullklasse angegeben"},
+        {"Subject.", "Subjekt:\n"},
+        {".Principal.", "\tPrincipal: "},
+        {".Public.Credential.", "\t\u00D6ffentliche Zugangsdaten: "},
+        {".Private.Credentials.inaccessible.",
+                "\tKein Zugriff auf private Zugangsdaten\n"},
+        {".Private.Credential.", "\tPrivate Zugangsdaten: "},
+        {".Private.Credential.inaccessible.",
+                "\tKein Zugriff auf private Zugangsdaten\n"},
+        {"Subject.is.read.only", "Subjekt ist schreibgesch\u00FCtzt"},
+        {"attempting.to.add.an.object.which.is.not.an.instance.of.java.security.Principal.to.a.Subject.s.Principal.Set",
+                "Es wird versucht, ein Objekt hinzuzuf\u00FCgen, das keine Instanz von java.security.Principal f\u00FCr eine Principal-Gruppe eines Subjekts ist"},
+        {"attempting.to.add.an.object.which.is.not.an.instance.of.class",
+                "Es wird versucht, ein Objekt hinzuzuf\u00FCgen, das keine Instanz von {0} ist"},
 
         // javax.security.auth.login.AppConfigurationEntry
-        {"LoginModuleControlFlag: ", "Anmeldemodul-Steuerflag: "},
+        {"LoginModuleControlFlag.", "LoginModuleControlFlag: "},
 
         // javax.security.auth.login.LoginContext
-        {"Invalid null input: name", "Ung\u00fcltige Nulleingabe: Name"},
-        {"No LoginModules configured for name",
-         "F\u00fcr {0} sind keine Anmeldemodule konfiguriert."},
-        {"invalid null Subject provided", "Ung\u00fcltige Null als Betreff geliefert"},
-        {"invalid null CallbackHandler provided",
-                "Ung\u00fcltige Null als Callback-Handler geliefert"},
-        {"null subject - logout called before login",
-                "Null-Betreff - Abmeldung vor Anmeldung aufgerufen"},
-        {"unable to instantiate LoginModule, module, because it does not provide a no-argument constructor",
-                "Es kann keine Instanz des Anmeldemoduls {0} erstellt werden, weil es keinen argumentlosen Konstruktor liefert."},
-        {"unable to instantiate LoginModule",
-                "Es kann keine Instanz des Anmeldemoduls erstellt werden."},
-        {"unable to instantiate LoginModule: ",
-                "LoginModule konnte nicht instanziiert werden: "},
-        {"unable to find LoginModule class: ",
-                "Die Anmeldemodulklasse kann nicht gefunden werden: "},
-        {"unable to access LoginModule: ",
-                "Kein Zugriff auf Anmeldemodul m\u00f6glich: "},
-        {"Login Failure: all modules ignored",
+        {"Invalid.null.input.name", "Ung\u00FCltige Nulleingabe: Name"},
+        {"No.LoginModules.configured.for.name",
+         "F\u00FCr {0} sind keine LoginModules konfiguriert"},
+        {"invalid.null.Subject.provided", "Ung\u00FCltiges Nullsubjekt angegeben"},
+        {"invalid.null.CallbackHandler.provided",
+                "Ung\u00FCltiger Nullwert f\u00FCr CallbackHandler angegeben"},
+        {"null.subject.logout.called.before.login",
+                "Nullsubjekt - Abmeldung vor Anmeldung aufgerufen"},
+        {"unable.to.instantiate.LoginModule.module.because.it.does.not.provide.a.no.argument.constructor",
+                "LoginModule {0} kann nicht instanziiert werden, da es keinen argumentlosen Constructor angibt"},
+        {"unable.to.instantiate.LoginModule",
+                "LoginModule kann nicht instanziiert werden"},
+        {"unable.to.instantiate.LoginModule.",
+                "LoginModule kann nicht instanziiert werden: "},
+        {"unable.to.find.LoginModule.class.",
+                "LoginModule-Klasse kann nicht gefunden werden: "},
+        {"unable.to.access.LoginModule.",
+                "Kein Zugriff auf LoginModule m\u00F6glich: "},
+        {"Login.Failure.all.modules.ignored",
                 "Anmeldefehler: Alle Module werden ignoriert"},
 
         // sun.security.provider.PolicyFile
 
-        {"java.security.policy: error parsing policy:\n\tmessage",
-                "java.security.policy: Fehler bei Analyse {0}:\n\t{1}"},
-        {"java.security.policy: error adding Permission, perm:\n\tmessage",
-                "java.security.policy: Fehler beim Hinzuf\u00fcgen der Genehmigung, {0}:\n\t{1}"},
-        {"java.security.policy: error adding Entry:\n\tmessage",
-                "java.security.policy: Fehler beim Hinzuf\u00fcgen des Eintrags:\n\t{0}"},
-        {"alias name not provided (pe.name)", "Aliasname nicht bereitgestellt ({0})"},
-        {"unable to perform substitution on alias, suffix",
-                "kann Substition von Alias nicht durchf\u00fchren, {0}"},
-        {"substitution value, prefix, unsupported",
-                "Substitutionswert, {0}, nicht unterst\u00fctzt"},
-        {"(", "("},
-        {")", ")"},
-        {"type can't be null","Typ kann nicht Null sein"},
+        {"java.security.policy.error.parsing.policy.message",
+                "java.security.policy: Fehler beim Parsen von {0}:\n\t{1}"},
+        {"java.security.policy.error.adding.Permission.perm.message",
+                "java.security.policy: Fehler beim Hinzuf\u00FCgen von Berechtigung, {0}:\n\t{1}"},
+        {"java.security.policy.error.adding.Entry.message",
+                "java.security.policy: Fehler beim Hinzuf\u00FCgen von Eintrag:\n\t{0}"},
+        {"alias.name.not.provided.pe.name.", "Aliasname nicht angegeben ({0})"},
+        {"unable.to.perform.substitution.on.alias.suffix",
+                "Substitution f\u00FCr Alias {0} kann nicht ausgef\u00FChrt werden"},
+        {"substitution.value.prefix.unsupported",
+                "Substitutionswert {0} nicht unterst\u00FCtzt"},
+        {"LPARAM", "("},
+        {"RPARAM", ")"},
+        {"type.can.t.be.null","Typ kann nicht null sein"},
 
         // sun.security.provider.PolicyParser
-        {"keystorePasswordURL can not be specified without also specifying keystore",
+        {"keystorePasswordURL.can.not.be.specified.without.also.specifying.keystore",
                 "keystorePasswordURL kann nicht ohne Keystore angegeben werden"},
-        {"expected keystore type", "erwarteter Keystore-Typ"},
-        {"expected keystore provider", "erwarteter Keystore-Provider"},
-        {"multiple Codebase expressions",
-                "mehrere Codebase-Ausdr\u00fccke"},
-        {"multiple SignedBy expressions","mehrere SignedBy-Ausdr\u00fccke"},
-        {"SignedBy has empty alias","Leerer Alias in SignedBy"},
-        {"can not specify Principal with a wildcard class without a wildcard name",
-                "Kann Principal nicht mit einer Wildcard-Klasse ohne Wildcard-Namen angeben."},
-        {"expected codeBase or SignedBy or Principal",
-                "CodeBase oder SignedBy oder Principal erwartet"},
-        {"expected permission entry", "Berechtigungseintrag erwartet"},
-        {"number ", "Nummer "},
-        {"expected [expect], read [end of file]",
-                "erwartet [{0}], gelesen [Dateiende]"},
-        {"expected [;], read [end of file]",
-                "erwartet [;], gelesen [Dateiende]"},
-        {"line number: msg", "Zeile {0}: {1}"},
-        {"line number: expected [expect], found [actual]",
-                "Zeile {0}: erwartet [{1}], gefunden [{2}]"},
-        {"null principalClass or principalName",
-                "Principal-Klasse oder Principal-Name Null"},
+        {"expected.keystore.type", "Keystore-Typ erwartet"},
+        {"expected.keystore.provider", "Keystore-Provider erwartet"},
+        {"multiple.Codebase.expressions",
+                "mehrere Codebase-Ausdr\u00FCcke"},
+        {"multiple.SignedBy.expressions","mehrere SignedBy-Ausdr\u00FCcke"},
+        {"SignedBy.has.empty.alias","Leerer Alias in SignedBy"},
+        {"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name",
+                "Principal kann nicht mit einer Platzhalterklasse ohne Platzhalternamen angegeben werden"},
+        {"expected.codeBase.or.SignedBy.or.Principal",
+                "codeBase oder SignedBy oder Principal erwartet"},
+        {"expected.permission.entry", "Berechtigungseintrag erwartet"},
+        {"number.", "Nummer "},
+        {"expected.expect.read.end.of.file.",
+                "[{0}] erwartet, [Dateiende] gelesen"},
+        {"expected.read.end.of.file.",
+                "[;] erwartet, [Dateiende] gelesen"},
+        {"line.number.msg", "Zeile {0}: {1}"},
+        {"line.number.expected.expect.found.actual.",
+                "Zeile {0}: [{1}] erwartet, [{2}] gefunden"},
+        {"null.principalClass.or.principalName",
+                "principalClass oder principalName null"},
 
         // sun.security.pkcs11.SunPKCS11
-        {"PKCS11 Token [providerName] Password: ",
-                        "Passwort f\u00fcr PKCS11-Token [{0}]: "},
+        {"PKCS11.Token.providerName.Password.",
+                "Kennwort f\u00FCr PKCS11-Token [{0}]: "},
 
         /* --- DEPRECATED --- */
         // javax.security.auth.Policy
-        {"unable to instantiate Subject-based policy",
-                "auf Subject basierende Richtlinie konnte nicht instanziiert werden"}
+        {"unable.to.instantiate.Subject.based.policy",
+                "Subjektbasierte Policy kann nicht instanziiert werden"}
     };
 
 
@@ -648,3 +670,4 @@
         return contents;
     }
 }
+
--- a/jdk/src/share/classes/sun/security/util/Resources_es.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/util/Resources_es.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, 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
@@ -35,605 +35,627 @@
     private static final Object[][] contents = {
 
         // shared (from jarsigner)
-        {" ", " "},
-        {"  ", "  "},
-        {"      ", "      "},
-        {", ", ", "},
+        {"SPACE", " "},
+        {"2SPACE", "  "},
+        {"6SPACE", "      "},
+        {"COMMA", ", "},
         // shared (from keytool)
-        {"\n", "\n"},
-        {"*******************************************",
+        {"NEWLINE", "\n"},
+        {"STAR",
                 "*******************************************"},
-        {"*******************************************\n\n",
+        {"STARNN",
                 "*******************************************\n\n"},
 
-        // keytool
-        {"keytool error: ", "error de keytool: "},
-        {"Illegal option:  ", "Opci\u00f3n no permitida:  "},
-        {"Try keytool -help","Probar keytool -help"},
-        {"Command option <flag> needs an argument.", "La opci\u00f3n de comando {0} necesita un argumento."},
-        {"Warning:  Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified <command> value.",
-                "Advertencia: Los archivos de almac\u00e9n de claves en formato PKCS12 no admiten contrase\u00f1as de clave y almacenamiento distintas. Se omite el valor especificado por el usuario {0}."},
-        {"-keystore must be NONE if -storetype is {0}",
+        // keytool: Help part
+        {".OPTION.", " [OPTION]..."},
+        {"Options.", "Opciones:"},
+        {"Use.keytool.help.for.all.available.commands",
+                 "Utilice\"keytool -help\" para todos los comandos disponibles"},
+        {"Key.and.Certificate.Management.Tool",
+                 "Herramienta de Gesti\u00F3n de Certificados y Claves"},
+        {"Commands.", "Comandos:"},
+        {"Use.keytool.command.name.help.for.usage.of.command.name",
+                "Utilice \"keytool -command_name -help\" para la sintaxis de nombre_comando"},
+        // keytool: help: commands
+        {"Generates.a.certificate.request",
+                "Genera una solicitud de certificado"}, //-certreq
+        {"Changes.an.entry.s.alias",
+                "Cambia un alias de entrada"}, //-changealias
+        {"Deletes.an.entry",
+                "Suprime una entrada"}, //-delete
+        {"Exports.certificate",
+                "Exporta el certificado"}, //-exportcert
+        {"Generates.a.key.pair",
+                "Genera un par de claves"}, //-genkeypair
+        {"Generates.a.secret.key",
+                "Genera un clave secreta"}, //-genseckey
+        {"Generates.certificate.from.a.certificate.request",
+                "Genera un certificado a partir de una solicitud de certificado"}, //-gencert
+        {"Generates.CRL", "Genera CRL"}, //-gencrl
+        {"Imports.entries.from.a.JDK.1.1.x.style.identity.database",
+                "Importa entradas desde una base de datos de identidades JDK 1.1.x-style"}, //-identitydb
+        {"Imports.a.certificate.or.a.certificate.chain",
+                "Importa un certificado o una cadena de certificados"}, //-importcert
+        {"Imports.one.or.all.entries.from.another.keystore",
+                "Importa una o todas las entradas desde otro almac\u00E9n de claves"}, //-importkeystore
+        {"Clones.a.key.entry",
+                "Clona una entrada de clave"}, //-keyclone
+        {"Changes.the.key.password.of.an.entry",
+                "Cambia la contrase\u00F1a de clave de una entrada"}, //-keypasswd
+        {"Lists.entries.in.a.keystore",
+                "Enumera las entradas de un almac\u00E9n de claves"}, //-list
+        {"Prints.the.content.of.a.certificate",
+                "Imprime el contenido de un certificado"}, //-printcert
+        {"Prints.the.content.of.a.certificate.request",
+                "Imprime el contenido de una solicitud de certificado"}, //-printcertreq
+        {"Prints.the.content.of.a.CRL.file",
+                "Imprime el contenido de un archivo CRL"}, //-printcrl
+        {"Generates.a.self.signed.certificate",
+                "Genera un certificado autofirmado"}, //-selfcert
+        {"Changes.the.store.password.of.a.keystore",
+                "Cambia la contrase\u00F1a de almac\u00E9n de un almac\u00E9n de claves"}, //-storepasswd
+        // keytool: help: options
+        {"alias.name.of.the.entry.to.process",
+                "nombre de alias de la entrada que se va a procesar"}, //-alias
+        {"destination.alias",
+                "alias de destino"}, //-destalias
+        {"destination.key.password",
+                "contrase\u00F1a de clave de destino"}, //-destkeypass
+        {"destination.keystore.name",
+                "nombre de almac\u00E9n de claves de destino"}, //-destkeystore
+        {"destination.keystore.password.protected",
+                "almac\u00E9n de claves de destino protegido por contrase\u00F1a"}, //-destprotected
+        {"destination.keystore.provider.name",
+                "nombre de proveedor de almac\u00E9n de claves de destino"}, //-destprovidername
+        {"destination.keystore.password",
+                "contrase\u00F1a de almac\u00E9n de claves de destino"}, //-deststorepass
+        {"destination.keystore.type",
+                "tipo de almac\u00E9n de claves de destino"}, //-deststoretype
+        {"distinguished.name",
+                "nombre distinguido"}, //-dname
+        {"X.509.extension",
+                "extensi\u00F3n X.509"}, //-ext
+        {"output.file.name",
+                "nombre de archivo de salida"}, //-file and -outfile
+        {"input.file.name",
+                "nombre de archivo de entrada"}, //-file and -infile
+        {"key.algorithm.name",
+                "nombre de algoritmo de clave"}, //-keyalg
+        {"key.password",
+                "contrase\u00F1a de clave"}, //-keypass
+        {"key.bit.size",
+                "tama\u00F1o de bit de clave"}, //-keysize
+        {"keystore.name",
+                "nombre de almac\u00E9n de claves"}, //-keystore
+        {"new.password",
+                "nueva contrase\u00F1a"}, //-new
+        {"do.not.prompt",
+                "no solicitar"}, //-noprompt
+        {"password.through.protected.mechanism",
+                "contrase\u00F1a a trav\u00E9s de mecanismo protegido"}, //-protected
+        {"provider.argument",
+                "argumento del proveedor"}, //-providerarg
+        {"provider.class.name",
+                "nombre de clase del proveedor"}, //-providerclass
+        {"provider.name",
+                "nombre del proveedor"}, //-providername
+        {"provider.classpath",
+                "classpath de proveedor"}, //-providerpath
+        {"output.in.RFC.style",
+                "salida en estilo RFC"}, //-rfc
+        {"signature.algorithm.name",
+                "nombre de algoritmo de firma"}, //-sigalg
+        {"source.alias",
+                "alias de origen"}, //-srcalias
+        {"source.key.password",
+                "contrase\u00F1a de clave de origen"}, //-srckeypass
+        {"source.keystore.name",
+                "nombre de almac\u00E9n de claves de origen"}, //-srckeystore
+        {"source.keystore.password.protected",
+                "almac\u00E9n de claves de origen protegido por contrase\u00F1a"}, //-srcprotected
+        {"source.keystore.provider.name",
+                "nombre de proveedor de almac\u00E9n de claves de origen"}, //-srcprovidername
+        {"source.keystore.password",
+                "contrase\u00F1a de almac\u00E9n de claves de origen"}, //-srcstorepass
+        {"source.keystore.type",
+                "tipo de almac\u00E9n de claves de origen"}, //-srcstoretype
+        {"SSL.server.host.and.port",
+                "puerto y host del servidor SSL"}, //-sslserver
+        {"signed.jar.file",
+                "archivo jar firmado"}, //=jarfile
+        {"certificate.validity.start.date.time",
+                "fecha/hora de inicio de validez del certificado"}, //-startdate
+        {"keystore.password",
+                "contrase\u00F1a de almac\u00E9n de claves"}, //-storepass
+        {"keystore.type",
+                "tipo de almac\u00E9n de claves"}, //-storetype
+        {"trust.certificates.from.cacerts",
+                "certificados de protecci\u00F3n de cacerts"}, //-trustcacerts
+        {"verbose.output",
+                "salida detallada"}, //-v
+        {"validity.number.of.days",
+                "n\u00FAmero de validez de d\u00EDas"}, //-validity
+        {"Serial.ID.of.cert.to.revoke",
+                 "identificador de serie del certificado que se va a revocar"}, //-id
+        // keytool: Running part
+        {"keytool.error.", "error de herramienta de claves: "},
+        {"Illegal.option.", "Opci\u00F3n no permitida:  "},
+        {"Illegal.value.", "Valor no permitido: "},
+        {"Unknown.password.type.", "Tipo de contrase\u00F1a desconocido: "},
+        {"Cannot.find.environment.variable.",
+                "No se ha encontrado la variable del entorno: "},
+        {"Cannot.find.file.", "No se ha encontrado el archivo: "},
+        {"Command.option.flag.needs.an.argument.", "La opci\u00F3n de comando {0} necesita un argumento."},
+        {"Warning.Different.store.and.key.passwords.not.supported.for.PKCS12.KeyStores.Ignoring.user.specified.command.value.",
+                "Advertencia: los almacenes de claves en formato PKCS12 no admiten contrase\u00F1as de clave y almacenamiento distintas. Se ignorar\u00E1 el valor especificado por el usuario, {0}."},
+        {".keystore.must.be.NONE.if.storetype.is.{0}",
                 "-keystore debe ser NONE si -storetype es {0}"},
-        {"Too may retries, program terminated",
+        {"Too.many.retries.program.terminated",
                  "Ha habido demasiados intentos, se ha cerrado el programa"},
-        {"-storepasswd and -keypasswd commands not supported if -storetype is {0}",
-                "los comandos -storepasswd y -keypasswd no se admiten si -storetype es {0}"},
-        {"-keypasswd commands not supported if -storetype is PKCS12",
-                "los comandos -keypasswd no se admiten si -storetype es PKCS12"},
-        {"-keypass and -new can not be specified if -storetype is {0}",
+        {".storepasswd.and.keypasswd.commands.not.supported.if.storetype.is.{0}",
+                "Los comandos -storepasswd y -keypasswd no est\u00E1n soportados si -storetype es {0}"},
+        {".keypasswd.commands.not.supported.if.storetype.is.PKCS12",
+                "Los comandos -keypasswd no est\u00E1n soportados si -storetype es PKCS12"},
+        {".keypass.and.new.can.not.be.specified.if.storetype.is.{0}",
                 "-keypass y -new no se pueden especificar si -storetype es {0}"},
-        {"if -protected is specified, then -storepass, -keypass, and -new must not be specified",
+        {"if.protected.is.specified.then.storepass.keypass.and.new.must.not.be.specified",
                 "si se especifica -protected, no deben especificarse -storepass, -keypass ni -new"},
-        {"if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified",
-                "si se especifica -srcprotected, no se puede especificar -srcstorepass ni -srckeypass"},
-        {"if keystore is not password protected, then -storepass, -keypass, and -new must not be specified",
-                "Si keystore no est\u00e1 protegido por contrase\u00f1a, no se deben especificar -storepass, -keypass ni -new"},
-        {"if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified",
-                "Si keystore de origen no est\u00e1 protegido por contrase\u00f1a, no se deben especificar -srcstorepass ni -srckeypass"},
-        {"Validity must be greater than zero",
+        {"if.srcprotected.is.specified.then.srcstorepass.and.srckeypass.must.not.be.specified",
+                "Si se especifica -srcprotected, no se puede especificar -srcstorepass ni -srckeypass"},
+        {"if.keystore.is.not.password.protected.then.storepass.keypass.and.new.must.not.be.specified",
+                "Si keystore no est\u00E1 protegido por contrase\u00F1a, no se deben especificar -storepass, -keypass ni -new"},
+        {"if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified",
+                "Si el almac\u00E9n de claves de origen no est\u00E1 protegido por contrase\u00F1a, no se deben especificar -srcstorepass ni -srckeypass"},
+        {"Illegal.startdate.value", "Valor de fecha de inicio no permitido"},
+        {"Validity.must.be.greater.than.zero",
                 "La validez debe ser mayor que cero"},
-        {"provName not a provider", "{0} no es un proveedor"},
-        {"Usage error: no command provided", "Error de uso: no se ha proporcionado ning\u00fan comando"},
-        {"Usage error, <arg> is not a legal command", "Error de uso, {0} no es un comando legal"},
-        {"Source keystore file exists, but is empty: ", "El archivo de almac\u00e9n de claves de origen existe, pero est\u00e1 vac\u00edo: "},
-        {"Please specify -srckeystore", "Especifique -srckeystore"},
-        {"Must not specify both -v and -rfc with 'list' command",
-                "No se deben especificar -v y -rfc simult\u00e1neamente con el comando 'list'"},
-        {"Key password must be at least 6 characters",
-                "La contrase\u00f1a clave debe tener al menos 6 caracteres"},
-        {"New password must be at least 6 characters",
-                "La nueva contrase\u00f1a debe tener al menos 6 caracteres"},
-        {"Keystore file exists, but is empty: ",
-                "El archivo de almac\u00e9n de claves existe, pero est\u00e1 vac\u00edo "},
-        {"Keystore file does not exist: ",
-                "El archivo de almac\u00e9n de claves no existe: "},
-        {"Must specify destination alias", "Se debe especificar alias de destino"},
-        {"Must specify alias", "Se debe especificar alias"},
-        {"Keystore password must be at least 6 characters",
-                "La contrase\u00f1a del almac\u00e9n de claves debe tener al menos 6 caracteres"},
-        {"Enter keystore password:  ", "Escriba la contrase\u00f1a del almac\u00e9n de claves:  "},
-        {"Enter source keystore password:  ", "Escribir contrase\u00f1a de almac\u00e9n de claves de origen:  "},
-        {"Enter destination keystore password:  ", "Escribir contrase\u00f1a de almac\u00e9n de claves de destino:  "},
-        {"Keystore password is too short - must be at least 6 characters",
-         "La contrase\u00f1a del almac\u00e9n de claves es demasiado corta, debe tener al menos 6 caracteres"},
-        {"Unknown Entry Type", "Tipo de entrada desconocido"},
-        {"Too many failures. Alias not changed", "Demasiados errores. No se ha cambiado el alias"},
-        {"Entry for alias <alias> successfully imported.",
-                 "Las entradas del alias {0} se han importado correctamente."},
-        {"Entry for alias <alias> not imported.", "La entrada del alias {0} no se ha importado."},
-        {"Problem importing entry for alias <alias>: <exception>.\nEntry for alias <alias> not imported.",
+        {"provName.not.a.provider", "{0} no es un proveedor"},
+        {"Usage.error.no.command.provided", "Error de sintaxis: no se ha proporcionado ning\u00FAn comando"},
+        {"Source.keystore.file.exists.but.is.empty.", "El archivo de almac\u00E9n de claves de origen existe, pero est\u00E1 vac\u00EDo: "},
+        {"Please.specify.srckeystore", "Especifique -srckeystore"},
+        {"Must.not.specify.both.v.and.rfc.with.list.command",
+                "No se deben especificar -v y -rfc simult\u00E1neamente con el comando 'list'"},
+        {"Key.password.must.be.at.least.6.characters",
+                "La contrase\u00F1a de clave debe tener al menos 6 caracteres"},
+        {"New.password.must.be.at.least.6.characters",
+                "La nueva contrase\u00F1a debe tener al menos 6 caracteres"},
+        {"Keystore.file.exists.but.is.empty.",
+                "El archivo de almac\u00E9n de claves existe, pero est\u00E1 vac\u00EDo: "},
+        {"Keystore.file.does.not.exist.",
+                "El archivo de almac\u00E9n de claves no existe: "},
+        {"Must.specify.destination.alias", "Se debe especificar un alias de destino"},
+        {"Must.specify.alias", "Se debe especificar un alias"},
+        {"Keystore.password.must.be.at.least.6.characters",
+                "La contrase\u00F1a del almac\u00E9n de claves debe tener al menos 6 caracteres"},
+        {"Enter.keystore.password.", "Introduzca la contrase\u00F1a del almac\u00E9n de claves:  "},
+        {"Enter.source.keystore.password.", "Introduzca la contrase\u00F1a de almac\u00E9n de claves de origen:  "},
+        {"Enter.destination.keystore.password.", "Introduzca la contrase\u00F1a de almac\u00E9n de claves de destino:  "},
+        {"Keystore.password.is.too.short.must.be.at.least.6.characters",
+         "La contrase\u00F1a del almac\u00E9n de claves es demasiado corta, debe tener al menos 6 caracteres"},
+        {"Unknown.Entry.Type", "Tipo de Entrada Desconocido"},
+        {"Too.many.failures.Alias.not.changed", "Demasiados fallos. No se ha cambiado el alias"},
+        {"Entry.for.alias.alias.successfully.imported.",
+                 "La entrada del alias {0} se ha importado correctamente."},
+        {"Entry.for.alias.alias.not.imported.", "La entrada del alias {0} no se ha importado."},
+        {"Problem.importing.entry.for.alias.alias.exception.Entry.for.alias.alias.not.imported.",
                  "Problema al importar la entrada del alias {0}: {1}.\nNo se ha importado la entrada del alias {0}."},
-        {"Import command completed:  <ok> entries successfully imported, <fail> entries failed or cancelled",
-                 "Comando de importaci\u00f3n completado:  {0} entradas importadas correctamente, {1} entradas incorrectas o canceladas"},
-        {"Warning: Overwriting existing alias <alias> in destination keystore",
-                 "Advertencia: Sobrescribiendo el alias {0} en el almac\u00e9n de claves de destino"},
-        {"Existing entry alias <alias> exists, overwrite? [no]:  ",
-                 "El alias de entrada {0} ya existe, \u00bfdesea sobrescribirlo? [no]:  "},
-        {"Too many failures - try later", "Demasiados fallos; int\u00e9ntelo m\u00e1s adelante"},
-        {"Certification request stored in file <filename>",
-                "Solicitud de certificaci\u00f3n almacenada en el archivo <{0}>"},
-        {"Submit this to your CA", "Enviar a la CA"},
-        {"if alias not specified, destalias, srckeypass, and destkeypass must not be specified",
+        {"Import.command.completed.ok.entries.successfully.imported.fail.entries.failed.or.cancelled",
+                 "Comando de importaci\u00F3n completado: {0} entradas importadas correctamente, {1} entradas incorrectas o canceladas"},
+        {"Warning.Overwriting.existing.alias.alias.in.destination.keystore",
+                 "Advertencia: se sobrescribir\u00E1 el alias {0} en el almac\u00E9n de claves de destino"},
+        {"Existing.entry.alias.alias.exists.overwrite.no.",
+                 "El alias de entrada existente {0} ya existe, \u00BFdesea sobrescribirlo? [no]:  "},
+        {"Too.many.failures.try.later", "Demasiados fallos; int\u00E9ntelo m\u00E1s adelante"},
+        {"Certification.request.stored.in.file.filename.",
+                "Solicitud de certificaci\u00F3n almacenada en el archivo <{0}>"},
+        {"Submit.this.to.your.CA", "Enviar a la CA"},
+        {"if.alias.not.specified.destalias.srckeypass.and.destkeypass.must.not.be.specified",
             "si no se especifica el alias, no se puede especificar destalias, srckeypass ni destkeypass"},
-        {"Certificate stored in file <filename>",
+        {"Certificate.stored.in.file.filename.",
                 "Certificado almacenado en el archivo <{0}>"},
-        {"Certificate reply was installed in keystore",
-                "Se ha instalado la respuesta del certificado en el almac\u00e9n de claves"},
-        {"Certificate reply was not installed in keystore",
-                "No se ha instalado la respuesta del certificado en el almac\u00e9n de claves"},
-        {"Certificate was added to keystore",
-                "Se ha a\u00f1adido el certificado al almac\u00e9n de claves"},
-        {"Certificate was not added to keystore",
-                "No se ha a\u00f1adido el certificado al almac\u00e9n de claves"},
-        {"[Storing ksfname]", "[Almacenando {0}]"},
-        {"alias has no public key (certificate)",
-                "{0} no tiene clave p\u00fablica (certificado)"},
-        {"Cannot derive signature algorithm",
-                "No se puede derivar el algoritmo de firma"},
-        {"Alias <alias> does not exist",
-                "El alias <{0}> no existe"},
-        {"Alias <alias> has no certificate",
-                "El alias <{0}> no tiene certificado"},
-        {"Key pair not generated, alias <alias> already exists",
-                "No se ha generado el par de claves, el alias <{0}> ya existe"},
-        {"Cannot derive signature algorithm",
+        {"Certificate.reply.was.installed.in.keystore",
+                "Se ha instalado la respuesta del certificado en el almac\u00E9n de claves"},
+        {"Certificate.reply.was.not.installed.in.keystore",
+                "No se ha instalado la respuesta del certificado en el almac\u00E9n de claves"},
+        {"Certificate.was.added.to.keystore",
+                "Se ha agregado el certificado al almac\u00E9n de claves"},
+        {"Certificate.was.not.added.to.keystore",
+                "No se ha agregado el certificado al almac\u00E9n de claves"},
+        {".Storing.ksfname.", "[Almacenando {0}]"},
+        {"alias.has.no.public.key.certificate.",
+                "{0} no tiene clave p\u00FAblica (certificado)"},
+        {"Cannot.derive.signature.algorithm",
                 "No se puede derivar el algoritmo de firma"},
-        {"Generating keysize bit keyAlgName key pair and self-signed certificate (sigAlgName) with a validity of validality days\n\tfor: x500Name",
-                "Generando par de claves {1} de {0} bits para certificado autofirmado ({2}) con una validez de {3} d\u00edas\n\tpara: {4}"},
-        {"Enter key password for <alias>", "Escriba la contrase\u00f1a clave para <{0}>"},
-        {"\t(RETURN if same as keystore password):  ",
-                "\t(INTRO si es la misma contrase\u00f1a que la del almac\u00e9n de claves):  "},
-        {"Key password is too short - must be at least 6 characters",
-                "La contrase\u00f1a clave es demasiado corta; debe tener al menos 6 caracteres"},
-        {"Too many failures - key not added to keystore",
-                "Demasiados fallos; no se ha agregado la clave al almac\u00e9n de claves"},
-        {"Destination alias <dest> already exists",
+        {"Alias.alias.does.not.exist",
+                "El alias <{0}> no existe"},
+        {"Alias.alias.has.no.certificate",
+                "El alias <{0}> no tiene certificado"},
+        {"Key.pair.not.generated.alias.alias.already.exists",
+                "No se ha generado el par de claves, el alias <{0}> ya existe"},
+        {"Generating.keysize.bit.keyAlgName.key.pair.and.self.signed.certificate.sigAlgName.with.a.validity.of.validality.days.for",
+                "Generando par de claves {1} de {0} bits para certificado autofirmado ({2}) con una validez de {3} d\u00EDas\n\tpara: {4}"},
+        {"Enter.key.password.for.alias.", "Introduzca la contrase\u00F1a de clave para <{0}>"},
+        {".RETURN.if.same.as.keystore.password.",
+                "\t(INTRO si es la misma contrase\u00F1a que la del almac\u00E9n de claves):  "},
+        {"Key.password.is.too.short.must.be.at.least.6.characters",
+                "La contrase\u00F1a de clave es demasiado corta; debe tener al menos 6 caracteres"},
+        {"Too.many.failures.key.not.added.to.keystore",
+                "Demasiados fallos; no se ha agregado la clave al almac\u00E9n de claves"},
+        {"Destination.alias.dest.already.exists",
                 "El alias de destino <{0}> ya existe"},
-        {"Password is too short - must be at least 6 characters",
-                "La contrase\u00f1a es demasiado corta; debe tener al menos 6 caracteres"},
-        {"Too many failures. Key entry not cloned",
-                "Demasiados errores. No se ha copiado la entrada de clave"},
-        {"key password for <alias>", "contrase\u00f1a clave para <{0}>"},
-        {"Keystore entry for <id.getName()> already exists",
-                "La entrada de almac\u00e9n de claves para <{0}> ya existe"},
-        {"Creating keystore entry for <id.getName()> ...",
-                "Creando entrada de almac\u00e9n de claves para <{0}> ..."},
-        {"No entries from identity database added",
+        {"Password.is.too.short.must.be.at.least.6.characters",
+                "La contrase\u00F1a es demasiado corta; debe tener al menos 6 caracteres"},
+        {"Too.many.failures.Key.entry.not.cloned",
+                "Demasiados fallos. No se ha clonado la entrada de clave"},
+        {"key.password.for.alias.", "contrase\u00F1a de clave para <{0}>"},
+        {"Keystore.entry.for.id.getName.already.exists",
+                "La entrada de almac\u00E9n de claves para <{0}> ya existe"},
+        {"Creating.keystore.entry.for.id.getName.",
+                "Creando entrada de almac\u00E9n de claves para <{0}> ..."},
+        {"No.entries.from.identity.database.added",
                 "No se han agregado entradas de la base de datos de identidades"},
-        {"Alias name: alias", "Nombre de alias: {0}"},
-        {"Creation date: keyStore.getCreationDate(alias)",
-                "Fecha de creaci\u00f3n: {0,date}"},
-        {"alias, keyStore.getCreationDate(alias), ",
+        {"Alias.name.alias", "Nombre de Alias: {0}"},
+        {"Creation.date.keyStore.getCreationDate.alias.",
+                "Fecha de Creaci\u00F3n: {0,date}"},
+        {"alias.keyStore.getCreationDate.alias.",
                 "{0}, {1,date}, "},
-        {"alias, ", "{0}, "},
-        {"Entry type: <type>", "Tipo de entrada: {0}"},
-        {"Certificate chain length: ", "Longitud de la cadena de certificado: "},
-        {"Certificate[(i + 1)]:", "Certificado[{0,number,integer}]:"},
-        {"Certificate fingerprint (MD5): ", "Huella digital de certificado (MD5): "},
-        {"Entry type: trustedCertEntry\n", "Tipo de entrada: trustedCertEntry\n"},
-        {"trustedCertEntry,", "trustedCertEntry,"},
-        {"Keystore type: ", "Tipo de almac\u00e9n de claves: "},
-        {"Keystore provider: ", "Proveedor de almac\u00e9n de claves: "},
-        {"Your keystore contains keyStore.size() entry",
-                "Su almac\u00e9n de claves contiene entrada {0,number,integer}"},
-        {"Your keystore contains keyStore.size() entries",
-                "Su almac\u00e9n de claves contiene {0,number,integer} entradas"},
-        {"Failed to parse input", "Error al analizar la entrada"},
-        {"Empty input", "Entrada vac\u00eda"},
-        {"Not X.509 certificate", "No es un certificado X.509"},
-        {"Cannot derive signature algorithm",
-                "No se puede derivar el algoritmo de firma"},
-        {"alias has no public key", "{0} no tiene clave p\u00fablica"},
-        {"alias has no X.509 certificate", "{0} no tiene certificado X.509"},
-        {"New certificate (self-signed):", "Nuevo certificado (autofirmado):"},
-        {"Reply has no certificates", "La respuesta no tiene certificados"},
-        {"Certificate not imported, alias <alias> already exists",
+        {"alias.", "{0}, "},
+        {"Entry.type.type.", "Tipo de Entrada: {0}"},
+        {"Certificate.chain.length.", "Longitud de la Cadena de Certificado: "},
+        {"Certificate.i.1.", "Certificado[{0,number,integer}]:"},
+        {"Certificate.fingerprint.SHA1.", "Huella Digital de Certificado (SHA1): "},
+        {"Entry.type.trustedCertEntry.", "Tipo de Entrada: trustedCertEntry\n"},
+        {"trustedCertEntry.", "trustedCertEntry,"},
+        {"Keystore.type.", "Tipo de Almac\u00E9n de Claves: "},
+        {"Keystore.provider.", "Proveedor de Almac\u00E9n de Claves: "},
+        {"Your.keystore.contains.keyStore.size.entry",
+                "Su almac\u00E9n de claves contiene {0,number,integer} entrada"},
+        {"Your.keystore.contains.keyStore.size.entries",
+                "Su almac\u00E9n de claves contiene {0,number,integer} entradas"},
+        {"Failed.to.parse.input", "Fallo al analizar la entrada"},
+        {"Empty.input", "Entrada vac\u00EDa"},
+        {"Not.X.509.certificate", "No es un certificado X.509"},
+        {"alias.has.no.public.key", "{0} no tiene clave p\u00FAblica"},
+        {"alias.has.no.X.509.certificate", "{0} no tiene certificado X.509"},
+        {"New.certificate.self.signed.", "Nuevo Certificado (Autofirmado):"},
+        {"Reply.has.no.certificates", "La respuesta no tiene certificados"},
+        {"Certificate.not.imported.alias.alias.already.exists",
                 "Certificado no importado, el alias <{0}> ya existe"},
-        {"Input not an X.509 certificate", "La entrada no es un certificado X.509"},
-        {"Certificate already exists in keystore under alias <trustalias>",
-                "El certificado ya existe en el almac\u00e9n de claves con el alias <{0}>"},
-        {"Do you still want to add it? [no]:  ",
-                "\u00bfA\u00fan desea agregarlo? [no]:  "},
-        {"Certificate already exists in system-wide CA keystore under alias <trustalias>",
-                "El certificado ya existe en el almac\u00e9n de claves de la CA del sistema, con el alias <{0}>"},
-        {"Do you still want to add it to your own keystore? [no]:  ",
-                "\u00bfA\u00fan desea agregarlo a su propio almac\u00e9n de claves? [no]:  "},
-        {"Trust this certificate? [no]:  ", "\u00bfConfiar en este certificado? [no]:  "},
-        {"YES", "S\u00cd"},
-        {"New prompt: ", "Nuevo {0}: "},
-        {"Passwords must differ", "Las contrase\u00f1as deben ser distintas"},
-        {"Re-enter new prompt: ", "Vuelva a escribir el nuevo {0}: "},
-        {"Re-enter new password: ", "Volver a escribir la contrase\u00f1a nueva: "},
-        {"They don't match. Try again", "No coinciden. Int\u00e9ntelo de nuevo"},
-        {"Enter prompt alias name:  ", "Escriba el nombre de alias de {0}:  "},
-        {"Enter new alias name\t(RETURN to cancel import for this entry):  ",
-                 "Indique el nuevo nombre de alias\t(INTRO para cancelar la importaci\u00f3n de esta entrada):  "},
-        {"Enter alias name:  ", "Escriba el nombre de alias:  "},
-        {"\t(RETURN if same as for <otherAlias>)",
+        {"Input.not.an.X.509.certificate", "La entrada no es un certificado X.509"},
+        {"Certificate.already.exists.in.keystore.under.alias.trustalias.",
+                "El certificado ya existe en el almac\u00E9n de claves con el alias <{0}>"},
+        {"Do.you.still.want.to.add.it.no.",
+                "\u00BFA\u00FAn desea agregarlo? [no]:  "},
+        {"Certificate.already.exists.in.system.wide.CA.keystore.under.alias.trustalias.",
+                "El certificado ya existe en el almac\u00E9n de claves de la CA del sistema, con el alias <{0}>"},
+        {"Do.you.still.want.to.add.it.to.your.own.keystore.no.",
+                "\u00BFA\u00FAn desea agregarlo a su propio almac\u00E9n de claves? [no]:  "},
+        {"Trust.this.certificate.no.", "\u00BFConfiar en este certificado? [no]:  "},
+        {"YES", "S\u00CD"},
+        {"New.prompt.", "Nuevo {0}: "},
+        {"Passwords.must.differ", "Las contrase\u00F1as deben ser distintas"},
+        {"Re.enter.new.prompt.", "Vuelva a escribir el nuevo {0}: "},
+        {"Re.enter.new.password.", "Volver a escribir la contrase\u00F1a nueva: "},
+        {"They.don.t.match.Try.again", "No coinciden. Int\u00E9ntelo de nuevo"},
+        {"Enter.prompt.alias.name.", "Escriba el nombre de alias de {0}:  "},
+        {"Enter.new.alias.name.RETURN.to.cancel.import.for.this.entry.",
+                 "Indique el nuevo nombre de alias\t(INTRO para cancelar la importaci\u00F3n de esta entrada):  "},
+        {"Enter.alias.name.", "Introduzca el nombre de alias:  "},
+        {".RETURN.if.same.as.for.otherAlias.",
                 "\t(INTRO si es el mismo que para <{0}>)"},
-        {"*PATTERN* printX509Cert",
-                "Propietario: {0}\nEmisor: {1}\nN\u00famero de serie: {2}\nV\u00e1lido desde: {3} hasta: {4}\nHuellas digitales del certificado:\n\t MD5:  {5}\n\t SHA1: {6}\n\t Nombre del algoritmo de firma: {7}\n\t Versi\u00f3n: {8}"},
-        {"What is your first and last name?",
-                "\u00bfCu\u00e1les son su nombre y su apellido?"},
-        {"What is the name of your organizational unit?",
-                "\u00bfCu\u00e1l es el nombre de su unidad de organizaci\u00f3n?"},
-        {"What is the name of your organization?",
-                "\u00bfCu\u00e1l es el nombre de su organizaci\u00f3n?"},
-        {"What is the name of your City or Locality?",
-                "\u00bfCu\u00e1l es el nombre de su ciudad o localidad?"},
-        {"What is the name of your State or Province?",
-                "\u00bfCu\u00e1l es el nombre de su estado o provincia?"},
-        {"What is the two-letter country code for this unit?",
-                "\u00bfCu\u00e1l es el c\u00f3digo de pa\u00eds de dos letras de la unidad?"},
-        {"Is <name> correct?", "\u00bfEs correcto {0}?"},
+        {".PATTERN.printX509Cert",
+                "Propietario: {0}\nEmisor: {1}\nN\u00FAmero de serie: {2}\nV\u00E1lido desde: {3} hasta: {4}\nHuellas digitales del Certificado:\n\t MD5: {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t Nombre del Algoritmo de Firma: {8}\n\t Versi\u00F3n: {9}"},
+        {"What.is.your.first.and.last.name.",
+                "\u00BFCu\u00E1les son su nombre y su apellido?"},
+        {"What.is.the.name.of.your.organizational.unit.",
+                "\u00BFCu\u00E1l es el nombre de su unidad de organizaci\u00F3n?"},
+        {"What.is.the.name.of.your.organization.",
+                "\u00BFCu\u00E1l es el nombre de su organizaci\u00F3n?"},
+        {"What.is.the.name.of.your.City.or.Locality.",
+                "\u00BFCu\u00E1l es el nombre de su ciudad o localidad?"},
+        {"What.is.the.name.of.your.State.or.Province.",
+                "\u00BFCu\u00E1l es el nombre de su estado o provincia?"},
+        {"What.is.the.two.letter.country.code.for.this.unit.",
+                "\u00BFCu\u00E1l es el c\u00F3digo de pa\u00EDs de dos letras de la unidad?"},
+        {"Is.name.correct.", "\u00BFEs correcto {0}?"},
         {"no", "no"},
-        {"yes", "s\u00ed"},
-        {"y", "y"},
-        {"  [defaultValue]:  ", "  [{0}]:  "},
-        {"Alias <alias> has no key",
+        {"yes", "s\u00ED"},
+        {"y", "s"},
+        {".defaultValue.", "  [{0}]:  "},
+        {"Alias.alias.has.no.key",
                 "El alias <{0}> no tiene clave"},
-        {"Alias <alias> references an entry type that is not a private key entry.  The -keyclone command only supports cloning of private key entries",
-                 "El alias <{0}> hace referencia a un tipo de entrada que no es una clave privada.  El comando -keyclone s\u00f3lo permite la clonaci\u00f3n de entradas de claves privadas"},
+        {"Alias.alias.references.an.entry.type.that.is.not.a.private.key.entry.The.keyclone.command.only.supports.cloning.of.private.key",
+                 "El alias <{0}> hace referencia a un tipo de entrada que no es una clave privada. El comando -keyclone s\u00F3lo permite la clonaci\u00F3n de entradas de claves privadas"},
 
-        {"*****************  WARNING WARNING WARNING  *****************",
-            "*****************  ADVERTENCIA ADVERTENCIA ADVERTENCIA  *****************"},
+        {".WARNING.WARNING.WARNING.",
+            "*****************  WARNING WARNING WARNING  *****************"},
+        {"Signer.d.", "#%d de Firmante:"},
+        {"Timestamp.", "Registro de Hora:"},
+        {"Signature.", "Firma:"},
+        {"CRLs.", "CRL:"},
+        {"Certificate.owner.", "Propietario del Certificado: "},
+        {"Not.a.signed.jar.file", "No es un archivo jar firmado"},
+        {"No.certificate.from.the.SSL.server",
+                "Ning\u00FAn certificado del servidor SSL"},
 
         // Translators of the following 5 pairs, ATTENTION:
         // the next 5 string pairs are meant to be combined into 2 paragraphs,
         // 1+3+4 and 2+3+5. make sure your translation also does.
-        {"* The integrity of the information stored in your keystore  *",
-            "* La integridad de la informaci\u00f3n almacenada en su almac\u00e9n de claves  *"},
-        {"* The integrity of the information stored in the srckeystore*",
-            "* La totalidad de la informaci\u00f3n almacenada en srckeystore*"},
-        {"* has NOT been verified!  In order to verify its integrity, *",
+        {".The.integrity.of.the.information.stored.in.your.keystore.",
+            "* La integridad de la informaci\u00F3n almacenada en su almac\u00E9n de claves  *"},
+        {".The.integrity.of.the.information.stored.in.the.srckeystore.",
+            "* La totalidad de la informaci\u00F3n almacenada en srckeystore*"},
+        {".has.NOT.been.verified.In.order.to.verify.its.integrity.",
             "* NO se ha comprobado. Para comprobar dicha integridad, *"},
-        {"* you must provide your keystore password.                  *",
-            "deber\u00e1 proporcionar su contrase\u00f1a de almac\u00e9n de claves.                  *"},
-        {"* you must provide the srckeystore password.                *",
-            "* se debe indicar la contrase\u00f1a de srckeystore.                *"},
+        {".you.must.provide.your.keystore.password.",
+            "* deber\u00E1 proporcionar su contrase\u00F1a de almac\u00E9n de claves.                  *"},
+        {".you.must.provide.the.srckeystore.password.",
+            "* deber\u00E1 indicar la contrase\u00F1a de srckeystore.                *"},
 
 
-        {"Certificate reply does not contain public key for <alias>",
-                "La respuesta de certificado no contiene una clave p\u00fablica para <{0}>"},
-        {"Incomplete certificate chain in reply",
+        {"Certificate.reply.does.not.contain.public.key.for.alias.",
+                "La respuesta de certificado no contiene una clave p\u00FAblica para <{0}>"},
+        {"Incomplete.certificate.chain.in.reply",
                 "Cadena de certificado incompleta en la respuesta"},
-        {"Certificate chain in reply does not verify: ",
+        {"Certificate.chain.in.reply.does.not.verify.",
                 "La cadena de certificado de la respuesta no verifica: "},
-        {"Top-level certificate in reply:\n",
+        {"Top.level.certificate.in.reply.",
                 "Certificado de nivel superior en la respuesta:\n"},
-        {"... is not trusted. ", "... no es de confianza. "},
-        {"Install reply anyway? [no]:  ", "\u00bfinstalar respuesta de todos modos? [no]:  "},
+        {".is.not.trusted.", "... no es de confianza. "},
+        {"Install.reply.anyway.no.", "\u00BFInstalar respuesta de todos modos? [no]:  "},
         {"NO", "NO"},
-        {"Public keys in reply and keystore don't match",
-                "Las claves p\u00fablicas en la respuesta y en el almac\u00e9n de claves no coinciden"},
-        {"Certificate reply and certificate in keystore are identical",
-                "La respuesta del certificado y el certificado en el almac\u00e9n de claves son id\u00e9nticos"},
-        {"Failed to establish chain from reply",
-                "No se ha podido establecer una cadena a partir de la respuesta"},
+        {"Public.keys.in.reply.and.keystore.don.t.match",
+                "Las claves p\u00FAblicas en la respuesta y en el almac\u00E9n de claves no coinciden"},
+        {"Certificate.reply.and.certificate.in.keystore.are.identical",
+                "La respuesta del certificado y el certificado en el almac\u00E9n de claves son id\u00E9nticos"},
+        {"Failed.to.establish.chain.from.reply",
+                "No se ha podido definir una cadena a partir de la respuesta"},
         {"n", "n"},
-        {"Wrong answer, try again", "Respuesta incorrecta, vuelva a intentarlo"},
-        {"Secret key not generated, alias <alias> already exists",
+        {"Wrong.answer.try.again", "Respuesta incorrecta, vuelva a intentarlo"},
+        {"Secret.key.not.generated.alias.alias.already.exists",
                 "No se ha generado la clave secreta, el alias <{0}> ya existe"},
-        {"Please provide -keysize for secret key generation",
-                "Proporcione el valor de -keysize para la generaci\u00f3n de claves secretas"},
-        {"keytool usage:\n", "sintaxis de keytool:\n"},
-
-        {"Extensions: ", "Extensiones: "},
-
-        {"-certreq     [-v] [-protected]",
-                "-certreq     [-v] [-protected]"},
-        {"\t     [-alias <alias>] [-sigalg <sigalg>]",
-                "\t     [-alias <alias>] [-sigalg <algoritmo_firma>]"},
-        {"\t     [-file <csr_file>] [-keypass <keypass>]",
-                "\t     [-file <archivo_csr>] [-keypass <contrase\u00f1a_clave>]"},
-        {"\t     [-keystore <keystore>] [-storepass <storepass>]",
-                "\t     [-keystore <almac\u00e9n_claves>] [-storepass <contrase\u00f1a_almac\u00e9n>]"},
-        {"\t     [-storetype <storetype>] [-providername <name>]",
-                "\t     [-storetype <storetype>] [-providername <name>]"},
-        {"\t     [-providerclass <provider_class_name> [-providerarg <arg>]] ...",
-                "\t     [-providerclass <provider_class_name> [-providerarg <arg>]] ..."},
-        {"\t     [-providerpath <pathlist>]",
-                "\t     [-providerpath <pathlist>]"},
-        {"-delete      [-v] [-protected] -alias <alias>",
-                "-delete      [-v] [-protected] -alias <alias>"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-export      [-v] [-rfc] [-protected]",
-        //       "-export      [-v] [-rfc] [-protected]"},
-        {"-exportcert  [-v] [-rfc] [-protected]",
-                "-exportcert  [-v] [-rfc] [-protected]"},
-        {"\t     [-alias <alias>] [-file <cert_file>]",
-                "\t     [-alias <alias>] [-file <archivo_cert>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-genkey      [-v] [-protected]",
-        //        "-genkey      [-v] [-protected]"},
-        {"-genkeypair  [-v] [-protected]",
-                "-genkeypair  [-v] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
-        {"\t     [-keyalg <keyalg>] [-keysize <keysize>]",
-                "\t     [-keyalg <algoritmo_clave>] [-keysize <tama\u00f1o_clave>]"},
-        {"\t     [-sigalg <sigalg>] [-dname <dname>]",
-                "\t     [-sigalg <algoritmo_firma>] [-dname <nombre_d>]"},
-        {"\t     [-validity <valDays>] [-keypass <keypass>]",
-                "\t     [-validity <d\u00edas_validez>] [-keypass <contrase\u00f1a_clave>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-genseckey   [-v] [-protected]",
-                "-genseckey   [-v] [-protected]"},
-        /** rest is same as -certreq starting from -keystore **/
+        {"Please.provide.keysize.for.secret.key.generation",
+                "Proporcione el valor de -keysize para la generaci\u00F3n de claves secretas"},
 
-        {"-help", "-help"},
-        //{"-identitydb  [-v] [-protected]",
-        //      "-identitydb  [-v] [-protected]"},
-        //{"\t     [-file <idb_file>]", "\t     [-file <idb_file>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-import      [-v] [-noprompt] [-trustcacerts] [-protected]",
-        //       "-import      [-v] [-noprompt] [-trustcacerts] [-protected]"},
-        {"-importcert  [-v] [-noprompt] [-trustcacerts] [-protected]",
-                "-importcert  [-v] [-noprompt] [-trustcacerts] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
-        {"\t     [-alias <alias>] [-keypass <keypass>]",
-            "\t     [-alias <alias>] [-keypass <keypass>]"},
-        {"\t     [-file <cert_file>] [-keypass <keypass>]",
-                "\t     [-file <archivo_cert>] [-keypass <contrase\u00f1a_clave>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-importkeystore [-v] ",
-                "-importkeystore [-v] "},
-        {"\t     [-srckeystore <srckeystore>] [-destkeystore <destkeystore>]",
-                "\t     [-srckeystore <srckeystore>] [-destkeystore <destkeystore>]"},
-        {"\t     [-srcstoretype <srcstoretype>] [-deststoretype <deststoretype>]",
-                "\t     [-srcstoretype <srcstoretype>] [-deststoretype <deststoretype>]"},
-        {"\t     [-srcprotected] [-destprotected]",
-                "\t     [-srcprotected] [-destprotected]"},
-        {"\t     [-srcstorepass <srcstorepass>] [-deststorepass <deststorepass>]",
-                "\t     [-srcstorepass <srcstorepass>] [-deststorepass <deststorepass>]"},
-        {"\t     [-srcprovidername <srcprovidername>]\n\t     [-destprovidername <destprovidername>]",  // l\u00ednea demasiado larga, dividir en 2
-                 "\t     [-srcprovidername <srcprovidername>]\n\t     [-destprovidername <destprovidername>]"},
-        {"\t     [-srcalias <srcalias> [-destalias <destalias>]",
-                "\t     [-srcalias <srcalias> [-destalias <destalias>]"},
-        {"\t       [-srckeypass <srckeypass>] [-destkeypass <destkeypass>]]",
-                "\t       [-srckeypass <srckeypass>] [-destkeypass <destkeypass>]]"},
-        {"\t     [-noprompt]", "\t     [-noprompt]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-changealias [-v] [-protected] -alias <alias> -destalias <destalias>",
-                "-changealias [-v] [-protected] -alias <alias> -destalias <destalias>"},
-        {"\t     [-keypass <keypass>]", "\t     [-keypass <contrase\u00f1a_claves>]"},
-
-        //{"-keyclone    [-v] [-protected]",
-        //      "-keyclone    [-v] [-protected]"},
-        //{"\t     [-alias <alias>] -dest <dest_alias>",
-        //      "\t     [-alias <alias>] -dest <dest_alias>"},
-        //{"\t     [-keypass <keypass>] [-new <new_keypass>]",
-        //      "\t     [-keypass <keypass>] [-new <new_keypass>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-keypasswd   [-v] [-alias <alias>]",
-                "-keypasswd   [-v] [-alias <alias>]"},
-        {"\t     [-keypass <old_keypass>] [-new <new_keypass>]",
-                "\t     [-keypass <contrase\u00f1a_clave_antigua>] [-new <nueva_contrase\u00f1a_clave>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-list        [-v | -rfc] [-protected]",
-                "-list        [-v | -rfc] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-printcert   [-v] [-file <cert_file>]",
-                "-printcert   [-v] [-file <archivo_certif>]"},
-
-        //{"-selfcert    [-v] [-protected]",
-        //      "-selfcert    [-v] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
-        //{"\t     [-dname <dname>] [-validity <valDays>]",
-        //      "\t     [-dname <dname>] [-validity <valDays>]"},
-        //{"\t     [-keypass <keypass>] [-sigalg <sigalg>]",
-        //      "\t     [-keypass <keypass>] [-sigalg <sigalg>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-storepasswd [-v] [-new <new_storepass>]",
-                "-storepasswd [-v] [-new <nueva_contrase\u00f1a_almac\u00e9n>]"},
-        /** rest is same as -certreq starting from -keystore **/
+        {"Extensions.", "Extensiones: "},
+        {".Empty.value.", "(Valor vac\u00EDo)"},
+        {"Extension.Request.", "Solicitud de Extensi\u00F3n:"},
+        {"PKCS.10.Certificate.Request.Version.1.0.Subject.s.Public.Key.s.format.s.key.",
+                "Solicitud de Certificado PKCS #10 (Versi\u00F3n 1.0)\nAsunto: %s\nClave P\u00FAblica: %s formato %s clave\n"},
+        {"Unknown.keyUsage.type.", "Tipo de uso de clave desconocido: "},
+        {"Unknown.extendedkeyUsage.type.", "Tipo de uso de clave extendida desconocido: "},
+        {"Unknown.AccessDescription.type.", "Tipo de descripci\u00F3n de acceso desconocido: "},
+        {"Unrecognized.GeneralName.type.", "Tipo de nombre general no reconocido: "},
+        {"This.extension.cannot.be.marked.as.critical.",
+                 "Esta extensi\u00F3n no se puede marcar como cr\u00EDtica. "},
+        {"Odd.number.of.hex.digits.found.", "Se ha encontrado un n\u00FAmero impar de d\u00EDgitos hexadecimales: "},
+        {"Unknown.extension.type.", "Tipo de extensi\u00F3n desconocida: "},
+        {"command.{0}.is.ambiguous.", "El comando {0} es ambiguo:"},
 
         // policytool
-        {"Warning: A public key for alias 'signers[i]' does not exist.  Make sure a KeyStore is properly configured.",
-                "Advertencia: No hay clave p\u00fablica para el alias {0}. Compruebe que se haya configurado correctamente un almac\u00e9n de claves."},
-        {"Warning: Class not found: class", "Advertencia: No se ha encontrado la clase: {0}"},
-        {"Warning: Invalid argument(s) for constructor: arg",
-                "Advertencia: Argumento(s) no v\u00e1lido(s) para el constructor: {0}"},
-        {"Illegal Principal Type: type", "Tipo de principal no permitido: {0}"},
-        {"Illegal option: option", "Opci\u00f3n no permitida: {0}"},
-        {"Usage: policytool [options]", "Sintaxis: policytool [opciones]"},
-        {"  [-file <file>]    policy file location",
-                "  [-file <archivo>]    ubicaci\u00f3n del archivo de normas"},
+        {"Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured.",
+                "Advertencia: no hay clave p\u00FAblica para el alias {0}. Aseg\u00FArese de que se ha configurado correctamente un almac\u00E9n de claves."},
+        {"Warning.Class.not.found.class", "Advertencia: no se ha encontrado la clase: {0}"},
+        {"Warning.Invalid.argument.s.for.constructor.arg",
+                "Advertencia: argumento(s) no v\u00E1lido(s) para el constructor: {0}"},
+        {"Illegal.Principal.Type.type", "Tipo de principal no permitido: {0}"},
+        {"Illegal.option.option", "Opci\u00F3n no permitida: {0}"},
+        {"Usage.policytool.options.", "Sintaxis: policytool [opciones]"},
+        {".file.file.policy.file.location",
+                "  [-file <archivo>]    ubicaci\u00F3n del archivo de normas"},
         {"New", "Nuevo"},
         {"Open", "Abrir"},
         {"Save", "Guardar"},
-        {"Save As", "Guardar como"},
-        {"View Warning Log", "Ver registro de advertencias"},
+        {"Save.As", "Guardar como"},
+        {"View.Warning.Log", "Ver Log de Advertencias"},
         {"Exit", "Salir"},
-        {"Add Policy Entry", "Agregar entrada de norma"},
-        {"Edit Policy Entry", "Editar entrada de norma"},
-        {"Remove Policy Entry", "Eliminar entrada de norma"},
+        {"Add.Policy.Entry", "Agregar Entrada de Pol\u00EDtica"},
+        {"Edit.Policy.Entry", "Editar Entrada de Pol\u00EDtica"},
+        {"Remove.Policy.Entry", "Eliminar Entrada de Pol\u00EDtica"},
         {"Edit", "Editar"},
         {"Retain", "Mantener"},
 
-        {"Warning: File name may include escaped backslash characters. " +
-                        "It is not necessary to escape backslash characters " +
-                        "(the tool escapes characters as necessary when writing " +
-                        "the policy contents to the persistent store).\n\n" +
-                        "Click on Retain to retain the entered name, or click on " +
-                        "Edit to edit the name.",
-            "Warning: File name may include escaped backslash characters. " +
-                        "It is not necessary to escape backslash characters " +
-                        "(the tool escapes characters as necessary when writing " +
-                        "the policy contents to the persistent store).\n\n" +
-                        "Click on Retain to retain the entered name, or click on " +
-                        "Edit to edit the name."},
+        {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
+            "Advertencia: el nombre del archivo puede contener caracteres de barra invertida de escape. No es necesario utilizar barras invertidas de escape (la herramienta aplica caracteres de escape seg\u00FAn sea necesario al escribir el contenido de las pol\u00EDticas en el almac\u00E9n persistente).\n\nHaga clic en Mantener para conservar el nombre introducido o en Editar para modificarlo."},
 
-        {"Add Public Key Alias", "Agregar alias de clave p\u00fablico"},
-        {"Remove Public Key Alias", "Eliminar alias de clave p\u00fablico"},
+        {"Add.Public.Key.Alias", "Agregar Alias de Clave P\u00FAblico"},
+        {"Remove.Public.Key.Alias", "Eliminar Alias de Clave P\u00FAblico"},
         {"File", "Archivo"},
-        {"KeyStore", "Almac\u00e9n de claves"},
-        {"Policy File:", "Archivo de normas:"},
-        {"Could not open policy file: policyFile: e.toString()",
-                "No se ha podido abrir el archivo java.policy: {0}: {1}"},
-        {"Policy Tool", "Herramienta de normas"},
-        {"Errors have occurred while opening the policy configuration.  View the Warning Log for more information.",
-                "Ha habido errores al abrir la configuraci\u00f3n de normas.  V\u00e9ase el registro de advertencias para obtener m\u00e1s informaci\u00f3n."},
+        {"KeyStore", "Almac\u00E9n de Claves"},
+        {"Policy.File.", "Archivo de Pol\u00EDtica:"},
+        {"Could.not.open.policy.file.policyFile.e.toString.",
+                "No se ha podido abrir el archivo de pol\u00EDtica: {0}: {1}"},
+        {"Policy.Tool", "Herramienta de Pol\u00EDticas"},
+        {"Errors.have.occurred.while.opening.the.policy.configuration.View.the.Warning.Log.for.more.information.",
+                "Ha habido errores al abrir la configuraci\u00F3n de pol\u00EDticas. V\u00E9ase el log de advertencias para obtener m\u00E1s informaci\u00F3n."},
         {"Error", "Error"},
         {"OK", "Aceptar"},
         {"Status", "Estado"},
         {"Warning", "Advertencia"},
-        {"Permission:                                                       ",
+        {"Permission.",
                 "Permiso:                                                       "},
-        {"Principal Type:", "Tipo de principal:"},
-        {"Principal Name:", "Nombre de principal:"},
-        {"Target Name:                                                    ",
-                "Nombre de destino:                                                    "},
-        {"Actions:                                                             ",
+        {"Principal.Type.", "Tipo de Principal:"},
+        {"Principal.Name.", "Nombre de Principal:"},
+        {"Target.Name.",
+                "Nombre de Destino:                                                    "},
+        {"Actions.",
                 "Acciones:                                                             "},
-        {"OK to overwrite existing file filename?",
-                "\u00bfSobrescribir el archivo existente {0}?"},
+        {"OK.to.overwrite.existing.file.filename.",
+                "\u00BFSobrescribir el archivo existente {0}?"},
         {"Cancel", "Cancelar"},
-        {"CodeBase:", "Base de c\u00f3digos:"},
-        {"SignedBy:", "Firmado por:"},
-        {"Add Principal", "Agregar principal"},
-        {"Edit Principal", "Editar principal"},
-        {"Remove Principal", "Eliminar principal"},
-        {"Principals:", "Principales:"},
-        {"  Add Permission", "  Agregar permiso"},
-        {"  Edit Permission", "  Editar permiso"},
-        {"Remove Permission", "Eliminar permiso"},
-        {"Done", "Terminar"},
-        {"KeyStore URL:", "URL de almac\u00e9n de claves:"},
-        {"KeyStore Type:", "Tipo de almac\u00e9n de claves:"},
-        {"KeyStore Provider:", "Proveedor de almac\u00e9n de claves:"},
-        {"KeyStore Password URL:", "URL de contrase\u00f1a de almac\u00e9n de claves:"},
+        {"CodeBase.", "CodeBase:"},
+        {"SignedBy.", "SignedBy:"},
+        {"Add.Principal", "Agregar Principal"},
+        {"Edit.Principal", "Editar Principal"},
+        {"Remove.Principal", "Eliminar Principal"},
+        {"Principals.", "Principales:"},
+        {".Add.Permission", "  Agregar Permiso"},
+        {".Edit.Permission", "  Editar Permiso"},
+        {"Remove.Permission", "Eliminar Permiso"},
+        {"Done", "Listo"},
+        {"KeyStore.URL.", "URL de Almac\u00E9n de Claves:"},
+        {"KeyStore.Type.", "Tipo de Almac\u00E9n de Claves:"},
+        {"KeyStore.Provider.", "Proveedor de Almac\u00E9n de Claves:"},
+        {"KeyStore.Password.URL.", "URL de Contrase\u00F1a de Almac\u00E9n de Claves:"},
         {"Principals", "Principales"},
-        {"  Edit Principal:", "  Editar principal:"},
-        {"  Add New Principal:", "  Agregar nuevo principal:"},
+        {".Edit.Principal.", "  Editar Principal:"},
+        {".Add.New.Principal.", "  Agregar Nuevo Principal:"},
         {"Permissions", "Permisos"},
-        {"  Edit Permission:", "  Editar permiso:"},
-        {"  Add New Permission:", "  Agregar permiso nuevo:"},
-        {"Signed By:", "Firmado por:"},
-        {"Cannot Specify Principal with a Wildcard Class without a Wildcard Name",
-            "No se puede especificar principal con una clase de comod\u00edn sin un nombre de comod\u00edn"},
-        {"Cannot Specify Principal without a Name",
-            "No se puede especificar principal sin un nombre"},
-        {"Permission and Target Name must have a value",
-                "Permiso y Nombre de destino deben tener un valor"},
-        {"Remove this Policy Entry?", "\u00bfEliminar esta entrada de norma?"},
-        {"Overwrite File", "Sobrescribir archivo"},
-        {"Policy successfully written to filename",
-                "Norma escrita satisfactoriamente en {0}"},
-        {"null filename", "nombre de archivo nulo"},
-        {"Save changes?", "\u00bfGuardar los cambios?"},
-        {"Yes", "S\u00ed"},
+        {".Edit.Permission.", "  Editar Permiso:"},
+        {".Add.New.Permission.", "  Agregar Permiso Nuevo:"},
+        {"Signed.By.", "Firmado Por:"},
+        {"Cannot.Specify.Principal.with.a.Wildcard.Class.without.a.Wildcard.Name",
+            "No se puede especificar un principal con una clase de comod\u00EDn sin un nombre de comod\u00EDn"},
+        {"Cannot.Specify.Principal.without.a.Name",
+            "No se puede especificar el principal sin un nombre"},
+        {"Permission.and.Target.Name.must.have.a.value",
+                "Permiso y Nombre de Destino deben tener un valor"},
+        {"Remove.this.Policy.Entry.", "\u00BFEliminar esta entrada de pol\u00EDtica?"},
+        {"Overwrite.File", "Sobrescribir Archivo"},
+        {"Policy.successfully.written.to.filename",
+                "Pol\u00EDtica escrita correctamente en {0}"},
+        {"null.filename", "nombre de archivo nulo"},
+        {"Save.changes.", "\u00BFGuardar los cambios?"},
+        {"Yes", "S\u00ED"},
         {"No", "No"},
-        {"Policy Entry", "Entrada de norma"},
-        {"Save Changes", "Guardar cambios"},
-        {"No Policy Entry selected", "No se ha seleccionado entrada de norma"},
-        {"Unable to open KeyStore: ex.toString()",
-                "No se puede abrir el almac\u00e9n de claves: {0}"},
-        {"No principal selected", "No se ha seleccionado principal"},
-        {"No permission selected", "No se ha seleccionado un permiso"},
+        {"Policy.Entry", "Entrada de Pol\u00EDtica"},
+        {"Save.Changes", "Guardar Cambios"},
+        {"No.Policy.Entry.selected", "No se ha seleccionado la entrada de pol\u00EDtica"},
+        {"Unable.to.open.KeyStore.ex.toString.",
+                "No se ha podido abrir el almac\u00E9n de claves: {0}"},
+        {"No.principal.selected", "No se ha seleccionado un principal"},
+        {"No.permission.selected", "No se ha seleccionado un permiso"},
         {"name", "nombre"},
-        {"configuration type", "tipo de configuraci\u00f3n"},
-        {"environment variable name", "nombre de variable de entorno"},
-        {"library name", "nombre de la biblioteca"},
-        {"package name", "nombre del paquete"},
-        {"policy type", "tipo de directiva"},
-        {"property name", "nombre de la propiedad"},
-        {"provider name", "nombre del proveedor"},
-        {"Principal List", "Lista de principales"},
-        {"Permission List", "Lista de permisos"},
-        {"Code Base", "Base de c\u00f3digo"},
-        {"KeyStore U R L:", "URL de almac\u00e9n de claves:"},
-        {"KeyStore Password U R L:", "URL de contrase\u00f1a de almac\u00e9n de claves:"},
+        {"configuration.type", "tipo de configuraci\u00F3n"},
+        {"environment.variable.name", "nombre de variable de entorno"},
+        {"library.name", "nombre de la biblioteca"},
+        {"package.name", "nombre del paquete"},
+        {"policy.type", "tipo de pol\u00EDtica"},
+        {"property.name", "nombre de la propiedad"},
+        {"Principal.List", "Lista de Principales"},
+        {"Permission.List", "Lista de Permisos"},
+        {"Code.Base", "Base de C\u00F3digo"},
+        {"KeyStore.U.R.L.", "URL de Almac\u00E9n de Claves:"},
+        {"KeyStore.Password.U.R.L.", "URL de Contrase\u00F1a de Almac\u00E9n de Claves:"},
 
 
         // javax.security.auth.PrivateCredentialPermission
-        {"invalid null input(s)", "entradas nulas no v\u00e1lidas"},
-        {"actions can only be 'read'", "las acciones s\u00f3lo pueden 'leerse'"},
-        {"permission name [name] syntax invalid: ",
-                "sintaxis de nombre de permiso [{0}] no v\u00e1lida: "},
-        {"Credential Class not followed by a Principal Class and Name",
-                "Clase de credencial no va seguida de una clase y nombre de principal"},
-        {"Principal Class not followed by a Principal Name",
+        {"invalid.null.input.s.", "entradas nulas no v\u00E1lidas"},
+        {"actions.can.only.be.read.", "las acciones s\u00F3lo pueden 'leerse'"},
+        {"permission.name.name.syntax.invalid.",
+                "sintaxis de nombre de permiso [{0}] no v\u00E1lida: "},
+        {"Credential.Class.not.followed.by.a.Principal.Class.and.Name",
+                "La clase de credencial no va seguida de una clase y nombre de principal"},
+        {"Principal.Class.not.followed.by.a.Principal.Name",
                 "La clase de principal no va seguida de un nombre de principal"},
-        {"Principal Name must be surrounded by quotes",
+        {"Principal.Name.must.be.surrounded.by.quotes",
                 "El nombre de principal debe ir entre comillas"},
-        {"Principal Name missing end quote",
+        {"Principal.Name.missing.end.quote",
                 "Faltan las comillas finales en el nombre de principal"},
-        {"PrivateCredentialPermission Principal Class can not be a wildcard (*) value if Principal Name is not a wildcard (*) value",
-                "La clase de principal PrivateCredentialPermission no puede ser un valor comod\u00edn (*) si el nombre de principal no lo es tambi\u00e9n"},
-        {"CredOwner:\n\tPrincipal Class = class\n\tPrincipal Name = name",
-                "CredOwner:\n\tClase de principal = {0}\n\tNombre de principal = {1}"},
+        {"PrivateCredentialPermission.Principal.Class.can.not.be.a.wildcard.value.if.Principal.Name.is.not.a.wildcard.value",
+                "La clase de principal PrivateCredentialPermission no puede ser un valor comod\u00EDn (*) si el nombre de principal no lo es tambi\u00E9n"},
+        {"CredOwner.Principal.Class.class.Principal.Name.name",
+                "CredOwner:\n\tClase de Principal = {0}\n\tNombre de Principal = {1}"},
 
         // javax.security.auth.x500
-        {"provided null name", "se ha proporcionado un nombre nulo"},
-        {"provided null keyword map", "mapa de palabras proporcionado nulo"},
-        {"provided null OID map", "mapa de OID proporcionado nulo"},
+        {"provided.null.name", "se ha proporcionado un nombre nulo"},
+        {"provided.null.keyword.map", "mapa de palabras clave proporcionado nulo"},
+        {"provided.null.OID.map", "mapa de OID proporcionado nulo"},
 
         // javax.security.auth.Subject
-        {"invalid null AccessControlContext provided",
-                "se ha proporcionado un AccessControlContext nulo no v\u00e1lido"},
-        {"invalid null action provided", "se ha proporcionado una acci\u00f3n nula no v\u00e1lida"},
-        {"invalid null Class provided", "se ha proporcionado una clase nula no v\u00e1lida"},
-        {"Subject:\n", "Asunto:\n"},
-        {"\tPrincipal: ", "\tPrincipal: "},
-        {"\tPublic Credential: ", "\tCredencial p\u00fablica: "},
-        {"\tPrivate Credentials inaccessible\n",
-                "\tCredenciales privadas inaccesibles\n"},
-        {"\tPrivate Credential: ", "\tCredencial privada: "},
-        {"\tPrivate Credential inaccessible\n",
-                "\tCredencial privada inaccesible\n"},
-        {"Subject is read-only", "El asunto es de s\u00f3lo lectura"},
-        {"attempting to add an object which is not an instance of java.security.Principal to a Subject's Principal Set",
-                "intentando agregar un objeto que no es un ejemplar de java.security.Principal al conjunto principal de un asunto"},
-        {"attempting to add an object which is not an instance of class",
-                "intentando agregar un objeto que no es un ejemplar de {0}"},
+        {"invalid.null.AccessControlContext.provided",
+                "se ha proporcionado un AccessControlContext nulo no v\u00E1lido"},
+        {"invalid.null.action.provided", "se ha proporcionado una acci\u00F3n nula no v\u00E1lida"},
+        {"invalid.null.Class.provided", "se ha proporcionado una clase nula no v\u00E1lida"},
+        {"Subject.", "Asunto:\n"},
+        {".Principal.", "\tPrincipal: "},
+        {".Public.Credential.", "\tCredencial P\u00FAblica: "},
+        {".Private.Credentials.inaccessible.",
+                "\tCredenciales Privadas Inaccesibles\n"},
+        {".Private.Credential.", "\tCredencial Privada: "},
+        {".Private.Credential.inaccessible.",
+                "\tCredencial Privada Inaccesible\n"},
+        {"Subject.is.read.only", "El asunto es de s\u00F3lo lectura"},
+        {"attempting.to.add.an.object.which.is.not.an.instance.of.java.security.Principal.to.a.Subject.s.Principal.Set",
+                "intentando agregar un objeto que no es una instancia de java.security.Principal al juego principal de un asunto"},
+        {"attempting.to.add.an.object.which.is.not.an.instance.of.class",
+                "intentando agregar un objeto que no es una instancia de {0}"},
 
         // javax.security.auth.login.AppConfigurationEntry
-        {"LoginModuleControlFlag: ", "LoginModuleControlFlag: "},
+        {"LoginModuleControlFlag.", "LoginModuleControlFlag: "},
 
         // javax.security.auth.login.LoginContext
-        {"Invalid null input: name", "Entrada nula no v\u00e1lida: nombre"},
-        {"No LoginModules configured for name",
+        {"Invalid.null.input.name", "Entrada nula no v\u00E1lida: nombre"},
+        {"No.LoginModules.configured.for.name",
          "No se han configurado LoginModules para {0}"},
-        {"invalid null Subject provided", "se ha proporcionado un asunto nulo no v\u00e1lido"},
-        {"invalid null CallbackHandler provided",
-                "se ha proporcionado CallbackHandler nulo no v\u00e1lido"},
-        {"null subject - logout called before login",
-                "asunto nulo - se ha llamado a fin de sesi\u00f3n antes del inicio de sesi\u00f3n"},
-        {"unable to instantiate LoginModule, module, because it does not provide a no-argument constructor",
-                "no se puede lanzar un ejemplar de LoginModule, {0}, porque no incluye un constructor no-argumento"},
-        {"unable to instantiate LoginModule",
-                "no se puede lanzar un ejemplar de LoginModule"},
-        {"unable to instantiate LoginModule: ",
-                "no se puede instanciar LoginModule: "},
-        {"unable to find LoginModule class: ",
-                "no se puede encontrar la clase LoginModule: "},
-        {"unable to access LoginModule: ",
-                "no se puede acceder a LoginModule: "},
-        {"Login Failure: all modules ignored",
-                "Fallo en inicio de sesi\u00f3n: se ha hecho caso omiso de todos los m\u00f3dulos"},
+        {"invalid.null.Subject.provided", "se ha proporcionado un asunto nulo no v\u00E1lido"},
+        {"invalid.null.CallbackHandler.provided",
+                "se ha proporcionado CallbackHandler nulo no v\u00E1lido"},
+        {"null.subject.logout.called.before.login",
+                "asunto nulo - se ha llamado al cierre de sesi\u00F3n antes del inicio de sesi\u00F3n"},
+        {"unable.to.instantiate.LoginModule.module.because.it.does.not.provide.a.no.argument.constructor",
+                "no se ha podido instanciar LoginModule, {0}, porque no incluye un constructor sin argumentos"},
+        {"unable.to.instantiate.LoginModule",
+                "no se ha podido instanciar LoginModule"},
+        {"unable.to.instantiate.LoginModule.",
+                "no se ha podido instanciar LoginModule: "},
+        {"unable.to.find.LoginModule.class.",
+                "no se ha encontrado la clase LoginModule: "},
+        {"unable.to.access.LoginModule.",
+                "no se ha podido acceder a LoginModule: "},
+        {"Login.Failure.all.modules.ignored",
+                "Fallo en inicio de sesi\u00F3n: se han ignorado todos los m\u00F3dulos"},
 
         // sun.security.provider.PolicyFile
 
-        {"java.security.policy: error parsing policy:\n\tmessage",
-                "java.security.policy: error de an\u00e1lisis de {0}:\n\t{1}"},
-        {"java.security.policy: error adding Permission, perm:\n\tmessage",
-                "java.security.policy: error al agregar Permiso, {0}:\n\t{1}"},
-        {"java.security.policy: error adding Entry:\n\tmessage",
-                "java.security.policy: error al agregar Entrada:\n\t{0}"},
-        {"alias name not provided (pe.name)", "no se ha proporcionado nombre de alias ({0})"},
-        {"unable to perform substitution on alias, suffix",
-                "no se puede realizar la sustituci\u00f3n en el alias, {0}"},
-        {"substitution value, prefix, unsupported",
-                "valor de sustituci\u00f3n, {0}, no soportado"},
-        {"(", "("},
-        {")", ")"},
-        {"type can't be null","el tipo no puede ser nulo"},
+        {"java.security.policy.error.parsing.policy.message",
+                "java.security.policy: error de an\u00E1lisis de {0}:\n\t{1}"},
+        {"java.security.policy.error.adding.Permission.perm.message",
+                "java.security.policy: error al agregar un permiso, {0}:\n\t{1}"},
+        {"java.security.policy.error.adding.Entry.message",
+                "java.security.policy: error al agregar una entrada:\n\t{0}"},
+        {"alias.name.not.provided.pe.name.", "no se ha proporcionado el nombre de alias ({0})"},
+        {"unable.to.perform.substitution.on.alias.suffix",
+                "no se puede realizar la sustituci\u00F3n en el alias, {0}"},
+        {"substitution.value.prefix.unsupported",
+                "valor de sustituci\u00F3n, {0}, no soportado"},
+        {"LPARAM", "("},
+        {"RPARAM", ")"},
+        {"type.can.t.be.null","el tipo no puede ser nulo"},
 
         // sun.security.provider.PolicyParser
-        {"keystorePasswordURL can not be specified without also specifying keystore",
-                "keystorePasswordURL no puede especificarse sin especificar tambi\u00e9n el almac\u00e9n de claves"},
-        {"expected keystore type", "se esperaba un tipo de almac\u00e9n de claves"},
-        {"expected keystore provider", "se esperaba un proveedor de almac\u00e9n de claves"},
-        {"multiple Codebase expressions",
-                "expresiones m\u00faltiples de base de c\u00f3digos"},
-        {"multiple SignedBy expressions","expresiones m\u00faltiples de SignedBy"},
-        {"SignedBy has empty alias","SignedBy tiene un alias vac\u00edo"},
-        {"can not specify Principal with a wildcard class without a wildcard name",
-                "no se puede especificar Principal con una clase de comod\u00edn sin un nombre de comod\u00edn"},
-        {"expected codeBase or SignedBy or Principal",
-                "se esperaba base de c\u00f3digos o SignedBy o Principal"},
-        {"expected permission entry", "se esperaba un permiso de entrada"},
-        {"number ", "n\u00famero "},
-        {"expected [expect], read [end of file]",
-                "se esperaba [{0}], se ha le\u00eddo [end of file]"},
-        {"expected [;], read [end of file]",
-                "se esperaba [;], se ha le\u00eddo [end of file]"},
-        {"line number: msg", "l\u00ednea {0}: {1}"},
-        {"line number: expected [expect], found [actual]",
-                "l\u00ednea {0}: se esperaba [{1}], se ha encontrado [{2}]"},
-        {"null principalClass or principalName",
+        {"keystorePasswordURL.can.not.be.specified.without.also.specifying.keystore",
+                "keystorePasswordURL no puede especificarse sin especificar tambi\u00E9n el almac\u00E9n de claves"},
+        {"expected.keystore.type", "se esperaba un tipo de almac\u00E9n de claves"},
+        {"expected.keystore.provider", "se esperaba un proveedor de almac\u00E9n de claves"},
+        {"multiple.Codebase.expressions",
+                "expresiones m\u00FAltiples de CodeBase"},
+        {"multiple.SignedBy.expressions","expresiones m\u00FAltiples de SignedBy"},
+        {"SignedBy.has.empty.alias","SignedBy tiene un alias vac\u00EDo"},
+        {"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name",
+                "no se puede especificar Principal con una clase de comod\u00EDn sin un nombre de comod\u00EDn"},
+        {"expected.codeBase.or.SignedBy.or.Principal",
+                "se esperaba codeBase o SignedBy o Principal"},
+        {"expected.permission.entry", "se esperaba una entrada de permiso"},
+        {"number.", "n\u00FAmero "},
+        {"expected.expect.read.end.of.file.",
+                "se esperaba [{0}], se ha le\u00EDdo [final de archivo]"},
+        {"expected.read.end.of.file.",
+                "se esperaba [;], se ha le\u00EDdo [final de archivo]"},
+        {"line.number.msg", "l\u00EDnea {0}: {1}"},
+        {"line.number.expected.expect.found.actual.",
+                "l\u00EDnea {0}: se esperaba [{1}], se ha encontrado [{2}]"},
+        {"null.principalClass.or.principalName",
                 "principalClass o principalName nulos"},
 
         // sun.security.pkcs11.SunPKCS11
-        {"PKCS11 Token [providerName] Password: ",
-                "Contrase\u00f1a de la tarjeta de claves PKCS11 [{0}]: "},
+        {"PKCS11.Token.providerName.Password.",
+                "Contrase\u00F1a del Elemento PKCS11 [{0}]: "},
 
         /* --- DEPRECATED --- */
         // javax.security.auth.Policy
-        {"unable to instantiate Subject-based policy",
-                "no se puede instanciar una directiva basada en Subject"}
+        {"unable.to.instantiate.Subject.based.policy",
+                "no se ha podido instanciar una pol\u00EDtica basada en asunto"}
     };
 
 
@@ -648,3 +670,4 @@
         return contents;
     }
 }
+
--- a/jdk/src/share/classes/sun/security/util/Resources_fr.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/util/Resources_fr.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, 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
@@ -35,605 +35,627 @@
     private static final Object[][] contents = {
 
         // shared (from jarsigner)
-        {" ", " "},
-        {"  ", "  "},
-        {"      ", "      "},
-        {", ", ", "},
+        {"SPACE", " "},
+        {"2SPACE", "  "},
+        {"6SPACE", "      "},
+        {"COMMA", ", "},
         // shared (from keytool)
-        {"\n", "\n"},
-        {"*******************************************",
+        {"NEWLINE", "\n"},
+        {"STAR",
                 "*******************************************"},
-        {"*******************************************\n\n",
-                "*******************************************"},
+        {"STARNN",
+                "*******************************************\n\n"},
 
-        // keytool
-        {"keytool error: ", "erreur keytool : "},
-        {"Illegal option:  ", "Option non valide :  "},
-        {"Try keytool -help","Essayez keytool -help"},
-        {"Command option <flag> needs an argument.", "L''option de commande {0} requiert un argument."},
-        {"Warning:  Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified <command> value.",
-                "Avertissement\u00a0:  Les mots de passe store et key distincts ne sont pas pris en charge pour les keystores PKCS12. La valeur {0} sp\u00e9cifi\u00e9e par l''utilisateur est ignor\u00e9e."},
-        {"-keystore must be NONE if -storetype is {0}",
-                "-keystore doit \u00eatre d\u00e9fini sur NONE si -storetype est {0}"},
-        {"Too may retries, program terminated",
+        // keytool: Help part
+        {".OPTION.", " [OPTION]..."},
+        {"Options.", "Options :"},
+        {"Use.keytool.help.for.all.available.commands",
+                 "Utiliser \"keytool -help\" pour toutes les commandes disponibles"},
+        {"Key.and.Certificate.Management.Tool",
+                 "Outil de gestion de certificats et de cl\u00E9s"},
+        {"Commands.", "Commandes :"},
+        {"Use.keytool.command.name.help.for.usage.of.command.name",
+                "Utiliser \"keytool -command_name -help\" pour la syntaxe de command_name"},
+        // keytool: help: commands
+        {"Generates.a.certificate.request",
+                "G\u00E9n\u00E8re une demande de certificat"}, //-certreq
+        {"Changes.an.entry.s.alias",
+                "Modifie l'alias d'une entr\u00E9e"}, //-changealias
+        {"Deletes.an.entry",
+                "Supprime une entr\u00E9e"}, //-delete
+        {"Exports.certificate",
+                "Exporte le certificat"}, //-exportcert
+        {"Generates.a.key.pair",
+                "G\u00E9n\u00E8re une paire de cl\u00E9s"}, //-genkeypair
+        {"Generates.a.secret.key",
+                "G\u00E9n\u00E8re une cl\u00E9 secr\u00E8te"}, //-genseckey
+        {"Generates.certificate.from.a.certificate.request",
+                "G\u00E9n\u00E8re le certificat \u00E0 partir d'une demande de certificat"}, //-gencert
+        {"Generates.CRL", "G\u00E9n\u00E8re la liste des certificats r\u00E9voqu\u00E9s (CRL)"}, //-gencrl
+        {"Imports.entries.from.a.JDK.1.1.x.style.identity.database",
+                "Importe les entr\u00E9es \u00E0 partir d'une base de donn\u00E9es d'identit\u00E9s de type JDK 1.1.x"}, //-identitydb
+        {"Imports.a.certificate.or.a.certificate.chain",
+                "Importe un certificat ou une cha\u00EEne de certificat"}, //-importcert
+        {"Imports.one.or.all.entries.from.another.keystore",
+                "Importe une entr\u00E9e ou la totalit\u00E9 des entr\u00E9es depuis un autre fichier de cl\u00E9s"}, //-importkeystore
+        {"Clones.a.key.entry",
+                "Clone une entr\u00E9e de cl\u00E9"}, //-keyclone
+        {"Changes.the.key.password.of.an.entry",
+                "Modifie le mot de passe de cl\u00E9 d'une entr\u00E9e"}, //-keypasswd
+        {"Lists.entries.in.a.keystore",
+                "R\u00E9pertorie les entr\u00E9es d'un fichier de cl\u00E9s"}, //-list
+        {"Prints.the.content.of.a.certificate",
+                "Imprime le contenu d'un certificat"}, //-printcert
+        {"Prints.the.content.of.a.certificate.request",
+                "Imprime le contenu d'une demande de certificat"}, //-printcertreq
+        {"Prints.the.content.of.a.CRL.file",
+                "Imprime le contenu d'un fichier de liste des certificats r\u00E9voqu\u00E9s (CRL)"}, //-printcrl
+        {"Generates.a.self.signed.certificate",
+                "G\u00E9n\u00E8re un certificat auto-sign\u00E9"}, //-selfcert
+        {"Changes.the.store.password.of.a.keystore",
+                "Modifie le mot de passe de banque d'un fichier de cl\u00E9s"}, //-storepasswd
+        // keytool: help: options
+        {"alias.name.of.the.entry.to.process",
+                "nom d'alias de l'entr\u00E9e \u00E0 traiter"}, //-alias
+        {"destination.alias",
+                "alias de destination"}, //-destalias
+        {"destination.key.password",
+                "mot de passe de la cl\u00E9 de destination"}, //-destkeypass
+        {"destination.keystore.name",
+                "nom du fichier de cl\u00E9s de destination"}, //-destkeystore
+        {"destination.keystore.password.protected",
+                "mot de passe du fichier de cl\u00E9s de destination prot\u00E9g\u00E9"}, //-destprotected
+        {"destination.keystore.provider.name",
+                "nom du fournisseur du fichier de cl\u00E9s de destination"}, //-destprovidername
+        {"destination.keystore.password",
+                "mot de passe du fichier de cl\u00E9s de destination"}, //-deststorepass
+        {"destination.keystore.type",
+                "type du fichier de cl\u00E9s de destination"}, //-deststoretype
+        {"distinguished.name",
+                "nom distinctif"}, //-dname
+        {"X.509.extension",
+                "extension X.509"}, //-ext
+        {"output.file.name",
+                "nom du fichier de sortie"}, //-file and -outfile
+        {"input.file.name",
+                "nom du fichier d'entr\u00E9e"}, //-file and -infile
+        {"key.algorithm.name",
+                "nom de l'algorithme de cl\u00E9"}, //-keyalg
+        {"key.password",
+                "mot de passe de la cl\u00E9"}, //-keypass
+        {"key.bit.size",
+                "taille en bits de la cl\u00E9"}, //-keysize
+        {"keystore.name",
+                "nom du fichier de cl\u00E9s"}, //-keystore
+        {"new.password",
+                "nouveau mot de passe"}, //-new
+        {"do.not.prompt",
+                "ne pas inviter"}, //-noprompt
+        {"password.through.protected.mechanism",
+                "mot de passe via m\u00E9canisme prot\u00E9g\u00E9"}, //-protected
+        {"provider.argument",
+                "argument du fournisseur"}, //-providerarg
+        {"provider.class.name",
+                "nom de la classe de fournisseur"}, //-providerclass
+        {"provider.name",
+                "nom du fournisseur"}, //-providername
+        {"provider.classpath",
+                "variable d'environnement CLASSPATH du fournisseur"}, //-providerpath
+        {"output.in.RFC.style",
+                "sortie au style RFC"}, //-rfc
+        {"signature.algorithm.name",
+                "nom de l'algorithme de signature"}, //-sigalg
+        {"source.alias",
+                "alias source"}, //-srcalias
+        {"source.key.password",
+                "mot de passe de la cl\u00E9 source"}, //-srckeypass
+        {"source.keystore.name",
+                "nom du fichier de cl\u00E9s source"}, //-srckeystore
+        {"source.keystore.password.protected",
+                "mot de passe du fichier de cl\u00E9s source prot\u00E9g\u00E9"}, //-srcprotected
+        {"source.keystore.provider.name",
+                "nom du fournisseur du fichier de cl\u00E9s source"}, //-srcprovidername
+        {"source.keystore.password",
+                "mot de passe du fichier de cl\u00E9s source"}, //-srcstorepass
+        {"source.keystore.type",
+                "type du fichier de cl\u00E9s source"}, //-srcstoretype
+        {"SSL.server.host.and.port",
+                "Port et h\u00F4te du serveur SSL"}, //-sslserver
+        {"signed.jar.file",
+                "fichier JAR sign\u00E9"}, //=jarfile
+        {"certificate.validity.start.date.time",
+                "date/heure de d\u00E9but de validit\u00E9 du certificat"}, //-startdate
+        {"keystore.password",
+                "mot de passe du fichier de cl\u00E9s"}, //-storepass
+        {"keystore.type",
+                "type du fichier de cl\u00E9s"}, //-storetype
+        {"trust.certificates.from.cacerts",
+                "certificats s\u00E9curis\u00E9s issus de certificats CA"}, //-trustcacerts
+        {"verbose.output",
+                "sortie en mode verbose"}, //-v
+        {"validity.number.of.days",
+                "nombre de jours de validit\u00E9"}, //-validity
+        {"Serial.ID.of.cert.to.revoke",
+                 "ID de s\u00E9rie du certificat \u00E0 r\u00E9voquer"}, //-id
+        // keytool: Running part
+        {"keytool.error.", "erreur keytool : "},
+        {"Illegal.option.", "Option non admise :  "},
+        {"Illegal.value.", "Valeur non admise : "},
+        {"Unknown.password.type.", "Type de mot de passe inconnu : "},
+        {"Cannot.find.environment.variable.",
+                "Variable d'environnement introuvable : "},
+        {"Cannot.find.file.", "Fichier introuvable : "},
+        {"Command.option.flag.needs.an.argument.", "L''option de commande {0} requiert un argument."},
+        {"Warning.Different.store.and.key.passwords.not.supported.for.PKCS12.KeyStores.Ignoring.user.specified.command.value.",
+                "Avertissement\u00A0: les mots de passe de cl\u00E9 et de banque distincts ne sont pas pris en charge pour les fichiers de cl\u00E9s d''acc\u00E8s PKCS12. La valeur {0} sp\u00E9cifi\u00E9e par l''utilisateur est ignor\u00E9e."},
+        {".keystore.must.be.NONE.if.storetype.is.{0}",
+                "-keystore doit \u00EAtre d\u00E9fini sur NONE si -storetype est {0}"},
+        {"Too.many.retries.program.terminated",
                  "Trop de tentatives, fin du programme"},
-        {"-storepasswd and -keypasswd commands not supported if -storetype is {0}",
-                "Les commandes -storepasswd et -keypasswd ne sont pas prises en charge si -storetype est d\u00e9fini sur {0}"},
-        {"-keypasswd commands not supported if -storetype is PKCS12",
-                "Les commandes -keypasswd ne sont pas prises en charge si -storetype est d\u00e9fini sur PKCS12"},
-        {"-keypass and -new can not be specified if -storetype is {0}",
-                "Les commandes -keypass et -new ne peuvent pas \u00eatre sp\u00e9cifi\u00e9es si -storetype est d\u00e9fini sur {0}"},
-        {"if -protected is specified, then -storepass, -keypass, and -new must not be specified",
-                "si -protected est sp\u00e9cifi\u00e9, alors -storepass, -keypass et -new ne doivent pas \u00eatre sp\u00e9cifi\u00e9s"},
-        {"if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified",
-                "Si \u0096srcprotected est sp\u00e9cifi\u00e9, alors -srcstorepass et \u0096srckeypass ne doivent pas \u00eatre sp\u00e9cifi\u00e9s"},
-        {"if keystore is not password protected, then -storepass, -keypass, and -new must not be specified",
-                "Si le keystore n'est pas prot\u00e9g\u00e9 par un mot de passe, les commandes -storepass, -keypass et -new ne doivent pas \u00eatre sp\u00e9cifi\u00e9es"},
-        {"if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified",
-                "Si le keystore source n'est pas prot\u00e9g\u00e9 par un mot de passe, les commandes -srcstorepass et -srckeypass ne doivent pas \u00eatre sp\u00e9cifi\u00e9es"},
-        {"Validity must be greater than zero",
-                "La validit\u00e9 doit \u00eatre sup\u00e9rieure \u00e0 z\u00e9ro"},
-        {"provName not a provider", "{0} n''est pas un fournisseur"},
-        {"Usage error: no command provided", "Erreur d'utilisation\u00a0: aucune commande fournie"},
-        {"Usage error, <arg> is not a legal command", "Erreur d''utilisation, {0} n''est pas une commande valide"},
-        {"Source keystore file exists, but is empty: ", "Le fichier du keystore source existe, mais il est vide\u00a0: "},
-        {"Please specify -srckeystore", "veuillez sp\u00e9cifier -srckeystore"},
-        {"Must not specify both -v and -rfc with 'list' command",
-                "-v et -rfc ne peuvent \u00eatre sp\u00e9cifi\u00e9s simultan\u00e9ment avec la commande 'list'"},
-        {"Key password must be at least 6 characters",
-                "Un mot de passe de cl\u00e9 doit comporter au moins 6 caract\u00e8res"},
-        {"New password must be at least 6 characters",
-                "Le nouveau mot de passe doit comporter au moins 6 caract\u00e8res"},
-        {"Keystore file exists, but is empty: ",
-                "Fichier Keystore existant mais vide : "},
-        {"Keystore file does not exist: ",
-                "Fichier Keystore introuvable : "},
-        {"Must specify destination alias", "L'alias de destination doit \u00eatre sp\u00e9cifi\u00e9"},
-        {"Must specify alias", "Vous devez sp\u00e9cifier un alias"},
-        {"Keystore password must be at least 6 characters",
-                "Un mot de passe de Keystore doit comporter au moins 6 caract\u00e8res"},
-        {"Enter keystore password:  ", "Tapez le mot de passe du Keystore :  "},
-        {"Enter source keystore password:  ", "Saisissez le mot de passe du keystore source\u00a0:  "},
-        {"Enter destination keystore password:  ", "Saisissez le mot de passe du keystore de destination\u00a0:  "},
-        {"Keystore password is too short - must be at least 6 characters",
-         "Mot de passe de Keystore trop court, il doit compter au moins 6 caract\u00e8res"},
-        {"Unknown Entry Type", "Type d'entr\u00e9e inconnu"},
-        {"Too many failures. Alias not changed", "Trop d'erreurs. Alias non modifi\u00e9"},
-        {"Entry for alias <alias> successfully imported.",
-                 "L''entr\u00e9e de l''alias {0} a \u00e9t\u00e9 import\u00e9e."},
-        {"Entry for alias <alias> not imported.", "L''entr\u00e9e de l''alias {0} n''a pas \u00e9t\u00e9 import\u00e9e."},
-        {"Problem importing entry for alias <alias>: <exception>.\nEntry for alias <alias> not imported.",
-                 "Probl\u00e8me lors de l''importation de l''entr\u00e9e de l''alias {0}\u00a0: {1}.\nL''entr\u00e9e de l''alias {0} n''a pas \u00e9t\u00e9 import\u00e9e."},
-        {"Import command completed:  <ok> entries successfully imported, <fail> entries failed or cancelled",
-                 "Commande d''importation ex\u00e9cut\u00e9e\u00a0:  {0} entr\u00e9es import\u00e9es, \u00e9chec ou annulation de {1} entr\u00e9es"},
-        {"Warning: Overwriting existing alias <alias> in destination keystore",
-                 "Avertissement\u00a0: L''alias existant {0} est \u00e9cras\u00e9 dans le keystore de destination"},
-        {"Existing entry alias <alias> exists, overwrite? [no]:  ",
-                 "L''alias d''entr\u00e9e {0} existe d\u00e9j\u00e0, voulez-vous l''\u00e9craser\u00a0? [non]\u00a0:  "},
-        {"Too many failures - try later", "Trop d'erreurs - r\u00e9essayez plus tard"},
-        {"Certification request stored in file <filename>",
-                "Demande de certification enregistr\u00e9e dans le fichier <{0}>"},
-        {"Submit this to your CA", "Soumettre \u00e0 votre CA"},
-        {"if alias not specified, destalias, srckeypass, and destkeypass must not be specified",
-            "si l'alias n'est pas sp\u00e9cifi\u00e9, destalias, srckeypass et destkeypass ne doivent pas \u00eatre sp\u00e9cifi\u00e9s"},
-        {"Certificate stored in file <filename>",
-                "Certificat enregistr\u00e9 dans le fichier <{0}>"},
-        {"Certificate reply was installed in keystore",
-                "R\u00e9ponse de certificat install\u00e9e dans le Keystore"},
-        {"Certificate reply was not installed in keystore",
-                "R\u00e9ponse de certificat non install\u00e9e dans le Keystore"},
-        {"Certificate was added to keystore",
-                "Certificat ajout\u00e9 au Keystore"},
-        {"Certificate was not added to keystore",
-                "Certificat non ajout\u00e9 au Keystore"},
-        {"[Storing ksfname]", "[Stockage de {0}]"},
-        {"alias has no public key (certificate)",
-                "{0} ne poss\u00e8de pas de cl\u00e9 publique (certificat)"},
-        {"Cannot derive signature algorithm",
-                "Impossible de d\u00e9duire l'algorithme de signature"},
-        {"Alias <alias> does not exist",
-                "Alias <{0}> introuvable"},
-        {"Alias <alias> has no certificate",
-                "L''alias <{0}> ne poss\u00e8de pas de certificat"},
-        {"Key pair not generated, alias <alias> already exists",
-                "Paire de cl\u00e9s non g\u00e9n\u00e9r\u00e9e, l''alias <{0}> existe d\u00e9j\u00e0"},
-        {"Cannot derive signature algorithm",
-                "Impossible de d\u00e9duire l'algorithme de signature"},
-        {"Generating keysize bit keyAlgName key pair and self-signed certificate (sigAlgName) with a validity of validality days\n\tfor: x500Name",
-                "G\u00e9n\u00e9ration d''une paire de cl\u00e9s {1} de {0} bits et d''un certificat autosign\u00e9 ({2}) d''une validit\u00e9 de {3} jours\n\tpour : {4}"},
-        {"Enter key password for <alias>", "Sp\u00e9cifiez le mot de passe de la cl\u00e9 pour <{0}>"},
-        {"\t(RETURN if same as keystore password):  ",
-                "\t(appuyez sur Entr\u00e9e s'il s'agit du mot de passe du Keystore) :  "},
-        {"Key password is too short - must be at least 6 characters",
-                "Le mot de passe de cl\u00e9 doit comporter au moins 6 caract\u00e8res."},
-        {"Too many failures - key not added to keystore",
-                "Trop d'erreurs - cl\u00e9 non ajout\u00e9e au Keystore"},
-        {"Destination alias <dest> already exists",
-                "L''alias de la destination <{0}> existe d\u00e9j\u00e0"},
-        {"Password is too short - must be at least 6 characters",
-                "Le mot de passe doit comporter au moins 6 caract\u00e8res."},
-        {"Too many failures. Key entry not cloned",
-                "Trop d'erreurs. Entr\u00e9e de cl\u00e9 non clon\u00e9e"},
-        {"key password for <alias>", "mot de passe de cl\u00e9 pour <{0}>"},
-        {"Keystore entry for <id.getName()> already exists",
-                "L''entr\u00e9e Keystore pour <{0}> existe d\u00e9j\u00e0"},
-        {"Creating keystore entry for <id.getName()> ...",
-                "Cr\u00e9ation d''une entr\u00e9e keystore pour <{0}> ..."},
-        {"No entries from identity database added",
-                "Aucune entr\u00e9e ajout\u00e9e \u00e0 partir de la base de donn\u00e9es d'identit\u00e9s"},
-        {"Alias name: alias", "Nom d''alias : {0}"},
-        {"Creation date: keyStore.getCreationDate(alias)",
-                "Date de cr\u00e9ation : {0,date}"},
-        {"alias, keyStore.getCreationDate(alias), ",
+        {".storepasswd.and.keypasswd.commands.not.supported.if.storetype.is.{0}",
+                "Les commandes -storepasswd et -keypasswd ne sont pas prises en charge si -storetype est d\u00E9fini sur {0}"},
+        {".keypasswd.commands.not.supported.if.storetype.is.PKCS12",
+                "Les commandes -keypasswd ne sont pas prises en charge si -storetype est d\u00E9fini sur PKCS12"},
+        {".keypass.and.new.can.not.be.specified.if.storetype.is.{0}",
+                "Les commandes -keypass et -new ne peuvent pas \u00EAtre sp\u00E9cifi\u00E9es si -storetype est d\u00E9fini sur {0}"},
+        {"if.protected.is.specified.then.storepass.keypass.and.new.must.not.be.specified",
+                "si -protected est sp\u00E9cifi\u00E9, -storepass, -keypass et -new ne doivent pas \u00EAtre indiqu\u00E9s"},
+        {"if.srcprotected.is.specified.then.srcstorepass.and.srckeypass.must.not.be.specified",
+                "Si -srcprotected est indiqu\u00E9, les commandes -srcstorepass et -srckeypass ne doivent pas \u00EAtre sp\u00E9cifi\u00E9es"},
+        {"if.keystore.is.not.password.protected.then.storepass.keypass.and.new.must.not.be.specified",
+                "Si le fichier de cl\u00E9s n'est pas prot\u00E9g\u00E9 par un mot de passe, les commandes -storepass, -keypass et -new ne doivent pas \u00EAtre sp\u00E9cifi\u00E9es"},
+        {"if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified",
+                "Si le fichier de cl\u00E9s source n'est pas prot\u00E9g\u00E9 par un mot de passe, les commandes -srcstorepass et -srckeypass ne doivent pas \u00EAtre sp\u00E9cifi\u00E9es"},
+        {"Illegal.startdate.value", "Valeur de date de d\u00E9but non admise"},
+        {"Validity.must.be.greater.than.zero",
+                "La validit\u00E9 doit \u00EAtre sup\u00E9rieure \u00E0 z\u00E9ro"},
+        {"provName.not.a.provider", "{0} n''est pas un fournisseur"},
+        {"Usage.error.no.command.provided", "Erreur de syntaxe\u00A0: aucune commande fournie"},
+        {"Source.keystore.file.exists.but.is.empty.", "Le fichier de cl\u00E9s source existe mais il est vide : "},
+        {"Please.specify.srckeystore", "Indiquez -srckeystore"},
+        {"Must.not.specify.both.v.and.rfc.with.list.command",
+                "-v et -rfc ne doivent pas \u00EAtre sp\u00E9cifi\u00E9s avec la commande 'list'"},
+        {"Key.password.must.be.at.least.6.characters",
+                "Un mot de passe de cl\u00E9 doit comporter au moins 6 caract\u00E8res"},
+        {"New.password.must.be.at.least.6.characters",
+                "Le nouveau mot de passe doit comporter au moins 6 caract\u00E8res"},
+        {"Keystore.file.exists.but.is.empty.",
+                "Fichier de cl\u00E9s existant mais vide : "},
+        {"Keystore.file.does.not.exist.",
+                "Le fichier de cl\u00E9s n'existe pas : "},
+        {"Must.specify.destination.alias", "L'alias de destination doit \u00EAtre sp\u00E9cifi\u00E9"},
+        {"Must.specify.alias", "L'alias doit \u00EAtre sp\u00E9cifi\u00E9"},
+        {"Keystore.password.must.be.at.least.6.characters",
+                "Un mot de passe de fichier de cl\u00E9s doit comporter au moins 6 caract\u00E8res"},
+        {"Enter.keystore.password.", "Entrez le mot de passe du fichier de cl\u00E9s :  "},
+        {"Enter.source.keystore.password.", "Entrez le mot de passe du fichier de cl\u00E9s source\u00A0:  "},
+        {"Enter.destination.keystore.password.", "Entrez le mot de passe du fichier de cl\u00E9s de destination\u00A0:  "},
+        {"Keystore.password.is.too.short.must.be.at.least.6.characters",
+         "Le mot de passe du fichier de cl\u00E9s est trop court : il doit comporter au moins 6 caract\u00E8res"},
+        {"Unknown.Entry.Type", "Type d'entr\u00E9e inconnu"},
+        {"Too.many.failures.Alias.not.changed", "Trop d'erreurs. Alias non modifi\u00E9"},
+        {"Entry.for.alias.alias.successfully.imported.",
+                 "L''entr\u00E9e de l''alias {0} a \u00E9t\u00E9 import\u00E9e."},
+        {"Entry.for.alias.alias.not.imported.", "L''entr\u00E9e de l''alias {0} n''a pas \u00E9t\u00E9 import\u00E9e."},
+        {"Problem.importing.entry.for.alias.alias.exception.Entry.for.alias.alias.not.imported.",
+                 "Probl\u00E8me lors de l''import de l''entr\u00E9e de l''alias {0}\u00A0: {1}.\nL''entr\u00E9e de l''alias {0} n''a pas \u00E9t\u00E9 import\u00E9e."},
+        {"Import.command.completed.ok.entries.successfully.imported.fail.entries.failed.or.cancelled",
+                 "Commande d''import ex\u00E9cut\u00E9e\u00A0: {0} entr\u00E9es import\u00E9es, \u00E9chec ou annulation de {1} entr\u00E9es"},
+        {"Warning.Overwriting.existing.alias.alias.in.destination.keystore",
+                 "Avertissement\u00A0: l''alias {0} existant sera remplac\u00E9 dans le fichier de cl\u00E9s d''acc\u00E8s de destination"},
+        {"Existing.entry.alias.alias.exists.overwrite.no.",
+                 "L''alias d''entr\u00E9e {0} existe d\u00E9j\u00E0. Voulez-vous le remplacer ? [non]\u00A0:  "},
+        {"Too.many.failures.try.later", "Trop d'erreurs. R\u00E9essayez plus tard"},
+        {"Certification.request.stored.in.file.filename.",
+                "Demande de certification stock\u00E9e dans le fichier <{0}>"},
+        {"Submit.this.to.your.CA", "Soumettre \u00E0 votre CA"},
+        {"if.alias.not.specified.destalias.srckeypass.and.destkeypass.must.not.be.specified",
+            "si l'alias n'est pas sp\u00E9cifi\u00E9, destalias, srckeypass et destkeypass ne doivent pas \u00EAtre sp\u00E9cifi\u00E9s"},
+        {"Certificate.stored.in.file.filename.",
+                "Certificat stock\u00E9 dans le fichier <{0}>"},
+        {"Certificate.reply.was.installed.in.keystore",
+                "R\u00E9ponse de certificat install\u00E9e dans le fichier de cl\u00E9s"},
+        {"Certificate.reply.was.not.installed.in.keystore",
+                "R\u00E9ponse de certificat non install\u00E9e dans le fichier de cl\u00E9s"},
+        {"Certificate.was.added.to.keystore",
+                "Certificat ajout\u00E9 au fichier de cl\u00E9s"},
+        {"Certificate.was.not.added.to.keystore",
+                "Certificat non ajout\u00E9 au fichier de cl\u00E9s"},
+        {".Storing.ksfname.", "[Stockage de {0}]"},
+        {"alias.has.no.public.key.certificate.",
+                "{0} ne poss\u00E8de pas de cl\u00E9 publique (certificat)"},
+        {"Cannot.derive.signature.algorithm",
+                "Impossible de d\u00E9duire l'algorithme de signature"},
+        {"Alias.alias.does.not.exist",
+                "L''alias <{0}> n''existe pas"},
+        {"Alias.alias.has.no.certificate",
+                "L''alias <{0}> ne poss\u00E8de pas de certificat"},
+        {"Key.pair.not.generated.alias.alias.already.exists",
+                "Paire de cl\u00E9s non g\u00E9n\u00E9r\u00E9e, l''alias <{0}> existe d\u00E9j\u00E0"},
+        {"Generating.keysize.bit.keyAlgName.key.pair.and.self.signed.certificate.sigAlgName.with.a.validity.of.validality.days.for",
+                "G\u00E9n\u00E9ration d''une paire de cl\u00E9s {1} de {0} bits et d''un certificat auto-sign\u00E9 ({2}) d''une validit\u00E9 de {3} jours\n\tpour : {4}"},
+        {"Enter.key.password.for.alias.", "Entrez le mot de passe de la cl\u00E9 pour <{0}>"},
+        {".RETURN.if.same.as.keystore.password.",
+                "\t(appuyez sur Entr\u00E9e s'il s'agit du mot de passe du fichier de cl\u00E9s) :  "},
+        {"Key.password.is.too.short.must.be.at.least.6.characters",
+                "Le mot de passe de la cl\u00E9 est trop court : il doit comporter au moins 6 caract\u00E8res"},
+        {"Too.many.failures.key.not.added.to.keystore",
+                "Trop d'erreurs. Cl\u00E9 non ajout\u00E9e au fichier de cl\u00E9s"},
+        {"Destination.alias.dest.already.exists",
+                "L''alias de la destination <{0}> existe d\u00E9j\u00E0"},
+        {"Password.is.too.short.must.be.at.least.6.characters",
+                "Le mot de passe est trop court : il doit comporter au moins 6 caract\u00E8res"},
+        {"Too.many.failures.Key.entry.not.cloned",
+                "Trop d'erreurs. Entr\u00E9e de cl\u00E9 non clon\u00E9e"},
+        {"key.password.for.alias.", "mot de passe de cl\u00E9 pour <{0}>"},
+        {"Keystore.entry.for.id.getName.already.exists",
+                "L''entr\u00E9e de fichier de cl\u00E9s d''acc\u00E8s pour <{0}> existe d\u00E9j\u00E0"},
+        {"Creating.keystore.entry.for.id.getName.",
+                "Cr\u00E9ation d''une entr\u00E9e de fichier de cl\u00E9s d''acc\u00E8s pour <{0}>..."},
+        {"No.entries.from.identity.database.added",
+                "Aucune entr\u00E9e ajout\u00E9e \u00E0 partir de la base de donn\u00E9es d'identit\u00E9s"},
+        {"Alias.name.alias", "Nom d''alias : {0}"},
+        {"Creation.date.keyStore.getCreationDate.alias.",
+                "Date de cr\u00E9ation : {0,date}"},
+        {"alias.keyStore.getCreationDate.alias.",
                 "{0}, {1,date}, "},
-        {"alias, ", "{0}, "},
-        {"Entry type: <type>", "Type d''entr\u00e9e\u00a0: {0}"},
-        {"Certificate chain length: ", "Longueur de cha\u00eene du certificat : "},
-        {"Certificate[(i + 1)]:", "Certificat[{0,number,integer}]:"},
-        {"Certificate fingerprint (MD5): ", "Empreinte du certificat (MD5) : "},
-        {"Entry type: trustedCertEntry\n", "Type d'entr\u00e9e : trustedCertEntry\n"},
-        {"trustedCertEntry,", "trustedCertEntry,"},
-        {"Keystore type: ", "Type Keystore : "},
-        {"Keystore provider: ", "Fournisseur Keystore : "},
-        {"Your keystore contains keyStore.size() entry",
-                "Votre Keystore contient {0,number,integer} entr\u00e9e(s)"},
-        {"Your keystore contains keyStore.size() entries",
-                "Votre Keystore contient {0,number,integer} entr\u00e9e(s)"},
-        {"Failed to parse input", "L'analyse de l'entr\u00e9e a \u00e9chou\u00e9"},
-        {"Empty input", "Entr\u00e9e vide"},
-        {"Not X.509 certificate", "Pas un certificat X.509"},
-        {"Cannot derive signature algorithm",
-                "Impossible de d\u00e9duire l'algorithme de signature"},
-        {"alias has no public key", "{0} ne poss\u00e8de pas de cl\u00e9 publique"},
-        {"alias has no X.509 certificate", "{0} ne poss\u00e8de pas de certificat X.509"},
-        {"New certificate (self-signed):", "Nouveau certificat (auto-sign\u00e9) :"},
-        {"Reply has no certificates", "La r\u00e9ponse n'a pas de certificat"},
-        {"Certificate not imported, alias <alias> already exists",
-                "Certificat non import\u00e9, l''alias <{0}> existe d\u00e9j\u00e0"},
-        {"Input not an X.509 certificate", "L'entr\u00e9e n'est pas un certificat X.509"},
-        {"Certificate already exists in keystore under alias <trustalias>",
-                "Le certificat existe d\u00e9j\u00e0 dans le Keystore sous l''alias <{0}>"},
-        {"Do you still want to add it? [no]:  ",
+        {"alias.", "{0}, "},
+        {"Entry.type.type.", "Type d''entr\u00E9e\u00A0: {0}"},
+        {"Certificate.chain.length.", "Longueur de cha\u00EEne du certificat : "},
+        {"Certificate.i.1.", "Certificat[{0,number,integer}]:"},
+        {"Certificate.fingerprint.SHA1.", "Empreinte du certificat (SHA1) : "},
+        {"Entry.type.trustedCertEntry.", "Type d'entr\u00E9e : trustedCertEntry\n"},
+        {"trustedCertEntry.", "trustedCertEntry,"},
+        {"Keystore.type.", "Type de fichier de cl\u00E9s : "},
+        {"Keystore.provider.", "Fournisseur de fichier de cl\u00E9s : "},
+        {"Your.keystore.contains.keyStore.size.entry",
+                "Votre fichier de cl\u00E9s d''acc\u00E8s contient {0,number,integer} entr\u00E9e"},
+        {"Your.keystore.contains.keyStore.size.entries",
+                "Votre fichier de cl\u00E9s d''acc\u00E8s contient {0,number,integer} entr\u00E9es"},
+        {"Failed.to.parse.input", "L'analyse de l'entr\u00E9e a \u00E9chou\u00E9"},
+        {"Empty.input", "Entr\u00E9e vide"},
+        {"Not.X.509.certificate", "Pas un certificat X.509"},
+        {"alias.has.no.public.key", "{0} ne poss\u00E8de pas de cl\u00E9 publique"},
+        {"alias.has.no.X.509.certificate", "{0} ne poss\u00E8de pas de certificat X.509"},
+        {"New.certificate.self.signed.", "Nouveau certificat (auto-sign\u00E9) :"},
+        {"Reply.has.no.certificates", "La r\u00E9ponse n'a pas de certificat"},
+        {"Certificate.not.imported.alias.alias.already.exists",
+                "Certificat non import\u00E9, l''alias <{0}> existe d\u00E9j\u00E0"},
+        {"Input.not.an.X.509.certificate", "L'entr\u00E9e n'est pas un certificat X.509"},
+        {"Certificate.already.exists.in.keystore.under.alias.trustalias.",
+                "Le certificat existe d\u00E9j\u00E0 dans le fichier de cl\u00E9s d''acc\u00E8s sous l''alias <{0}>"},
+        {"Do.you.still.want.to.add.it.no.",
                 "Voulez-vous toujours l'ajouter ? [non] :  "},
-        {"Certificate already exists in system-wide CA keystore under alias <trustalias>",
-                "Le certificat existe d\u00e9j\u00e0 dans le Keystore CA syst\u00e8me sous l''alias <{0}>alias <{0}>"},
-        {"Do you still want to add it to your own keystore? [no]:  ",
-                "Voulez-vous toujours l'ajouter \u00e0 votre Keystore ? [non] :  "},
-        {"Trust this certificate? [no]:  ", "Faire confiance \u00e0 ce certificat ? [non] :  "},
+        {"Certificate.already.exists.in.system.wide.CA.keystore.under.alias.trustalias.",
+                "Le certificat existe d\u00E9j\u00E0 dans le fichier de cl\u00E9s d''acc\u00E8s CA syst\u00E8me sous l''alias <{0}>"},
+        {"Do.you.still.want.to.add.it.to.your.own.keystore.no.",
+                "Voulez-vous toujours l'ajouter \u00E0 votre fichier de cl\u00E9s ? [non] :  "},
+        {"Trust.this.certificate.no.", "Faire confiance \u00E0 ce certificat ? [non] :  "},
         {"YES", "OUI"},
-        {"New prompt: ", "Nouveau {0} : "},
-        {"Passwords must differ", "Les mots de passe doivent diff\u00e9rer"},
-        {"Re-enter new prompt: ", "Sp\u00e9cifiez nouveau {0} : "},
-        {"Re-enter new password: ", "Ressaisissez le nouveau mot de passe : "},
-        {"They don't match. Try again", "ne correspondent pas. R\u00e9essayez."},
-        {"Enter prompt alias name:  ", "Sp\u00e9cifiez le nom d''alias {0} :  "},
-        {"Enter new alias name\t(RETURN to cancel import for this entry):  ",
-                 "Saisissez le nom du nouvel alias\t(ou appuyez sur ENTR\u00c9E pour annuler l'importation pour cette entr\u00e9e)\u00a0:  "},
-        {"Enter alias name:  ", "Sp\u00e9cifiez le nom d'alias :  "},
-        {"\t(RETURN if same as for <otherAlias>)",
-                "\t(appuyez sur Entr\u00e9e si le r\u00e9sultat est identique \u00e0 <{0}>)"},
-        {"*PATTERN* printX509Cert",
-                "Propri\u00e9taire\u00a0: {0}\n\u00c9metteur\u00a0: {1}\nNum\u00e9ro de s\u00e9rie\u00a0: {2}\nValide du\u00a0: {3} au\u00a0: {4}\nEmpreintes du certificat\u00a0:\n\t MD5\u00a0:  {5}\n\t SHA1\u00a0: {6}\n\t Nom de l''algorithme de signature\u00a0: {7}\n\t Version\u00a0: {8}"},
-        {"What is your first and last name?",
-                "Quels sont vos pr\u00e9nom et nom ?"},
-        {"What is the name of your organizational unit?",
-                "Quel est le nom de votre unit\u00e9 organisationnelle ?"},
-        {"What is the name of your organization?",
-                "Quelle est le nom de votre organisation ?"},
-        {"What is the name of your City or Locality?",
-                "Quel est le nom de votre ville de r\u00e9sidence ?"},
-        {"What is the name of your State or Province?",
-                "Quel est le nom de votre \u00e9tat ou province ?"},
-        {"What is the two-letter country code for this unit?",
-                "Quel est le code de pays \u00e0 deux lettres pour cette unit\u00e9 ?"},
-        {"Is <name> correct?", "Est-ce {0} ?"},
+        {"New.prompt.", "Nouveau {0} : "},
+        {"Passwords.must.differ", "Les mots de passe doivent diff\u00E9rer"},
+        {"Re.enter.new.prompt.", "Indiquez encore le nouveau {0} : "},
+        {"Re.enter.new.password.", "Ressaisissez le nouveau mot de passe : "},
+        {"They.don.t.match.Try.again", "Ils sont diff\u00E9rents. R\u00E9essayez."},
+        {"Enter.prompt.alias.name.", "Indiquez le nom d''alias {0} :  "},
+        {"Enter.new.alias.name.RETURN.to.cancel.import.for.this.entry.",
+                 "Saisissez le nom du nouvel alias\t(ou appuyez sur Entr\u00E9e pour annuler l'import de cette entr\u00E9e)\u00A0:  "},
+        {"Enter.alias.name.", "Indiquez le nom d'alias :  "},
+        {".RETURN.if.same.as.for.otherAlias.",
+                "\t(appuyez sur Entr\u00E9e si le r\u00E9sultat est identique \u00E0 <{0}>)"},
+        {".PATTERN.printX509Cert",
+                "Propri\u00E9taire : {0}\nEmetteur : {1}\nNum\u00E9ro de s\u00E9rie : {2}\nValide du : {3} au : {4}\nEmpreintes du certificat :\n\t MD5:  {5}\n\t SHA1 : {6}\n\t SHA256 : {7}\n\t Nom de l''algorithme de signature : {8}\n\t Version : {9}"},
+        {"What.is.your.first.and.last.name.",
+                "Quels sont vos nom et pr\u00E9nom ?"},
+        {"What.is.the.name.of.your.organizational.unit.",
+                "Quel est le nom de votre unit\u00E9 organisationnelle ?"},
+        {"What.is.the.name.of.your.organization.",
+                "Quel est le nom de votre entreprise ?"},
+        {"What.is.the.name.of.your.City.or.Locality.",
+                "Quel est le nom de votre ville de r\u00E9sidence ?"},
+        {"What.is.the.name.of.your.State.or.Province.",
+                "Quel est le nom de votre \u00E9tat ou province ?"},
+        {"What.is.the.two.letter.country.code.for.this.unit.",
+                "Quel est le code pays \u00E0 deux lettres pour cette unit\u00E9 ?"},
+        {"Is.name.correct.", "Est-ce {0} ?"},
         {"no", "non"},
         {"yes", "oui"},
         {"y", "o"},
-        {"  [defaultValue]:  ", "  [{0}] :  "},
-        {"Alias <alias> has no key",
-                "L''alias <{0}> n''est associ\u00e9 \u00e0 aucune cl\u00e9"},
-        {"Alias <alias> references an entry type that is not a private key entry.  The -keyclone command only supports cloning of private key entries",
-                 "L''entr\u00e9e \u00e0 laquelle l''alias <{0}> fait r\u00e9f\u00e9rence n''est pas une entr\u00e9e de type cl\u00e9 priv\u00e9e.  La commande -keyclone prend uniquement en charge le clonage des cl\u00e9s priv\u00e9es"},
+        {".defaultValue.", "  [{0}]:  "},
+        {"Alias.alias.has.no.key",
+                "L''alias <{0}> n''est associ\u00E9 \u00E0 aucune cl\u00E9"},
+        {"Alias.alias.references.an.entry.type.that.is.not.a.private.key.entry.The.keyclone.command.only.supports.cloning.of.private.key",
+                 "L''entr\u00E9e \u00E0 laquelle l''alias <{0}> fait r\u00E9f\u00E9rence n''est pas une entr\u00E9e de type cl\u00E9 priv\u00E9e. La commande -keyclone prend uniquement en charge le clonage des cl\u00E9s priv\u00E9es"},
 
-        {"*****************  WARNING WARNING WARNING  *****************",
-            "*****************  A V E R T I S S E M E N T  *****************"},
+        {".WARNING.WARNING.WARNING.",
+            "*****************  WARNING WARNING WARNING  *****************"},
+        {"Signer.d.", "Signataire n\u00B0%d :"},
+        {"Timestamp.", "Horodatage :"},
+        {"Signature.", "Signature :"},
+        {"CRLs.", "Listes des certificats r\u00E9voqu\u00E9s (CRL) :"},
+        {"Certificate.owner.", "Propri\u00E9taire du certificat : "},
+        {"Not.a.signed.jar.file", "Fichier JAR non sign\u00E9"},
+        {"No.certificate.from.the.SSL.server",
+                "Aucun certificat du serveur SSL"},
 
         // Translators of the following 5 pairs, ATTENTION:
         // the next 5 string pairs are meant to be combined into 2 paragraphs,
         // 1+3+4 and 2+3+5. make sure your translation also does.
-        {"* The integrity of the information stored in your keystore  *",
-            "* L'int\u00e9grit\u00e9 des informations enregistr\u00e9es dans votre Keystore  *"},
-        {"* The integrity of the information stored in the srckeystore*",
-            "* L'int\u00e9grit\u00e9 des informations enregistr\u00e9es dans srckeystore*"},
-        {"* has NOT been verified!  In order to verify its integrity, *",
-            "* n'a PAS \u00e9t\u00e9 v\u00e9rifi\u00e9e !  Pour cela, *"},
-        {"* you must provide your keystore password.                  *",
-            "* vous devez sp\u00e9cifier le mot de passe de votre Keystore.                  *"},
-        {"* you must provide the srckeystore password.                *",
-            "* vous devez fournir le mot de passe srckeystore.                *"},
+        {".The.integrity.of.the.information.stored.in.your.keystore.",
+            "* L'int\u00E9grit\u00E9 des informations stock\u00E9es dans votre fichier de cl\u00E9s *"},
+        {".The.integrity.of.the.information.stored.in.the.srckeystore.",
+            "* L'int\u00E9grit\u00E9 des informations stock\u00E9es dans le fichier de cl\u00E9s source *"},
+        {".has.NOT.been.verified.In.order.to.verify.its.integrity.",
+            "* n'a PAS \u00E9t\u00E9 v\u00E9rifi\u00E9e. Pour cela, *"},
+        {".you.must.provide.your.keystore.password.",
+            "* vous devez fournir le mot de passe de votre fichier de cl\u00E9s.                  *"},
+        {".you.must.provide.the.srckeystore.password.",
+            "* vous devez fournir le mot de passe de votre fichier de cl\u00E9s source.                  *"},
 
 
-        {"Certificate reply does not contain public key for <alias>",
-                "La r\u00e9ponse au certificat ne contient pas de cl\u00e9 publique pour <{0}>"},
-        {"Incomplete certificate chain in reply",
-                "Cha\u00eene de certificat incompl\u00e8te dans la r\u00e9ponse"},
-        {"Certificate chain in reply does not verify: ",
-                "La cha\u00eene de certificat de la r\u00e9ponse ne concorde pas : "},
-        {"Top-level certificate in reply:\n",
-                "Certificat du plus haut niveau dans la r\u00e9ponse :\n"},
-        {"... is not trusted. ", "... n'est pas digne de confiance. "},
-        {"Install reply anyway? [no]:  ", "Installer la r\u00e9ponse quand m\u00eame ? [non] :  "},
+        {"Certificate.reply.does.not.contain.public.key.for.alias.",
+                "La r\u00E9ponse au certificat ne contient pas de cl\u00E9 publique pour <{0}>"},
+        {"Incomplete.certificate.chain.in.reply",
+                "Cha\u00EEne de certificat incompl\u00E8te dans la r\u00E9ponse"},
+        {"Certificate.chain.in.reply.does.not.verify.",
+                "La cha\u00EEne de certificat de la r\u00E9ponse ne concorde pas : "},
+        {"Top.level.certificate.in.reply.",
+                "Certificat de niveau sup\u00E9rieur dans la r\u00E9ponse :\n"},
+        {".is.not.trusted.", "... non s\u00E9curis\u00E9. "},
+        {"Install.reply.anyway.no.", "Installer la r\u00E9ponse quand m\u00EAme ? [non] :  "},
         {"NO", "NON"},
-        {"Public keys in reply and keystore don't match",
-                "Les cl\u00e9s publiques de la r\u00e9ponse et du Keystore ne concordent pas"},
-        {"Certificate reply and certificate in keystore are identical",
-                "La r\u00e9ponse au certificat et le certificat du Keystore sont identiques"},
-        {"Failed to establish chain from reply",
-                "Impossible de cr\u00e9er une cha\u00eene \u00e0 partir de la r\u00e9ponse"},
+        {"Public.keys.in.reply.and.keystore.don.t.match",
+                "Les cl\u00E9s publiques de la r\u00E9ponse et du fichier de cl\u00E9s ne concordent pas"},
+        {"Certificate.reply.and.certificate.in.keystore.are.identical",
+                "La r\u00E9ponse au certificat et le certificat du fichier de cl\u00E9s sont identiques"},
+        {"Failed.to.establish.chain.from.reply",
+                "Impossible de cr\u00E9er une cha\u00EEne \u00E0 partir de la r\u00E9ponse"},
         {"n", "n"},
-        {"Wrong answer, try again", "R\u00e9ponse incorrecte, recommencez"},
-        {"Secret key not generated, alias <alias> already exists",
-                "Cl\u00e9 secr\u00e8te non g\u00e9n\u00e9r\u00e9e, l'alias <{0}> existe d\u00e9j\u00e0"},
-        {"Please provide -keysize for secret key generation",
-                "Veuillez sp\u00e9cifier -keysize pour la g\u00e9n\u00e9ration de la cl\u00e9 secr\u00e8te"},
-        {"keytool usage:\n", "Syntaxe keytool :\n"},
-
-        {"Extensions: ", "Extensions\u00a0: "},
-
-        {"-certreq     [-v] [-protected]",
-                "-certreq     [-v] [-protected]"},
-        {"\t     [-alias <alias>] [-sigalg <sigalg>]",
-                "\t     [-alias <alias>] [-sigalg <sigalg>]"},
-        {"\t     [-file <csr_file>] [-keypass <keypass>]",
-                "\t     [-file <csr_file>] [-keypass <mot_passe_cl\u00e9>]"},
-        {"\t     [-keystore <keystore>] [-storepass <storepass>]",
-                "\t     [-keystore <keystore>] [-storepass <mot_passe_store>]"},
-        {"\t     [-storetype <storetype>] [-providername <name>]",
-                "\t     [-storetype <storetype>] [-providername <name>]"},
-        {"\t     [-providerclass <provider_class_name> [-providerarg <arg>]] ...",
-                "\t     [-providerclass <provider_class_name> [-providerarg <arg>]] ..."},
-        {"\t     [-providerpath <pathlist>]",
-                "\t     [-providerpath <pathlist>]"},
-        {"-delete      [-v] [-protected] -alias <alias>",
-                "-delete      [-v] [-protected] -alias <alias>"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-export      [-v] [-rfc] [-protected]",
-        //       "-export      [-v] [-rfc] [-protected]"},
-        {"-exportcert  [-v] [-rfc] [-protected]",
-                "-exportcert  [-v] [-rfc] [-protected]"},
-        {"\t     [-alias <alias>] [-file <cert_file>]",
-                "\t     [-alias <alias>] [-file <fichier_cert>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-genkey      [-v] [-protected]",
-        //        "-genkey      [-v] [-protected]"},
-        {"-genkeypair  [-v] [-protected]",
-                "-genkeypair  [-v] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
-        {"\t     [-keyalg <keyalg>] [-keysize <keysize>]",
-                "\t     [-keyalg <keyalg>] [-keysize <taille_cl\u00e9>]"},
-        {"\t     [-sigalg <sigalg>] [-dname <dname>]",
-                "\t     [-sigalg <sigalg>] [-dname <nomd>]"},
-        {"\t     [-validity <valDays>] [-keypass <keypass>]",
-                "\t     [-validity <joursVal>] [-keypass <mot_passe_cl\u00e9>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-genseckey   [-v] [-protected]",
-                "-genkeypair  [-v] [-protected]"},
-        /** rest is same as -certreq starting from -keystore **/
+        {"Wrong.answer.try.again", "R\u00E9ponse incorrecte, recommencez"},
+        {"Secret.key.not.generated.alias.alias.already.exists",
+                "Cl\u00E9 secr\u00E8te non g\u00E9n\u00E9r\u00E9e, l''alias <{0}> existe d\u00E9j\u00E0"},
+        {"Please.provide.keysize.for.secret.key.generation",
+                "Indiquez -keysize pour la g\u00E9n\u00E9ration de la cl\u00E9 secr\u00E8te"},
 
-        {"-help", "-help"},
-        //{"-identitydb  [-v] [-protected]",
-        //      "-identitydb  [-v] [-protected]"},
-        //{"\t     [-file <idb_file>]", "\t     [-file <idb_file>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-import      [-v] [-noprompt] [-trustcacerts] [-protected]",
-        //       "-import      [-v] [-noprompt] [-trustcacerts] [-protected]"},
-        {"-importcert  [-v] [-noprompt] [-trustcacerts] [-protected]",
-                "-importcert  [-v] [-noprompt] [-trustcacerts] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
-        {"\t     [-alias <alias>] [-keypass <keypass>]",
-            "\t     [-alias <alias>] [-keypass <keypass>]"},
-        {"\t     [-file <cert_file>] [-keypass <keypass>]",
-                "\t     [-file <fichier_cert>] [-keypass <mot_passe_cl\u00e9>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-importkeystore [-v] ",
-                "-importkeystore [-v] "},
-        {"\t     [-srckeystore <srckeystore>] [-destkeystore <destkeystore>]",
-                "\t     [-srckeystore <srckeystore>] [-destkeystore <destkeystore>]"},
-        {"\t     [-srcstoretype <srcstoretype>] [-deststoretype <deststoretype>]",
-                "\t     [-srcstoretype <srcstoretype>] [-deststoretype <deststoretype>]"},
-        {"\t     [-srcprotected] [-destprotected]",
-                "\t     [-srcprotected] [-destprotected]"},
-        {"\t     [-srcstorepass <srcstorepass>] [-deststorepass <deststorepass>]",
-                "\t     [-srcstorepass <srcstorepass>] [-deststorepass <deststorepass>]"},
-        {"\t     [-srcprovidername <srcprovidername>]\n\t     [-destprovidername <destprovidername>]",  // ligne trop longue, scind\u00e9e
-                 "\t     [-srcprovidername <srcprovidername>]\n\t     [-destprovidername <destprovidername>]"},
-        {"\t     [-srcalias <srcalias> [-destalias <destalias>]",
-                "\t     [-srcalias <srcalias> [-destalias <destalias>]"},
-        {"\t       [-srckeypass <srckeypass>] [-destkeypass <destkeypass>]]",
-                "\t       [-srckeypass <srckeypass>] [-destkeypass <destkeypass>]]"},
-        {"\t     [-noprompt]", "\t     [-noprompt]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-changealias [-v] [-protected] -alias <alias> -destalias <destalias>",
-                "-changealias [-v] [-protected] -alias <alias> -destalias <destalias>"},
-        {"\t     [-keypass <keypass>]", "\t     [-keypass <keypass>]"},
-
-        //{"-keyclone    [-v] [-protected]",
-        //      "-keyclone    [-v] [-protected]"},
-        //{"\t     [-alias <alias>] -dest <dest_alias>",
-        //      "\t     [-alias <alias>] -dest <dest_alias>"},
-        //{"\t     [-keypass <keypass>] [-new <new_keypass>]",
-        //      "\t     [-keypass <keypass>] [-new <new_keypass>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-keypasswd   [-v] [-alias <alias>]",
-                "-keypasswd   [-v] [-alias <alias>]"},
-        {"\t     [-keypass <old_keypass>] [-new <new_keypass>]",
-                "\t     [-keypass <ancien_mot_passe_cl\u00e9>] [-new <nouveau_mot_passe_cl\u00e9>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-list        [-v | -rfc] [-protected]",
-                "-list        [-v | -rfc] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-printcert   [-v] [-file <cert_file>]",
-                "-printcert   [-v] [-file <fichier_cert>]"},
-
-        //{"-selfcert    [-v] [-protected]",
-        //      "-selfcert    [-v] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
-        //{"\t     [-dname <dname>] [-validity <valDays>]",
-        //      "\t     [-dname <dname>] [-validity <valDays>]"},
-        //{"\t     [-keypass <keypass>] [-sigalg <sigalg>]",
-        //      "\t     [-keypass <keypass>] [-sigalg <sigalg>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-storepasswd [-v] [-new <new_storepass>]",
-                "-storepasswd [-v] [-new <new_storepass>]"},
-        /** rest is same as -certreq starting from -keystore **/
+        {"Extensions.", "Extensions\u00A0: "},
+        {".Empty.value.", "(Valeur vide)"},
+        {"Extension.Request.", "Demande d'extension :"},
+        {"PKCS.10.Certificate.Request.Version.1.0.Subject.s.Public.Key.s.format.s.key.",
+                "Demande de certificat PKCS #10 (version 1.0)\nSujet : %s\nCl\u00E9 publique : format %s pour la cl\u00E9 %s\n"},
+        {"Unknown.keyUsage.type.", "Type keyUsage inconnu : "},
+        {"Unknown.extendedkeyUsage.type.", "Type extendedkeyUsage inconnu : "},
+        {"Unknown.AccessDescription.type.", "Type AccessDescription inconnu : "},
+        {"Unrecognized.GeneralName.type.", "Type GeneralName non reconnu : "},
+        {"This.extension.cannot.be.marked.as.critical.",
+                 "Cette extension ne peut pas \u00EAtre marqu\u00E9e comme critique. "},
+        {"Odd.number.of.hex.digits.found.", "Nombre impair de chiffres hexad\u00E9cimaux trouv\u00E9 : "},
+        {"Unknown.extension.type.", "Type d'extension inconnu : "},
+        {"command.{0}.is.ambiguous.", "commande {0} ambigu\u00EB :"},
 
         // policytool
-        {"Warning: A public key for alias 'signers[i]' does not exist.  Make sure a KeyStore is properly configured.",
-                "Avertissement\u00a0: il n'existe pas de cl\u00e9 publique pour l'alias {0}.  V\u00e9rifiez que le keystore est correctement configur\u00e9."},
-        {"Warning: Class not found: class", "Avertissement : Classe introuvable : {0}"},
-        {"Warning: Invalid argument(s) for constructor: arg",
-                "Avertissement\u00a0: argument(s) non valide(s) pour le constructeur\u00a0: {0}"},
-        {"Illegal Principal Type: type", "Type de mandant non admis : {0}"},
-        {"Illegal option: option", "Option non admise : {0}"},
-        {"Usage: policytool [options]", "Syntaxe : policytool [options]"},
-        {"  [-file <file>]    policy file location",
-                "  [-file <fichier>]    emplacement du fichier de r\u00e8gles"},
+        {"Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured.",
+                "Avertissement\u00A0: il n''existe pas de cl\u00E9 publique pour l''alias {0}. V\u00E9rifiez que le fichier de cl\u00E9s d''acc\u00E8s est correctement configur\u00E9."},
+        {"Warning.Class.not.found.class", "Avertissement : classe introuvable - {0}"},
+        {"Warning.Invalid.argument.s.for.constructor.arg",
+                "Avertissement\u00A0: arguments non valides pour le constructeur\u00A0- {0}"},
+        {"Illegal.Principal.Type.type", "Type de principal non admis : {0}"},
+        {"Illegal.option.option", "Option non admise : {0}"},
+        {"Usage.policytool.options.", "Syntaxe : policytool [options]"},
+        {".file.file.policy.file.location",
+                "  [-file <file>]    emplacement du fichier de r\u00E8gles"},
         {"New", "Nouveau"},
         {"Open", "Ouvrir"},
         {"Save", "Enregistrer"},
-        {"Save As", "Enregistrer sous"},
-        {"View Warning Log", "Afficher le journal des avertissements"},
+        {"Save.As", "Enregistrer sous"},
+        {"View.Warning.Log", "Afficher le journal des avertissements"},
         {"Exit", "Quitter"},
-        {"Add Policy Entry", "Ajouter une r\u00e8gle"},
-        {"Edit Policy Entry", "Modifier une r\u00e8gle"},
-        {"Remove Policy Entry", "Supprimer une r\u00e8gle"},
-        {"Edit", "Edition"},
+        {"Add.Policy.Entry", "Ajouter une r\u00E8gle"},
+        {"Edit.Policy.Entry", "Modifier une r\u00E8gle"},
+        {"Remove.Policy.Entry", "Enlever une r\u00E8gle"},
+        {"Edit", "Modifier"},
         {"Retain", "Conserver"},
 
-        {"Warning: File name may include escaped backslash characters. " +
-                        "It is not necessary to escape backslash characters " +
-                        "(the tool escapes characters as necessary when writing " +
-                        "the policy contents to the persistent store).\n\n" +
-                        "Click on Retain to retain the entered name, or click on " +
-                        "Edit to edit the name.",
-            "Warning: File name may include escaped backslash characters. " +
-                        "It is not necessary to escape backslash characters " +
-                        "(the tool escapes characters as necessary when writing " +
-                        "the policy contents to the persistent store).\n\n" +
-                        "Click on Retain to retain the entered name, or click on " +
-                        "Edit to edit the name."},
+        {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
+            "Avertissement : il se peut que le nom de fichier contienne des barres obliques inverses avec caract\u00E8re d'\u00E9chappement. Il n'est pas n\u00E9cessaire d'ajouter un caract\u00E8re d'\u00E9chappement aux barres obliques inverses. L'outil proc\u00E8de \u00E0 l'\u00E9chappement si n\u00E9cessaire lorsqu'il \u00E9crit le contenu des r\u00E8gles dans la zone de stockage persistant).\n\nCliquez sur Conserver pour garder le nom saisi ou sur Modifier pour le remplacer."},
 
-        {"Add Public Key Alias", "Ajouter un alias de cl\u00e9 publique"},
-        {"Remove Public Key Alias", "Supprimer un alias de cl\u00e9 publique"},
+        {"Add.Public.Key.Alias", "Ajouter un alias de cl\u00E9 publique"},
+        {"Remove.Public.Key.Alias", "Enlever un alias de cl\u00E9 publique"},
         {"File", "Fichier"},
-        {"KeyStore", "KeyStore"},
-        {"Policy File:", "Fichier de r\u00e8gles :"},
-        {"Could not open policy file: policyFile: e.toString()",
-                "Impossible d''ouvrir le fichier de strat\u00e9gie\u00a0: {0}: {1}"},
-        {"Policy Tool", "Policy Tool"},
-        {"Errors have occurred while opening the policy configuration.  View the Warning Log for more information.",
-                "Des erreurs se sont produites \u00e0 l'ouverture de la configuration de r\u00e8gles. Consultez le journal des avertissements pour obtenir des informations."},
+        {"KeyStore", "Fichier de cl\u00E9s"},
+        {"Policy.File.", "Fichier de r\u00E8gles :"},
+        {"Could.not.open.policy.file.policyFile.e.toString.",
+                "Impossible d''ouvrir le fichier de r\u00E8gles\u00A0: {0}: {1}"},
+        {"Policy.Tool", "Policy Tool"},
+        {"Errors.have.occurred.while.opening.the.policy.configuration.View.the.Warning.Log.for.more.information.",
+                "Des erreurs se sont produites \u00E0 l'ouverture de la configuration de r\u00E8gles. Pour plus d'informations, consultez le journal des avertissements."},
         {"Error", "Erreur"},
         {"OK", "OK"},
-        {"Status", "\u00c9tat"},
+        {"Status", "Statut"},
         {"Warning", "Avertissement"},
-        {"Permission:                                                       ",
-                "Permission :                                                       "},
-        {"Principal Type:", "Type de principal :"},
-        {"Principal Name:", "Nom de principal :"},
-        {"Target Name:                                                    ",
+        {"Permission.",
+                "Droit :                                                       "},
+        {"Principal.Type.", "Type de principal :"},
+        {"Principal.Name.", "Nom de principal :"},
+        {"Target.Name.",
                 "Nom de cible :                                                    "},
-        {"Actions:                                                             ",
+        {"Actions.",
                 "Actions :                                                             "},
-        {"OK to overwrite existing file filename?",
+        {"OK.to.overwrite.existing.file.filename.",
                 "Remplacer le fichier existant {0} ?"},
         {"Cancel", "Annuler"},
-        {"CodeBase:", "Base de code :"},
-        {"SignedBy:", "Sign\u00e9 par :"},
-        {"Add Principal", "Ajouter un principal"},
-        {"Edit Principal", "Modifier un principal"},
-        {"Remove Principal", "Supprimer un principal"},
-        {"Principals:", "Principaux :"},
-        {"  Add Permission", " Ajouter une permission"},
-        {"  Edit Permission", " Modifier une permission"},
-        {"Remove Permission", "Supprimer une permission"},
-        {"Done", "Termin\u00e9"},
-        {"KeyStore URL:", "URL du KeyStore :"},
-        {"KeyStore Type:", "Type de KeyStore :"},
-        {"KeyStore Provider:", "Fournisseur du KeyStore :"},
-        {"KeyStore Password URL:", "URL du mot de passe du KeyStore :"},
+        {"CodeBase.", "Base de code :"},
+        {"SignedBy.", "Sign\u00E9 par :"},
+        {"Add.Principal", "Ajouter un principal"},
+        {"Edit.Principal", "Modifier un principal"},
+        {"Remove.Principal", "Enlever un principal"},
+        {"Principals.", "Principaux :"},
+        {".Add.Permission", "  Ajouter un droit"},
+        {".Edit.Permission", "  Modifier un droit"},
+        {"Remove.Permission", "Enlever un droit"},
+        {"Done", "Termin\u00E9"},
+        {"KeyStore.URL.", "URL du fichier de cl\u00E9s :"},
+        {"KeyStore.Type.", "Type du fichier de cl\u00E9s :"},
+        {"KeyStore.Provider.", "Fournisseur du fichier de cl\u00E9s :"},
+        {"KeyStore.Password.URL.", "URL du mot de passe du fichier de cl\u00E9s :"},
         {"Principals", "Principaux"},
-        {"  Edit Principal:", " Modifier un principal :"},
-        {"  Add New Principal:", " Ajouter un principal :"},
-        {"Permissions", "Permissions"},
-        {"  Edit Permission:", " Modifier une permission :"},
-        {"  Add New Permission:", " Ajouter une permission :"},
-        {"Signed By:", "Sign\u00e9 par :"},
-        {"Cannot Specify Principal with a Wildcard Class without a Wildcard Name",
-            "Impossible de sp\u00e9cifier un principal avec une classe g\u00e9n\u00e9rique sans nom de g\u00e9n\u00e9rique"},
-        {"Cannot Specify Principal without a Name",
-            "Impossible de sp\u00e9cifier un principal sans nom"},
-        {"Permission and Target Name must have a value",
-                "La permission et le nom de cible doivent avoir une valeur"},
-        {"Remove this Policy Entry?", "Supprimer cette r\u00e8gle ?"},
-        {"Overwrite File", "Remplacer le fichier"},
-        {"Policy successfully written to filename",
-                "R\u00e8gle enregistr\u00e9e dans {0}"},
-        {"null filename", "Nom Null de fichier"},
-        {"Save changes?", "Enregistrer les modifications ?"},
+        {".Edit.Principal.", "  Modifier un principal :"},
+        {".Add.New.Principal.", "  Ajouter un principal :"},
+        {"Permissions", "Droits"},
+        {".Edit.Permission.", "  Modifier un droit :"},
+        {".Add.New.Permission.", "  Ajouter un droit :"},
+        {"Signed.By.", "Sign\u00E9 par :"},
+        {"Cannot.Specify.Principal.with.a.Wildcard.Class.without.a.Wildcard.Name",
+            "Impossible de sp\u00E9cifier un principal avec une classe g\u00E9n\u00E9rique sans nom g\u00E9n\u00E9rique"},
+        {"Cannot.Specify.Principal.without.a.Name",
+            "Impossible de sp\u00E9cifier un principal sans nom"},
+        {"Permission.and.Target.Name.must.have.a.value",
+                "Le droit et le nom de cible doivent avoir une valeur"},
+        {"Remove.this.Policy.Entry.", "Enlever cette r\u00E8gle ?"},
+        {"Overwrite.File", "Remplacer le fichier"},
+        {"Policy.successfully.written.to.filename",
+                "R\u00E8gle \u00E9crite dans {0}"},
+        {"null.filename", "nom de fichier NULL"},
+        {"Save.changes.", "Enregistrer les modifications ?"},
         {"Yes", "Oui"},
         {"No", "Non"},
-        {"Policy Entry", "R\u00e8gle"},
-        {"Save Changes", "Enregistrer les changements"},
-        {"No Policy Entry selected", "Aucune r\u00e8gle s\u00e9lectionn\u00e9e"},
-        {"Unable to open KeyStore: ex.toString()",
-                "Impossible d''ouvrir le keystore\u00a0: {0}"},
-        {"No principal selected", "Aucun principal s\u00e9lectionn\u00e9"},
-        {"No permission selected", "Aucune permission s\u00e9lectionn\u00e9e"},
+        {"Policy.Entry", "R\u00E8gle"},
+        {"Save.Changes", "Enregistrer les modifications"},
+        {"No.Policy.Entry.selected", "Aucune r\u00E8gle s\u00E9lectionn\u00E9e"},
+        {"Unable.to.open.KeyStore.ex.toString.",
+                "Impossible d''ouvrir le fichier de cl\u00E9s d''acc\u00E8s : {0}"},
+        {"No.principal.selected", "Aucun principal s\u00E9lectionn\u00E9"},
+        {"No.permission.selected", "Aucun droit s\u00E9lectionn\u00E9"},
         {"name", "nom"},
-        {"configuration type", "type de configuration"},
-        {"environment variable name", "Nom variable de l'environnement"},
-        {"library name", "nom de biblioth\u00e8que"},
-        {"package name", "nom de package"},
-        {"policy type", "type de strat\u00e9gie"},
-        {"property name", "nom de propri\u00e9t\u00e9"},
-        {"provider name", "nom de fournisseur"},
-        {"Principal List", "Liste de mandants"},
-        {"Permission List", "Liste de droits"},
-        {"Code Base", "Base de codes"},
-        {"KeyStore U R L:", "URL du KeyStore :"},
-        {"KeyStore Password U R L:", "URL du mot de passe du KeyStore :"},
+        {"configuration.type", "type de configuration"},
+        {"environment.variable.name", "Nom de variable d'environnement"},
+        {"library.name", "nom de biblioth\u00E8que"},
+        {"package.name", "nom de package"},
+        {"policy.type", "type de r\u00E8gle"},
+        {"property.name", "nom de propri\u00E9t\u00E9"},
+        {"Principal.List", "Liste de principaux"},
+        {"Permission.List", "Liste de droits"},
+        {"Code.Base", "Base de code"},
+        {"KeyStore.U.R.L.", "URL du fichier de cl\u00E9s :"},
+        {"KeyStore.Password.U.R.L.", "URL du mot de passe du fichier de cl\u00E9s :"},
 
 
         // javax.security.auth.PrivateCredentialPermission
-        {"invalid null input(s)", "Entr\u00e9e() Null non valide(s)"},
-        {"actions can only be 'read'", "les actions peuvent \u00eatre accessibles en 'lecture' uniquement"},
-        {"permission name [name] syntax invalid: ",
-                "syntaxe de nom de permission [{0}] non valide : "},
-        {"Credential Class not followed by a Principal Class and Name",
+        {"invalid.null.input.s.", "entr\u00E9es NULL non valides"},
+        {"actions.can.only.be.read.", "les actions sont accessibles en lecture uniquement"},
+        {"permission.name.name.syntax.invalid.",
+                "syntaxe de nom de droit [{0}] non valide : "},
+        {"Credential.Class.not.followed.by.a.Principal.Class.and.Name",
                 "Classe Credential non suivie d'une classe et d'un nom de principal"},
-        {"Principal Class not followed by a Principal Name",
+        {"Principal.Class.not.followed.by.a.Principal.Name",
                 "Classe de principal non suivie d'un nom de principal"},
-        {"Principal Name must be surrounded by quotes",
-                "Le nom de principal doit \u00eatre entre guillemets"},
-        {"Principal Name missing end quote",
-                "Guillemet fermant manquant pour nom de principal"},
-        {"PrivateCredentialPermission Principal Class can not be a wildcard (*) value if Principal Name is not a wildcard (*) value",
-                "La classe principale PrivateCredentialPermission ne peut \u00eatre une valeur g\u00e9n\u00e9rique (*) si le nom de principal n'est pas une valeur g\u00e9n\u00e9rique (*)"},
-        {"CredOwner:\n\tPrincipal Class = class\n\tPrincipal Name = name",
-                "CredOwner :\n\tClasse principale = {0}\n\tNom principal = {1}"},
+        {"Principal.Name.must.be.surrounded.by.quotes",
+                "Le nom de principal doit \u00EAtre indiqu\u00E9 entre guillemets"},
+        {"Principal.Name.missing.end.quote",
+                "Guillemet fermant manquant pour le nom de principal"},
+        {"PrivateCredentialPermission.Principal.Class.can.not.be.a.wildcard.value.if.Principal.Name.is.not.a.wildcard.value",
+                "La classe de principal PrivateCredentialPermission ne peut pas \u00EAtre une valeur g\u00E9n\u00E9rique (*) si le nom de principal n'est pas une valeur g\u00E9n\u00E9rique (*)"},
+        {"CredOwner.Principal.Class.class.Principal.Name.name",
+                "CredOwner :\n\tClasse de principal = {0}\n\tNom de principal = {1}"},
 
         // javax.security.auth.x500
-        {"provided null name", "nom Null sp\u00e9cifi\u00e9"},
-        {"provided null keyword map", "Mappage des mots cl\u00e9s Null fourni"},
-        {"provided null OID map", "Mappage OID Null fourni"},
+        {"provided.null.name", "nom NULL fourni"},
+        {"provided.null.keyword.map", "mappage de mots-cl\u00E9s NULL fourni"},
+        {"provided.null.OID.map", "mappage OID NULL fourni"},
 
         // javax.security.auth.Subject
-        {"invalid null AccessControlContext provided",
-                "AccessControlContext Null sp\u00e9cifi\u00e9 non valide"},
-        {"invalid null action provided", "action Null sp\u00e9cifi\u00e9e non valide"},
-        {"invalid null Class provided", "classe Null sp\u00e9cifi\u00e9e non valide"},
-        {"Subject:\n", "Objet :\n"},
-        {"\tPrincipal: ", "\tPrincipal : "},
-        {"\tPublic Credential: ", "\tIdentit\u00e9 publique : "},
-        {"\tPrivate Credentials inaccessible\n",
-                "\tIdentit\u00e9s priv\u00e9es inaccessibles\n"},
-        {"\tPrivate Credential: ", "\tIdentit\u00e9 priv\u00e9e : "},
-        {"\tPrivate Credential inaccessible\n",
-                "\tIdentit\u00e9 priv\u00e9e inaccessible\n"},
-        {"Subject is read-only", "Objet en lecture seule"},
-        {"attempting to add an object which is not an instance of java.security.Principal to a Subject's Principal Set",
-                "tentative d'ajout d'un objet qui n'est pas une instance de java.security.Principal dans un ensemble principal d'objet"},
-        {"attempting to add an object which is not an instance of class",
+        {"invalid.null.AccessControlContext.provided",
+                "AccessControlContext NULL fourni non valide"},
+        {"invalid.null.action.provided", "action NULL fournie non valide"},
+        {"invalid.null.Class.provided", "classe NULL fournie non valide"},
+        {"Subject.", "Objet :\n"},
+        {".Principal.", "\tPrincipal : "},
+        {".Public.Credential.", "\tInformations d'identification et de connexion publiques : "},
+        {".Private.Credentials.inaccessible.",
+                "\tInformations d'identification et de connexion priv\u00E9es inaccessibles\n"},
+        {".Private.Credential.", "\tInformations d'identification et de connexion priv\u00E9es : "},
+        {".Private.Credential.inaccessible.",
+                "\tInformations d'identification et de connexion priv\u00E9es inaccessibles\n"},
+        {"Subject.is.read.only", "Sujet en lecture seule"},
+        {"attempting.to.add.an.object.which.is.not.an.instance.of.java.security.Principal.to.a.Subject.s.Principal.Set",
+                "tentative d'ajout d'un objet qui n'est pas une instance de java.security.Principal dans un ensemble de principaux du sujet"},
+        {"attempting.to.add.an.object.which.is.not.an.instance.of.class",
                 "tentative d''ajout d''un objet qui n''est pas une instance de {0}"},
 
         // javax.security.auth.login.AppConfigurationEntry
-        {"LoginModuleControlFlag: ", "LoginModuleControlFlag : "},
+        {"LoginModuleControlFlag.", "LoginModuleControlFlag : "},
 
         // javax.security.auth.login.LoginContext
-        {"Invalid null input: name", "Entr\u00e9e Null non valide : nom"},
-        {"No LoginModules configured for name",
-         "Aucun LoginModule configur\u00e9 pour {0}"},
-        {"invalid null Subject provided", "sujet Null sp\u00e9cifi\u00e9 non valide"},
-        {"invalid null CallbackHandler provided",
-                "CallbackHandler Null sp\u00e9cifi\u00e9 non valide"},
-        {"null subject - logout called before login",
-                "sujet Null - tentative de d\u00e9connexion avant connexion"},
-        {"unable to instantiate LoginModule, module, because it does not provide a no-argument constructor",
+        {"Invalid.null.input.name", "Entr\u00E9e NULL non valide : nom"},
+        {"No.LoginModules.configured.for.name",
+         "Aucun LoginModule configur\u00E9 pour {0}"},
+        {"invalid.null.Subject.provided", "sujet NULL fourni non valide"},
+        {"invalid.null.CallbackHandler.provided",
+                "CallbackHandler NULL fourni non valide"},
+        {"null.subject.logout.called.before.login",
+                "sujet NULL - Tentative de d\u00E9connexion avant la connexion"},
+        {"unable.to.instantiate.LoginModule.module.because.it.does.not.provide.a.no.argument.constructor",
                 "impossible d''instancier LoginModule {0} car il ne fournit pas de constructeur sans argument"},
-        {"unable to instantiate LoginModule",
+        {"unable.to.instantiate.LoginModule",
                 "impossible d'instancier LoginModule"},
-        {"unable to instantiate LoginModule: ",
-                "impossible d'instancier LoginModule\u00a0: "},
-        {"unable to find LoginModule class: ",
+        {"unable.to.instantiate.LoginModule.",
+                "impossible d'instancier LoginModule\u00A0: "},
+        {"unable.to.find.LoginModule.class.",
                 "classe LoginModule introuvable : "},
-        {"unable to access LoginModule: ",
-                "impossible d'acc\u00e9der \u00e0 LoginModule : "},
-        {"Login Failure: all modules ignored",
-                "Echec de connexion : tous les modules ont \u00e9t\u00e9 ignor\u00e9s"},
+        {"unable.to.access.LoginModule.",
+                "impossible d'acc\u00E9der \u00E0 LoginModule : "},
+        {"Login.Failure.all.modules.ignored",
+                "Echec de connexion : tous les modules ont \u00E9t\u00E9 ignor\u00E9s"},
 
         // sun.security.provider.PolicyFile
 
-        {"java.security.policy: error parsing policy:\n\tmessage",
+        {"java.security.policy.error.parsing.policy.message",
                 "java.security.policy : erreur d''analyse de {0} :\n\t{1}"},
-        {"java.security.policy: error adding Permission, perm:\n\tmessage",
-                "java.security.policy : erreur d''ajout de permission, {0} :\n\t{1}"},
-        {"java.security.policy: error adding Entry:\n\tmessage",
-                "java.security.policy : erreur d''ajout d''entr\u00e9e :\n\t{0}"},
-        {"alias name not provided (pe.name)", "nom d''alias non fourni ({0})"},
-        {"unable to perform substitution on alias, suffix",
+        {"java.security.policy.error.adding.Permission.perm.message",
+                "java.security.policy : erreur d''ajout de droit, {0} :\n\t{1}"},
+        {"java.security.policy.error.adding.Entry.message",
+                "java.security.policy : erreur d''ajout d''entr\u00E9e :\n\t{0}"},
+        {"alias.name.not.provided.pe.name.", "nom d''alias non fourni ({0})"},
+        {"unable.to.perform.substitution.on.alias.suffix",
                 "impossible d''effectuer une substitution pour l''alias, {0}"},
-        {"substitution value, prefix, unsupported",
+        {"substitution.value.prefix.unsupported",
                 "valeur de substitution, {0}, non prise en charge"},
-        {"(", "("},
-        {")", ")"},
-        {"type can't be null","le type ne peut \u00eatre Null"},
+        {"LPARAM", "("},
+        {"RPARAM", ")"},
+        {"type.can.t.be.null","le type ne peut \u00EAtre NULL"},
 
         // sun.security.provider.PolicyParser
-        {"keystorePasswordURL can not be specified without also specifying keystore",
-                "Impossible de sp\u00e9cifier keystorePasswordURL sans sp\u00e9cifier aussi le keystore"},
-        {"expected keystore type", "type keystore pr\u00e9vu"},
-        {"expected keystore provider", "fournisseur keystore pr\u00e9vu"},
-        {"multiple Codebase expressions",
+        {"keystorePasswordURL.can.not.be.specified.without.also.specifying.keystore",
+                "Impossible de sp\u00E9cifier keystorePasswordURL sans indiquer aussi le fichier de cl\u00E9s"},
+        {"expected.keystore.type", "type de fichier de cl\u00E9s attendu"},
+        {"expected.keystore.provider", "fournisseur de fichier de cl\u00E9s attendu"},
+        {"multiple.Codebase.expressions",
                 "expressions Codebase multiples"},
-        {"multiple SignedBy expressions","expressions SignedBy multiples"},
-        {"SignedBy has empty alias","SignedBy poss\u00e8de un alias vide"},
-        {"can not specify Principal with a wildcard class without a wildcard name",
-                "impossible de sp\u00e9cifier Principal avec une classe g\u00e9n\u00e9rique sans nom g\u00e9n\u00e9rique"},
-        {"expected codeBase or SignedBy or Principal",
-                "codeBase ou SignedBy ou Principal pr\u00e9vu"},
-        {"expected permission entry", "entr\u00e9e de permission pr\u00e9vue"},
-        {"number ", "nombre "},
-        {"expected [expect], read [end of file]",
-                "pr\u00e9vu [{0}], lecture [fin de fichier]"},
-        {"expected [;], read [end of file]",
-                "pr\u00e9vu [;], lecture [fin de fichier]"},
-        {"line number: msg", "ligne {0} : {1}"},
-        {"line number: expected [expect], found [actual]",
-                "ligne {0} : pr\u00e9vu [{1}], trouv\u00e9 [{2}]"},
-        {"null principalClass or principalName",
-                "principalClass ou principalName Null"},
+        {"multiple.SignedBy.expressions","expressions SignedBy multiples"},
+        {"SignedBy.has.empty.alias","SignedBy poss\u00E8de un alias vide"},
+        {"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name",
+                "impossible de sp\u00E9cifier le principal avec une classe g\u00E9n\u00E9rique sans nom g\u00E9n\u00E9rique"},
+        {"expected.codeBase.or.SignedBy.or.Principal",
+                "codeBase, SignedBy ou Principal attendu"},
+        {"expected.permission.entry", "entr\u00E9e de droit attendue"},
+        {"number.", "nombre "},
+        {"expected.expect.read.end.of.file.",
+                "attendu [{0}], lu [fin de fichier]"},
+        {"expected.read.end.of.file.",
+                "attendu [;], lu [fin de fichier]"},
+        {"line.number.msg", "ligne {0} : {1}"},
+        {"line.number.expected.expect.found.actual.",
+                "ligne {0} : attendu [{1}], trouv\u00E9 [{2}]"},
+        {"null.principalClass.or.principalName",
+                "principalClass ou principalName NULL"},
 
         // sun.security.pkcs11.SunPKCS11
-        {"PKCS11 Token [providerName] Password: ",
+        {"PKCS11.Token.providerName.Password.",
                 "Mot de passe PKCS11 Token [{0}] : "},
 
         /* --- DEPRECATED --- */
         // javax.security.auth.Policy
-        {"unable to instantiate Subject-based policy",
-                "impossible d'instancier la strat\u00e9gie Subject"}
+        {"unable.to.instantiate.Subject.based.policy",
+                "impossible d'instancier les r\u00E8gles bas\u00E9es sur le sujet"}
     };
 
 
@@ -648,3 +670,4 @@
         return contents;
     }
 }
+
--- a/jdk/src/share/classes/sun/security/util/Resources_it.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/util/Resources_it.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, 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
@@ -35,605 +35,627 @@
     private static final Object[][] contents = {
 
         // shared (from jarsigner)
-        {" ", " "},
-        {"  ", "  "},
-        {"      ", "      "},
-        {", ", ", "},
+        {"SPACE", " "},
+        {"2SPACE", "  "},
+        {"6SPACE", "      "},
+        {"COMMA", ", "},
         // shared (from keytool)
-        {"\n", "\n"},
-        {"*******************************************",
+        {"NEWLINE", "\n"},
+        {"STAR",
                 "*******************************************"},
-        {"*******************************************\n\n",
+        {"STARNN",
                 "*******************************************\n\n"},
 
-        // keytool
-        {"keytool error: ", "Errore keytool: "},
-        {"Illegal option:  ", "Opzione non valida:  "},
-        {"Try keytool -help","Provare keytool -help"},
-        {"Command option <flag> needs an argument.", "\u00c8 necessario specificare un argomento per l''opzione di comando {0}."},
-        {"Warning:  Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified <command> value.",
-                "Avviso: non sono supportate password diverse di chiave e di archivio per i KeyStore PKCS12. Il valore {0} specificato dall''utente verr\u00e0 ignorato."},
-        {"-keystore must be NONE if -storetype is {0}",
-                "Se -storetype \u00e8 impostato su {0}, -keystore deve essere impostato su NONE"},
-        {"Too may retries, program terminated",
-                 "Il numero dei tentativi consentiti \u00e8 stato superato. Il programma verr\u00e0 chiuso."},
-        {"-storepasswd and -keypasswd commands not supported if -storetype is {0}",
-                "Se -storetype \u00e8 impostato su {0}, i comandi -storepasswd e -keypasswd non sono supportati"},
-        {"-keypasswd commands not supported if -storetype is PKCS12",
-                "Se -storetype \u00e8 impostato su PKCS12 i comandi -keypasswd non vengono supportati"},
-        {"-keypass and -new can not be specified if -storetype is {0}",
-                "Se -storetype \u00e8 impostato su {0}, non \u00e8 possibile specificare un valore per -keypass e -new"},
-        {"if -protected is specified, then -storepass, -keypass, and -new must not be specified",
-                "Se \u00e8 specificata l'opzione -protected, le opzioni -storepass, -keypass e -new non possono essere specificate"},
-        {"if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified",
+        // keytool: Help part
+        {".OPTION.", " [OPTION]..."},
+        {"Options.", "Opzioni:"},
+        {"Use.keytool.help.for.all.available.commands",
+                 "Utilizzare \"keytool -help\" per visualizzare tutti i comandi disponibili"},
+        {"Key.and.Certificate.Management.Tool",
+                 "Strumento di gestione di chiavi e certificati"},
+        {"Commands.", "Comandi:"},
+        {"Use.keytool.command.name.help.for.usage.of.command.name",
+                "Utilizzare \"keytool -command_name -help\" per informazioni sull'uso di command_name"},
+        // keytool: help: commands
+        {"Generates.a.certificate.request",
+                "Genera una richiesta di certificato"}, //-certreq
+        {"Changes.an.entry.s.alias",
+                "Modifica l'alias di una voce"}, //-changealias
+        {"Deletes.an.entry",
+                "Elimina una voce"}, //-delete
+        {"Exports.certificate",
+                "Esporta il certificato"}, //-exportcert
+        {"Generates.a.key.pair",
+                "Genera una coppia di chiavi"}, //-genkeypair
+        {"Generates.a.secret.key",
+                "Genera una chiave segreta"}, //-genseckey
+        {"Generates.certificate.from.a.certificate.request",
+                "Genera un certificato da una richiesta di certificato"}, //-gencert
+        {"Generates.CRL", "Genera CRL"}, //-gencrl
+        {"Imports.entries.from.a.JDK.1.1.x.style.identity.database",
+                "Importa le voci da un database delle identit\u00E0 di tipo JDK 1.1.x"}, //-identitydb
+        {"Imports.a.certificate.or.a.certificate.chain",
+                "Importa un certificato o una catena di certificati"}, //-importcert
+        {"Imports.one.or.all.entries.from.another.keystore",
+                "Importa una o tutte le voci da un altro keystore"}, //-importkeystore
+        {"Clones.a.key.entry",
+                "Duplica una voce di chiave"}, //-keyclone
+        {"Changes.the.key.password.of.an.entry",
+                "Modifica la password della chiave per una voce"}, //-keypasswd
+        {"Lists.entries.in.a.keystore",
+                "Elenca le voci in un keystore"}, //-list
+        {"Prints.the.content.of.a.certificate",
+                "Visualizza i contenuti di un certificato"}, //-printcert
+        {"Prints.the.content.of.a.certificate.request",
+                "Visualizza i contenuti di una richiesta di certificato"}, //-printcertreq
+        {"Prints.the.content.of.a.CRL.file",
+                "Visualizza i contenuti di un file CRL"}, //-printcrl
+        {"Generates.a.self.signed.certificate",
+                "Genera certificato con firma automatica"}, //-selfcert
+        {"Changes.the.store.password.of.a.keystore",
+                "Modifica la password di area di memorizzazione di un keystore"}, //-storepasswd
+        // keytool: help: options
+        {"alias.name.of.the.entry.to.process",
+                "nome alias della voce da elaborare"}, //-alias
+        {"destination.alias",
+                "alias di destinazione"}, //-destalias
+        {"destination.key.password",
+                "password chiave di destinazione"}, //-destkeypass
+        {"destination.keystore.name",
+                "nome keystore di destinazione"}, //-destkeystore
+        {"destination.keystore.password.protected",
+                "password keystore di destinazione protetta"}, //-destprotected
+        {"destination.keystore.provider.name",
+                "nome provider keystore di destinazione"}, //-destprovidername
+        {"destination.keystore.password",
+                "password keystore di destinazione"}, //-deststorepass
+        {"destination.keystore.type",
+                "tipo keystore di destinazione"}, //-deststoretype
+        {"distinguished.name",
+                "nome distinto"}, //-dname
+        {"X.509.extension",
+                "estensione X.509"}, //-ext
+        {"output.file.name",
+                "nome file di output"}, //-file and -outfile
+        {"input.file.name",
+                "nome file di input"}, //-file and -infile
+        {"key.algorithm.name",
+                "nome algoritmo chiave"}, //-keyalg
+        {"key.password",
+                "password chiave"}, //-keypass
+        {"key.bit.size",
+                "dimensione bit chiave"}, //-keysize
+        {"keystore.name",
+                "nome keystore"}, //-keystore
+        {"new.password",
+                "nuova password"}, //-new
+        {"do.not.prompt",
+                "non richiedere"}, //-noprompt
+        {"password.through.protected.mechanism",
+                "password mediante meccanismo protetto"}, //-protected
+        {"provider.argument",
+                "argomento provider"}, //-providerarg
+        {"provider.class.name",
+                "nome classe provider"}, //-providerclass
+        {"provider.name",
+                "nome provider"}, //-providername
+        {"provider.classpath",
+                "classpath provider"}, //-providerpath
+        {"output.in.RFC.style",
+                "output in stile RFC"}, //-rfc
+        {"signature.algorithm.name",
+                "nome algoritmo firma"}, //-sigalg
+        {"source.alias",
+                "alias origine"}, //-srcalias
+        {"source.key.password",
+                "password chiave di origine"}, //-srckeypass
+        {"source.keystore.name",
+                "nome keystore di origine"}, //-srckeystore
+        {"source.keystore.password.protected",
+                "password keystore di origine protetta"}, //-srcprotected
+        {"source.keystore.provider.name",
+                "nome provider keystore di origine"}, //-srcprovidername
+        {"source.keystore.password",
+                "password keystore di origine"}, //-srcstorepass
+        {"source.keystore.type",
+                "tipo keystore di origine"}, //-srcstoretype
+        {"SSL.server.host.and.port",
+                "host e porta server SSL"}, //-sslserver
+        {"signed.jar.file",
+                "file jar firmato"}, //=jarfile
+        {"certificate.validity.start.date.time",
+                "data/ora di inizio validit\u00E0 certificato"}, //-startdate
+        {"keystore.password",
+                "password keystore"}, //-storepass
+        {"keystore.type",
+                "tipo keystore"}, //-storetype
+        {"trust.certificates.from.cacerts",
+                "considera sicuri i certificati da cacerts"}, //-trustcacerts
+        {"verbose.output",
+                "output descrittivo"}, //-v
+        {"validity.number.of.days",
+                "numero di giorni di validit\u00E0"}, //-validity
+        {"Serial.ID.of.cert.to.revoke",
+                 "ID seriale del certificato da revocare"}, //-id
+        // keytool: Running part
+        {"keytool.error.", "Errore keytool: "},
+        {"Illegal.option.", "Opzione non valida:  "},
+        {"Illegal.value.", "Valore non valido: "},
+        {"Unknown.password.type.", "Tipo di password sconosciuto: "},
+        {"Cannot.find.environment.variable.",
+                "Impossibile trovare la variabile di ambiente: "},
+        {"Cannot.find.file.", "Impossibile trovare il file: "},
+        {"Command.option.flag.needs.an.argument.", "\u00C8 necessario specificare un argomento per l''opzione di comando {0}."},
+        {"Warning.Different.store.and.key.passwords.not.supported.for.PKCS12.KeyStores.Ignoring.user.specified.command.value.",
+                "Avvertenza: non sono supportate password diverse di chiave e di archivio per i keystore PKCS12. Il valore {0} specificato dall''utente verr\u00E0 ignorato."},
+        {".keystore.must.be.NONE.if.storetype.is.{0}",
+                "Se -storetype \u00E8 impostato su {0}, -keystore deve essere impostato su NONE"},
+        {"Too.many.retries.program.terminated",
+                 "Il numero dei tentativi consentiti \u00E8 stato superato. Il programma verr\u00E0 terminato."},
+        {".storepasswd.and.keypasswd.commands.not.supported.if.storetype.is.{0}",
+                "Se -storetype \u00E8 impostato su {0}, i comandi -storepasswd e -keypasswd non sono supportati"},
+        {".keypasswd.commands.not.supported.if.storetype.is.PKCS12",
+                "Se -storetype \u00E8 impostato su PKCS12 i comandi -keypasswd non vengono supportati"},
+        {".keypass.and.new.can.not.be.specified.if.storetype.is.{0}",
+                "Se -storetype \u00E8 impostato su {0}, non \u00E8 possibile specificare un valore per -keypass e -new"},
+        {"if.protected.is.specified.then.storepass.keypass.and.new.must.not.be.specified",
+                "Se \u00E8 specificata l'opzione -protected, le opzioni -storepass, -keypass e -new non possono essere specificate"},
+        {"if.srcprotected.is.specified.then.srcstorepass.and.srckeypass.must.not.be.specified",
                 "Se viene specificato -srcprotected, -srcstorepass e -srckeypass non dovranno essere specificati"},
-        {"if keystore is not password protected, then -storepass, -keypass, and -new must not be specified",
-                "Se il file keystore non \u00e8 protetto da password, non deve essere specificato alcun valore per -storepass, -keypass e -new"},
-        {"if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified",
-                "Se il file keystore non \u00e8 protetto da password, non deve essere specificato alcun valore per -srcstorepass e -srckeypass"},
-        {"Validity must be greater than zero",
-                "La validit\u00e0 deve essere maggiore di zero"},
-        {"provName not a provider", "{0} non \u00e8 un provider"},
-        {"Usage error: no command provided", "Errore di utilizzo: nessun comando specificato"},
-        {"Usage error, <arg> is not a legal command", "Errore di utilizzo. {0} non \u00e8 un comando valido."},
-        {"Source keystore file exists, but is empty: ", "Il file keystore di origine esiste, ma \u00e8 vuoto: "},
-        {"Please specify -srckeystore", "Specificare -srckeystore"},
-        {"Must not specify both -v and -rfc with 'list' command",
+        {"if.keystore.is.not.password.protected.then.storepass.keypass.and.new.must.not.be.specified",
+                "Se il file keystore non \u00E8 protetto da password, non deve essere specificato alcun valore per -storepass, -keypass e -new"},
+        {"if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified",
+                "Se il file keystore non \u00E8 protetto da password, non deve essere specificato alcun valore per -srcstorepass e -srckeypass"},
+        {"Illegal.startdate.value", "Valore di data di inizio non valido"},
+        {"Validity.must.be.greater.than.zero",
+                "La validit\u00E0 deve essere maggiore di zero"},
+        {"provName.not.a.provider", "{0} non \u00E8 un provider"},
+        {"Usage.error.no.command.provided", "Errore di utilizzo: nessun comando specificato"},
+        {"Source.keystore.file.exists.but.is.empty.", "Il file keystore di origine esiste, ma \u00E8 vuoto: "},
+        {"Please.specify.srckeystore", "Specificare -srckeystore"},
+        {"Must.not.specify.both.v.and.rfc.with.list.command",
                 "Impossibile specificare sia -v sia -rfc con il comando 'list'"},
-        {"Key password must be at least 6 characters",
+        {"Key.password.must.be.at.least.6.characters",
                 "La password della chiave deve contenere almeno 6 caratteri"},
-        {"New password must be at least 6 characters",
+        {"New.password.must.be.at.least.6.characters",
                 "La nuova password deve contenere almeno 6 caratteri"},
-        {"Keystore file exists, but is empty: ",
-                "Il file keystore esiste ma \u00e8 vuoto: "},
-        {"Keystore file does not exist: ",
+        {"Keystore.file.exists.but.is.empty.",
+                "Il file keystore esiste ma \u00E8 vuoto: "},
+        {"Keystore.file.does.not.exist.",
                 "Il file keystore non esiste: "},
-        {"Must specify destination alias", "\u00c8 necessario specificare l'alias di destinazione"},
-        {"Must specify alias", "\u00c8 necessario specificare l'alias"},
-        {"Keystore password must be at least 6 characters",
+        {"Must.specify.destination.alias", "\u00C8 necessario specificare l'alias di destinazione"},
+        {"Must.specify.alias", "\u00C8 necessario specificare l'alias"},
+        {"Keystore.password.must.be.at.least.6.characters",
                 "La password del keystore deve contenere almeno 6 caratteri"},
-        {"Enter keystore password:  ", "Immettere la password del keystore:  "},
-        {"Enter source keystore password:  ", "Immettere la password del keystore di origine:  "},
-        {"Enter destination keystore password:  ", "Immettere la password del keystore di destinazione:  "},
-        {"Keystore password is too short - must be at least 6 characters",
-         "La password del keystore \u00e8 troppo corta - deve contenere almeno 6 caratteri"},
-        {"Unknown Entry Type", "Tipo di voce sconosciuto"},
-        {"Too many failures. Alias not changed", "Si sono verificati troppi errori. L'alias non \u00e8 stato modificato."},
-        {"Entry for alias <alias> successfully imported.",
-                 "La voce dell''alias {0} \u00e8 stata importata."},
-        {"Entry for alias <alias> not imported.", "La voce dell''alias {0} non \u00e8 stata importata."},
-        {"Problem importing entry for alias <alias>: <exception>.\nEntry for alias <alias> not imported.",
-                 "Si \u00e8 verificato un problema durante l''importazione della voce dell''alias {0}: {1}.\nLa voce dell''alias {0} non \u00e8 stata importata."},
-        {"Import command completed:  <ok> entries successfully imported, <fail> entries failed or cancelled",
-                 "Importazione completata:  {0} voci importate, {1} voci non importate o annullate"},
-        {"Warning: Overwriting existing alias <alias> in destination keystore",
-                 "Avviso: sovrascrittura in corso dell''alias {0} nel file keystore di destinazione"},
-        {"Existing entry alias <alias> exists, overwrite? [no]:  ",
-                 "La voce dell''alias {0} esiste gi\u00e0. Sovrascrivere? [no]:  "},
-        {"Too many failures - try later", "Troppi errori - riprovare"},
-        {"Certification request stored in file <filename>",
-                "La richiesta di certificazione \u00e8 memorizzata nel file <{0}>"},
-        {"Submit this to your CA", "Inviarla alla propria CA"},
-        {"if alias not specified, destalias, srckeypass, and destkeypass must not be specified",
-            "Se l'alias non \u00e8 specificato, destalias, srckeypass e destkeypass non dovranno essere specificati"},
-        {"Certificate stored in file <filename>",
-                "Il certificato \u00e8 memorizzato nel file <{0}>"},
-        {"Certificate reply was installed in keystore",
-                "La risposta del certificato \u00e8 stata installata nel keystore"},
-        {"Certificate reply was not installed in keystore",
-                "La risposta del certificato non \u00e8 stata installata nel keystore"},
-        {"Certificate was added to keystore",
-                "Il certificato \u00e8 stato aggiunto al keystore"},
-        {"Certificate was not added to keystore",
-                "Il certificato non \u00e8 stato aggiunto al keystore"},
-        {"[Storing ksfname]", "[Memorizzazione di {0}] in corso"},
-        {"alias has no public key (certificate)",
+        {"Enter.keystore.password.", "Immettere la password del keystore:  "},
+        {"Enter.source.keystore.password.", "Immettere la password del keystore di origine:  "},
+        {"Enter.destination.keystore.password.", "Immettere la password del keystore di destinazione:  "},
+        {"Keystore.password.is.too.short.must.be.at.least.6.characters",
+         "La password del keystore \u00E8 troppo corta - deve contenere almeno 6 caratteri"},
+        {"Unknown.Entry.Type", "Tipo di voce sconosciuto"},
+        {"Too.many.failures.Alias.not.changed", "Numero eccessivo di errori. L'alias non \u00E8 stato modificato."},
+        {"Entry.for.alias.alias.successfully.imported.",
+                 "La voce dell''alias {0} \u00E8 stata importata."},
+        {"Entry.for.alias.alias.not.imported.", "La voce dell''alias {0} non \u00E8 stata importata."},
+        {"Problem.importing.entry.for.alias.alias.exception.Entry.for.alias.alias.not.imported.",
+                 "Si \u00E8 verificato un problema durante l''importazione della voce dell''alias {0}: {1}.\nLa voce dell''alias {0} non \u00E8 stata importata."},
+        {"Import.command.completed.ok.entries.successfully.imported.fail.entries.failed.or.cancelled",
+                 "Comando di importazione completato: {0} voce/i importata/e, {1} voce/i non importata/e o annullata/e"},
+        {"Warning.Overwriting.existing.alias.alias.in.destination.keystore",
+                 "Avvertenza: sovrascrittura in corso dell''alias {0} nel file keystore di destinazione"},
+        {"Existing.entry.alias.alias.exists.overwrite.no.",
+                 "La voce dell''alias {0} esiste gi\u00E0. Sovrascrivere? [no]:  "},
+        {"Too.many.failures.try.later", "Troppi errori - riprovare"},
+        {"Certification.request.stored.in.file.filename.",
+                "La richiesta di certificazione \u00E8 memorizzata nel file <{0}>"},
+        {"Submit.this.to.your.CA", "Sottomettere alla propria CA"},
+        {"if.alias.not.specified.destalias.srckeypass.and.destkeypass.must.not.be.specified",
+            "Se l'alias non \u00E8 specificato, destalias, srckeypass e destkeypass non dovranno essere specificati"},
+        {"Certificate.stored.in.file.filename.",
+                "Il certificato \u00E8 memorizzato nel file <{0}>"},
+        {"Certificate.reply.was.installed.in.keystore",
+                "La risposta del certificato \u00E8 stata installata nel keystore"},
+        {"Certificate.reply.was.not.installed.in.keystore",
+                "La risposta del certificato non \u00E8 stata installata nel keystore"},
+        {"Certificate.was.added.to.keystore",
+                "Il certificato \u00E8 stato aggiunto al keystore"},
+        {"Certificate.was.not.added.to.keystore",
+                "Il certificato non \u00E8 stato aggiunto al keystore"},
+        {".Storing.ksfname.", "[Memorizzazione di {0}] in corso"},
+        {"alias.has.no.public.key.certificate.",
                 "{0} non dispone di chiave pubblica (certificato)"},
-        {"Cannot derive signature algorithm",
-                "Impossibile derivare l'algoritmo di firma"},
-        {"Alias <alias> does not exist",
-                "L''alias <{0}> non esiste"},
-        {"Alias <alias> has no certificate",
-                "L''alias <{0}> non dispone di certificato"},
-        {"Key pair not generated, alias <alias> already exists",
-                "Non \u00e8 stata generata la coppia di chiavi, l''alias <{0}> \u00e8 gi\u00e0 esistente"},
-        {"Cannot derive signature algorithm",
+        {"Cannot.derive.signature.algorithm",
                 "Impossibile derivare l'algoritmo di firma"},
-        {"Generating keysize bit keyAlgName key pair and self-signed certificate (sigAlgName) with a validity of validality days\n\tfor: x500Name",
-                "Generazione in corso di una coppia di chiavi {1} da {0} bit e di un certificato autofirmato ({2}) con una validit\u00e0 di {3} giorni\n\tper: {4}"},
-        {"Enter key password for <alias>", "Immettere la password della chiave per <{0}>"},
-        {"\t(RETURN if same as keystore password):  ",
+        {"Alias.alias.does.not.exist",
+                "L''alias <{0}> non esiste"},
+        {"Alias.alias.has.no.certificate",
+                "L''alias <{0}> non dispone di certificato"},
+        {"Key.pair.not.generated.alias.alias.already.exists",
+                "Non \u00E8 stata generata la coppia di chiavi, l''alias <{0}> \u00E8 gi\u00E0 esistente"},
+        {"Generating.keysize.bit.keyAlgName.key.pair.and.self.signed.certificate.sigAlgName.with.a.validity.of.validality.days.for",
+                "Generazione in corso di una coppia di chiavi {1} da {0} bit e di un certificato autofirmato ({2}) con una validit\u00E0 di {3} giorni\n\tper: {4}"},
+        {"Enter.key.password.for.alias.", "Immettere la password della chiave per <{0}>"},
+        {".RETURN.if.same.as.keystore.password.",
                 "\t(INVIO se corrisponde alla password del keystore):  "},
-        {"Key password is too short - must be at least 6 characters",
-                "La password della chiave \u00e8 troppo corta - deve contenere almeno 6 caratteri"},
-        {"Too many failures - key not added to keystore",
-                "Troppi errori - la chiave non \u00e8 stata aggiunta al keystore"},
-        {"Destination alias <dest> already exists",
-                "L''alias di destinazione <{0}> \u00e8 gi\u00e0 esistente"},
-        {"Password is too short - must be at least 6 characters",
-                "La password \u00e8 troppo corta - deve contenere almeno 6 caratteri"},
-        {"Too many failures. Key entry not cloned",
-                "Troppi errori. Il valore della chiave non \u00e8 stato clonato"},
-        {"key password for <alias>", "password della chiave per <{0}>"},
-        {"Keystore entry for <id.getName()> already exists",
-                "L''entry nel keystore per <{0}> \u00e8 gi\u00e0 esistente"},
-        {"Creating keystore entry for <id.getName()> ...",
-                "Creazione dell''entry nel keystore per <{0}> in corso..."},
-        {"No entries from identity database added",
-                "Nessuna entry aggiunta dal database di identit\u00e0"},
-        {"Alias name: alias", "Nome alias: {0}"},
-        {"Creation date: keyStore.getCreationDate(alias)",
+        {"Key.password.is.too.short.must.be.at.least.6.characters",
+                "La password della chiave \u00E8 troppo corta - deve contenere almeno 6 caratteri"},
+        {"Too.many.failures.key.not.added.to.keystore",
+                "Troppi errori - la chiave non \u00E8 stata aggiunta al keystore"},
+        {"Destination.alias.dest.already.exists",
+                "L''alias di destinazione <{0}> \u00E8 gi\u00E0 esistente"},
+        {"Password.is.too.short.must.be.at.least.6.characters",
+                "La password \u00E8 troppo corta - deve contenere almeno 6 caratteri"},
+        {"Too.many.failures.Key.entry.not.cloned",
+                "Numero eccessivo di errori. Il valore della chiave non \u00E8 stato copiato."},
+        {"key.password.for.alias.", "password della chiave per <{0}>"},
+        {"Keystore.entry.for.id.getName.already.exists",
+                "La voce del keystore per <{0}> esiste gi\u00E0"},
+        {"Creating.keystore.entry.for.id.getName.",
+                "Creazione della voce del keystore per <{0}> in corso..."},
+        {"No.entries.from.identity.database.added",
+                "Nessuna voce aggiunta dal database delle identit\u00E0"},
+        {"Alias.name.alias", "Nome alias: {0}"},
+        {"Creation.date.keyStore.getCreationDate.alias.",
                 "Data di creazione: {0,date}"},
-        {"alias, keyStore.getCreationDate(alias), ",
+        {"alias.keyStore.getCreationDate.alias.",
                 "{0}, {1,date}, "},
-        {"alias, ", "{0}, "},
-        {"Entry type: <type>", "Tipo di voce: {0}"},
-        {"Certificate chain length: ", "Lunghezza catena certificati: "},
-        {"Certificate[(i + 1)]:", "Certificato[{0,number,integer}]:"},
-        {"Certificate fingerprint (MD5): ", "Impronta digitale certificato (MD5): "},
-        {"Entry type: trustedCertEntry\n", "Tipo entry: trustedCertEntry\n"},
-        {"trustedCertEntry,", "trustedCertEntry,"},
-        {"Keystore type: ", "Tipo keystore: "},
-        {"Keystore provider: ", "Provider keystore: "},
-        {"Your keystore contains keyStore.size() entry",
-                "Il keystore contiene {0,number,integer} entry"},
-        {"Your keystore contains keyStore.size() entries",
-                "Il keystore contiene {0,number,integer} entry"},
-        {"Failed to parse input", "Impossibile analizzare l'input"},
-        {"Empty input", "Input vuoto"},
-        {"Not X.509 certificate", "Il certificato non \u00e8 X.509"},
-        {"Cannot derive signature algorithm",
-                "Impossibile derivare l'algoritmo di firma"},
-        {"alias has no public key", "{0} non dispone di chiave pubblica"},
-        {"alias has no X.509 certificate", "{0} non dispone di certificato X.509"},
-        {"New certificate (self-signed):", "Nuovo certificato (autofirmato):"},
-        {"Reply has no certificates", "La risposta non dispone di certificati"},
-        {"Certificate not imported, alias <alias> already exists",
-                "Impossibile importare il certificato, l''alias <{0}> \u00e8 gi\u00e0 esistente"},
-        {"Input not an X.509 certificate", "L'input non \u00e8 un certificato X.509"},
-        {"Certificate already exists in keystore under alias <trustalias>",
-                "Il certificato esiste gi\u00e0 nel keystore con alias <{0}>"},
-        {"Do you still want to add it? [no]:  ",
+        {"alias.", "{0}, "},
+        {"Entry.type.type.", "Tipo di voce: {0}"},
+        {"Certificate.chain.length.", "Lunghezza catena certificati: "},
+        {"Certificate.i.1.", "Certificato[{0,number,integer}]:"},
+        {"Certificate.fingerprint.SHA1.", "Impronta digitale certificato (SHA1): "},
+        {"Entry.type.trustedCertEntry.", "Tipo di voce: trustedCertEntry\n"},
+        {"trustedCertEntry.", "trustedCertEntry,"},
+        {"Keystore.type.", "Tipo keystore: "},
+        {"Keystore.provider.", "Provider keystore: "},
+        {"Your.keystore.contains.keyStore.size.entry",
+                "Il keystore contiene {0,number,integer} voce"},
+        {"Your.keystore.contains.keyStore.size.entries",
+                "Il keystore contiene {0,number,integer} voci"},
+        {"Failed.to.parse.input", "Impossibile analizzare l'input"},
+        {"Empty.input", "Input vuoto"},
+        {"Not.X.509.certificate", "Il certificato non \u00E8 X.509"},
+        {"alias.has.no.public.key", "{0} non dispone di chiave pubblica"},
+        {"alias.has.no.X.509.certificate", "{0} non dispone di certificato X.509"},
+        {"New.certificate.self.signed.", "Nuovo certificato (autofirmato):"},
+        {"Reply.has.no.certificates", "La risposta non dispone di certificati"},
+        {"Certificate.not.imported.alias.alias.already.exists",
+                "Impossibile importare il certificato, l''alias <{0}> \u00E8 gi\u00E0 esistente"},
+        {"Input.not.an.X.509.certificate", "L'input non \u00E8 un certificato X.509"},
+        {"Certificate.already.exists.in.keystore.under.alias.trustalias.",
+                "Il certificato esiste gi\u00E0 nel keystore con alias <{0}>"},
+        {"Do.you.still.want.to.add.it.no.",
                 "Aggiungerlo ugualmente? [no]:  "},
-        {"Certificate already exists in system-wide CA keystore under alias <trustalias>",
-                "Il certificato esiste gi\u00e0 nel keystore CA con alias <{0}>"},
-        {"Do you still want to add it to your own keystore? [no]:  ",
+        {"Certificate.already.exists.in.system.wide.CA.keystore.under.alias.trustalias.",
+                "Il certificato esiste gi\u00E0 nel keystore CA con alias <{0}>"},
+        {"Do.you.still.want.to.add.it.to.your.own.keystore.no.",
                 "Aggiungerlo al proprio keystore? [no]:  "},
-        {"Trust this certificate? [no]:  ", "Considerare attendibile questo certificato? [no]:  "},
-        {"YES", "S\u00ec"},
-        {"New prompt: ", "Nuova {0}: "},
-        {"Passwords must differ", "Le password non devono coincidere"},
-        {"Re-enter new prompt: ", "Reimmettere nuova {0}: "},
-        {"Re-enter new password: ", "Immettere nuovamente la nuova password: "},
-        {"They don't match. Try again", "Non corrispondono. Riprovare."},
-        {"Enter prompt alias name:  ", "Immettere nome alias {0}:  "},
-        {"Enter new alias name\t(RETURN to cancel import for this entry):  ",
+        {"Trust.this.certificate.no.", "Considerare sicuro questo certificato? [no]:  "},
+        {"YES", "S\u00EC"},
+        {"New.prompt.", "Nuova {0}: "},
+        {"Passwords.must.differ", "Le password non devono coincidere"},
+        {"Re.enter.new.prompt.", "Reimmettere un nuovo valore per {0}: "},
+        {"Re.enter.new.password.", "Immettere nuovamente la nuova password: "},
+        {"They.don.t.match.Try.again", "Non corrispondono. Riprovare."},
+        {"Enter.prompt.alias.name.", "Immettere nome alias {0}:  "},
+        {"Enter.new.alias.name.RETURN.to.cancel.import.for.this.entry.",
                  "Immettere un nuovo nome alias\t(premere INVIO per annullare l'importazione della voce):  "},
-        {"Enter alias name:  ", "Immettere nome alias:  "},
-        {"\t(RETURN if same as for <otherAlias>)",
+        {"Enter.alias.name.", "Immettere nome alias:  "},
+        {".RETURN.if.same.as.for.otherAlias.",
                 "\t(INVIO se corrisponde al nome di <{0}>"},
-        {"*PATTERN* printX509Cert",
-                "Proprietario: {0}\nAutorit\u00e0 emittente: {1}\nNumero di serie: {2}\nValido da: {3} a: {4}\nImpronte digitali certificato:\n\t MD5:  {5}\n\t SHA1: {6}\n\t Nome algoritmo firma: {7}\n\t Versione: {8}"},
-        {"What is your first and last name?",
+        {".PATTERN.printX509Cert",
+                "Proprietario: {0}\nAutorit\u00E0 emittente: {1}\nNumero di serie: {2}\nValido da: {3} a: {4}\nImpronte digitali certificato:\n\t MD5:  {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t Nome algoritmo firma: {8}\n\t Versione: {9}"},
+        {"What.is.your.first.and.last.name.",
                 "Specificare nome e cognome"},
-        {"What is the name of your organizational unit?",
-                "Specificare il nome dell'unit\u00e0 aziendale"},
-        {"What is the name of your organization?",
-                "Specificare il nome dell'azienda"},
-        {"What is the name of your City or Locality?",
-                "Specificare la localit\u00e0"},
-        {"What is the name of your State or Province?",
+        {"What.is.the.name.of.your.organizational.unit.",
+                "Specificare il nome dell'unit\u00E0 organizzativa"},
+        {"What.is.the.name.of.your.organization.",
+                "Specificare il nome dell'organizzazione"},
+        {"What.is.the.name.of.your.City.or.Locality.",
+                "Specificare la localit\u00E0"},
+        {"What.is.the.name.of.your.State.or.Province.",
                 "Specificare la provincia"},
-        {"What is the two-letter country code for this unit?",
-                "Specificare il codice a due lettere del paese in cui si trova l'unit\u00e0"},
-        {"Is <name> correct?", "Il dato {0} \u00e8 corretto?"},
+        {"What.is.the.two.letter.country.code.for.this.unit.",
+                "Specificare il codice a due lettere del paese in cui si trova l'unit\u00E0"},
+        {"Is.name.correct.", "Il dato {0} \u00E8 corretto?"},
         {"no", "no"},
-        {"yes", "s\u00ec"},
+        {"yes", "s\u00EC"},
         {"y", "s"},
-        {"  [defaultValue]:  ", " [{0}]:  "},
-        {"Alias <alias> has no key",
-                "All''alias <{0}> non \u00e8 associata alcuna chiave"},
-        {"Alias <alias> references an entry type that is not a private key entry.  The -keyclone command only supports cloning of private key entries",
-                 "L''alias <{0}> fa riferimento a un tipo di voce che non \u00e8 una voce di chiave privata. Il comando -keyclone supporta solo la duplicazione delle voci di chiave private."},
+        {".defaultValue.", "  [{0}]:  "},
+        {"Alias.alias.has.no.key",
+                "All''alias <{0}> non \u00E8 associata alcuna chiave"},
+        {"Alias.alias.references.an.entry.type.that.is.not.a.private.key.entry.The.keyclone.command.only.supports.cloning.of.private.key",
+                 "L''alias <{0}> fa riferimento a un tipo di voce che non \u00E8 una voce di chiave privata. Il comando -keyclone supporta solo la copia delle voci di chiave private."},
 
-        {"*****************  WARNING WARNING WARNING  *****************",
-            "*****************  AVVISO  AVVISO  AVVISO  *****************"},
+        {".WARNING.WARNING.WARNING.",
+            "*****************  WARNING WARNING WARNING  *****************"},
+        {"Signer.d.", "Firmatario #%d:"},
+        {"Timestamp.", "Indicatore orario:"},
+        {"Signature.", "Firma:"},
+        {"CRLs.", "CRL:"},
+        {"Certificate.owner.", "Proprietario certificato: "},
+        {"Not.a.signed.jar.file", "Non \u00E8 un file jar firmato"},
+        {"No.certificate.from.the.SSL.server",
+                "Nessun certificato dal server SSL"},
 
         // Translators of the following 5 pairs, ATTENTION:
         // the next 5 string pairs are meant to be combined into 2 paragraphs,
         // 1+3+4 and 2+3+5. make sure your translation also does.
-        {"* The integrity of the information stored in your keystore  *",
-            "* L'integrit\u00e0 delle informazioni memorizzate nel keystore    *"},
-        {"* The integrity of the information stored in the srckeystore*",
-            "* L'integrit\u00e0 delle informazioni salvate nel srckeystore*"},
-        {"* has NOT been verified!  In order to verify its integrity, *",
-            "* NON \u00e8 stata verificata! A tale scopo \u00e8 necessario fornire *"},
-        {"* you must provide your keystore password.                  *",
+        {".The.integrity.of.the.information.stored.in.your.keystore.",
+            "* L'integrit\u00E0 delle informazioni memorizzate nel keystore    *"},
+        {".The.integrity.of.the.information.stored.in.the.srckeystore.",
+            "* L'integrit\u00E0 delle informazioni salvate nel srckeystore*"},
+        {".has.NOT.been.verified.In.order.to.verify.its.integrity.",
+            "* NON \u00E8 stata verificata. A tale scopo \u00E8 necessario fornire *"},
+        {".you.must.provide.your.keystore.password.",
             "* la password del keystore.                                 *"},
-        {"* you must provide the srckeystore password.                *",
-            "* \u00c8 necessario fornire la password per il srckeystore.                *"},
+        {".you.must.provide.the.srckeystore.password.",
+            "* \u00C8 necessario fornire la password per il srckeystore.                *"},
 
 
-        {"Certificate reply does not contain public key for <alias>",
+        {"Certificate.reply.does.not.contain.public.key.for.alias.",
                 "La risposta del certificato non contiene la chiave pubblica per <{0}>"},
-        {"Incomplete certificate chain in reply",
+        {"Incomplete.certificate.chain.in.reply",
                 "Catena dei certificati incompleta nella risposta"},
-        {"Certificate chain in reply does not verify: ",
+        {"Certificate.chain.in.reply.does.not.verify.",
                 "La catena dei certificati nella risposta non verifica: "},
-        {"Top-level certificate in reply:\n",
+        {"Top.level.certificate.in.reply.",
                 "Certificato di primo livello nella risposta:\n"},
-        {"... is not trusted. ", "... non \u00e8 considerato attendibile. "},
-        {"Install reply anyway? [no]:  ", "Installare la risposta? [no]:  "},
+        {".is.not.trusted.", "...non \u00E8 considerato sicuro. "},
+        {"Install.reply.anyway.no.", "Installare la risposta? [no]:  "},
         {"NO", "NO"},
-        {"Public keys in reply and keystore don't match",
+        {"Public.keys.in.reply.and.keystore.don.t.match",
                 "Le chiavi pubbliche nella risposta e nel keystore non corrispondono"},
-        {"Certificate reply and certificate in keystore are identical",
+        {"Certificate.reply.and.certificate.in.keystore.are.identical",
                 "La risposta del certificato e il certificato nel keystore sono identici"},
-        {"Failed to establish chain from reply",
+        {"Failed.to.establish.chain.from.reply",
                 "Impossibile stabilire la catena dalla risposta"},
         {"n", "n"},
-        {"Wrong answer, try again", "Risposta errata, riprovare"},
-        {"Secret key not generated, alias <alias> already exists",
-                "La chiave segreta non \u00e8 stata generata; l''alias <{0}> esiste gi\u00e0"},
-        {"Please provide -keysize for secret key generation",
+        {"Wrong.answer.try.again", "Risposta errata, riprovare"},
+        {"Secret.key.not.generated.alias.alias.already.exists",
+                "La chiave segreta non \u00E8 stata generata; l''alias <{0}> esiste gi\u00E0"},
+        {"Please.provide.keysize.for.secret.key.generation",
                 "Specificare il valore -keysize per la generazione della chiave segreta"},
-        {"keytool usage:\n", "utilizzo keytool:\n"},
-
-        {"Extensions: ", "Estensioni: "},
-
-        {"-certreq     [-v] [-protected]",
-                "-certreq     [-v] [-protected]"},
-        {"\t     [-alias <alias>] [-sigalg <sigalg>]",
-                "\t     [-alias <alias>] [-sigalg <algfirma>]"},
-        {"\t     [-file <csr_file>] [-keypass <keypass>]",
-                "\t     [-file <file_csr>] [-keypass <keypass>]"},
-        {"\t     [-keystore <keystore>] [-storepass <storepass>]",
-                "\t     [-keystore <keystore>] [-storepass <storepass>]"},
-        {"\t     [-storetype <storetype>] [-providername <name>]",
-                "\t     [-storetype <storetype>] [-providername <name>]"},
-        {"\t     [-providerclass <provider_class_name> [-providerarg <arg>]] ...",
-                "\t     [-providerclass <provider_class_name> [-providerarg <arg>]] ..."},
-        {"\t     [-providerpath <pathlist>]",
-                "\t     [-providerpath <pathlist>]"},
-        {"-delete      [-v] [-protected] -alias <alias>",
-                "-delete      [-v] [-protected] -alias <alias>"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-export      [-v] [-rfc] [-protected]",
-        //       "-export      [-v] [-rfc] [-protected]"},
-        {"-exportcert  [-v] [-rfc] [-protected]",
-                "-exportcert  [-v] [-rfc] [-protected]"},
-        {"\t     [-alias <alias>] [-file <cert_file>]",
-                "\t     [-alias <alias>] [-file <file_cert>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-genkey      [-v] [-protected]",
-        //        "-genkey      [-v] [-protected]"},
-        {"-genkeypair  [-v] [-protected]",
-                "-genkeypair  [-v] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
-        {"\t     [-keyalg <keyalg>] [-keysize <keysize>]",
-                "\t     [-keyalg <algchiave>] [-keysize <dimchiave>]"},
-        {"\t     [-sigalg <sigalg>] [-dname <dname>]",
-                "\t     [-sigalg <algfirma>] [-dname <nomed>]"},
-        {"\t     [-validity <valDays>] [-keypass <keypass>]",
-                "\t     [-validity <Giornival>] [-keypass <keypass>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-genseckey   [-v] [-protected]",
-                "-genseckey   [-v] [-protected]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-help", "-help"},
-        //{"-identitydb  [-v] [-protected]",
-        //      "-identitydb  [-v] [-protected]"},
-        //{"\t     [-file <idb_file>]", "\t     [-file <idb_file>]"},
-        /** rest is same as -certreq starting from -keystore **/
 
-        //{"-import      [-v] [-noprompt] [-trustcacerts] [-protected]",
-        //       "-import      [-v] [-noprompt] [-trustcacerts] [-protected]"},
-        {"-importcert  [-v] [-noprompt] [-trustcacerts] [-protected]",
-                "-importcert  [-v] [-noprompt] [-trustcacerts] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
-        {"\t     [-alias <alias>] [-keypass <keypass>]",
-            "\t     [-alias <alias>] [-keypass <keypass>]"},
-        {"\t     [-file <cert_file>] [-keypass <keypass>]",
-                "\t     [-file <file_cert>] [-keypass <keypass>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-importkeystore [-v] ",
-                "-importkeystore [-v] "},
-        {"\t     [-srckeystore <srckeystore>] [-destkeystore <destkeystore>]",
-                "\t     [-srckeystore <srckeystore>] [-destkeystore <destkeystore>]"},
-        {"\t     [-srcstoretype <srcstoretype>] [-deststoretype <deststoretype>]",
-                "\t     [-srcstoretype <srcstoretype>] [-deststoretype <deststoretype>]"},
-        {"\t     [-srcprotected] [-destprotected]",
-                "\t     [-srcprotected] [-destprotected]"},
-        {"\t     [-srcstorepass <srcstorepass>] [-deststorepass <deststorepass>]",
-                "\t     [-srcstorepass <srcstorepass>] [-deststorepass <deststorepass>]"},
-        {"\t     [-srcprovidername <srcprovidername>]\n\t     [-destprovidername <destprovidername>]",  // riga troppo lunga, divisa in 2 parti
-                 "\t     [-srcprovidername <srcprovidername>]\n\t     [-destprovidername <destprovidername>]"},
-        {"\t     [-srcalias <srcalias> [-destalias <destalias>]",
-                "\t     [-srcalias <srcalias> [-destalias <destalias>]"},
-        {"\t       [-srckeypass <srckeypass>] [-destkeypass <destkeypass>]]",
-                "\t       [-srckeypass <srckeypass>] [-destkeypass <destkeypass>]]"},
-        {"\t     [-noprompt]", "\t     [-noprompt]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-changealias [-v] [-protected] -alias <alias> -destalias <destalias>",
-                "-changealias [-v] [-protected] -alias <alias> -destalias <destalias>"},
-        {"\t     [-keypass <keypass>]", "\t     [-keypass <keypass>]"},
-
-        //{"-keyclone    [-v] [-protected]",
-        //      "-keyclone    [-v] [-protected]"},
-        //{"\t     [-alias <alias>] -dest <dest_alias>",
-        //      "\t     [-alias <alias>] -dest <dest_alias>"},
-        //{"\t     [-keypass <keypass>] [-new <new_keypass>]",
-        //      "\t     [-keypass <keypass>] [-new <new_keypass>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-keypasswd   [-v] [-alias <alias>]",
-                "-keypasswd   [-v] [-alias <alias>]"},
-        {"\t     [-keypass <old_keypass>] [-new <new_keypass>]",
-                "\t     [-keypass <keypass_vecchio>] [-new <keypass_nuovo>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-list        [-v | -rfc] [-protected]",
-                "-list        [-v | -rfc] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-printcert   [-v] [-file <cert_file>]",
-                "-printcert   [-v] [-file <file_cert>]"},
-
-        //{"-selfcert    [-v] [-protected]",
-        //      "-selfcert    [-v] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
-        //{"\t     [-dname <dname>] [-validity <valDays>]",
-        //      "\t     [-dname <dname>] [-validity <valDays>]"},
-        //{"\t     [-keypass <keypass>] [-sigalg <sigalg>]",
-        //      "\t     [-keypass <keypass>] [-sigalg <sigalg>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-storepasswd [-v] [-new <new_storepass>]",
-                "-storepasswd [-v] [-new <storepass_nuovo>]"},
-        /** rest is same as -certreq starting from -keystore **/
+        {"Extensions.", "Estensioni: "},
+        {".Empty.value.", "(valore vuoto)"},
+        {"Extension.Request.", "Richiesta di estensione:"},
+        {"PKCS.10.Certificate.Request.Version.1.0.Subject.s.Public.Key.s.format.s.key.",
+                "Richiesta di certificato PKCS #10 (versione 1.0)\nOggetto: %s\nChiave pubblica: %s formato %s chiave\n"},
+        {"Unknown.keyUsage.type.", "Tipo keyUsage sconosciuto: "},
+        {"Unknown.extendedkeyUsage.type.", "Tipo extendedkeyUsage sconosciuto: "},
+        {"Unknown.AccessDescription.type.", "Tipo AccessDescription sconosciuto: "},
+        {"Unrecognized.GeneralName.type.", "Tipo GeneralName non riconosciuto: "},
+        {"This.extension.cannot.be.marked.as.critical.",
+                 "Impossibile contrassegnare questa estensione come critica. "},
+        {"Odd.number.of.hex.digits.found.", "\u00C8 stato trovato un numero dispari di cifre esadecimali: "},
+        {"Unknown.extension.type.", "Tipo di estensione sconosciuto: "},
+        {"command.{0}.is.ambiguous.", "il comando {0} \u00E8 ambiguo:"},
 
         // policytool
-        {"Warning: A public key for alias 'signers[i]' does not exist.  Make sure a KeyStore is properly configured.",
-                "Avviso: non esiste una chiave pubblica per l''alias {0}. Verificare che il KeyStore sia configurato correttamente."},
-        {"Warning: Class not found: class", "Avviso: Classe non trovata: {0}"},
-        {"Warning: Invalid argument(s) for constructor: arg",
-                "Avviso: argomento o argomenti non validi per il costruttore {0}"},
-        {"Illegal Principal Type: type", "Tipo principale non valido: {0}"},
-        {"Illegal option: option", "Opzione non valida: {0}"},
-        {"Usage: policytool [options]", "Utilizzo: policytool [opzioni]"},
-        {"  [-file <file>]    policy file location",
-                " [-file <file>]    posizione del policy file"},
+        {"Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured.",
+                "Avvertenza: non esiste una chiave pubblica per l''alias {0}. Verificare che il keystore sia configurato correttamente."},
+        {"Warning.Class.not.found.class", "Avvertenza: classe non trovata: {0}"},
+        {"Warning.Invalid.argument.s.for.constructor.arg",
+                "Avvertenza: argomento o argomenti non validi per il costruttore {0}"},
+        {"Illegal.Principal.Type.type", "Tipo principal non valido: {0}"},
+        {"Illegal.option.option", "Opzione non valida: {0}"},
+        {"Usage.policytool.options.", "Utilizzo: policytool [opzioni]"},
+        {".file.file.policy.file.location",
+                "  [-file <file>]    posizione del file dei criteri"},
         {"New", "Nuovo"},
         {"Open", "Apri"},
         {"Save", "Salva"},
-        {"Save As", "Salva con nome"},
-        {"View Warning Log", "Visualizza registro avvisi"},
+        {"Save.As", "Salva con nome"},
+        {"View.Warning.Log", "Visualizza registro avvertenze"},
         {"Exit", "Esci"},
-        {"Add Policy Entry", "Aggiungi policy entry"},
-        {"Edit Policy Entry", "Modifica policy entry"},
-        {"Remove Policy Entry", "Elimina policy entry"},
+        {"Add.Policy.Entry", "Aggiungi voce dei criteri"},
+        {"Edit.Policy.Entry", "Modifica voce dei criteri"},
+        {"Remove.Policy.Entry", "Rimuovi voce dei criteri"},
         {"Edit", "Modifica"},
         {"Retain", "Mantieni"},
 
-        {"Warning: File name may include escaped backslash characters. " +
-                        "It is not necessary to escape backslash characters " +
-                        "(the tool escapes characters as necessary when writing " +
-                        "the policy contents to the persistent store).\n\n" +
-                        "Click on Retain to retain the entered name, or click on " +
-                        "Edit to edit the name.",
-            "Warning: File name may include escaped backslash characters. " +
-                        "It is not necessary to escape backslash characters " +
-                        "(the tool escapes characters as necessary when writing " +
-                        "the policy contents to the persistent store).\n\n" +
-                        "Click on Retain to retain the entered name, or click on " +
-                        "Edit to edit the name."},
+        {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
+            "Avvertenza: il nome file pu\u00F2 includere barre rovesciate con escape. Non \u00E8 necessario eseguire l'escape delle barre rovesciate (se necessario lo strumento esegue l'escape dei caratteri al momento della scrittura del contenuto dei criteri nell'area di memorizzazione persistente).\n\nFare click su Mantieni per conservare il nome immesso, oppure su Modifica per modificare il nome."},
 
-        {"Add Public Key Alias", "Aggiungi alias chiave pubblica"},
-        {"Remove Public Key Alias", "Elimina alias chiave pubblica"},
+        {"Add.Public.Key.Alias", "Aggiungi alias chiave pubblica"},
+        {"Remove.Public.Key.Alias", "Rimuovi alias chiave pubblica"},
         {"File", "File"},
-        {"KeyStore", "KeyStore"},
-        {"Policy File:", "Policy file:"},
-        {"Could not open policy file: policyFile: e.toString()",
+        {"KeyStore", "Keystore"},
+        {"Policy.File.", "File dei criteri:"},
+        {"Could.not.open.policy.file.policyFile.e.toString.",
                 "Impossibile aprire il file di criteri {0}: {1}"},
-        {"Policy Tool", "Policy Tool"},
-        {"Errors have occurred while opening the policy configuration.  View the Warning Log for more information.",
-                "Si sono verificati errori durante l'apertura della configurazione della policy. Consultare il registro degli avvisi per ulteriori informazioni."},
+        {"Policy.Tool", "Strumento criteri"},
+        {"Errors.have.occurred.while.opening.the.policy.configuration.View.the.Warning.Log.for.more.information.",
+                "Si sono verificati errori durante l'apertura della configurazione dei criteri. Consultare il registro delle avvertenze per ulteriori informazioni."},
         {"Error", "Errore"},
         {"OK", "OK"},
         {"Status", "Stato"},
-        {"Warning", "Avviso"},
-        {"Permission:                                                       ",
-                "Permesso:                                                       "},
-        {"Principal Type:", "Tipo Principal:"},
-        {"Principal Name:", "Nome Principal:"},
-        {"Target Name:                                                    ",
-                "Nome obiettivo:                                                    "},
-        {"Actions:                                                             ",
+        {"Warning", "Avvertenza"},
+        {"Permission.",
+                "Autorizzazione:                                                       "},
+        {"Principal.Type.", "Tipo principal:"},
+        {"Principal.Name.", "Nome principal:"},
+        {"Target.Name.",
+                "Nome destinazione:                                                    "},
+        {"Actions.",
                 "Azioni:                                                             "},
-        {"OK to overwrite existing file filename?",
+        {"OK.to.overwrite.existing.file.filename.",
                 "OK per sovrascrivere il file {0}?"},
         {"Cancel", "Annulla"},
-        {"CodeBase:", "CodeBase:"},
-        {"SignedBy:", "SignedBy:"},
-        {"Add Principal", "Aggiungi Principal"},
-        {"Edit Principal", "Modifica Principal"},
-        {"Remove Principal", "Elimina Principal"},
-        {"Principals:", "Principal:"},
-        {"  Add Permission", " Aggiungi permesso"},
-        {"  Edit Permission", " Modifica permesso"},
-        {"Remove Permission", "Elimina permesso"},
+        {"CodeBase.", "CodeBase:"},
+        {"SignedBy.", "SignedBy:"},
+        {"Add.Principal", "Aggiungi principal"},
+        {"Edit.Principal", "Modifica principal"},
+        {"Remove.Principal", "Rimuovi principal"},
+        {"Principals.", "Principal:"},
+        {".Add.Permission", "  Aggiungi autorizzazione"},
+        {".Edit.Permission", "  Modifica autorizzazione"},
+        {"Remove.Permission", "Rimuovi autorizzazione"},
         {"Done", "Fine"},
-        {"KeyStore URL:", "URL KeyStore:"},
-        {"KeyStore Type:", "Tipo KeyStore:"},
-        {"KeyStore Provider:", "Fornitore KeyStore:"},
-        {"KeyStore Password URL:", "URL password KeyStore:"},
+        {"KeyStore.URL.", "URL keystore:"},
+        {"KeyStore.Type.", "Tipo keystore:"},
+        {"KeyStore.Provider.", "Provider keystore:"},
+        {"KeyStore.Password.URL.", "URL password keystore:"},
         {"Principals", "Principal:"},
-        {"  Edit Principal:", " Modifica Principal:"},
-        {"  Add New Principal:", " Aggiungi nuova Principal:"},
-        {"Permissions", "Permessi"},
-        {"  Edit Permission:", " Modifica permesso:"},
-        {"  Add New Permission:", " Aggiungi nuovo permesso:"},
-        {"Signed By:", "Firmato da:"},
-        {"Cannot Specify Principal with a Wildcard Class without a Wildcard Name",
-            "Impossibile specificare Principal con una classe wildcard senza un nome wildcard"},
-        {"Cannot Specify Principal without a Name",
-            "Impossibile specificare Principal senza un nome"},
-        {"Permission and Target Name must have a value",
-                "Il permesso e il nome di obiettivo non possono essere nulli"},
-        {"Remove this Policy Entry?", "Eliminare questa policy entry?"},
-        {"Overwrite File", "Sovrascrivi file"},
-        {"Policy successfully written to filename",
-                "La policy \u00e8 stata scritta correttamente in {0}"},
-        {"null filename", "nome file nullo"},
-        {"Save changes?", "Salvare le modifiche?"},
-        {"Yes", "S\u00ec"},
+        {".Edit.Principal.", "  Modifica principal:"},
+        {".Add.New.Principal.", "  Aggiungi nuovo principal:"},
+        {"Permissions", "Autorizzazioni"},
+        {".Edit.Permission.", "  Modifica autorizzazione:"},
+        {".Add.New.Permission.", "  Aggiungi nuova autorizzazione:"},
+        {"Signed.By.", "Firmato da:"},
+        {"Cannot.Specify.Principal.with.a.Wildcard.Class.without.a.Wildcard.Name",
+            "Impossibile specificare principal con una classe carattere jolly senza un nome carattere jolly"},
+        {"Cannot.Specify.Principal.without.a.Name",
+            "Impossibile specificare principal senza un nome"},
+        {"Permission.and.Target.Name.must.have.a.value",
+                "L'autorizzazione e il nome destinazione non possono essere nulli"},
+        {"Remove.this.Policy.Entry.", "Rimuovere questa voce dei criteri?"},
+        {"Overwrite.File", "Sovrascrivi file"},
+        {"Policy.successfully.written.to.filename",
+                "I criteri sono stati scritti in {0}"},
+        {"null.filename", "nome file nullo"},
+        {"Save.changes.", "Salvare le modifiche?"},
+        {"Yes", "S\u00EC"},
         {"No", "No"},
-        {"Policy Entry", "Policy entry"},
-        {"Save Changes", "Salva le modifiche"},
-        {"No Policy Entry selected", "Nessuna policy entry selezionata"},
-        {"Unable to open KeyStore: ex.toString()",
-                "Impossibile aprire il KeyStore: {0}"},
-        {"No principal selected", "Nessuna Principal selezionata"},
-        {"No permission selected", "Nessun permesso selezionato"},
+        {"Policy.Entry", "Voce dei criteri"},
+        {"Save.Changes", "Salva le modifiche"},
+        {"No.Policy.Entry.selected", "Nessuna voce dei criteri selezionata"},
+        {"Unable.to.open.KeyStore.ex.toString.",
+                "Impossibile aprire il keystore: {0}"},
+        {"No.principal.selected", "Nessun principal selezionato"},
+        {"No.permission.selected", "Nessuna autorizzazione selezionata"},
         {"name", "nome"},
-        {"configuration type", "tipo di configurazione"},
-        {"environment variable name", "nome variabile ambiente"},
-        {"library name", "nome libreria"},
-        {"package name", "nome package"},
-        {"policy type", "tipo di criteri"},
-        {"property name", "nome propriet\u00e0"},
-        {"provider name", "nome provider"},
-        {"Principal List", "Elenco principale"},
-        {"Permission List", "Elenco autorizzazioni"},
-        {"Code Base", "Codebase"},
-        {"KeyStore U R L:", "URL KeyStore:"},
-        {"KeyStore Password U R L:", "URL password KeyStore:"},
+        {"configuration.type", "tipo di configurazione"},
+        {"environment.variable.name", "nome variabile ambiente"},
+        {"library.name", "nome libreria"},
+        {"package.name", "nome package"},
+        {"policy.type", "tipo di criteri"},
+        {"property.name", "nome propriet\u00E0"},
+        {"Principal.List", "Lista principal"},
+        {"Permission.List", "Lista autorizzazioni"},
+        {"Code.Base", "Codebase"},
+        {"KeyStore.U.R.L.", "URL keystore:"},
+        {"KeyStore.Password.U.R.L.", "URL password keystore:"},
 
 
         // javax.security.auth.PrivateCredentialPermission
-        {"invalid null input(s)", "input nullo/i non valido/i"},
-        {"actions can only be 'read'", "le azioni possono essere solamente 'lette'"},
-        {"permission name [name] syntax invalid: ",
-                "sintassi non valida per il nome di permesso [{0}]: "},
-        {"Credential Class not followed by a Principal Class and Name",
-                "la classe Credential non \u00e8 seguita da un nome e una classe Principal"},
-        {"Principal Class not followed by a Principal Name",
-                "la classe Principal non \u00e8 seguita da un nome Principal"},
-        {"Principal Name must be surrounded by quotes",
-                "il nome Principal deve essere compreso tra virgolette"},
-        {"Principal Name missing end quote",
-                "virgolette di chiusura del nome Principal mancanti"},
-        {"PrivateCredentialPermission Principal Class can not be a wildcard (*) value if Principal Name is not a wildcard (*) value",
-                "la classe Principal PrivateCredentialPermission non pu\u00f2 essere un valore wildcard (*) se il nome Principal a sua volta non \u00e8 un valore wildcard (*)"},
-        {"CredOwner:\n\tPrincipal Class = class\n\tPrincipal Name = name",
-                "ProprCred:\n\tclasse Principal = {0}\n\tNome Principal = {1}"},
+        {"invalid.null.input.s.", "input nullo/i non valido/i"},
+        {"actions.can.only.be.read.", "le azioni possono essere solamente 'lette'"},
+        {"permission.name.name.syntax.invalid.",
+                "sintassi [{0}] non valida per il nome autorizzazione: "},
+        {"Credential.Class.not.followed.by.a.Principal.Class.and.Name",
+                "la classe di credenziali non \u00E8 seguita da un nome e una classe di principal"},
+        {"Principal.Class.not.followed.by.a.Principal.Name",
+                "la classe di principal non \u00E8 seguita da un nome principal"},
+        {"Principal.Name.must.be.surrounded.by.quotes",
+                "il nome principal deve essere compreso tra apici"},
+        {"Principal.Name.missing.end.quote",
+                "apice di chiusura del nome principal mancante"},
+        {"PrivateCredentialPermission.Principal.Class.can.not.be.a.wildcard.value.if.Principal.Name.is.not.a.wildcard.value",
+                "la classe principal PrivateCredentialPermission non pu\u00F2 essere un valore carattere jolly (*) se il nome principal a sua volta non \u00E8 un valore carattere jolly (*)"},
+        {"CredOwner.Principal.Class.class.Principal.Name.name",
+                "CredOwner:\n\tclasse Principal = {0}\n\tNome Principal = {1}"},
 
         // javax.security.auth.x500
-        {"provided null name", "il nome fornito \u00e8 nullo"},
-        {"provided null keyword map", "specificata mappa parole chiave null"},
-        {"provided null OID map", "specificata mappa OID null"},
+        {"provided.null.name", "il nome fornito \u00E8 nullo"},
+        {"provided.null.keyword.map", "specificata mappa parole chiave null"},
+        {"provided.null.OID.map", "specificata mappa OID null"},
 
         // javax.security.auth.Subject
-        {"invalid null AccessControlContext provided",
+        {"invalid.null.AccessControlContext.provided",
                 "fornito un valore nullo non valido per AccessControlContext"},
-        {"invalid null action provided", "fornita un'azione nulla non valida"},
-        {"invalid null Class provided", "fornita una classe nulla non valida"},
-        {"Subject:\n", "Subject:\n"},
-        {"\tPrincipal: ", "\tPrincipal: "},
-        {"\tPublic Credential: ", "\tCredenziale pubblica: "},
-        {"\tPrivate Credentials inaccessible\n",
+        {"invalid.null.action.provided", "fornita un'azione nulla non valida"},
+        {"invalid.null.Class.provided", "fornita una classe nulla non valida"},
+        {"Subject.", "Oggetto:\n"},
+        {".Principal.", "\tPrincipal: "},
+        {".Public.Credential.", "\tCredenziale pubblica: "},
+        {".Private.Credentials.inaccessible.",
                 "\tImpossibile accedere alle credenziali private\n"},
-        {"\tPrivate Credential: ", "\tCredenziale privata: "},
-        {"\tPrivate Credential inaccessible\n",
+        {".Private.Credential.", "\tCredenziale privata: "},
+        {".Private.Credential.inaccessible.",
                 "\tImpossibile accedere alla credenziale privata\n"},
-        {"Subject is read-only", "Subject \u00e8 di sola lettura"},
-        {"attempting to add an object which is not an instance of java.security.Principal to a Subject's Principal Set",
-                "si \u00e8 tentato di aggiungere un oggetto che non \u00e8 un'istanza di java.security.Principal a un set Principal di Subject"},
-        {"attempting to add an object which is not an instance of class",
-                "si \u00e8 tentato di aggiungere un oggetto che non \u00e8 un''istanza di {0}"},
+        {"Subject.is.read.only", "L'oggetto \u00E8 di sola lettura"},
+        {"attempting.to.add.an.object.which.is.not.an.instance.of.java.security.Principal.to.a.Subject.s.Principal.Set",
+                "si \u00E8 tentato di aggiungere un oggetto che non \u00E8 un'istanza di java.security.Principal a un set principal dell'oggetto"},
+        {"attempting.to.add.an.object.which.is.not.an.instance.of.class",
+                "si \u00E8 tentato di aggiungere un oggetto che non \u00E8 un''istanza di {0}"},
 
         // javax.security.auth.login.AppConfigurationEntry
-        {"LoginModuleControlFlag: ", "LoginModuleControlFlag: "},
+        {"LoginModuleControlFlag.", "LoginModuleControlFlag: "},
 
         // javax.security.auth.login.LoginContext
-        {"Invalid null input: name", "Input nullo non valido: nome"},
-        {"No LoginModules configured for name",
-         "Nessun LoginModule configurato per {0}"},
-        {"invalid null Subject provided", "fornito un valore nullo non valido per Subject"},
-        {"invalid null CallbackHandler provided",
+        {"Invalid.null.input.name", "Input nullo non valido: nome"},
+        {"No.LoginModules.configured.for.name",
+         "Nessun LoginModules configurato per {0}"},
+        {"invalid.null.Subject.provided", "fornito un valore nullo non valido per l'oggetto"},
+        {"invalid.null.CallbackHandler.provided",
                 "fornito un valore nullo non valido per CallbackHandler"},
-        {"null subject - logout called before login",
-                "subject nullo - il logout \u00e8 stato chiamato prima del login"},
-        {"unable to instantiate LoginModule, module, because it does not provide a no-argument constructor",
-                "impossibile istanziare il LoginModule {0} in quando non restituisce un valore vuoto per il costruttore"},
-        {"unable to instantiate LoginModule",
-                "impossibile istanziare LoginModule"},
-        {"unable to instantiate LoginModule: ",
-                "Impossibile creare un'istanza di LoginModule: "},
-        {"unable to find LoginModule class: ",
+        {"null.subject.logout.called.before.login",
+                "oggetto nullo - il logout \u00E8 stato richiamato prima del login"},
+        {"unable.to.instantiate.LoginModule.module.because.it.does.not.provide.a.no.argument.constructor",
+                "impossibile creare un''istanza di LoginModule {0} in quanto non restituisce un argomento vuoto per il costruttore"},
+        {"unable.to.instantiate.LoginModule",
+                "impossibile creare un'istanza di LoginModule"},
+        {"unable.to.instantiate.LoginModule.",
+                "impossibile creare un'istanza di LoginModule: "},
+        {"unable.to.find.LoginModule.class.",
                 "impossibile trovare la classe LoginModule: "},
-        {"unable to access LoginModule: ",
+        {"unable.to.access.LoginModule.",
                 "impossibile accedere a LoginModule "},
-        {"Login Failure: all modules ignored",
+        {"Login.Failure.all.modules.ignored",
                 "Errore di login: tutti i moduli sono stati ignorati"},
 
         // sun.security.provider.PolicyFile
 
-        {"java.security.policy: error parsing policy:\n\tmessage",
-                "java.security.policy: errore nell''analisi di {0}:\n\t{1}"},
-        {"java.security.policy: error adding Permission, perm:\n\tmessage",
-                "java.security.policy: errore nell''aggiunta del permesso {0}:\n\t{1}"},
-        {"java.security.policy: error adding Entry:\n\tmessage",
-                "java.security.policy: errore nell''aggiunta dell''entry:\n\t{0}"},
-        {"alias name not provided (pe.name)", "impossibile fornire nome alias ({0})"},
-        {"unable to perform substitution on alias, suffix",
+        {"java.security.policy.error.parsing.policy.message",
+                "java.security.policy: errore durante l''analisi di {0}:\n\t{1}"},
+        {"java.security.policy.error.adding.Permission.perm.message",
+                "java.security.policy: errore durante l''aggiunta dell''autorizzazione {0}:\n\t{1}"},
+        {"java.security.policy.error.adding.Entry.message",
+                "java.security.policy: errore durante l''aggiunta della voce:\n\t{0}"},
+        {"alias.name.not.provided.pe.name.", "impossibile fornire nome alias ({0})"},
+        {"unable.to.perform.substitution.on.alias.suffix",
                 "impossibile eseguire una sostituzione sull''alias, {0}"},
-        {"substitution value, prefix, unsupported",
+        {"substitution.value.prefix.unsupported",
                 "valore sostituzione, {0}, non supportato"},
-        {"(", "("},
-        {")", ")"},
-        {"type can't be null","il tipo non pu\u00f2 essere nullo"},
+        {"LPARAM", "("},
+        {"RPARAM", ")"},
+        {"type.can.t.be.null","il tipo non pu\u00F2 essere nullo"},
 
         // sun.security.provider.PolicyParser
-        {"keystorePasswordURL can not be specified without also specifying keystore",
+        {"keystorePasswordURL.can.not.be.specified.without.also.specifying.keystore",
                 "Impossibile specificare keystorePasswordURL senza specificare anche il keystore"},
-        {"expected keystore type", "tipo di keystore previsto"},
-        {"expected keystore provider", "provider di keystore previsto"},
-        {"multiple Codebase expressions",
+        {"expected.keystore.type", "tipo keystore previsto"},
+        {"expected.keystore.provider", "provider di keystore previsto"},
+        {"multiple.Codebase.expressions",
                 "espressioni Codebase multiple"},
-        {"multiple SignedBy expressions","espressioni SignedBy multiple"},
-        {"SignedBy has empty alias","SignedBy presenta un alias vuoto"},
-        {"can not specify Principal with a wildcard class without a wildcard name",
-                "impossibile specificare Principal con una classe wildcard senza un nome wildcard"},
-        {"expected codeBase or SignedBy or Principal",
-                "previsto codeBase o SignedBy o Principal"},
-        {"expected permission entry", "prevista entry di permesso"},
-        {"number ", "numero "},
-        {"expected [expect], read [end of file]",
+        {"multiple.SignedBy.expressions","espressioni SignedBy multiple"},
+        {"SignedBy.has.empty.alias","SignedBy presenta un alias vuoto"},
+        {"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name",
+                "impossibile specificare un principal con una classe carattere jolly senza un nome carattere jolly"},
+        {"expected.codeBase.or.SignedBy.or.Principal",
+                "previsto codeBase o SignedBy o principal"},
+        {"expected.permission.entry", "prevista voce di autorizzazione"},
+        {"number.", "numero "},
+        {"expected.expect.read.end.of.file.",
                 "previsto [{0}], letto [end of file]"},
-        {"expected [;], read [end of file]",
+        {"expected.read.end.of.file.",
                 "previsto [;], letto [end of file]"},
-        {"line number: msg", "riga {0}: {1}"},
-        {"line number: expected [expect], found [actual]",
+        {"line.number.msg", "riga {0}: {1}"},
+        {"line.number.expected.expect.found.actual.",
                 "riga {0}: previsto [{1}], trovato [{2}]"},
-        {"null principalClass or principalName",
+        {"null.principalClass.or.principalName",
                 "principalClass o principalName nullo"},
 
         // sun.security.pkcs11.SunPKCS11
-        {"PKCS11 Token [providerName] Password: ",
+        {"PKCS11.Token.providerName.Password.",
                 "Password per token PKCS11 [{0}]: "},
 
         /* --- DEPRECATED --- */
         // javax.security.auth.Policy
-        {"unable to instantiate Subject-based policy",
-                "impossibile creare un'istanza dei criteri basati su Subject"}
+        {"unable.to.instantiate.Subject.based.policy",
+                "impossibile creare un'istanza dei criteri basati sull'oggetto"}
     };
 
 
@@ -648,3 +670,4 @@
         return contents;
     }
 }
+
--- a/jdk/src/share/classes/sun/security/util/Resources_ja.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/util/Resources_ja.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, 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
@@ -35,605 +35,627 @@
     private static final Object[][] contents = {
 
         // shared (from jarsigner)
-        {" ", " "},
-        {"  ", "  "},
-        {"      ", "      "},
-        {", ", ", "},
+        {"SPACE", " "},
+        {"2SPACE", "  "},
+        {"6SPACE", "      "},
+        {"COMMA", ", "},
         // shared (from keytool)
-        {"\n", "\n"},
-        {"*******************************************",
+        {"NEWLINE", "\n"},
+        {"STAR",
                 "*******************************************"},
-        {"*******************************************\n\n",
+        {"STARNN",
                 "*******************************************\n\n"},
 
-        // keytool
-        {"keytool error: ", "keytool \u30a8\u30e9\u30fc: "},
-        {"Illegal option:  ", "\u4e0d\u6b63\u306a\u30aa\u30d7\u30b7\u30e7\u30f3:  "},
-        {"Try keytool -help","keytool -help \u3092\u5b9f\u884c\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044"},
-        {"Command option <flag> needs an argument.", "\u30b3\u30de\u30f3\u30c9\u30aa\u30d7\u30b7\u30e7\u30f3 {0} \u306b\u306f\u5f15\u6570\u304c\u5fc5\u8981\u3067\u3059\u3002"},
-        {"Warning:  Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified <command> value.",
-                "\u8b66\u544a: PKCS12 \u30ad\u30fc\u30b9\u30c8\u30a2\u3067\u306f\u3001\u30b9\u30c8\u30a2\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3068\u9375\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u7570\u306a\u3063\u3066\u3044\u3066\u306f\u306a\u308a\u307e\u305b\u3093\u3002\u30e6\u30fc\u30b6\u30fc\u304c\u6307\u5b9a\u3057\u305f {0} \u306e\u5024\u306f\u7121\u8996\u3057\u307e\u3059\u3002"},
-        {"-keystore must be NONE if -storetype is {0}",
-                "-storetype \u304c {0} \u306e\u5834\u5408 -keystore \u306f NONE \u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093"},
-        {"Too may retries, program terminated",
-                 "\u518d\u8a66\u884c\u304c\u591a\u3059\u304e\u307e\u3059\u3002\u30d7\u30ed\u30b0\u30e9\u30e0\u304c\u7d42\u4e86\u3057\u307e\u3057\u305f"},
-        {"-storepasswd and -keypasswd commands not supported if -storetype is {0}",
-                "-storetype \u304c {0} \u306e\u5834\u5408 -storepasswd \u30b3\u30de\u30f3\u30c9\u3068 -keypasswd \u30b3\u30de\u30f3\u30c9\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093"},
-        {"-keypasswd commands not supported if -storetype is PKCS12",
-                "-storetype \u304c PKCS12 \u306e\u5834\u5408\u3001-keypasswd \u30b3\u30de\u30f3\u30c9\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093"},
-        {"-keypass and -new can not be specified if -storetype is {0}",
-                "-storetype \u304c {0} \u306e\u5834\u5408 -keypass \u3068 -new \u306f\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093"},
-        {"if -protected is specified, then -storepass, -keypass, and -new must not be specified",
-                "-protected \u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001-storepass\u3001-keypass\u3001-new \u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093"},
-        {"if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified",
-                "-srcprotected \u3092\u6307\u5b9a\u3059\u308b\u5834\u5408\u3001-srcstorepass \u304a\u3088\u3073 -srckeypass \u306f\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093"},
-        {"if keystore is not password protected, then -storepass, -keypass, and -new must not be specified",
-                "\u30ad\u30fc\u30b9\u30c8\u30a2\u304c\u30d1\u30b9\u30ef\u30fc\u30c9\u3067\u4fdd\u8b77\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001-storepass\u3001-keypass\u3001\u304a\u3088\u3073 -new \u306f\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093"},
-        {"if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified",
-                "\u30bd\u30fc\u30b9\u30ad\u30fc\u30b9\u30c8\u30a2\u304c\u30d1\u30b9\u30ef\u30fc\u30c9\u3067\u4fdd\u8b77\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001-srcstorepass \u3068 -srckeypass \u306f\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093"},
-        {"Validity must be greater than zero",
-                "\u59a5\u5f53\u6027\u306f\u30bc\u30ed\u3088\u308a\u5927\u304d\u304f\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002"},
-        {"provName not a provider", "{0} \u306f\u30d7\u30ed\u30d0\u30a4\u30c0\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"Usage error: no command provided", "\u4f7f\u7528\u30a8\u30e9\u30fc: \u30b3\u30de\u30f3\u30c9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
-        {"Usage error, <arg> is not a legal command", "\u4f7f\u7528\u30a8\u30e9\u30fc: {0} \u306f\u4e0d\u6b63\u306a\u30b3\u30de\u30f3\u30c9\u3067\u3059"},
-        {"Source keystore file exists, but is empty: ", "\u30bd\u30fc\u30b9\u30ad\u30fc\u30b9\u30c8\u30a2\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u5b58\u5728\u3057\u307e\u3059\u304c\u7a7a\u3067\u3059: "},
-        {"Please specify -srckeystore", "-srckeystore \u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044"},
-        {"Must not specify both -v and -rfc with 'list' command",
-                "'list' \u30b3\u30de\u30f3\u30c9\u306b -v \u3068 -rfc \u306e\u4e21\u65b9\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002"},
-        {"Key password must be at least 6 characters",
-                "\u9375\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u306f 6 \u6587\u5b57\u4ee5\u4e0a\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002"},
-        {"New password must be at least 6 characters",
-                "\u65b0\u898f\u30d1\u30b9\u30ef\u30fc\u30c9\u306f 6 \u6587\u5b57\u4ee5\u4e0a\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002"},
-        {"Keystore file exists, but is empty: ",
-                "\u30ad\u30fc\u30b9\u30c8\u30a2\u30d5\u30a1\u30a4\u30eb\u306f\u5b58\u5728\u3057\u307e\u3059\u304c\u3001\u7a7a\u3067\u3059: "},
-        {"Keystore file does not exist: ",
-                "\u30ad\u30fc\u30b9\u30c8\u30a2\u30d5\u30a1\u30a4\u30eb\u306f\u5b58\u5728\u3057\u307e\u305b\u3093: "},
-        {"Must specify destination alias", "\u5b9b\u5148\u306e\u5225\u540d\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"},
-        {"Must specify alias", "\u5225\u540d\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"},
-        {"Keystore password must be at least 6 characters",
-                "\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u306f 6 \u6587\u5b57\u4ee5\u4e0a\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002"},
-        {"Enter keystore password:  ", "\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044:  "},
-        {"Enter source keystore password:  ", "\u30bd\u30fc\u30b9\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044:  "},
-        {"Enter destination keystore password:  ", "\u51fa\u529b\u5148\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044:  "},
-        {"Keystore password is too short - must be at least 6 characters",
-         "\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u77ed\u904e\u304e\u307e\u3059 - 6 \u6587\u5b57\u4ee5\u4e0a\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"Unknown Entry Type", "\u672a\u77e5\u306e\u30a8\u30f3\u30c8\u30ea\u30bf\u30a4\u30d7"},
-        {"Too many failures. Alias not changed", "\u969c\u5bb3\u304c\u591a\u3059\u304e\u307e\u3059\u3002\u5225\u540d\u306f\u5909\u66f4\u3055\u308c\u307e\u305b\u3093"},
-        {"Entry for alias <alias> successfully imported.",
-                 "\u5225\u540d {0} \u306e\u30a8\u30f3\u30c8\u30ea\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u306b\u6210\u529f\u3057\u307e\u3057\u305f\u3002"},
-        {"Entry for alias <alias> not imported.", "\u5225\u540d {0} \u306e\u30a8\u30f3\u30c8\u30ea\u306f\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002"},
-        {"Problem importing entry for alias <alias>: <exception>.\nEntry for alias <alias> not imported.",
-                 "\u5225\u540d {0} \u306e\u30a8\u30f3\u30c8\u30ea\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u4e2d\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {1}\u3002\n\u5225\u540d {0} \u306e\u30a8\u30f3\u30c8\u30ea\u306f\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002"},
-        {"Import command completed:  <ok> entries successfully imported, <fail> entries failed or cancelled",
-                 "\u30a4\u30f3\u30dd\u30fc\u30c8\u30b3\u30de\u30f3\u30c9\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f:  {0} \u4ef6\u306e\u30a8\u30f3\u30c8\u30ea\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u304c\u6210\u529f\u3057\u307e\u3057\u305f\u3002{1} \u4ef6\u306e\u30a8\u30f3\u30c8\u30ea\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u304c\u5931\u6557\u3057\u305f\u304b\u53d6\u308a\u6d88\u3055\u308c\u307e\u3057\u305f"},
-        {"Warning: Overwriting existing alias <alias> in destination keystore",
-                 "\u8b66\u544a: \u51fa\u529b\u5148\u30ad\u30fc\u30b9\u30c8\u30a2\u5185\u306e\u65e2\u5b58\u306e\u5225\u540d {0} \u3092\u4e0a\u66f8\u304d\u3057\u3066\u3044\u307e\u3059"},
-        {"Existing entry alias <alias> exists, overwrite? [no]:  ",
-                 "\u65e2\u5b58\u306e\u30a8\u30f3\u30c8\u30ea\u306e\u5225\u540d {0} \u304c\u5b58\u5728\u3057\u3066\u3044\u307e\u3059\u3002\u4e0a\u66f8\u304d\u3057\u307e\u3059\u304b? [no]:  "},
-        {"Too many failures - try later", "\u969c\u5bb3\u304c\u591a\u904e\u304e\u307e\u3059 - \u5f8c\u3067\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"Certification request stored in file <filename>",
-                "\u8a3c\u660e\u66f8\u8981\u6c42\u304c\u30d5\u30a1\u30a4\u30eb <{0}> \u306b\u4fdd\u5b58\u3055\u308c\u307e\u3057\u305f\u3002"},
-        {"Submit this to your CA", "\u3053\u308c\u3092 CA \u306b\u63d0\u51fa\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"if alias not specified, destalias, srckeypass, and destkeypass must not be specified",
-            "\u5225\u540d\u3092\u6307\u5b9a\u3057\u306a\u3044\u5834\u5408\u3001\u51fa\u529b\u5148\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u5225\u540d\u3001\u30bd\u30fc\u30b9\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3001\u304a\u3088\u3073\u51fa\u529b\u5148\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093"},
-        {"Certificate stored in file <filename>",
-                "\u8a3c\u660e\u66f8\u304c\u30d5\u30a1\u30a4\u30eb <{0}> \u306b\u4fdd\u5b58\u3055\u308c\u307e\u3057\u305f\u3002"},
-        {"Certificate reply was installed in keystore",
-                "\u8a3c\u660e\u66f8\u5fdc\u7b54\u304c\u30ad\u30fc\u30b9\u30c8\u30a2\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u307e\u3057\u305f\u3002"},
-        {"Certificate reply was not installed in keystore",
-                "\u8a3c\u660e\u66f8\u5fdc\u7b54\u304c\u30ad\u30fc\u30b9\u30c8\u30a2\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002"},
-        {"Certificate was added to keystore",
-                "\u8a3c\u660e\u66f8\u304c\u30ad\u30fc\u30b9\u30c8\u30a2\u306b\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002"},
-        {"Certificate was not added to keystore",
-                "\u8a3c\u660e\u66f8\u304c\u30ad\u30fc\u30b9\u30c8\u30a2\u306b\u8ffd\u52a0\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002"},
-        {"[Storing ksfname]", "[{0} \u3092\u683c\u7d0d\u4e2d]"},
-        {"alias has no public key (certificate)",
-                "{0} \u306b\u306f\u516c\u958b\u9375 (\u8a3c\u660e\u66f8) \u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"Cannot derive signature algorithm",
-                "\u7f72\u540d\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002"},
-        {"Alias <alias> does not exist",
-                "\u5225\u540d <{0}> \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002"},
-        {"Alias <alias> has no certificate",
-                "\u5225\u540d <{0}> \u306f\u8a3c\u660e\u66f8\u3092\u4fdd\u6301\u3057\u307e\u305b\u3093\u3002"},
-        {"Key pair not generated, alias <alias> already exists",
-                "\u9375\u30da\u30a2\u306f\u751f\u6210\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u5225\u540d <{0}> \u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002"},
-        {"Cannot derive signature algorithm",
-                "\u7f72\u540d\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002"},
-        {"Generating keysize bit keyAlgName key pair and self-signed certificate (sigAlgName) with a validity of validality days\n\tfor: x500Name",
-                "{3} \u65e5\u9593\u6709\u52b9\u306a {0} \u30d3\u30c3\u30c8\u306e {1} \u306e\u9375\u30da\u30a2\u3068\u81ea\u5df1\u7f72\u540d\u578b\u8a3c\u660e\u66f8 ({2}) \u3092\u751f\u6210\u3057\u3066\u3044\u307e\u3059\n\t\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u540d: {4}"},
-        {"Enter key password for <alias>", "<{0}> \u306e\u9375\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"\t(RETURN if same as keystore password):  ",
-                "\t(\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3068\u540c\u3058\u5834\u5408\u306f RETURN \u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044):  "},
-        {"Key password is too short - must be at least 6 characters",
-                "\u9375\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u77ed\u904e\u304e\u307e\u3059 - 6 \u6587\u5b57\u4ee5\u4e0a\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"Too many failures - key not added to keystore",
-                "\u969c\u5bb3\u304c\u591a\u904e\u304e\u307e\u3059 - \u9375\u306f\u30ad\u30fc\u30b9\u30c8\u30a2\u306b\u8ffd\u52a0\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f"},
-        {"Destination alias <dest> already exists",
-                "\u5b9b\u5148\u306e\u5225\u540d <{0}> \u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002"},
-        {"Password is too short - must be at least 6 characters",
-                "\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u77ed\u904e\u304e\u307e\u3059 - 6 \u6587\u5b57\u4ee5\u4e0a\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"Too many failures. Key entry not cloned",
-                "\u969c\u5bb3\u304c\u591a\u904e\u304e\u307e\u3059\u3002\u9375\u30a8\u30f3\u30c8\u30ea\u306f\u8907\u88fd\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002"},
-        {"key password for <alias>", "<{0}> \u306e\u9375\u306e\u30d1\u30b9\u30ef\u30fc\u30c9"},
-        {"Keystore entry for <id.getName()> already exists",
-                "<{0}> \u306e\u30ad\u30fc\u30b9\u30c8\u30a2\u30a8\u30f3\u30c8\u30ea\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002"},
-        {"Creating keystore entry for <id.getName()> ...",
-                "<{0}> \u306e\u30ad\u30fc\u30b9\u30c8\u30a2\u30a8\u30f3\u30c8\u30ea\u3092\u4f5c\u6210\u4e2d..."},
-        {"No entries from identity database added",
-                "\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u8ffd\u52a0\u3055\u308c\u305f\u30a8\u30f3\u30c8\u30ea\u306f\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"Alias name: alias", "\u5225\u540d: {0}"},
-        {"Creation date: keyStore.getCreationDate(alias)",
-                "\u4f5c\u6210\u65e5: {0,date}"},
-        {"alias, keyStore.getCreationDate(alias), ",
-                "{0}, {1,date}, "},
-        {"alias, ", "{0}, "},
-        {"Entry type: <type>", "\u30a8\u30f3\u30c8\u30ea\u30bf\u30a4\u30d7: {0}"},
-        {"Certificate chain length: ", "\u8a3c\u660e\u9023\u9396\u306e\u9577\u3055: "},
-        {"Certificate[(i + 1)]:", "\u8a3c\u660e\u66f8[{0,number,integer}]:"},
-        {"Certificate fingerprint (MD5): ", "\u8a3c\u660e\u66f8\u306e\u30d5\u30a3\u30f3\u30ac\u30fc\u30d7\u30ea\u30f3\u30c8 (MD5): "},
-        {"Entry type: trustedCertEntry\n", "\u30a8\u30f3\u30c8\u30ea\u306e\u30bf\u30a4\u30d7: trustedCertEntry\n"},
-        {"trustedCertEntry,", "trustedCertEntry,"},
-        {"Keystore type: ", "\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30bf\u30a4\u30d7: "},
-        {"Keystore provider: ", "\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30d7\u30ed\u30d0\u30a4\u30c0: "},
-        {"Your keystore contains keyStore.size() entry",
-                "\u30ad\u30fc\u30b9\u30c8\u30a2\u306b\u306f {0,number,integer} \u30a8\u30f3\u30c8\u30ea\u304c\u542b\u307e\u308c\u307e\u3059\u3002"},
-        {"Your keystore contains keyStore.size() entries",
-                "\u30ad\u30fc\u30b9\u30c8\u30a2\u306b\u306f {0,number,integer} \u30a8\u30f3\u30c8\u30ea\u304c\u542b\u307e\u308c\u307e\u3059\u3002"},
-        {"Failed to parse input", "\u5165\u529b\u306e\u69cb\u6587\u89e3\u6790\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002"},
-        {"Empty input", "\u5165\u529b\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"Not X.509 certificate", "X.509 \u8a3c\u660e\u66f8\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"Cannot derive signature algorithm",
-                "\u7f72\u540d\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002"},
-        {"alias has no public key", "{0} \u306b\u306f\u516c\u958b\u9375\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"alias has no X.509 certificate", "{0} \u306b\u306f X.509 \u8a3c\u660e\u66f8\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"New certificate (self-signed):", "\u65b0\u3057\u3044\u8a3c\u660e\u66f8 (\u81ea\u5df1\u7f72\u540d\u578b):"},
-        {"Reply has no certificates", "\u5fdc\u7b54\u306b\u306f\u8a3c\u660e\u66f8\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"Certificate not imported, alias <alias> already exists",
-                "\u8a3c\u660e\u66f8\u306f\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u5225\u540d <{0}> \u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002"},
-        {"Input not an X.509 certificate", "\u5165\u529b\u306f X.509 \u8a3c\u660e\u66f8\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"Certificate already exists in keystore under alias <trustalias>",
-                "\u8a3c\u660e\u66f8\u306f\u3001\u5225\u540d <{0}> \u306e\u30ad\u30fc\u30b9\u30c8\u30a2\u306b\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002"},
-        {"Do you still want to add it? [no]:  ",
-                "\u8ffd\u52a0\u3057\u307e\u3059\u304b? [no]:  "},
-        {"Certificate already exists in system-wide CA keystore under alias <trustalias>",
-                "\u8a3c\u660e\u66f8\u306f\u3001\u5225\u540d <{0}> \u306e\u30b7\u30b9\u30c6\u30e0\u898f\u6a21\u306e CA \u30ad\u30fc\u30b9\u30c8\u30a2\u5185\u306b\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002"},
-        {"Do you still want to add it to your own keystore? [no]:  ",
-                "\u30ad\u30fc\u30b9\u30c8\u30a2\u306b\u8ffd\u52a0\u3057\u307e\u3059\u304b? [no]:  "},
-        {"Trust this certificate? [no]:  ", "\u3053\u306e\u8a3c\u660e\u66f8\u3092\u4fe1\u983c\u3057\u307e\u3059\u304b? [no]:  "},
-        {"YES", "YES"},
-        {"New prompt: ", "\u65b0\u898f {0}: "},
-        {"Passwords must differ", "\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u7570\u306a\u3063\u3066\u3044\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002"},
-        {"Re-enter new prompt: ", "\u65b0\u898f {0} \u3092\u518d\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044: "},
-        {"Re-enter new password: ", "\u65b0\u898f\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u518d\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044: "},
-        {"They don't match. Try again", "\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002\u3082\u3046\u4e00\u5ea6\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044"},
-        {"Enter prompt alias name:  ", "{0} \u306e\u5225\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044:  "},
-        {"Enter new alias name\t(RETURN to cancel import for this entry):  ",
-                 "\u65b0\u3057\u3044\u5225\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\t(\u3053\u306e\u30a8\u30f3\u30c8\u30ea\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u3092\u53d6\u308a\u6d88\u3059\u5834\u5408\u306f RETURN \u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044):  "},
-        {"Enter alias name:  ", "\u5225\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044:  "},
-        {"\t(RETURN if same as for <otherAlias>)",
-                "\t(<{0}> \u3068\u540c\u3058\u5834\u5408\u306f RETURN \u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044)"},
-        {"*PATTERN* printX509Cert",
-                "\u6240\u6709\u8005: {0}\n\u767a\u884c\u8005: {1}\n\u30b7\u30ea\u30a2\u30eb\u756a\u53f7: {2}\n\u6709\u52b9\u671f\u9593\u306e\u958b\u59cb\u65e5: {3} \u7d42\u4e86\u65e5: {4}\n\u8a3c\u660e\u66f8\u306e\u30d5\u30a3\u30f3\u30ac\u30fc\u30d7\u30ea\u30f3\u30c8:\n\t MD5:  {5}\n\t SHA1: {6}\n\t \u7f72\u540d\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u540d: {7}\n\t \u30d0\u30fc\u30b8\u30e7\u30f3: {8}"},
-        {"What is your first and last name?",
-                "\u59d3\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"What is the name of your organizational unit?",
-                "\u7d44\u7e54\u5358\u4f4d\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"What is the name of your organization?",
-                "\u7d44\u7e54\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"What is the name of your City or Locality?",
-                "\u90fd\u5e02\u540d\u307e\u305f\u306f\u5730\u57df\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"What is the name of your State or Province?",
-                "\u5dde\u540d\u307e\u305f\u306f\u5730\u65b9\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"What is the two-letter country code for this unit?",
-                "\u3053\u306e\u5358\u4f4d\u306b\u8a72\u5f53\u3059\u308b 2 \u6587\u5b57\u306e\u56fd\u756a\u53f7\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"Is <name> correct?", "{0} \u3067\u3088\u308d\u3057\u3044\u3067\u3059\u304b?"},
-        {"no", "no"},
-        {"yes", "yes"},
+        // keytool: Help part
+        {".OPTION.", " [OPTION]..."},
+        {"Options.", "\u30AA\u30D7\u30B7\u30E7\u30F3:"},
+        {"Use.keytool.help.for.all.available.commands",
+                 "\u4F7F\u7528\u53EF\u80FD\u306A\u3059\u3079\u3066\u306E\u30B3\u30DE\u30F3\u30C9\u306B\u3064\u3044\u3066\u306F\"keytool -help\"\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044"},
+        {"Key.and.Certificate.Management.Tool",
+                 "\u30AD\u30FC\u304A\u3088\u3073\u8A3C\u660E\u66F8\u7BA1\u7406\u30C4\u30FC\u30EB"},
+        {"Commands.", "\u30B3\u30DE\u30F3\u30C9:"},
+        {"Use.keytool.command.name.help.for.usage.of.command.name",
+                "command_name\u306E\u4F7F\u7528\u65B9\u6CD5\u306B\u3064\u3044\u3066\u306F\"keytool -command_name -help\"\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044"},
+        // keytool: help: commands
+        {"Generates.a.certificate.request",
+                "\u8A3C\u660E\u66F8\u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u751F\u6210\u3057\u307E\u3059"}, //-certreq
+        {"Changes.an.entry.s.alias",
+                "\u30A8\u30F3\u30C8\u30EA\u306E\u5225\u540D\u3092\u5909\u66F4\u3057\u307E\u3059"}, //-changealias
+        {"Deletes.an.entry",
+                "\u30A8\u30F3\u30C8\u30EA\u3092\u524A\u9664\u3057\u307E\u3059"}, //-delete
+        {"Exports.certificate",
+                "\u8A3C\u660E\u66F8\u3092\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3057\u307E\u3059"}, //-exportcert
+        {"Generates.a.key.pair",
+                "\u9375\u30DA\u30A2\u3092\u751F\u6210\u3057\u307E\u3059"}, //-genkeypair
+        {"Generates.a.secret.key",
+                "\u79D8\u5BC6\u9375\u3092\u751F\u6210\u3057\u307E\u3059"}, //-genseckey
+        {"Generates.certificate.from.a.certificate.request",
+                "\u8A3C\u660E\u66F8\u30EA\u30AF\u30A8\u30B9\u30C8\u304B\u3089\u8A3C\u660E\u66F8\u3092\u751F\u6210\u3057\u307E\u3059"}, //-gencert
+        {"Generates.CRL", "CRL\u3092\u751F\u6210\u3057\u307E\u3059"}, //-gencrl
+        {"Imports.entries.from.a.JDK.1.1.x.style.identity.database",
+                "JDK 1.1.x-style\u30A2\u30A4\u30C7\u30F3\u30C6\u30A3\u30C6\u30A3\u30FB\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u304B\u3089\u30A8\u30F3\u30C8\u30EA\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3057\u307E\u3059"}, //-identitydb
+        {"Imports.a.certificate.or.a.certificate.chain",
+                "\u8A3C\u660E\u66F8\u307E\u305F\u306F\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3057\u307E\u3059"}, //-importcert
+        {"Imports.one.or.all.entries.from.another.keystore",
+                "\u5225\u306E\u30AD\u30FC\u30B9\u30C8\u30A2\u304B\u30891\u3064\u307E\u305F\u306F\u3059\u3079\u3066\u306E\u30A8\u30F3\u30C8\u30EA\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3057\u307E\u3059"}, //-importkeystore
+        {"Clones.a.key.entry",
+                "\u9375\u30A8\u30F3\u30C8\u30EA\u306E\u30AF\u30ED\u30FC\u30F3\u3092\u4F5C\u6210\u3057\u307E\u3059"}, //-keyclone
+        {"Changes.the.key.password.of.an.entry",
+                "\u30A8\u30F3\u30C8\u30EA\u306E\u9375\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5909\u66F4\u3057\u307E\u3059"}, //-keypasswd
+        {"Lists.entries.in.a.keystore",
+                "\u30AD\u30FC\u30B9\u30C8\u30A2\u5185\u306E\u30A8\u30F3\u30C8\u30EA\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059"}, //-list
+        {"Prints.the.content.of.a.certificate",
+                "\u8A3C\u660E\u66F8\u306E\u5185\u5BB9\u3092\u51FA\u529B\u3057\u307E\u3059"}, //-printcert
+        {"Prints.the.content.of.a.certificate.request",
+                "\u8A3C\u660E\u66F8\u30EA\u30AF\u30A8\u30B9\u30C8\u306E\u5185\u5BB9\u3092\u51FA\u529B\u3057\u307E\u3059"}, //-printcertreq
+        {"Prints.the.content.of.a.CRL.file",
+                "CRL\u30D5\u30A1\u30A4\u30EB\u306E\u5185\u5BB9\u3092\u51FA\u529B\u3057\u307E\u3059"}, //-printcrl
+        {"Generates.a.self.signed.certificate",
+                "\u81EA\u5DF1\u7F72\u540D\u578B\u8A3C\u660E\u66F8\u3092\u751F\u6210\u3057\u307E\u3059"}, //-selfcert
+        {"Changes.the.store.password.of.a.keystore",
+                "\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30B9\u30C8\u30A2\u30FB\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5909\u66F4\u3057\u307E\u3059"}, //-storepasswd
+        // keytool: help: options
+        {"alias.name.of.the.entry.to.process",
+                "\u51E6\u7406\u3059\u308B\u30A8\u30F3\u30C8\u30EA\u306E\u5225\u540D"}, //-alias
+        {"destination.alias",
+                "\u51FA\u529B\u5148\u306E\u5225\u540D"}, //-destalias
+        {"destination.key.password",
+                "\u51FA\u529B\u5148\u30AD\u30FC\u306E\u30D1\u30B9\u30EF\u30FC\u30C9"}, //-destkeypass
+        {"destination.keystore.name",
+                "\u51FA\u529B\u5148\u30AD\u30FC\u30B9\u30C8\u30A2\u540D"}, //-destkeystore
+        {"destination.keystore.password.protected",
+                "\u51FA\u529B\u5148\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u4FDD\u8B77\u5BFE\u8C61\u30D1\u30B9\u30EF\u30FC\u30C9"}, //-destprotected
+        {"destination.keystore.provider.name",
+                "\u51FA\u529B\u5148\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D7\u30ED\u30D0\u30A4\u30C0\u540D"}, //-destprovidername
+        {"destination.keystore.password",
+                "\u51FA\u529B\u5148\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9"}, //-deststorepass
+        {"destination.keystore.type",
+                "\u51FA\u529B\u5148\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30BF\u30A4\u30D7"}, //-deststoretype
+        {"distinguished.name",
+                "\u8B58\u5225\u540D"}, //-dname
+        {"X.509.extension",
+                "X.509\u62E1\u5F35"}, //-ext
+        {"output.file.name",
+                "\u51FA\u529B\u30D5\u30A1\u30A4\u30EB\u540D"}, //-file and -outfile
+        {"input.file.name",
+                "\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u540D"}, //-file and -infile
+        {"key.algorithm.name",
+                "\u9375\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u540D"}, //-keyalg
+        {"key.password",
+                "\u9375\u306E\u30D1\u30B9\u30EF\u30FC\u30C9"}, //-keypass
+        {"key.bit.size",
+                "\u9375\u306E\u30D3\u30C3\u30C8\u30FB\u30B5\u30A4\u30BA"}, //-keysize
+        {"keystore.name",
+                "\u30AD\u30FC\u30B9\u30C8\u30A2\u540D"}, //-keystore
+        {"new.password",
+                "\u65B0\u898F\u30D1\u30B9\u30EF\u30FC\u30C9"}, //-new
+        {"do.not.prompt",
+                "\u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u8868\u793A\u3057\u306A\u3044"}, //-noprompt
+        {"password.through.protected.mechanism",
+                "\u4FDD\u8B77\u30E1\u30AB\u30CB\u30BA\u30E0\u306B\u3088\u308B\u30D1\u30B9\u30EF\u30FC\u30C9"}, //-protected
+        {"provider.argument",
+                "\u30D7\u30ED\u30D0\u30A4\u30C0\u5F15\u6570"}, //-providerarg
+        {"provider.class.name",
+                "\u30D7\u30ED\u30D0\u30A4\u30C0\u30FB\u30AF\u30E9\u30B9\u540D"}, //-providerclass
+        {"provider.name",
+                "\u30D7\u30ED\u30D0\u30A4\u30C0\u540D"}, //-providername
+        {"provider.classpath",
+                "\u30D7\u30ED\u30D0\u30A4\u30C0\u30FB\u30AF\u30E9\u30B9\u30D1\u30B9"}, //-providerpath
+        {"output.in.RFC.style",
+                "RFC\u30B9\u30BF\u30A4\u30EB\u306E\u51FA\u529B"}, //-rfc
+        {"signature.algorithm.name",
+                "\u7F72\u540D\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u540D"}, //-sigalg
+        {"source.alias",
+                "\u30BD\u30FC\u30B9\u5225\u540D"}, //-srcalias
+        {"source.key.password",
+                "\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u306E\u30D1\u30B9\u30EF\u30FC\u30C9"}, //-srckeypass
+        {"source.keystore.name",
+                "\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u540D"}, //-srckeystore
+        {"source.keystore.password.protected",
+                "\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u4FDD\u8B77\u5BFE\u8C61\u30D1\u30B9\u30EF\u30FC\u30C9"}, //-srcprotected
+        {"source.keystore.provider.name",
+                "\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D7\u30ED\u30D0\u30A4\u30C0\u540D"}, //-srcprovidername
+        {"source.keystore.password",
+                "\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9"}, //-srcstorepass
+        {"source.keystore.type",
+                "\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30BF\u30A4\u30D7"}, //-srcstoretype
+        {"SSL.server.host.and.port",
+                "SSL\u30B5\u30FC\u30D0\u30FC\u306E\u30DB\u30B9\u30C8\u3068\u30DD\u30FC\u30C8"}, //-sslserver
+        {"signed.jar.file",
+                "\u7F72\u540D\u4ED8\u304DJAR\u30D5\u30A1\u30A4\u30EB"}, //=jarfile
+        {"certificate.validity.start.date.time",
+                "\u8A3C\u660E\u66F8\u306E\u6709\u52B9\u958B\u59CB\u65E5\u6642"}, //-startdate
+        {"keystore.password",
+                "\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9"}, //-storepass
+        {"keystore.type",
+                "\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30BF\u30A4\u30D7"}, //-storetype
+        {"trust.certificates.from.cacerts",
+                "cacerts\u304B\u3089\u306E\u8A3C\u660E\u66F8\u3092\u4FE1\u983C\u3059\u308B"}, //-trustcacerts
+        {"verbose.output",
+                "\u8A73\u7D30\u51FA\u529B"}, //-v
+        {"validity.number.of.days",
+                "\u59A5\u5F53\u6027\u65E5\u6570"}, //-validity
+        {"Serial.ID.of.cert.to.revoke",
+                 "\u5931\u52B9\u3059\u308B\u8A3C\u660E\u66F8\u306E\u30B7\u30EA\u30A2\u30EBID"}, //-id
+        // keytool: Running part
+        {"keytool.error.", "keytool\u30A8\u30E9\u30FC: "},
+        {"Illegal.option.", "\u4E0D\u6B63\u306A\u30AA\u30D7\u30B7\u30E7\u30F3:  "},
+        {"Illegal.value.", "\u4E0D\u6B63\u306A\u5024: "},
+        {"Unknown.password.type.", "\u4E0D\u660E\u306A\u30D1\u30B9\u30EF\u30FC\u30C9\u30FB\u30BF\u30A4\u30D7: "},
+        {"Cannot.find.environment.variable.",
+                "\u74B0\u5883\u5909\u6570\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: "},
+        {"Cannot.find.file.", "\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: "},
+        {"Command.option.flag.needs.an.argument.", "\u30B3\u30DE\u30F3\u30C9\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3{0}\u306B\u306F\u5F15\u6570\u304C\u5FC5\u8981\u3067\u3059\u3002"},
+        {"Warning.Different.store.and.key.passwords.not.supported.for.PKCS12.KeyStores.Ignoring.user.specified.command.value.",
+                "\u8B66\u544A: PKCS12\u30AD\u30FC\u30B9\u30C8\u30A2\u3067\u306F\u3001\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3068\u9375\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u7570\u306A\u308B\u72B6\u6CC1\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u307E\u305B\u3093\u3002\u30E6\u30FC\u30B6\u30FC\u304C\u6307\u5B9A\u3057\u305F{0}\u306E\u5024\u306F\u7121\u8996\u3057\u307E\u3059\u3002"},
+        {".keystore.must.be.NONE.if.storetype.is.{0}",
+                "-storetype\u304C{0}\u306E\u5834\u5408\u3001-keystore\u306FNONE\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
+        {"Too.many.retries.program.terminated",
+                 "\u518D\u8A66\u884C\u304C\u591A\u3059\u304E\u307E\u3059\u3002\u30D7\u30ED\u30B0\u30E9\u30E0\u304C\u7D42\u4E86\u3057\u307E\u3057\u305F"},
+        {".storepasswd.and.keypasswd.commands.not.supported.if.storetype.is.{0}",
+                "-storetype\u304C{0}\u306E\u5834\u5408\u3001-storepasswd\u30B3\u30DE\u30F3\u30C9\u304A\u3088\u3073-keypasswd\u30B3\u30DE\u30F3\u30C9\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u307E\u305B\u3093"},
+        {".keypasswd.commands.not.supported.if.storetype.is.PKCS12",
+                "-storetype\u304CPKCS12\u306E\u5834\u5408\u3001-keypasswd\u30B3\u30DE\u30F3\u30C9\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u307E\u305B\u3093"},
+        {".keypass.and.new.can.not.be.specified.if.storetype.is.{0}",
+                "-storetype\u304C{0}\u306E\u5834\u5408\u3001-keypass\u3068-new\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093"},
+        {"if.protected.is.specified.then.storepass.keypass.and.new.must.not.be.specified",
+                "-protected\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001-storepass\u3001-keypass\u304A\u3088\u3073-new\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093"},
+        {"if.srcprotected.is.specified.then.srcstorepass.and.srckeypass.must.not.be.specified",
+                "-srcprotected\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001-srcstorepass\u304A\u3088\u3073-srckeypass\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093"},
+        {"if.keystore.is.not.password.protected.then.storepass.keypass.and.new.must.not.be.specified",
+                "\u30AD\u30FC\u30B9\u30C8\u30A2\u304C\u30D1\u30B9\u30EF\u30FC\u30C9\u3067\u4FDD\u8B77\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u3001-storepass\u3001-keypass\u304A\u3088\u3073-new\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093"},
+        {"if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified",
+                "\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u304C\u30D1\u30B9\u30EF\u30FC\u30C9\u3067\u4FDD\u8B77\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u3001-srcstorepass\u304A\u3088\u3073-srckeypass\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093"},
+        {"Illegal.startdate.value", "startdate\u5024\u304C\u7121\u52B9\u3067\u3059"},
+        {"Validity.must.be.greater.than.zero",
+                "\u59A5\u5F53\u6027\u306F\u30BC\u30ED\u3088\u308A\u5927\u304D\u3044\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
+        {"provName.not.a.provider", "{0}\u306F\u30D7\u30ED\u30D0\u30A4\u30C0\u3067\u306F\u3042\u308A\u307E\u305B\u3093"},
+        {"Usage.error.no.command.provided", "\u4F7F\u7528\u30A8\u30E9\u30FC: \u30B3\u30DE\u30F3\u30C9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093"},
+        {"Source.keystore.file.exists.but.is.empty.", "\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D5\u30A1\u30A4\u30EB\u306F\u3001\u5B58\u5728\u3057\u307E\u3059\u304C\u7A7A\u3067\u3059: "},
+        {"Please.specify.srckeystore", "-srckeystore\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044"},
+        {"Must.not.specify.both.v.and.rfc.with.list.command",
+                "'list'\u30B3\u30DE\u30F3\u30C9\u306B-v\u3068-rfc\u306E\u4E21\u65B9\u3092\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093"},
+        {"Key.password.must.be.at.least.6.characters",
+                "\u9375\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u306F6\u6587\u5B57\u4EE5\u4E0A\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
+        {"New.password.must.be.at.least.6.characters",
+                "\u65B0\u898F\u30D1\u30B9\u30EF\u30FC\u30C9\u306F6\u6587\u5B57\u4EE5\u4E0A\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
+        {"Keystore.file.exists.but.is.empty.",
+                "\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D5\u30A1\u30A4\u30EB\u306F\u5B58\u5728\u3057\u307E\u3059\u304C\u3001\u7A7A\u3067\u3059: "},
+        {"Keystore.file.does.not.exist.",
+                "\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D5\u30A1\u30A4\u30EB\u306F\u5B58\u5728\u3057\u307E\u305B\u3093: "},
+        {"Must.specify.destination.alias", "\u51FA\u529B\u5148\u306E\u5225\u540D\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
+        {"Must.specify.alias", "\u5225\u540D\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
+        {"Keystore.password.must.be.at.least.6.characters",
+                "\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u306F6\u6587\u5B57\u4EE5\u4E0A\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
+        {"Enter.keystore.password.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044:  "},
+        {"Enter.source.keystore.password.", "\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044:  "},
+        {"Enter.destination.keystore.password.", "\u51FA\u529B\u5148\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044:  "},
+        {"Keystore.password.is.too.short.must.be.at.least.6.characters",
+         "\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u77ED\u3059\u304E\u307E\u3059 - 6\u6587\u5B57\u4EE5\u4E0A\u306B\u3057\u3066\u304F\u3060\u3055\u3044"},
+        {"Unknown.Entry.Type", "\u4E0D\u660E\u306A\u30A8\u30F3\u30C8\u30EA\u30FB\u30BF\u30A4\u30D7"},
+        {"Too.many.failures.Alias.not.changed", "\u969C\u5BB3\u304C\u591A\u3059\u304E\u307E\u3059\u3002\u5225\u540D\u306F\u5909\u66F4\u3055\u308C\u307E\u305B\u3093"},
+        {"Entry.for.alias.alias.successfully.imported.",
+                 "\u5225\u540D{0}\u306E\u30A8\u30F3\u30C8\u30EA\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u306B\u6210\u529F\u3057\u307E\u3057\u305F\u3002"},
+        {"Entry.for.alias.alias.not.imported.", "\u5225\u540D{0}\u306E\u30A8\u30F3\u30C8\u30EA\u306F\u30A4\u30F3\u30DD\u30FC\u30C8\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002"},
+        {"Problem.importing.entry.for.alias.alias.exception.Entry.for.alias.alias.not.imported.",
+                 "\u5225\u540D{0}\u306E\u30A8\u30F3\u30C8\u30EA\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u4E2D\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F: {1}\u3002\n\u5225\u540D{0}\u306E\u30A8\u30F3\u30C8\u30EA\u306F\u30A4\u30F3\u30DD\u30FC\u30C8\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002"},
+        {"Import.command.completed.ok.entries.successfully.imported.fail.entries.failed.or.cancelled",
+                 "\u30A4\u30F3\u30DD\u30FC\u30C8\u30FB\u30B3\u30DE\u30F3\u30C9\u304C\u5B8C\u4E86\u3057\u307E\u3057\u305F: {0}\u4EF6\u306E\u30A8\u30F3\u30C8\u30EA\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u304C\u6210\u529F\u3057\u307E\u3057\u305F\u3002{1}\u4EF6\u306E\u30A8\u30F3\u30C8\u30EA\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u304C\u5931\u6557\u3057\u305F\u304B\u53D6\u308A\u6D88\u3055\u308C\u307E\u3057\u305F"},
+        {"Warning.Overwriting.existing.alias.alias.in.destination.keystore",
+                 "\u8B66\u544A: \u51FA\u529B\u5148\u30AD\u30FC\u30B9\u30C8\u30A2\u5185\u306E\u65E2\u5B58\u306E\u5225\u540D{0}\u3092\u4E0A\u66F8\u304D\u3057\u3066\u3044\u307E\u3059"},
+        {"Existing.entry.alias.alias.exists.overwrite.no.",
+                 "\u65E2\u5B58\u306E\u30A8\u30F3\u30C8\u30EA\u306E\u5225\u540D{0}\u304C\u5B58\u5728\u3057\u3066\u3044\u307E\u3059\u3002\u4E0A\u66F8\u304D\u3057\u307E\u3059\u304B\u3002[\u3044\u3044\u3048]:  "},
+        {"Too.many.failures.try.later", "\u969C\u5BB3\u304C\u591A\u3059\u304E\u307E\u3059 - \u5F8C\u3067\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044"},
+        {"Certification.request.stored.in.file.filename.",
+                "\u8A3C\u660E\u66F8\u30EA\u30AF\u30A8\u30B9\u30C8\u304C\u30D5\u30A1\u30A4\u30EB<{0}>\u306B\u4FDD\u5B58\u3055\u308C\u307E\u3057\u305F"},
+        {"Submit.this.to.your.CA", "\u3053\u308C\u3092CA\u306B\u63D0\u51FA\u3057\u3066\u304F\u3060\u3055\u3044"},
+        {"if.alias.not.specified.destalias.srckeypass.and.destkeypass.must.not.be.specified",
+            "\u5225\u540D\u3092\u6307\u5B9A\u3057\u306A\u3044\u5834\u5408\u3001\u51FA\u529B\u5148\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u5225\u540D\u3001\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u304A\u3088\u3073\u51FA\u529B\u5148\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093"},
+        {"Certificate.stored.in.file.filename.",
+                "\u8A3C\u660E\u66F8\u304C\u30D5\u30A1\u30A4\u30EB<{0}>\u306B\u4FDD\u5B58\u3055\u308C\u307E\u3057\u305F"},
+        {"Certificate.reply.was.installed.in.keystore",
+                "\u8A3C\u660E\u66F8\u5FDC\u7B54\u304C\u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u307E\u3057\u305F"},
+        {"Certificate.reply.was.not.installed.in.keystore",
+                "\u8A3C\u660E\u66F8\u5FDC\u7B54\u304C\u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F"},
+        {"Certificate.was.added.to.keystore",
+                "\u8A3C\u660E\u66F8\u304C\u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u8FFD\u52A0\u3055\u308C\u307E\u3057\u305F"},
+        {"Certificate.was.not.added.to.keystore",
+                "\u8A3C\u660E\u66F8\u304C\u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u8FFD\u52A0\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F"},
+        {".Storing.ksfname.", "[{0}\u3092\u683C\u7D0D\u4E2D]"},
+        {"alias.has.no.public.key.certificate.",
+                "{0}\u306B\u306F\u516C\u958B\u9375(\u8A3C\u660E\u66F8)\u304C\u3042\u308A\u307E\u305B\u3093"},
+        {"Cannot.derive.signature.algorithm",
+                "\u7F72\u540D\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093"},
+        {"Alias.alias.does.not.exist",
+                "\u5225\u540D<{0}>\u306F\u5B58\u5728\u3057\u307E\u305B\u3093"},
+        {"Alias.alias.has.no.certificate",
+                "\u5225\u540D<{0}>\u306B\u306F\u8A3C\u660E\u66F8\u304C\u3042\u308A\u307E\u305B\u3093"},
+        {"Key.pair.not.generated.alias.alias.already.exists",
+                "\u9375\u30DA\u30A2\u306F\u751F\u6210\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u5225\u540D<{0}>\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059"},
+        {"Generating.keysize.bit.keyAlgName.key.pair.and.self.signed.certificate.sigAlgName.with.a.validity.of.validality.days.for",
+                "{3}\u65E5\u9593\u6709\u52B9\u306A{0}\u30D3\u30C3\u30C8\u306E{1}\u306E\u9375\u30DA\u30A2\u3068\u81EA\u5DF1\u7F72\u540D\u578B\u8A3C\u660E\u66F8({2})\u3092\u751F\u6210\u3057\u3066\u3044\u307E\u3059\n\t\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u540D: {4}"},
+        {"Enter.key.password.for.alias.", "<{0}>\u306E\u9375\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044"},
+        {".RETURN.if.same.as.keystore.password.",
+                "\t(\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3068\u540C\u3058\u5834\u5408\u306FRETURN\u3092\u62BC\u3057\u3066\u304F\u3060\u3055\u3044):  "},
+        {"Key.password.is.too.short.must.be.at.least.6.characters",
+                "\u9375\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u77ED\u3059\u304E\u307E\u3059 - 6\u6587\u5B57\u4EE5\u4E0A\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044"},
+        {"Too.many.failures.key.not.added.to.keystore",
+                "\u969C\u5BB3\u304C\u591A\u3059\u304E\u307E\u3059 - \u9375\u306F\u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u8FFD\u52A0\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F"},
+        {"Destination.alias.dest.already.exists",
+                "\u51FA\u529B\u5148\u306E\u5225\u540D<{0}>\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059"},
+        {"Password.is.too.short.must.be.at.least.6.characters",
+                "\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u77ED\u3059\u304E\u307E\u3059 - 6\u6587\u5B57\u4EE5\u4E0A\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044"},
+        {"Too.many.failures.Key.entry.not.cloned",
+                "\u969C\u5BB3\u304C\u591A\u3059\u304E\u307E\u3059\u3002\u9375\u30A8\u30F3\u30C8\u30EA\u306E\u30AF\u30ED\u30FC\u30F3\u306F\u4F5C\u6210\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F"},
+        {"key.password.for.alias.", "<{0}>\u306E\u9375\u306E\u30D1\u30B9\u30EF\u30FC\u30C9"},
+        {"Keystore.entry.for.id.getName.already.exists",
+                "<{0}>\u306E\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30A8\u30F3\u30C8\u30EA\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059"},
+        {"Creating.keystore.entry.for.id.getName.",
+                "<{0}>\u306E\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30A8\u30F3\u30C8\u30EA\u3092\u4F5C\u6210\u4E2D..."},
+        {"No.entries.from.identity.database.added",
+                "\u30A2\u30A4\u30C7\u30F3\u30C6\u30A3\u30C6\u30A3\u30FB\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u304B\u3089\u8FFD\u52A0\u3055\u308C\u305F\u30A8\u30F3\u30C8\u30EA\u306F\u3042\u308A\u307E\u305B\u3093"},
+        {"Alias.name.alias", "\u5225\u540D: {0}"},
+        {"Creation.date.keyStore.getCreationDate.alias.",
+                "\u4F5C\u6210\u65E5: {0,date}"},
+        {"alias.keyStore.getCreationDate.alias.",
+                "{0},{1,date}, "},
+        {"alias.", "{0}, "},
+        {"Entry.type.type.", "\u30A8\u30F3\u30C8\u30EA\u30FB\u30BF\u30A4\u30D7: {0}"},
+        {"Certificate.chain.length.", "\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u306E\u9577\u3055: "},
+        {"Certificate.i.1.", "\u8A3C\u660E\u66F8[{0,number,integer}]:"},
+        {"Certificate.fingerprint.SHA1.", "\u8A3C\u660E\u66F8\u306E\u30D5\u30A3\u30F3\u30AC\u30D7\u30EA\u30F3\u30C8(SHA1): "},
+        {"Entry.type.trustedCertEntry.", "\u30A8\u30F3\u30C8\u30EA\u306E\u30BF\u30A4\u30D7: trustedCertEntry\n"},
+        {"trustedCertEntry.", "trustedCertEntry,"},
+        {"Keystore.type.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30BF\u30A4\u30D7: "},
+        {"Keystore.provider.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D7\u30ED\u30D0\u30A4\u30C0: "},
+        {"Your.keystore.contains.keyStore.size.entry",
+                "\u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u306F{0,number,integer}\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u307E\u3059"},
+        {"Your.keystore.contains.keyStore.size.entries",
+                "\u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u306F{0,number,integer}\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u307E\u3059"},
+        {"Failed.to.parse.input", "\u5165\u529B\u306E\u69CB\u6587\u89E3\u6790\u306B\u5931\u6557\u3057\u307E\u3057\u305F"},
+        {"Empty.input", "\u5165\u529B\u304C\u3042\u308A\u307E\u305B\u3093"},
+        {"Not.X.509.certificate", "X.509\u8A3C\u660E\u66F8\u3067\u306F\u3042\u308A\u307E\u305B\u3093"},
+        {"alias.has.no.public.key", "{0}\u306B\u306F\u516C\u958B\u9375\u304C\u3042\u308A\u307E\u305B\u3093"},
+        {"alias.has.no.X.509.certificate", "{0}\u306B\u306FX.509\u8A3C\u660E\u66F8\u304C\u3042\u308A\u307E\u305B\u3093"},
+        {"New.certificate.self.signed.", "\u65B0\u3057\u3044\u8A3C\u660E\u66F8(\u81EA\u5DF1\u7F72\u540D\u578B):"},
+        {"Reply.has.no.certificates", "\u5FDC\u7B54\u306B\u306F\u8A3C\u660E\u66F8\u304C\u3042\u308A\u307E\u305B\u3093"},
+        {"Certificate.not.imported.alias.alias.already.exists",
+                "\u8A3C\u660E\u66F8\u306F\u30A4\u30F3\u30DD\u30FC\u30C8\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u5225\u540D<{0}>\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059"},
+        {"Input.not.an.X.509.certificate", "\u5165\u529B\u306FX.509\u8A3C\u660E\u66F8\u3067\u306F\u3042\u308A\u307E\u305B\u3093"},
+        {"Certificate.already.exists.in.keystore.under.alias.trustalias.",
+                "\u8A3C\u660E\u66F8\u306F\u3001\u5225\u540D<{0}>\u306E\u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059"},
+        {"Do.you.still.want.to.add.it.no.",
+                "\u8FFD\u52A0\u3057\u307E\u3059\u304B\u3002[\u3044\u3044\u3048]:  "},
+        {"Certificate.already.exists.in.system.wide.CA.keystore.under.alias.trustalias.",
+                "\u8A3C\u660E\u66F8\u306F\u3001\u5225\u540D<{0}>\u306E\u30B7\u30B9\u30C6\u30E0\u898F\u6A21\u306ECA\u30AD\u30FC\u30B9\u30C8\u30A2\u5185\u306B\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059"},
+        {"Do.you.still.want.to.add.it.to.your.own.keystore.no.",
+                "\u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u8FFD\u52A0\u3057\u307E\u3059\u304B\u3002 [\u3044\u3044\u3048]:  "},
+        {"Trust.this.certificate.no.", "\u3053\u306E\u8A3C\u660E\u66F8\u3092\u4FE1\u983C\u3057\u307E\u3059\u304B\u3002 [\u3044\u3044\u3048]:  "},
+        {"YES", "\u306F\u3044"},
+        {"New.prompt.", "\u65B0\u898F{0}: "},
+        {"Passwords.must.differ", "\u30D1\u30B9\u30EF\u30FC\u30C9\u306F\u7570\u306A\u3063\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
+        {"Re.enter.new.prompt.", "\u65B0\u898F{0}\u3092\u518D\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: "},
+        {"Re.enter.new.password.", "\u65B0\u898F\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u518D\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: "},
+        {"They.don.t.match.Try.again", "\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002\u3082\u3046\u4E00\u5EA6\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044"},
+        {"Enter.prompt.alias.name.", "{0}\u306E\u5225\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044:  "},
+        {"Enter.new.alias.name.RETURN.to.cancel.import.for.this.entry.",
+                 "\u65B0\u3057\u3044\u5225\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\t(\u3053\u306E\u30A8\u30F3\u30C8\u30EA\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u3092\u53D6\u308A\u6D88\u3059\u5834\u5408\u306FRETURN\u3092\u62BC\u3057\u3066\u304F\u3060\u3055\u3044):  "},
+        {"Enter.alias.name.", "\u5225\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044:  "},
+        {".RETURN.if.same.as.for.otherAlias.",
+                "\t(<{0}>\u3068\u540C\u3058\u5834\u5408\u306FRETURN\u3092\u62BC\u3057\u3066\u304F\u3060\u3055\u3044)"},
+        {".PATTERN.printX509Cert",
+                "\u6240\u6709\u8005: {0}\n\u767A\u884C\u8005: {1}\n\u30B7\u30EA\u30A2\u30EB\u756A\u53F7: {2}\n\u6709\u52B9\u671F\u9593\u306E\u958B\u59CB\u65E5: {3}\u7D42\u4E86\u65E5: {4}\n\u8A3C\u660E\u66F8\u306E\u30D5\u30A3\u30F3\u30AC\u30D7\u30EA\u30F3\u30C8:\n\t MD5:  {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t \u7F72\u540D\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u540D: {8}\n\t \u30D0\u30FC\u30B8\u30E7\u30F3: {9}"},
+        {"What.is.your.first.and.last.name.",
+                "\u59D3\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
+        {"What.is.the.name.of.your.organizational.unit.",
+                "\u7D44\u7E54\u5358\u4F4D\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
+        {"What.is.the.name.of.your.organization.",
+                "\u7D44\u7E54\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
+        {"What.is.the.name.of.your.City.or.Locality.",
+                "\u90FD\u5E02\u540D\u307E\u305F\u306F\u5730\u57DF\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
+        {"What.is.the.name.of.your.State.or.Province.",
+                "\u90FD\u9053\u5E9C\u770C\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
+        {"What.is.the.two.letter.country.code.for.this.unit.",
+                "\u3053\u306E\u5358\u4F4D\u306B\u8A72\u5F53\u3059\u308B2\u6587\u5B57\u306E\u56FD\u30B3\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
+        {"Is.name.correct.", "{0}\u3067\u3088\u308D\u3057\u3044\u3067\u3059\u304B\u3002"},
+        {"no", "\u3044\u3044\u3048"},
+        {"yes", "\u306F\u3044"},
         {"y", "y"},
-        {"  [defaultValue]:  ", "  [{0}]:  "},
-        {"Alias <alias> has no key",
-                "\u5225\u540d <{0}> \u306b\u306f\u9375\u304c\u3042\u308a\u307e\u305b\u3093"},
-        {"Alias <alias> references an entry type that is not a private key entry.  The -keyclone command only supports cloning of private key entries",
-                 "\u5225\u540d <{0}> \u304c\u53c2\u7167\u3057\u3066\u3044\u308b\u30a8\u30f3\u30c8\u30ea\u30bf\u30a4\u30d7\u306f\u975e\u516c\u958b\u9375\u30a8\u30f3\u30c8\u30ea\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002-keyclone \u30b3\u30de\u30f3\u30c9\u306f\u975e\u516c\u958b\u9375\u30a8\u30f3\u30c8\u30ea\u306e\u8907\u88fd\u306e\u307f\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059"},
+        {".defaultValue.", "  [{0}]:  "},
+        {"Alias.alias.has.no.key",
+                "\u5225\u540D<{0}>\u306B\u306F\u9375\u304C\u3042\u308A\u307E\u305B\u3093"},
+        {"Alias.alias.references.an.entry.type.that.is.not.a.private.key.entry.The.keyclone.command.only.supports.cloning.of.private.key",
+                 "\u5225\u540D<{0}>\u304C\u53C2\u7167\u3057\u3066\u3044\u308B\u30A8\u30F3\u30C8\u30EA\u30FB\u30BF\u30A4\u30D7\u306F\u79D8\u5BC6\u9375\u30A8\u30F3\u30C8\u30EA\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002-keyclone\u30B3\u30DE\u30F3\u30C9\u306F\u79D8\u5BC6\u9375\u30A8\u30F3\u30C8\u30EA\u306E\u30AF\u30ED\u30FC\u30F3\u4F5C\u6210\u306E\u307F\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059"},
 
-        {"*****************  WARNING WARNING WARNING  *****************",
-            "*****************  \u8b66\u544a \u8b66\u544a \u8b66\u544a  *****************"},
+        {".WARNING.WARNING.WARNING.",
+            "*****************  WARNING WARNING WARNING  *****************"},
+        {"Signer.d.", "\u7F72\u540D\u8005\u756A\u53F7%d:"},
+        {"Timestamp.", "\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7:"},
+        {"Signature.", "\u7F72\u540D:"},
+        {"CRLs.", "CRL:"},
+        {"Certificate.owner.", "\u8A3C\u660E\u66F8\u306E\u6240\u6709\u8005: "},
+        {"Not.a.signed.jar.file", "\u7F72\u540D\u4ED8\u304DJAR\u30D5\u30A1\u30A4\u30EB\u3067\u306F\u3042\u308A\u307E\u305B\u3093"},
+        {"No.certificate.from.the.SSL.server",
+                "SSL\u30B5\u30FC\u30D0\u30FC\u304B\u3089\u306E\u8A3C\u660E\u66F8\u304C\u3042\u308A\u307E\u305B\u3093"},
 
         // Translators of the following 5 pairs, ATTENTION:
         // the next 5 string pairs are meant to be combined into 2 paragraphs,
         // 1+3+4 and 2+3+5. make sure your translation also does.
-        {"* The integrity of the information stored in your keystore  *",
-            "*  \u30ad\u30fc\u30b9\u30c8\u30a2\u306b\u4fdd\u5b58\u3055\u308c\u305f\u60c5\u5831\u306e\u5b8c\u5168\u6027\u306f\u691c\u8a3c\u3055\u308c\u3066  *"},
-        {"* The integrity of the information stored in the srckeystore*",
-            "* \u30bd\u30fc\u30b9\u30ad\u30fc\u30b9\u30c8\u30a2\u306b\u4fdd\u5b58\u3055\u308c\u305f\u60c5\u5831\u306e\u5b8c\u5168\u6027*"},
-        {"* has NOT been verified!  In order to verify its integrity, *",
-            "*  \u3044\u307e\u305b\u3093!  \u5b8c\u5168\u6027\u3092\u691c\u8a3c\u3059\u308b\u306b\u306f\u3001\u30ad\u30fc\u30b9\u30c8\u30a2\u306e   *"},
-        {"* you must provide your keystore password.                  *",
-            "*  \u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002            *"},
-        {"* you must provide the srckeystore password.                *",
-            "* \u30bd\u30fc\u30b9\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002                *"},
+        {".The.integrity.of.the.information.stored.in.your.keystore.",
+            "* \u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u4FDD\u5B58\u3055\u308C\u305F\u60C5\u5831\u306E\u6574\u5408\u6027 *"},
+        {".The.integrity.of.the.information.stored.in.the.srckeystore.",
+            "* \u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u4FDD\u5B58\u3055\u308C\u305F\u60C5\u5831\u306E\u5B8C\u5168\u6027 *"},
+        {".has.NOT.been.verified.In.order.to.verify.its.integrity.",
+            "* \u691C\u8A3C\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u6574\u5408\u6027\u3092\u691C\u8A3C\u3059\u308B\u306B\u306F  *"},
+        {".you.must.provide.your.keystore.password.",
+            "* \u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002        *"},
+        {".you.must.provide.the.srckeystore.password.",
+            "* \u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002          *"},
 
 
-        {"Certificate reply does not contain public key for <alias>",
-                "\u8a3c\u660e\u66f8\u5fdc\u7b54\u306b\u306f\u3001<{0}> \u306e\u516c\u958b\u9375\u306f\u542b\u307e\u308c\u307e\u305b\u3093\u3002"},
-        {"Incomplete certificate chain in reply",
-                "\u5fdc\u7b54\u3057\u305f\u8a3c\u660e\u9023\u9396\u306f\u4e0d\u5b8c\u5168\u3067\u3059\u3002"},
-        {"Certificate chain in reply does not verify: ",
-                "\u5fdc\u7b54\u3057\u305f\u8a3c\u660e\u9023\u9396\u306f\u691c\u8a3c\u3055\u308c\u3066\u3044\u307e\u305b\u3093: "},
-        {"Top-level certificate in reply:\n",
-                "\u5fdc\u7b54\u3057\u305f\u30c8\u30c3\u30d7\u30ec\u30d9\u30eb\u306e\u8a3c\u660e\u66f8:\n"},
-        {"... is not trusted. ", "... \u306f\u4fe1\u983c\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 "},
-        {"Install reply anyway? [no]:  ", "\u5fdc\u7b54\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u304b? [no]:  "},
-        {"NO", "NO"},
-        {"Public keys in reply and keystore don't match",
-                "\u5fdc\u7b54\u3057\u305f\u516c\u958b\u9375\u3068\u30ad\u30fc\u30b9\u30c8\u30a2\u304c\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002"},
-        {"Certificate reply and certificate in keystore are identical",
-                "\u8a3c\u660e\u66f8\u5fdc\u7b54\u3068\u30ad\u30fc\u30b9\u30c8\u30a2\u5185\u306e\u8a3c\u660e\u66f8\u304c\u540c\u3058\u3067\u3059\u3002"},
-        {"Failed to establish chain from reply",
-                "\u5fdc\u7b54\u304b\u3089\u9023\u9396\u3092\u78ba\u7acb\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002"},
+        {"Certificate.reply.does.not.contain.public.key.for.alias.",
+                "\u8A3C\u660E\u66F8\u5FDC\u7B54\u306B\u306F\u3001<{0}>\u306E\u516C\u958B\u9375\u306F\u542B\u307E\u308C\u307E\u305B\u3093"},
+        {"Incomplete.certificate.chain.in.reply",
+                "\u5FDC\u7B54\u3057\u305F\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u306F\u4E0D\u5B8C\u5168\u3067\u3059"},
+        {"Certificate.chain.in.reply.does.not.verify.",
+                "\u5FDC\u7B54\u3057\u305F\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u306F\u691C\u8A3C\u3055\u308C\u3066\u3044\u307E\u305B\u3093: "},
+        {"Top.level.certificate.in.reply.",
+                "\u5FDC\u7B54\u3057\u305F\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E\u8A3C\u660E\u66F8:\n"},
+        {".is.not.trusted.", "... \u306F\u4FE1\u983C\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 "},
+        {"Install.reply.anyway.no.", "\u5FDC\u7B54\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u307E\u3059\u304B\u3002[\u3044\u3044\u3048]:  "},
+        {"NO", "\u3044\u3044\u3048"},
+        {"Public.keys.in.reply.and.keystore.don.t.match",
+                "\u5FDC\u7B54\u3057\u305F\u516C\u958B\u9375\u3068\u30AD\u30FC\u30B9\u30C8\u30A2\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093"},
+        {"Certificate.reply.and.certificate.in.keystore.are.identical",
+                "\u8A3C\u660E\u66F8\u5FDC\u7B54\u3068\u30AD\u30FC\u30B9\u30C8\u30A2\u5185\u306E\u8A3C\u660E\u66F8\u304C\u540C\u3058\u3067\u3059"},
+        {"Failed.to.establish.chain.from.reply",
+                "\u5FDC\u7B54\u304B\u3089\u9023\u9396\u3092\u78BA\u7ACB\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F"},
         {"n", "n"},
-        {"Wrong answer, try again", "\u5fdc\u7b54\u304c\u9593\u9055\u3063\u3066\u3044\u307e\u3059\u3002\u3082\u3046\u4e00\u5ea6\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"Secret key not generated, alias <alias> already exists",
-                "\u79d8\u5bc6\u9375\u306f\u751f\u6210\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u5225\u540d <{0}> \u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u3066\u3044\u307e\u3059"},
-        {"Please provide -keysize for secret key generation",
-                "\u79d8\u5bc6\u9375\u306e\u751f\u6210\u6642\u306b\u306f -keysize \u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044"},
-        {"keytool usage:\n", "keytool \u306e\u4f7f\u3044\u65b9:\n"},
-
-        {"Extensions: ", "\u62e1\u5f35: "},
-
-        {"-certreq     [-v] [-protected]",
-                "-certreq     [-v] [-protected]"},
-        {"\t     [-alias <alias>] [-sigalg <sigalg>]",
-                "\t     [-alias <alias>] [-sigalg <sigalg>]"},
-        {"\t     [-file <csr_file>] [-keypass <keypass>]",
-                "\t     [-file <csr_file>] [-keypass <keypass>]"},
-        {"\t     [-keystore <keystore>] [-storepass <storepass>]",
-                "\t     [-keystore <keystore>] [-storepass <storepass>]"},
-        {"\t     [-storetype <storetype>] [-providername <name>]",
-                "\t     [-storetype <storetype>] [-providername <name>]"},
-        {"\t     [-providerclass <provider_class_name> [-providerarg <arg>]] ...",
-                "\t     [-providerclass <provider_class_name> [-providerarg <arg>]] ..."},
-        {"\t     [-providerpath <pathlist>]",
-                "\t     [-providerpath <pathlist>]"},
-        {"-delete      [-v] [-protected] -alias <alias>",
-                "-delete      [-v] [-protected] -alias <alias>"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-export      [-v] [-rfc] [-protected]",
-        //       "-export      [-v] [-rfc] [-protected]"},
-        {"-exportcert  [-v] [-rfc] [-protected]",
-                "-exportcert  [-v] [-rfc] [-protected]"},
-        {"\t     [-alias <alias>] [-file <cert_file>]",
-                "\t     [-alias <alias>] [-file <cert_file>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-genkey      [-v] [-protected]",
-        //        "-genkey      [-v] [-protected]"},
-        {"-genkeypair  [-v] [-protected]",
-                "-genkeypair  [-v] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
-        {"\t     [-keyalg <keyalg>] [-keysize <keysize>]",
-                "\t     [-keyalg <keyalg>] [-keysize <keysize>]"},
-        {"\t     [-sigalg <sigalg>] [-dname <dname>]",
-                "\t     [-sigalg <sigalg>] [-dname <dname>]"},
-        {"\t     [-validity <valDays>] [-keypass <keypass>]",
-                "\t     [-validity <valDays>] [-keypass <keypass>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-genseckey   [-v] [-protected]",
-                "-genseckey   [-v] [-protected]"},
-        /** rest is same as -certreq starting from -keystore **/
+        {"Wrong.answer.try.again", "\u5FDC\u7B54\u304C\u9593\u9055\u3063\u3066\u3044\u307E\u3059\u3002\u3082\u3046\u4E00\u5EA6\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044"},
+        {"Secret.key.not.generated.alias.alias.already.exists",
+                "\u79D8\u5BC6\u9375\u306F\u751F\u6210\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u5225\u540D<{0}>\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059"},
+        {"Please.provide.keysize.for.secret.key.generation",
+                "\u79D8\u5BC6\u9375\u306E\u751F\u6210\u6642\u306B\u306F -keysize\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044"},
 
-        {"-help", "-help"},
-        //{"-identitydb  [-v] [-protected]",
-        //      "-identitydb  [-v] [-protected]"},
-        //{"\t     [-file <idb_file>]", "\t     [-file <idb_file>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-import      [-v] [-noprompt] [-trustcacerts] [-protected]",
-        //       "-import      [-v] [-noprompt] [-trustcacerts] [-protected]"},
-        {"-importcert  [-v] [-noprompt] [-trustcacerts] [-protected]",
-                "-importcert  [-v] [-noprompt] [-trustcacerts] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
-        {"\t     [-alias <alias>] [-keypass <keypass>]",
-            "\t     [-alias <alias>] [-keypass <keypass>]"},
-        {"\t     [-file <cert_file>] [-keypass <keypass>]",
-                "\t     [-file <cert_file>] [-keypass <keypass>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-importkeystore [-v] ",
-                "-importkeystore [-v] "},
-        {"\t     [-srckeystore <srckeystore>] [-destkeystore <destkeystore>]",
-                "\t     [-srckeystore <srckeystore>] [-destkeystore <destkeystore>]"},
-        {"\t     [-srcstoretype <srcstoretype>] [-deststoretype <deststoretype>]",
-                "\t     [-srcstoretype <srcstoretype>] [-deststoretype <deststoretype>]"},
-        {"\t     [-srcprotected] [-destprotected]",
-                "\t     [-srcprotected] [-destprotected]"},
-        {"\t     [-srcstorepass <srcstorepass>] [-deststorepass <deststorepass>]",
-                "\t     [-srcstorepass <srcstorepass>] [-deststorepass <deststorepass>]"},
-        {"\t     [-srcprovidername <srcprovidername>]\n\t     [-destprovidername <destprovidername>]",  // \u3053\u306e\u884c\u306f\u9577\u3059\u304e\u307e\u3059\u30022 \u884c\u306b\u5206\u5272\u3057\u3066\u304f\u3060\u3055\u3044
-                 "\t     [-srcprovidername <srcprovidername>]\n\t     [-destprovidername <destprovidername>]"},
-        {"\t     [-srcalias <srcalias> [-destalias <destalias>]",
-                "\t     [-srcalias <srcalias> [-destalias <destalias>]"},
-        {"\t       [-srckeypass <srckeypass>] [-destkeypass <destkeypass>]]",
-                "\t       [-srckeypass <srckeypass>] [-destkeypass <destkeypass>]]"},
-        {"\t     [-noprompt]", "\t     [-noprompt]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-changealias [-v] [-protected] -alias <alias> -destalias <destalias>",
-                "-changealias [-v] [-protected] -alias <alias> -destalias <destalias>"},
-        {"\t     [-keypass <keypass>]", "\t     [-keypass <keypass>]"},
-
-        //{"-keyclone    [-v] [-protected]",
-        //      "-keyclone    [-v] [-protected]"},
-        //{"\t     [-alias <alias>] -dest <dest_alias>",
-        //      "\t     [-alias <alias>] -dest <dest_alias>"},
-        //{"\t     [-keypass <keypass>] [-new <new_keypass>]",
-        //      "\t     [-keypass <keypass>] [-new <new_keypass>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-keypasswd   [-v] [-alias <alias>]",
-                "-keypasswd   [-v] [-alias <alias>]"},
-        {"\t     [-keypass <old_keypass>] [-new <new_keypass>]",
-                "\t     [-keypass <old_keypass>] [-new <new_keypass>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-list        [-v | -rfc] [-protected]",
-                "-list        [-v | -rfc] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-printcert   [-v] [-file <cert_file>]",
-                "-printcert   [-v] [-file <cert_file>]"},
-
-        //{"-selfcert    [-v] [-protected]",
-        //      "-selfcert    [-v] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
-        //{"\t     [-dname <dname>] [-validity <valDays>]",
-        //      "\t     [-dname <dname>] [-validity <valDays>]"},
-        //{"\t     [-keypass <keypass>] [-sigalg <sigalg>]",
-        //      "\t     [-keypass <keypass>] [-sigalg <sigalg>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-storepasswd [-v] [-new <new_storepass>]",
-                "-storepasswd [-v] [-new <new_storepass>]"},
-        /** rest is same as -certreq starting from -keystore **/
+        {"Extensions.", "\u62E1\u5F35: "},
+        {".Empty.value.", "(\u7A7A\u306E\u5024)"},
+        {"Extension.Request.", "\u62E1\u5F35\u30EA\u30AF\u30A8\u30B9\u30C8:"},
+        {"PKCS.10.Certificate.Request.Version.1.0.Subject.s.Public.Key.s.format.s.key.",
+                "PKCS #10\u8A3C\u660E\u66F8\u30EA\u30AF\u30A8\u30B9\u30C8(\u30D0\u30FC\u30B8\u30E7\u30F31.0)\n\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8: %s\n\u516C\u958B\u9375: %s \u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 %s \u30AD\u30FC\n"},
+        {"Unknown.keyUsage.type.", "\u4E0D\u660E\u306AkeyUsage\u30BF\u30A4\u30D7: "},
+        {"Unknown.extendedkeyUsage.type.", "\u4E0D\u660E\u306AextendedkeyUsage\u30BF\u30A4\u30D7: "},
+        {"Unknown.AccessDescription.type.", "\u4E0D\u660E\u306AAccessDescription\u30BF\u30A4\u30D7: "},
+        {"Unrecognized.GeneralName.type.", "\u8A8D\u8B58\u3055\u308C\u306A\u3044GeneralName\u30BF\u30A4\u30D7: "},
+        {"This.extension.cannot.be.marked.as.critical.",
+                 "\u3053\u306E\u62E1\u5F35\u306F\u30AF\u30EA\u30C6\u30A3\u30AB\u30EB\u3068\u3057\u3066\u30DE\u30FC\u30AF\u4ED8\u3051\u3067\u304D\u307E\u305B\u3093\u3002 "},
+        {"Odd.number.of.hex.digits.found.", "\u5947\u6570\u306E16\u9032\u6570\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F: "},
+        {"Unknown.extension.type.", "\u4E0D\u660E\u306A\u62E1\u5F35\u30BF\u30A4\u30D7: "},
+        {"command.{0}.is.ambiguous.", "\u30B3\u30DE\u30F3\u30C9{0}\u306F\u3042\u3044\u307E\u3044\u3067\u3059:"},
 
         // policytool
-        {"Warning: A public key for alias 'signers[i]' does not exist.  Make sure a KeyStore is properly configured.",
-                "\u8b66\u544a: \u5225\u540d {0} \u306e\u516c\u958b\u9375\u304c\u5b58\u5728\u3057\u307e\u305b\u3093\u3002\u30ad\u30fc\u30b9\u30c8\u30a2\u304c\u6b63\u3057\u304f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"Warning: Class not found: class", "\u8b66\u544a: \u30af\u30e9\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0}"},
-        {"Warning: Invalid argument(s) for constructor: arg",
-                "\u8b66\u544a: \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306e\u5f15\u6570\u304c\u7121\u52b9\u3067\u3059: {0}"},
-        {"Illegal Principal Type: type", "\u4e0d\u6b63\u306a\u4e3b\u4f53\u306e\u30bf\u30a4\u30d7: {0}"},
-        {"Illegal option: option", "\u4e0d\u6b63\u306a\u30aa\u30d7\u30b7\u30e7\u30f3: {0}"},
-        {"Usage: policytool [options]", "\u4f7f\u3044\u65b9: policytool [options]"},
-        {"  [-file <file>]    policy file location",
-                "  [-file <file>]    \u30dd\u30ea\u30b7\u30fc\u30d5\u30a1\u30a4\u30eb\u306e\u5834\u6240"},
-        {"New", "\u65b0\u898f"},
-        {"Open", "\u958b\u304f"},
-        {"Save", "\u4fdd\u5b58"},
-        {"Save As", "\u5225\u540d\u4fdd\u5b58"},
-        {"View Warning Log", "\u8b66\u544a\u30ed\u30b0\u306e\u8868\u793a"},
-        {"Exit", "\u7d42\u4e86"},
-        {"Add Policy Entry", "\u30dd\u30ea\u30b7\u30fc\u30a8\u30f3\u30c8\u30ea\u306e\u8ffd\u52a0"},
-        {"Edit Policy Entry", "\u30dd\u30ea\u30b7\u30fc\u30a8\u30f3\u30c8\u30ea\u306e\u7de8\u96c6"},
-        {"Remove Policy Entry", "\u30dd\u30ea\u30b7\u30fc\u30a8\u30f3\u30c8\u30ea\u306e\u524a\u9664"},
-        {"Edit", "\u7de8\u96c6"},
-        {"Retain", "\u4fdd\u6301"},
+        {"Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured.",
+                "\u8B66\u544A: \u5225\u540D{0}\u306E\u516C\u958B\u9375\u304C\u5B58\u5728\u3057\u307E\u305B\u3093\u3002\u30AD\u30FC\u30B9\u30C8\u30A2\u304C\u6B63\u3057\u304F\u69CB\u6210\u3055\u308C\u3066\u3044\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
+        {"Warning.Class.not.found.class", "\u8B66\u544A: \u30AF\u30E9\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0}"},
+        {"Warning.Invalid.argument.s.for.constructor.arg",
+                "\u8B66\u544A: \u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u5F15\u6570\u304C\u7121\u52B9\u3067\u3059: {0}"},
+        {"Illegal.Principal.Type.type", "\u4E0D\u6B63\u306A\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u30BF\u30A4\u30D7: {0}"},
+        {"Illegal.option.option", "\u4E0D\u6B63\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: {0}"},
+        {"Usage.policytool.options.", "\u4F7F\u7528\u65B9\u6CD5: policytool [options]"},
+        {".file.file.policy.file.location",
+                "  [-file <file>]  \u30DD\u30EA\u30B7\u30FC\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u5834\u6240"},
+        {"New", "\u65B0\u898F"},
+        {"Open", "\u958B\u304F"},
+        {"Save", "\u4FDD\u5B58"},
+        {"Save.As", "\u5225\u540D\u4FDD\u5B58"},
+        {"View.Warning.Log", "\u8B66\u544A\u30ED\u30B0\u306E\u8868\u793A"},
+        {"Exit", "\u7D42\u4E86"},
+        {"Add.Policy.Entry", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u306E\u8FFD\u52A0"},
+        {"Edit.Policy.Entry", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u306E\u7DE8\u96C6"},
+        {"Remove.Policy.Entry", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u306E\u524A\u9664"},
+        {"Edit", "\u7DE8\u96C6"},
+        {"Retain", "\u4FDD\u6301"},
 
-        {"Warning: File name may include escaped backslash characters. " +
-                        "It is not necessary to escape backslash characters " +
-                        "(the tool escapes characters as necessary when writing " +
-                        "the policy contents to the persistent store).\n\n" +
-                        "Click on Retain to retain the entered name, or click on " +
-                        "Edit to edit the name.",
-            "Warning: File name may include escaped backslash characters. " +
-                        "It is not necessary to escape backslash characters " +
-                        "(the tool escapes characters as necessary when writing " +
-                        "the policy contents to the persistent store).\n\n" +
-                        "Click on Retain to retain the entered name, or click on " +
-                        "Edit to edit the name."},
+        {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
+            "\u8B66\u544A: \u30D5\u30A1\u30A4\u30EB\u540D\u306B\u30A8\u30B9\u30B1\u30FC\u30D7\u3055\u308C\u305F\u30D0\u30C3\u30AF\u30B9\u30E9\u30C3\u30B7\u30E5\u6587\u5B57\u304C\u542B\u307E\u308C\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u30D0\u30C3\u30AF\u30B9\u30E9\u30C3\u30B7\u30E5\u6587\u5B57\u3092\u30A8\u30B9\u30B1\u30FC\u30D7\u3059\u308B\u5FC5\u8981\u306F\u3042\u308A\u307E\u305B\u3093(\u30C4\u30FC\u30EB\u306F\u30DD\u30EA\u30B7\u30FC\u5185\u5BB9\u3092\u6C38\u7D9A\u30B9\u30C8\u30A2\u306B\u66F8\u304D\u8FBC\u3080\u3068\u304D\u306B\u3001\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u6587\u5B57\u3092\u30A8\u30B9\u30B1\u30FC\u30D7\u3057\u307E\u3059)\u3002\n\n\u5165\u529B\u6E08\u306E\u540D\u524D\u3092\u4FDD\u6301\u3059\u308B\u306B\u306F\u300C\u4FDD\u6301\u300D\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3001\u540D\u524D\u3092\u7DE8\u96C6\u3059\u308B\u306B\u306F\u300C\u7DE8\u96C6\u300D\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
 
-        {"Add Public Key Alias", "\u516c\u958b\u9375\u306e\u5225\u540d\u3092\u8ffd\u52a0"},
-        {"Remove Public Key Alias", "\u516c\u958b\u9375\u306e\u5225\u540d\u3092\u524a\u9664"},
-        {"File", "\u30d5\u30a1\u30a4\u30eb"},
-        {"KeyStore", "\u30ad\u30fc\u30b9\u30c8\u30a2"},
-        {"Policy File:", "\u30dd\u30ea\u30b7\u30fc\u30d5\u30a1\u30a4\u30eb:"},
-        {"Could not open policy file: policyFile: e.toString()",
-                "\u30dd\u30ea\u30b7\u30fc\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f: {0}: {1}"},
-        {"Policy Tool", "Policy Tool"},
-        {"Errors have occurred while opening the policy configuration.  View the Warning Log for more information.",
-                "\u30dd\u30ea\u30b7\u30fc\u69cb\u6210\u306e\u30aa\u30fc\u30d7\u30f3\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u8a73\u7d30\u306f\u8b66\u544a\u30ed\u30b0\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"Error", "\u30a8\u30e9\u30fc"},
-        {"OK", "\u4e86\u89e3"},
-        {"Status", "\u72b6\u614b"},
-        {"Warning", "\u8b66\u544a"},
-        {"Permission:                                                       ",
-                "\u30a2\u30af\u30bb\u30b9\u6a29:                                                       "},
-        {"Principal Type:", "\u4e3b\u4f53\u306e\u30bf\u30a4\u30d7:"},
-        {"Principal Name:", "\u4e3b\u4f53\u306e\u540d\u524d:"},
-        {"Target Name:                                                    ",
-                "\u30bf\u30fc\u30b2\u30c3\u30c8\u540d:                                                    "},
-        {"Actions:                                                             ",
-                "\u30a2\u30af\u30b7\u30e7\u30f3:                                                             "},
-        {"OK to overwrite existing file filename?",
-                "\u65e2\u5b58\u306e\u30d5\u30a1\u30a4\u30eb {0} \u306b\u4e0a\u66f8\u304d\u3057\u307e\u3059\u304b?"},
-        {"Cancel", "\u53d6\u6d88\u3057"},
-        {"CodeBase:", "CodeBase:"},
-        {"SignedBy:", "SignedBy:"},
-        {"Add Principal", "\u4e3b\u4f53\u306e\u8ffd\u52a0"},
-        {"Edit Principal", "\u4e3b\u4f53\u306e\u7de8\u96c6"},
-        {"Remove Principal", "\u4e3b\u4f53\u306e\u524a\u9664"},
-        {"Principals:", "\u4e3b\u4f53:"},
-        {"  Add Permission", "  \u30a2\u30af\u30bb\u30b9\u6a29\u306e\u8ffd\u52a0"},
-        {"  Edit Permission", "  \u30a2\u30af\u30bb\u30b9\u6a29\u306e\u7de8\u96c6"},
-        {"Remove Permission", "\u30a2\u30af\u30bb\u30b9\u6a29\u306e\u524a\u9664"},
-        {"Done", "\u5b8c\u4e86"},
-        {"KeyStore URL:", "\u30ad\u30fc\u30b9\u30c8\u30a2 URL:"},
-        {"KeyStore Type:", "\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30bf\u30a4\u30d7:"},
-        {"KeyStore Provider:", "\u30ad\u30fc\u30b9\u30c8\u30a2\u30d7\u30ed\u30d0\u30a4\u30c0:"},
-        {"KeyStore Password URL:", "\u30ad\u30fc\u30b9\u30c8\u30a2\u30d1\u30b9\u30ef\u30fc\u30c9 URL:"},
-        {"Principals", "\u4e3b\u4f53"},
-        {"  Edit Principal:", "  \u4e3b\u4f53\u306e\u7de8\u96c6:"},
-        {"  Add New Principal:", "  \u4e3b\u4f53\u306e\u65b0\u898f\u8ffd\u52a0:"},
-        {"Permissions", "\u30a2\u30af\u30bb\u30b9\u6a29"},
-        {"  Edit Permission:", "  \u30a2\u30af\u30bb\u30b9\u6a29\u306e\u7de8\u96c6:"},
-        {"  Add New Permission:", "  \u65b0\u898f\u30a2\u30af\u30bb\u30b9\u6a29\u306e\u8ffd\u52a0:"},
-        {"Signed By:", "\u7f72\u540d\u8005:"},
-        {"Cannot Specify Principal with a Wildcard Class without a Wildcard Name",
-            "\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9\u540d\u306e\u306a\u3044\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9\u30af\u30e9\u30b9\u3092\u4f7f\u3063\u3066\u4e3b\u4f53\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002"},
-        {"Cannot Specify Principal without a Name",
-            "\u540d\u524d\u3092\u4f7f\u308f\u305a\u306b\u4e3b\u4f53\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002"},
-        {"Permission and Target Name must have a value",
-                "\u30a2\u30af\u30bb\u30b9\u6a29\u3068\u30bf\u30fc\u30b2\u30c3\u30c8\u540d\u306f\u3001\u5024\u3092\u4fdd\u6301\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"},
-        {"Remove this Policy Entry?", "\u3053\u306e\u30dd\u30ea\u30b7\u30fc\u30a8\u30f3\u30c8\u30ea\u3092\u524a\u9664\u3057\u307e\u3059\u304b?"},
-        {"Overwrite File", "\u30d5\u30a1\u30a4\u30eb\u3092\u4e0a\u66f8\u304d\u3057\u307e\u3059\u3002"},
-        {"Policy successfully written to filename",
-                "\u30dd\u30ea\u30b7\u30fc\u306e {0} \u3078\u306e\u66f8\u304d\u8fbc\u307f\u306b\u6210\u529f\u3057\u307e\u3057\u305f\u3002"},
-        {"null filename", "\u30d5\u30a1\u30a4\u30eb\u540d\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"Save changes?", "\u5909\u66f4\u3092\u4fdd\u5b58\u3057\u307e\u3059\u304b?"},
-        {"Yes", "\u306f\u3044"},
+        {"Add.Public.Key.Alias", "\u516C\u958B\u9375\u306E\u5225\u540D\u306E\u8FFD\u52A0"},
+        {"Remove.Public.Key.Alias", "\u516C\u958B\u9375\u306E\u5225\u540D\u3092\u524A\u9664"},
+        {"File", "\u30D5\u30A1\u30A4\u30EB"},
+        {"KeyStore", "\u30AD\u30FC\u30B9\u30C8\u30A2"},
+        {"Policy.File.", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30D5\u30A1\u30A4\u30EB:"},
+        {"Could.not.open.policy.file.policyFile.e.toString.",
+                "\u30DD\u30EA\u30B7\u30FC\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u3051\u307E\u305B\u3093\u3067\u3057\u305F: {0}: {1}"},
+        {"Policy.Tool", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30C4\u30FC\u30EB"},
+        {"Errors.have.occurred.while.opening.the.policy.configuration.View.the.Warning.Log.for.more.information.",
+                "\u30DD\u30EA\u30B7\u30FC\u69CB\u6210\u3092\u958B\u304F\u3068\u304D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u8A73\u7D30\u306F\u8B66\u544A\u30ED\u30B0\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
+        {"Error", "\u30A8\u30E9\u30FC"},
+        {"OK", "OK"},
+        {"Status", "\u72B6\u614B"},
+        {"Warning", "\u8B66\u544A"},
+        {"Permission.",
+                "\u30A2\u30AF\u30BB\u30B9\u6A29:                                                       "},
+        {"Principal.Type.", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u30BF\u30A4\u30D7:"},
+        {"Principal.Name.", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u540D\u524D:"},
+        {"Target.Name.",
+                "\u30BF\u30FC\u30B2\u30C3\u30C8\u540D:                                                    "},
+        {"Actions.",
+                "\u30A2\u30AF\u30B7\u30E7\u30F3:                                                             "},
+        {"OK.to.overwrite.existing.file.filename.",
+                "\u65E2\u5B58\u306E\u30D5\u30A1\u30A4\u30EB{0}\u306B\u4E0A\u66F8\u304D\u3057\u307E\u3059\u304B\u3002"},
+        {"Cancel", "\u53D6\u6D88"},
+        {"CodeBase.", "CodeBase:"},
+        {"SignedBy.", "SignedBy:"},
+        {"Add.Principal", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u8FFD\u52A0"},
+        {"Edit.Principal", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u7DE8\u96C6"},
+        {"Remove.Principal", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u524A\u9664"},
+        {"Principals.", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB:"},
+        {".Add.Permission", "  \u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u8FFD\u52A0"},
+        {".Edit.Permission", "  \u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u7DE8\u96C6"},
+        {"Remove.Permission", "\u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u524A\u9664"},
+        {"Done", "\u5B8C\u4E86"},
+        {"KeyStore.URL.", "\u30AD\u30FC\u30B9\u30C8\u30A2URL:"},
+        {"KeyStore.Type.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30BF\u30A4\u30D7:"},
+        {"KeyStore.Provider.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D7\u30ED\u30D0\u30A4\u30C0:"},
+        {"KeyStore.Password.URL.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D1\u30B9\u30EF\u30FC\u30C9URL:"},
+        {"Principals", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB"},
+        {".Edit.Principal.", "  \u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u7DE8\u96C6:"},
+        {".Add.New.Principal.", "  \u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u65B0\u898F\u8FFD\u52A0:"},
+        {"Permissions", "\u30A2\u30AF\u30BB\u30B9\u6A29"},
+        {".Edit.Permission.", "  \u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u7DE8\u96C6:"},
+        {".Add.New.Permission.", "  \u65B0\u898F\u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u8FFD\u52A0:"},
+        {"Signed.By.", "\u7F72\u540D\u8005:"},
+        {"Cannot.Specify.Principal.with.a.Wildcard.Class.without.a.Wildcard.Name",
+            "\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u540D\u306E\u306A\u3044\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u30FB\u30AF\u30E9\u30B9\u3092\u4F7F\u7528\u3057\u3066\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u3092\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093"},
+        {"Cannot.Specify.Principal.without.a.Name",
+            "\u540D\u524D\u3092\u4F7F\u7528\u305B\u305A\u306B\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u3092\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093"},
+        {"Permission.and.Target.Name.must.have.a.value",
+                "\u30A2\u30AF\u30BB\u30B9\u6A29\u3068\u30BF\u30FC\u30B2\u30C3\u30C8\u540D\u306F\u3001\u5024\u3092\u4FDD\u6301\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
+        {"Remove.this.Policy.Entry.", "\u3053\u306E\u30DD\u30EA\u30B7\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u3092\u524A\u9664\u3057\u307E\u3059\u304B\u3002"},
+        {"Overwrite.File", "\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3057\u307E\u3059"},
+        {"Policy.successfully.written.to.filename",
+                "\u30DD\u30EA\u30B7\u30FC\u306E{0}\u3078\u306E\u66F8\u8FBC\u307F\u306B\u6210\u529F\u3057\u307E\u3057\u305F"},
+        {"null.filename", "\u30D5\u30A1\u30A4\u30EB\u540D\u304Cnull\u3067\u3059"},
+        {"Save.changes.", "\u5909\u66F4\u3092\u4FDD\u5B58\u3057\u307E\u3059\u304B\u3002"},
+        {"Yes", "\u306F\u3044"},
         {"No", "\u3044\u3044\u3048"},
-        {"Policy Entry", "\u30dd\u30ea\u30b7\u30fc\u30a8\u30f3\u30c8\u30ea"},
-        {"Save Changes", "\u5909\u66f4\u3092\u4fdd\u5b58\u3057\u307e\u3059\u3002"},
-        {"No Policy Entry selected", "\u30dd\u30ea\u30b7\u30fc\u30a8\u30f3\u30c8\u30ea\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"Unable to open KeyStore: ex.toString()",
-                "\u30ad\u30fc\u30b9\u30c8\u30a2 {0} \u3092\u958b\u3051\u307e\u305b\u3093"},
-        {"No principal selected", "\u4e3b\u4f53\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"No permission selected", "\u30a2\u30af\u30bb\u30b9\u6a29\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"name", "\u540d\u524d"},
-        {"configuration type", "\u8a2d\u5b9a\u30bf\u30a4\u30d7"},
-        {"environment variable name", "\u74b0\u5883\u5909\u6570\u540d"},
-        {"library name", "\u30e9\u30a4\u30d6\u30e9\u30ea\u540d"},
-        {"package name", "\u30d1\u30c3\u30b1\u30fc\u30b8\u540d"},
-        {"policy type", "\u30dd\u30ea\u30b7\u30fc\u30bf\u30a4\u30d7"},
-        {"property name", "\u30d7\u30ed\u30d1\u30c6\u30a3\u540d"},
-        {"provider name", "\u30d7\u30ed\u30d0\u30a4\u30c0\u540d"},
-        {"Principal List", "\u4e3b\u4f53\u306e\u30ea\u30b9\u30c8"},
-        {"Permission List", "\u30a2\u30af\u30bb\u30b9\u6a29\u306e\u30ea\u30b9\u30c8"},
-        {"Code Base", "\u30b3\u30fc\u30c9\u30d9\u30fc\u30b9"},
-        {"KeyStore U R L:", "\u30ad\u30fc\u30b9\u30c8\u30a2 U R L:"},
-        {"KeyStore Password U R L:", "\u30ad\u30fc\u30b9\u30c8\u30a2\u30d1\u30b9\u30ef\u30fc\u30c9 U R L:"},
+        {"Policy.Entry", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA"},
+        {"Save.Changes", "\u5909\u66F4\u3092\u4FDD\u5B58\u3057\u307E\u3059"},
+        {"No.Policy.Entry.selected", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u304C\u9078\u629E\u3055\u308C\u3066\u3044\u307E\u305B\u3093"},
+        {"Unable.to.open.KeyStore.ex.toString.",
+                "\u30AD\u30FC\u30B9\u30C8\u30A2{0}\u3092\u958B\u3051\u307E\u305B\u3093"},
+        {"No.principal.selected", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u304C\u9078\u629E\u3055\u308C\u3066\u3044\u307E\u305B\u3093"},
+        {"No.permission.selected", "\u30A2\u30AF\u30BB\u30B9\u6A29\u304C\u9078\u629E\u3055\u308C\u3066\u3044\u307E\u305B\u3093"},
+        {"name", "\u540D\u524D"},
+        {"configuration.type", "\u69CB\u6210\u30BF\u30A4\u30D7"},
+        {"environment.variable.name", "\u74B0\u5883\u5909\u6570\u540D"},
+        {"library.name", "\u30E9\u30A4\u30D6\u30E9\u30EA\u540D"},
+        {"package.name", "\u30D1\u30C3\u30B1\u30FC\u30B8\u540D"},
+        {"policy.type", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30BF\u30A4\u30D7"},
+        {"property.name", "\u30D7\u30ED\u30D1\u30C6\u30A3\u540D"},
+        {"Principal.List", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u30EA\u30B9\u30C8"},
+        {"Permission.List", "\u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u30EA\u30B9\u30C8"},
+        {"Code.Base", "\u30B3\u30FC\u30C9\u30FB\u30D9\u30FC\u30B9"},
+        {"KeyStore.U.R.L.", "\u30AD\u30FC\u30B9\u30C8\u30A2U R L:"},
+        {"KeyStore.Password.U.R.L.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D1\u30B9\u30EF\u30FC\u30C9U R L:"},
 
 
         // javax.security.auth.PrivateCredentialPermission
-        {"invalid null input(s)", "null \u306e\u5165\u529b\u306f\u7121\u52b9\u3067\u3059\u3002"},
-        {"actions can only be 'read'", "\u30a2\u30af\u30b7\u30e7\u30f3\u306f '\u8aad\u307f\u8fbc\u307f' \u306e\u307f\u53ef\u80fd\u3067\u3059\u3002"},
-        {"permission name [name] syntax invalid: ",
-                "\u30a2\u30af\u30bb\u30b9\u6a29\u540d [{0}] \u306e\u69cb\u6587\u304c\u7121\u52b9\u3067\u3059: "},
-        {"Credential Class not followed by a Principal Class and Name",
-                "Credential \u30af\u30e9\u30b9\u306e\u6b21\u306b Principal \u30af\u30e9\u30b9\u304a\u3088\u3073\u540d\u524d\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"Principal Class not followed by a Principal Name",
-                "Principal \u30af\u30e9\u30b9\u306e\u6b21\u306b\u4e3b\u4f53\u540d\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"Principal Name must be surrounded by quotes",
-                "\u4e3b\u4f53\u540d\u306f\u5f15\u7528\u7b26\u3067\u56f2\u3080\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"},
-        {"Principal Name missing end quote",
-                "\u4e3b\u4f53\u540d\u306e\u6700\u5f8c\u306b\u5f15\u7528\u7b26\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"PrivateCredentialPermission Principal Class can not be a wildcard (*) value if Principal Name is not a wildcard (*) value",
-                "\u4e3b\u4f53\u540d\u304c\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9 (*) \u5024\u3067\u306a\u3044\u5834\u5408\u3001PrivateCredentialPermission \u306e Principal \u30af\u30e9\u30b9\u3092\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9 (*) \u5024\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002"},
-        {"CredOwner:\n\tPrincipal Class = class\n\tPrincipal Name = name",
-                "CredOwner:\n\tPrincipal \u30af\u30e9\u30b9 = {0}\n\t\u4e3b\u4f53\u540d = {1}"},
+        {"invalid.null.input.s.", "null\u306E\u5165\u529B\u306F\u7121\u52B9\u3067\u3059"},
+        {"actions.can.only.be.read.", "\u30A2\u30AF\u30B7\u30E7\u30F3\u306F'\u8AAD\u8FBC\u307F'\u306E\u307F\u53EF\u80FD\u3067\u3059"},
+        {"permission.name.name.syntax.invalid.",
+                "\u30A2\u30AF\u30BB\u30B9\u6A29\u540D[{0}]\u306E\u69CB\u6587\u304C\u7121\u52B9\u3067\u3059: "},
+        {"Credential.Class.not.followed.by.a.Principal.Class.and.Name",
+                "Credential\u30AF\u30E9\u30B9\u306E\u6B21\u306BPrincipal\u30AF\u30E9\u30B9\u304A\u3088\u3073\u540D\u524D\u304C\u3042\u308A\u307E\u305B\u3093"},
+        {"Principal.Class.not.followed.by.a.Principal.Name",
+                "Principal\u30AF\u30E9\u30B9\u306E\u6B21\u306B\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u540D\u304C\u3042\u308A\u307E\u305B\u3093"},
+        {"Principal.Name.must.be.surrounded.by.quotes",
+                "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u540D\u306F\u5F15\u7528\u7B26\u3067\u56F2\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
+        {"Principal.Name.missing.end.quote",
+                "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u540D\u306E\u6700\u5F8C\u306B\u5F15\u7528\u7B26\u304C\u3042\u308A\u307E\u305B\u3093"},
+        {"PrivateCredentialPermission.Principal.Class.can.not.be.a.wildcard.value.if.Principal.Name.is.not.a.wildcard.value",
+                "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u540D\u304C\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9(*)\u5024\u3067\u306A\u3044\u5834\u5408\u3001PrivateCredentialPermission\u306EPrincipal\u30AF\u30E9\u30B9\u3092\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9(*)\u5024\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093"},
+        {"CredOwner.Principal.Class.class.Principal.Name.name",
+                "CredOwner:\n\tPrincipal\u30AF\u30E9\u30B9={0}\n\t\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u540D={1}"},
 
         // javax.security.auth.x500
-        {"provided null name", "\u7a7a\u306e\u540d\u524d\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002"},
-        {"provided null keyword map", "null \u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u30de\u30c3\u30d7\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f"},
-        {"provided null OID map", "null \u306e OID \u30de\u30c3\u30d7\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f"},
+        {"provided.null.name", "null\u306E\u540D\u524D\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F"},
+        {"provided.null.keyword.map", "null\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u30FB\u30DE\u30C3\u30D7\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F"},
+        {"provided.null.OID.map", "null\u306EOID\u30DE\u30C3\u30D7\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F"},
 
         // javax.security.auth.Subject
-        {"invalid null AccessControlContext provided",
-                "\u7121\u52b9\u306a null AccessControlContext \u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002"},
-        {"invalid null action provided", "\u7121\u52b9\u306a null \u30a2\u30af\u30b7\u30e7\u30f3\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002"},
-        {"invalid null Class provided", "\u7121\u52b9\u306a null \u30af\u30e9\u30b9\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002"},
-        {"Subject:\n", "\u30b5\u30d6\u30b8\u30a7\u30af\u30c8:\n"},
-        {"\tPrincipal: ", "\t\u4e3b\u4f53: "},
-        {"\tPublic Credential: ", "\t\u516c\u958b\u8cc7\u683c: "},
-        {"\tPrivate Credentials inaccessible\n",
-                "\t\u975e\u516c\u958b\u8cc7\u683c\u306b\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002\n"},
-        {"\tPrivate Credential: ", "\t\u975e\u516c\u958b\u8cc7\u683c: "},
-        {"\tPrivate Credential inaccessible\n",
-                "\t\u975e\u516c\u958b\u8cc7\u683c\u306b\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002\n"},
-        {"Subject is read-only", "\u30b5\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u8aad\u307f\u53d6\u308a\u5c02\u7528\u3067\u3059\u3002"},
-        {"attempting to add an object which is not an instance of java.security.Principal to a Subject's Principal Set",
-                "java.security.Principal \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3067\u306f\u306a\u3044\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u3001\u30b5\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u4e3b\u4f53\u30bb\u30c3\u30c8\u306b\u8ffd\u52a0\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002"},
-        {"attempting to add an object which is not an instance of class",
-                "{0} \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3067\u306f\u306a\u3044\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u8ffd\u52a0\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002"},
+        {"invalid.null.AccessControlContext.provided",
+                "\u7121\u52B9\u306Anull AccessControlContext\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F"},
+        {"invalid.null.action.provided", "\u7121\u52B9\u306Anull\u30A2\u30AF\u30B7\u30E7\u30F3\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F"},
+        {"invalid.null.Class.provided", "\u7121\u52B9\u306Anull\u30AF\u30E9\u30B9\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F"},
+        {"Subject.", "\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8:\n"},
+        {".Principal.", "\t\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB: "},
+        {".Public.Credential.", "\t\u516C\u958B\u8CC7\u683C: "},
+        {".Private.Credentials.inaccessible.",
+                "\t\u975E\u516C\u958B\u8CC7\u683C\u306B\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\n"},
+        {".Private.Credential.", "\t\u975E\u516C\u958B\u8CC7\u683C: "},
+        {".Private.Credential.inaccessible.",
+                "\t\u975E\u516C\u958B\u8CC7\u683C\u306B\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\n"},
+        {"Subject.is.read.only", "\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8\u306F\u8AAD\u53D6\u308A\u5C02\u7528\u3067\u3059"},
+        {"attempting.to.add.an.object.which.is.not.an.instance.of.java.security.Principal.to.a.Subject.s.Principal.Set",
+                "java.security.Principal\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3067\u306F\u306A\u3044\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u3001\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u30FB\u30BB\u30C3\u30C8\u306B\u8FFD\u52A0\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F"},
+        {"attempting.to.add.an.object.which.is.not.an.instance.of.class",
+                "{0}\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3067\u306F\u306A\u3044\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u8FFD\u52A0\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F"},
 
         // javax.security.auth.login.AppConfigurationEntry
-        {"LoginModuleControlFlag: ", "LoginModuleControlFlag: "},
+        {"LoginModuleControlFlag.", "LoginModuleControlFlag: "},
 
         // javax.security.auth.login.LoginContext
-        {"Invalid null input: name", "\u7121\u52b9\u306a null \u5165\u529b: \u540d\u524d"},
-        {"No LoginModules configured for name",
-         "{0} \u7528\u306b\u69cb\u6210\u3055\u308c\u305f LoginModules \u306f\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"invalid null Subject provided", "\u7121\u52b9\u306a null \u30b5\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002"},
-        {"invalid null CallbackHandler provided",
-                "\u7121\u52b9\u306a null CallbackHandler \u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002"},
-        {"null subject - logout called before login",
-                "null \u30b5\u30d6\u30b8\u30a7\u30af\u30c8 - \u30ed\u30b0\u30a4\u30f3\u3059\u308b\u524d\u306b\u30ed\u30b0\u30a2\u30a6\u30c8\u304c\u547c\u3073\u51fa\u3055\u308c\u307e\u3057\u305f\u3002"},
-        {"unable to instantiate LoginModule, module, because it does not provide a no-argument constructor",
-                "LoginModule {0} \u306f\u5f15\u6570\u3092\u53d6\u3089\u306a\u3044\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3092\u6307\u5b9a\u3067\u304d\u306a\u3044\u305f\u3081\u3001\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3067\u304d\u307e\u305b\u3093\u3002"},
-        {"unable to instantiate LoginModule",
-                "LoginModule \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3067\u304d\u307e\u305b\u3093\u3002"},
-        {"unable to instantiate LoginModule: ",
-                "LoginModule \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3067\u304d\u307e\u305b\u3093: "},
-        {"unable to find LoginModule class: ",
-                "LoginModule \u30af\u30e9\u30b9\u3092\u691c\u51fa\u3067\u304d\u307e\u305b\u3093: "},
-        {"unable to access LoginModule: ",
-                "LoginModule \u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093: "},
-        {"Login Failure: all modules ignored",
-                "\u30ed\u30b0\u30a4\u30f3\u5931\u6557: \u3059\u3079\u3066\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u7121\u8996\u3055\u308c\u307e\u3059\u3002"},
+        {"Invalid.null.input.name", "\u7121\u52B9\u306Anull\u5165\u529B: \u540D\u524D"},
+        {"No.LoginModules.configured.for.name",
+         "{0}\u7528\u306B\u69CB\u6210\u3055\u308C\u305FLoginModules\u306F\u3042\u308A\u307E\u305B\u3093"},
+        {"invalid.null.Subject.provided", "\u7121\u52B9\u306Anull\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F"},
+        {"invalid.null.CallbackHandler.provided",
+                "\u7121\u52B9\u306Anull CallbackHandler\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F"},
+        {"null.subject.logout.called.before.login",
+                "null\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8 - \u30ED\u30B0\u30A4\u30F3\u3059\u308B\u524D\u306B\u30ED\u30B0\u30A2\u30A6\u30C8\u304C\u547C\u3073\u51FA\u3055\u308C\u307E\u3057\u305F"},
+        {"unable.to.instantiate.LoginModule.module.because.it.does.not.provide.a.no.argument.constructor",
+                "LoginModule {0}\u306F\u5F15\u6570\u3092\u53D6\u3089\u306A\u3044\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u3092\u6307\u5B9A\u3067\u304D\u306A\u3044\u305F\u3081\u3001\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093"},
+        {"unable.to.instantiate.LoginModule",
+                "LoginModule\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093"},
+        {"unable.to.instantiate.LoginModule.",
+                "LoginModule\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093: "},
+        {"unable.to.find.LoginModule.class.",
+                "LoginModule\u30AF\u30E9\u30B9\u3092\u691C\u51FA\u3067\u304D\u307E\u305B\u3093: "},
+        {"unable.to.access.LoginModule.",
+                "LoginModule\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093: "},
+        {"Login.Failure.all.modules.ignored",
+                "\u30ED\u30B0\u30A4\u30F3\u5931\u6557: \u3059\u3079\u3066\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u306F\u7121\u8996\u3055\u308C\u307E\u3059"},
 
         // sun.security.provider.PolicyFile
 
-        {"java.security.policy: error parsing policy:\n\tmessage",
-                "java.security.policy: {0} \u306e\u69cb\u6587\u89e3\u6790\u30a8\u30e9\u30fc:\n\t{1}"},
-        {"java.security.policy: error adding Permission, perm:\n\tmessage",
-                "java.security.policy: \u30a2\u30af\u30bb\u30b9\u6a29 {0} \u306e\u8ffd\u52a0\u30a8\u30e9\u30fc:\n\t{1}"},
-        {"java.security.policy: error adding Entry:\n\tmessage",
-                "java.security.policy: \u30a8\u30f3\u30c8\u30ea\u306e\u8ffd\u52a0\u30a8\u30e9\u30fc:\n\t{0}"},
-        {"alias name not provided (pe.name)", "\u5225\u540d\u306e\u6307\u5b9a\u304c\u3042\u308a\u307e\u305b\u3093 ({0})"},
-        {"unable to perform substitution on alias, suffix",
-                "\u5225\u540d {0} \u306b\u5bfe\u3057\u3066\u7f6e\u63db\u64cd\u4f5c\u304c\u3067\u304d\u307e\u305b\u3093"},
-        {"substitution value, prefix, unsupported",
-                "\u7f6e\u63db\u5024 {0} \u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
-        {"(", "("},
-        {")", ")"},
-        {"type can't be null","\u5165\u529b\u3092 null \u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002"},
+        {"java.security.policy.error.parsing.policy.message",
+                "java.security.policy: {0}\u306E\u69CB\u6587\u89E3\u6790\u30A8\u30E9\u30FC:\n\t{1}"},
+        {"java.security.policy.error.adding.Permission.perm.message",
+                "java.security.policy: \u30A2\u30AF\u30BB\u30B9\u6A29{0}\u306E\u8FFD\u52A0\u30A8\u30E9\u30FC:\n\t{1}"},
+        {"java.security.policy.error.adding.Entry.message",
+                "java.security.policy: \u30A8\u30F3\u30C8\u30EA\u306E\u8FFD\u52A0\u30A8\u30E9\u30FC:\n\t{0}"},
+        {"alias.name.not.provided.pe.name.", "\u5225\u540D\u306E\u6307\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093({0})"},
+        {"unable.to.perform.substitution.on.alias.suffix",
+                "\u5225\u540D{0}\u306B\u5BFE\u3057\u3066\u7F6E\u63DB\u64CD\u4F5C\u304C\u3067\u304D\u307E\u305B\u3093"},
+        {"substitution.value.prefix.unsupported",
+                "\u7F6E\u63DB\u5024{0}\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093"},
+        {"LPARAM", "("},
+        {"RPARAM", ")"},
+        {"type.can.t.be.null","\u5165\u529B\u3092null\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093"},
 
         // sun.security.provider.PolicyParser
-        {"keystorePasswordURL can not be specified without also specifying keystore",
-                "\u30ad\u30fc\u30b9\u30c8\u30a2\u3092\u6307\u5b9a\u3057\u306a\u3044\u5834\u5408\u3001keystorePasswordURL \u306f\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002"},
-        {"expected keystore type", "\u671f\u5f85\u3055\u308c\u305f\u30ad\u30fc\u30b9\u30c8\u30a2\u30bf\u30a4\u30d7"},
-        {"expected keystore provider", "\u671f\u5f85\u3055\u308c\u305f\u30ad\u30fc\u30b9\u30c8\u30a2\u30d7\u30ed\u30d0\u30a4\u30c0"},
-        {"multiple Codebase expressions",
-                "\u8907\u6570\u306e Codebase \u5f0f"},
-        {"multiple SignedBy expressions","\u8907\u6570\u306e SignedBy \u5f0f"},
-        {"SignedBy has empty alias","SignedBy \u306f\u7a7a\u306e\u5225\u540d\u3092\u4fdd\u6301\u3057\u307e\u3059\u3002"},
-        {"can not specify Principal with a wildcard class without a wildcard name",
-                "\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9\u540d\u306e\u306a\u3044\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9\u30af\u30e9\u30b9\u3092\u4f7f\u3063\u3066\u3001\u4e3b\u4f53\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002"},
-        {"expected codeBase or SignedBy or Principal",
-                "\u671f\u5f85\u3055\u308c\u305f codeBase\u3001SignedBy\u3001\u307e\u305f\u306f Principal"},
-        {"expected permission entry", "\u671f\u5f85\u3055\u308c\u305f\u30a2\u30af\u30bb\u30b9\u6a29\u30a8\u30f3\u30c8\u30ea"},
-        {"number ", "\u6570 "},
-        {"expected [expect], read [end of file]",
-                "[{0}] \u3067\u306f\u306a\u304f [\u30d5\u30a1\u30a4\u30eb\u306e\u7d42\u308f\u308a] \u304c\u8aad\u307f\u8fbc\u307e\u308c\u307e\u3057\u305f\u3002"},
-        {"expected [;], read [end of file]",
-                "[;] \u3067\u306f\u306a\u304f [\u30d5\u30a1\u30a4\u30eb\u306e\u7d42\u308f\u308a] \u304c\u8aad\u307f\u8fbc\u307e\u308c\u307e\u3057\u305f\u3002"},
-        {"line number: msg", "\u884c {0}: {1}"},
-        {"line number: expected [expect], found [actual]",
-                "\u884c {0}: [{1}] \u3067\u306f\u306a\u304f [{2}] \u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002"},
-        {"null principalClass or principalName",
-                "null \u306e principalClass \u307e\u305f\u306f principalName"},
+        {"keystorePasswordURL.can.not.be.specified.without.also.specifying.keystore",
+                "\u30AD\u30FC\u30B9\u30C8\u30A2\u3092\u6307\u5B9A\u3057\u306A\u3044\u5834\u5408\u3001keystorePasswordURL\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093"},
+        {"expected.keystore.type", "\u4E88\u60F3\u3055\u308C\u305F\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30BF\u30A4\u30D7"},
+        {"expected.keystore.provider", "\u4E88\u60F3\u3055\u308C\u305F\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D7\u30ED\u30D0\u30A4\u30C0"},
+        {"multiple.Codebase.expressions",
+                "\u8907\u6570\u306ECodebase\u5F0F"},
+        {"multiple.SignedBy.expressions","\u8907\u6570\u306ESignedBy\u5F0F"},
+        {"SignedBy.has.empty.alias","SignedBy\u306F\u7A7A\u306E\u5225\u540D\u3092\u4FDD\u6301\u3057\u307E\u3059"},
+        {"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name",
+                "\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u540D\u306E\u306A\u3044\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u30FB\u30AF\u30E9\u30B9\u3092\u4F7F\u7528\u3057\u3066\u3001\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u3092\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093"},
+        {"expected.codeBase.or.SignedBy.or.Principal",
+                "\u4E88\u60F3\u3055\u308C\u305FcodeBase\u3001SignedBy\u307E\u305F\u306FPrincipal"},
+        {"expected.permission.entry", "\u4E88\u60F3\u3055\u308C\u305F\u30A2\u30AF\u30BB\u30B9\u6A29\u30A8\u30F3\u30C8\u30EA"},
+        {"number.", "\u6570 "},
+        {"expected.expect.read.end.of.file.",
+                "[{0}]\u3067\u306F\u306A\u304F[\u30D5\u30A1\u30A4\u30EB\u306E\u7D42\u308F\u308A]\u304C\u8AAD\u307F\u8FBC\u307E\u308C\u307E\u3057\u305F"},
+        {"expected.read.end.of.file.",
+                "[;]\u3067\u306F\u306A\u304F[\u30D5\u30A1\u30A4\u30EB\u306E\u7D42\u308F\u308A]\u304C\u8AAD\u307F\u8FBC\u307E\u308C\u307E\u3057\u305F"},
+        {"line.number.msg", "\u884C{0}: {1}"},
+        {"line.number.expected.expect.found.actual.",
+                "\u884C{0}: [{1}]\u3067\u306F\u306A\u304F[{2}]\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F"},
+        {"null.principalClass.or.principalName",
+                "null\u306EprincipalClass\u307E\u305F\u306FprincipalName"},
 
         // sun.security.pkcs11.SunPKCS11
-        {"PKCS11 Token [providerName] Password: ",
-                "PKCS11 \u30c8\u30fc\u30af\u30f3 [{0}] \u30d1\u30b9\u30ef\u30fc\u30c9: "},
+        {"PKCS11.Token.providerName.Password.",
+                "PKCS11\u30C8\u30FC\u30AF\u30F3[{0}]\u30D1\u30B9\u30EF\u30FC\u30C9: "},
 
         /* --- DEPRECATED --- */
         // javax.security.auth.Policy
-        {"unable to instantiate Subject-based policy",
-                "\u30b5\u30d6\u30b8\u30a7\u30af\u30c8\u30d9\u30fc\u30b9\u306e\u30dd\u30ea\u30b7\u30fc\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3067\u304d\u307e\u305b\u3093"}
+        {"unable.to.instantiate.Subject.based.policy",
+                "\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8\u30FB\u30D9\u30FC\u30B9\u306E\u30DD\u30EA\u30B7\u30FC\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093"}
     };
 
 
@@ -648,3 +670,4 @@
         return contents;
     }
 }
+
--- a/jdk/src/share/classes/sun/security/util/Resources_ko.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/util/Resources_ko.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, 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
@@ -35,605 +35,627 @@
     private static final Object[][] contents = {
 
         // shared (from jarsigner)
-        {" ", " "},
-        {"  ", "  "},
-        {"      ", "      "},
-        {", ", ", "},
+        {"SPACE", " "},
+        {"2SPACE", "  "},
+        {"6SPACE", "      "},
+        {"COMMA", ", "},
         // shared (from keytool)
-        {"\n", "\n"},
-        {"*******************************************",
+        {"NEWLINE", "\n"},
+        {"STAR",
                 "*******************************************"},
-        {"*******************************************\n\n",
+        {"STARNN",
                 "*******************************************\n\n"},
 
-        // keytool
-        {"keytool error: ", "keytool \uc624\ub958: "},
-        {"Illegal option:  ", "\uc798\ubabb\ub41c \uc635\uc158:   "},
-        {"Try keytool -help","keytool -help \uc0ac\uc6a9"},
-        {"Command option <flag> needs an argument.", "\uba85\ub839 \uc635\uc158 {0}\uc5d0 \uc778\uc218\uac00 \ud544\uc694\ud569\ub2c8\ub2e4."},
-        {"Warning:  Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified <command> value.",
-                "\uacbd\uace0:\t  \ub2e4\ub978 \uc800\uc7a5\uc18c \ubc0f \ud0a4 \uc554\ud638\ub294 PKCS12 \ud0a4 \uc800\uc7a5\uc18c\uc5d0 \ub300\ud574 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc0ac\uc6a9\uc790\uac00 \uc9c0\uc815\ud55c {0} \uac12\uc744 \ubb34\uc2dc\ud569\ub2c8\ub2e4."},
-        {"-keystore must be NONE if -storetype is {0}",
-                "-storetype\uc774 {0}\uc778 \uacbd\uc6b0 -keystore\uac00 NONE\uc774\uc5b4\uc57c \ud568"},
-        {"Too may retries, program terminated",
-                 "\uc7ac\uc2dc\ub3c4 \ud69f\uc218\uac00 \ub108\ubb34 \ub9ce\uc544 \ud504\ub85c\uadf8\ub7a8\uc774 \uc885\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4."},
-        {"-storepasswd and -keypasswd commands not supported if -storetype is {0}",
-                "-storetype\uc774 {0}\uc778 \uacbd\uc6b0 -storepasswd \ubc0f -keypasswd \uba85\ub839\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc74c"},
-        {"-keypasswd commands not supported if -storetype is PKCS12",
-                "-storetype\uc774 PKCS12\uc778 \uacbd\uc6b0\uc5d0\ub294 -keypasswd \uba85\ub839\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."},
-        {"-keypass and -new can not be specified if -storetype is {0}",
-                "-storetype\uc774 {0}\uc778 \uacbd\uc6b0 -keypass \ubc0f -new\ub97c \uc9c0\uc815\ud560 \uc218 \uc5c6\uc74c"},
-        {"if -protected is specified, then -storepass, -keypass, and -new must not be specified",
-                "-protected\uac00 \uc9c0\uc815\ub41c \uacbd\uc6b0 -storepass, -keypass \ubc0f -new\ub294 \uc9c0\uc815\ub418\uc9c0 \uc54a\uc544\uc57c \ud569\ub2c8\ub2e4."},
-        {"if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified",
-                "-srcprotected\ub97c \uc9c0\uc815\ud55c \uacbd\uc6b0 -srcstorepass \ubc0f -srckeypass\ub97c \uc9c0\uc815\ud558\uba74 \uc548 \ub429\ub2c8\ub2e4."},
-        {"if keystore is not password protected, then -storepass, -keypass, and -new must not be specified",
-                "\ud0a4 \uc800\uc7a5\uc18c\uac00 \uc554\ud638\ub85c \ubcf4\ud638\ub418\uc9c0 \uc54a\uc740 \uacbd\uc6b0 -storepass, -keypass \ubc0f -new\ub97c \uc9c0\uc815\ud558\uba74 \uc548 \ub428"},
-        {"if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified",
-                "\uc18c\uc2a4 \ud0a4 \uc800\uc7a5\uc18c\uac00 \uc554\ud638\ub85c \ubcf4\ud638\ub418\uc9c0 \uc54a\uc740 \uacbd\uc6b0 -srcstorepass \ubc0f -srckeypass\ub97c \uc9c0\uc815\ud558\uba74 \uc548 \ub428"},
-        {"Validity must be greater than zero",
-                "\uc720\ud6a8\uc131\uc740 0\ubcf4\ub2e4 \ucee4\uc57c \ud569\ub2c8\ub2e4."},
-        {"provName not a provider", " {0}\uc740(\ub294) \uacf5\uae09\uc790\uac00 \uc544\ub2d9\ub2c8\ub2e4."},
-        {"Usage error: no command provided", "\uc0ac\uc6a9\ubc95 \uc624\ub958: \uba85\ub839\uc744 \uc785\ub825\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."},
-        {"Usage error, <arg> is not a legal command", "\uc0ac\uc6a9\ubc95 \uc624\ub958\uc785\ub2c8\ub2e4. {0}\uc740(\ub294) \uc720\ud6a8\ud55c \uba85\ub839\uc774 \uc544\ub2d9\ub2c8\ub2e4."},
-        {"Source keystore file exists, but is empty: ", "\uc18c\uc2a4 \ud0a4 \uc800\uc7a5\uc18c \ud30c\uc77c\uc774 \uc788\uc9c0\ub9cc \ube44\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. "},
-        {"Please specify -srckeystore", "-srckeystore\ub97c \uc9c0\uc815\ud558\uc2ed\uc2dc\uc624."},
-        {"Must not specify both -v and -rfc with 'list' command",
-                "'list' \uba85\ub839\uc5d0 -v\uc640 -rfc\ub97c \ubaa8\ub450 \uc9c0\uc815\ud574\uc11c\ub294 \uc548 \ub429\ub2c8\ub2e4."},
-        {"Key password must be at least 6 characters",
-                "\ud0a4 \uc554\ud638\ub294 \uc5ec\uc12f \uae00\uc790 \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
-        {"New password must be at least 6 characters",
-                "\uc0c8 \uc554\ud638\ub294 \uc5ec\uc12f \uae00\uc790 \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
-        {"Keystore file exists, but is empty: ",
-                "keystore \ud30c\uc77c\uc774 \uc788\uc9c0\ub9cc \ube44\uc5b4 \uc788\uc2b5\ub2c8\ub2e4: "},
-        {"Keystore file does not exist: ",
-                "keystore \ud30c\uc77c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4:  "},
-        {"Must specify destination alias", "\ub300\uc0c1 \ubcc4\uce6d\uc744 \uc9c0\uc815\ud574\uc57c \ud569\ub2c8\ub2e4."},
-        {"Must specify alias", "\ubcc4\uce6d\uc744 \uc9c0\uc815\ud574\uc57c \ud569\ub2c8\ub2e4."},
-        {"Keystore password must be at least 6 characters",
-                "Keystore \uc554\ud638\ub294 \uc5ec\uc12f \uae00\uc790 \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
-        {"Enter keystore password:  ", "keystore \uc554\ud638\ub97c \uc785\ub825\ud558\uc2ed\uc2dc\uc624:  "},
-        {"Enter source keystore password:  ", "\uc18c\uc2a4 \ud0a4 \uc800\uc7a5\uc18c \uc554\ud638 \uc785\ub825:  "},
-        {"Enter destination keystore password:  ", "\ub300\uc0c1 \ud0a4 \uc800\uc7a5\uc18c \uc554\ud638 \uc785\ub825:  "},
-        {"Keystore password is too short - must be at least 6 characters",
-         "Keystore \uc554\ud638\uac00 \ub108\ubb34 \uc9e7\uc2b5\ub2c8\ub2e4. \uc5ec\uc12f \uae00\uc790 \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
-        {"Unknown Entry Type", "\uc54c \uc218 \uc5c6\ub294 \ud56d\ubaa9 \uc720\ud615"},
-        {"Too many failures. Alias not changed", "\uc2e4\ud328 \ud69f\uc218\uac00 \ub108\ubb34 \ub9ce\uc2b5\ub2c8\ub2e4. \ubcc4\uce6d\uc774 \ubcc0\uacbd\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."},
-        {"Entry for alias <alias> successfully imported.",
-                 "\ubcc4\uce6d {0}\uc5d0 \ub300\ud55c \ud56d\ubaa9\uc744 \uc131\uacf5\uc801\uc73c\ub85c \uac00\uc838\uc654\uc2b5\ub2c8\ub2e4."},
-        {"Entry for alias <alias> not imported.", "\ubcc4\uce6d {0}\uc5d0 \ub300\ud55c \ud56d\ubaa9\uc744 \uac00\uc838\uc624\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4."},
-        {"Problem importing entry for alias <alias>: <exception>.\nEntry for alias <alias> not imported.",
-                 "\ubcc4\uce6d {0}\uc5d0 \ub300\ud55c \ud56d\ubaa9\uc744 \uac00\uc838\uc624\ub294 \ub3d9\uc548 \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. {1}.\n\ubcc4\uce6d {0\uc5d0 \ub300\ud55c \ud56d\ubaa9\uc744 \uac00\uc838\uc624\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4."},
-        {"Import command completed:  <ok> entries successfully imported, <fail> entries failed or cancelled",
-                 "\uac00\uc838\uc624\uae30 \uba85\ub839 \uc644\ub8cc:  {0}\uac1c \ud56d\ubaa9\uc744 \uc131\uacf5\uc801\uc73c\ub85c \uac00\uc838\uc654\uc2b5\ub2c8\ub2e4. {1}\uac1c \ud56d\ubaa9\uc740 \uc2e4\ud328\ud588\uac70\ub098 \ucde8\uc18c\ub418\uc5c8\uc2b5\ub2c8\ub2e4."},
-        {"Warning: Overwriting existing alias <alias> in destination keystore",
-                 "\uacbd\uace0:\t \ub300\uc0c1 \ud0a4 \uc800\uc7a5\uc18c\uc5d0\uc11c \uae30\uc874 \ubcc4\uce6d {0}\uc744(\ub97c) \ub36e\uc5b4\uc4f0\ub294 \uc911"},
-        {"Existing entry alias <alias> exists, overwrite? [no]:  ",
-                 "\uae30\uc874 \ud56d\ubaa9 \ubcc4\uce6d {0}\uc774(\uac00) \uc788\uc2b5\ub2c8\ub2e4. \ub36e\uc5b4\uc4f0\uc2dc\uaca0\uc2b5\ub2c8\uae4c? [\uc544\ub2c8\uc624]:  "},
-        {"Too many failures - try later", "\uc624\ub958\uac00 \ub108\ubb34 \ub9ce\uc2b5\ub2c8\ub2e4. \ub098\uc911\uc5d0 \ub2e4\uc2dc \uc2dc\ub3c4\ud558\uc2ed\uc2dc\uc624."},
-        {"Certification request stored in file <filename>",
-                "\uc778\uc99d \uc694\uccad\uc774 <{0}> \ud30c\uc77c\uc5d0 \uc800\uc7a5\ub418\uc5c8\uc2b5\ub2c8\ub2e4."},
-        {"Submit this to your CA", "CA\uc5d0\uac8c \uc81c\ucd9c\ud558\uc2ed\uc2dc\uc624."},
-        {"if alias not specified, destalias, srckeypass, and destkeypass must not be specified",
-            "\ubcc4\uce6d\uc744 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc740 \uacbd\uc6b0 destalias, srckeypass \ubc0f destkeypass\ub97c \uc9c0\uc815\ud558\uba74 \uc548 \ub429\ub2c8\ub2e4."},
-        {"Certificate stored in file <filename>",
-                "\uc778\uc99d\uc11c\uac00 <{0}> \ud30c\uc77c\uc5d0 \uc800\uc7a5\ub418\uc5c8\uc2b5\ub2c8\ub2e4."},
-        {"Certificate reply was installed in keystore",
-                "\uc778\uc99d\uc11c \ud68c\uc2e0\uc774 keystore\uc5d0 \uc124\uce58\ub418\uc5c8\uc2b5\ub2c8\ub2e4."},
-        {"Certificate reply was not installed in keystore",
-                "\uc778\uc99d \ud68c\uc2e0\uc774 keystore\uc5d0 \uc124\uce58\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."},
-        {"Certificate was added to keystore",
-                "\uc778\uc99d\uc774 keystore\uc5d0 \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4."},
-        {"Certificate was not added to keystore",
-                "\uc778\uc99d\uc11c\uac00 keystore\uc5d0 \ucd94\uac00\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."},
-        {"[Storing ksfname]", "[{0} \uc800\uc7a5 \uc911]"},
-        {"alias has no public key (certificate)",
-                "{0}\uc5d0\ub294 \uacf5\uac1c \ud0a4(\uc778\uc99d\uc11c)\uac00 \uc5c6\uc2b5\ub2c8\ub2e4."},
-        {"Cannot derive signature algorithm",
-                "\uc11c\uba85 \uc54c\uace0\ub9ac\uc998\uc744 \uc720\ub3c4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
-        {"Alias <alias> does not exist",
-                "<{0}> \ubcc4\uce6d\uc774 \uc5c6\uc2b5\ub2c8\ub2e4."},
-        {"Alias <{0}> has no certificate",
-                "<{0}> \ubcc4\uce6d\uc5d0 \uc778\uc99d\uc11c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4."},
-        {"Key pair not generated, alias <alias> already exists",
-                "\ud0a4 \uc30d\uc774 \uc0dd\uc131\ub418\uc9c0 \uc54a\uc558\uace0 <{0}> \ubcc4\uce6d\uc774 \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4."},
-        {"Cannot derive signature algorithm",
-                "\uc11c\uba85 \uc54c\uace0\ub9ac\uc998\uc744 \uc720\ub3c4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
-        {"Generating keysize bit keyAlgName key pair and self-signed certificate (sigAlgName) with a validity of validality days\n\tfor: x500Name",
-                "\ub2e4\uc74c\uc5d0 \ub300\ud574 \uc720\ud6a8 \uae30\uac04\uc774 {3}\uc77c\uc778 {0}\ube44\ud2b8 {1} \ud0a4 \uc30d \ubc0f \uc790\uccb4 \uc11c\uba85\ub41c \uc778\uc99d\uc11c({2}) \uc0dd\uc131 \uc911\n\t: {4}"},
-        {"Enter key password for <alias>", "<{0}>\uc5d0 \ub300\ud55c \ud0a4 \uc554\ud638\ub97c \uc785\ub825\ud558\uc2ed\uc2dc\uc624."},
-        {"\t(RETURN if same as keystore password):  ",
-                "\t(keystore \uc554\ud638\uc640 \uac19\uc740 \uacbd\uc6b0 Enter\ub97c \ub204\ub974\uc2ed\uc2dc\uc624):  "},
-        {"Key password is too short - must be at least 6 characters",
-                "\ud0a4 \uc554\ud638\uac00 \ub108\ubb34 \uc9e7\uc2b5\ub2c8\ub2e4. \uc5ec\uc12f \uae00\uc790 \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
-        {"Too many failures - key not added to keystore",
-                "\uc624\ub958\uac00 \ub108\ubb34 \ub9ce\uc2b5\ub2c8\ub2e4. keystore\uc5d0 \ud0a4\uac00 \ucd94\uac00\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."},
-        {"Destination alias <dest> already exists",
-                "\ub300\uc0c1 \ubcc4\uce6d <{0}>\uc774(\uac00) \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4."},
-        {"Password is too short - must be at least 6 characters",
-                "\uc554\ud638\uac00 \ub108\ubb34 \uc9e7\uc2b5\ub2c8\ub2e4. \uc5ec\uc12f \uae00\uc790 \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
-        {"Too many failures. Key entry not cloned",
-                "\uc624\ub958\uac00 \ub108\ubb34 \ub9ce\uc2b5\ub2c8\ub2e4. \ud0a4 \ud56d\ubaa9\uc774 \ubcf5\uc81c\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."},
-        {"key password for <alias>", "<{0}>\uc5d0 \ub300\ud55c \ud0a4 \uc554\ud638"},
-        {"Keystore entry for <id.getName()> already exists",
-                "<{0}>\uc5d0 \ub300\ud55c keystore \ud56d\ubaa9\uc774 \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4."},
-        {"Creating keystore entry for <id.getName()> ...",
-                "<{0}>\uc5d0 \ub300\ud55c keystore \ud56d\ubaa9\uc744 \uc791\uc131\ud558\ub294 \uc911 ..."},
-        {"No entries from identity database added",
-                "\uc2e0\uc6d0 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \ud56d\ubaa9\uc774 \ucd94\uac00\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."},
-        {"Alias name: alias", "\ubcc4\uce6d \uc774\ub984: {0}"},
-        {"Creation date: keyStore.getCreationDate(alias)",
-                "\uc791\uc131\uc77c: keyStore.getCreationDate(alias)"},
-        {"alias, keyStore.getCreationDate(alias), ",
+        // keytool: Help part
+        {".OPTION.", " [OPTION]..."},
+        {"Options.", "\uC635\uC158:"},
+        {"Use.keytool.help.for.all.available.commands",
+                 "\uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uBAA8\uB4E0 \uBA85\uB839\uC5D0 \"keytool -help\" \uC0AC\uC6A9"},
+        {"Key.and.Certificate.Management.Tool",
+                 "\uD0A4 \uBC0F \uC778\uC99D\uC11C \uAD00\uB9AC \uD234"},
+        {"Commands.", "\uBA85\uB839:"},
+        {"Use.keytool.command.name.help.for.usage.of.command.name",
+                "command_name \uC0AC\uC6A9\uBC95\uC5D0 \"keytool -command_name -help\" \uC0AC\uC6A9"},
+        // keytool: help: commands
+        {"Generates.a.certificate.request",
+                "\uC778\uC99D\uC11C \uC694\uCCAD\uC744 \uC0DD\uC131\uD569\uB2C8\uB2E4."}, //-certreq
+        {"Changes.an.entry.s.alias",
+                "\uD56D\uBAA9\uC758 \uBCC4\uCE6D\uC744 \uBCC0\uACBD\uD569\uB2C8\uB2E4."}, //-changealias
+        {"Deletes.an.entry",
+                "\uD56D\uBAA9\uC744 \uC0AD\uC81C\uD569\uB2C8\uB2E4."}, //-delete
+        {"Exports.certificate",
+                "\uC778\uC99D\uC11C\uB97C \uC775\uC2A4\uD3EC\uD2B8\uD569\uB2C8\uB2E4."}, //-exportcert
+        {"Generates.a.key.pair",
+                "\uD0A4 \uC30D\uC744 \uC0DD\uC131\uD569\uB2C8\uB2E4."}, //-genkeypair
+        {"Generates.a.secret.key",
+                "\uBCF4\uC548 \uD0A4\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4."}, //-genseckey
+        {"Generates.certificate.from.a.certificate.request",
+                "\uC778\uC99D\uC11C \uC694\uCCAD\uC5D0\uC11C \uC778\uC99D\uC11C\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4."}, //-gencert
+        {"Generates.CRL", "CRL\uC744 \uC0DD\uC131\uD569\uB2C8\uB2E4."}, //-gencrl
+        {"Imports.entries.from.a.JDK.1.1.x.style.identity.database",
+                "JDK 1.1.x \uC2A4\uD0C0\uC77C ID \uB370\uC774\uD130\uBCA0\uC774\uC2A4\uC5D0\uC11C \uD56D\uBAA9\uC744 \uC784\uD3EC\uD2B8\uD569\uB2C8\uB2E4."}, //-identitydb
+        {"Imports.a.certificate.or.a.certificate.chain",
+                "\uC778\uC99D\uC11C \uB610\uB294 \uC778\uC99D\uC11C \uCCB4\uC778\uC744 \uC784\uD3EC\uD2B8\uD569\uB2C8\uB2E4."}, //-importcert
+        {"Imports.one.or.all.entries.from.another.keystore",
+                "\uB2E4\uB978 \uD0A4 \uC800\uC7A5\uC18C\uC5D0\uC11C \uD558\uB098 \uB610\uB294 \uBAA8\uB4E0 \uD56D\uBAA9\uC744 \uC784\uD3EC\uD2B8\uD569\uB2C8\uB2E4."}, //-importkeystore
+        {"Clones.a.key.entry",
+                "\uD0A4 \uD56D\uBAA9\uC744 \uBCF5\uC81C\uD569\uB2C8\uB2E4."}, //-keyclone
+        {"Changes.the.key.password.of.an.entry",
+                "\uD56D\uBAA9\uC758 \uD0A4 \uBE44\uBC00\uBC88\uD638\uB97C \uBCC0\uACBD\uD569\uB2C8\uB2E4."}, //-keypasswd
+        {"Lists.entries.in.a.keystore",
+                "\uD0A4 \uC800\uC7A5\uC18C\uC758 \uD56D\uBAA9\uC744 \uB098\uC5F4\uD569\uB2C8\uB2E4."}, //-list
+        {"Prints.the.content.of.a.certificate",
+                "\uC778\uC99D\uC11C\uC758 \uCF58\uD150\uCE20\uB97C \uC778\uC1C4\uD569\uB2C8\uB2E4."}, //-printcert
+        {"Prints.the.content.of.a.certificate.request",
+                "\uC778\uC99D\uC11C \uC694\uCCAD\uC758 \uCF58\uD150\uCE20\uB97C \uC778\uC1C4\uD569\uB2C8\uB2E4."}, //-printcertreq
+        {"Prints.the.content.of.a.CRL.file",
+                "CRL \uD30C\uC77C\uC758 \uCF58\uD150\uCE20\uB97C \uC778\uC1C4\uD569\uB2C8\uB2E4."}, //-printcrl
+        {"Generates.a.self.signed.certificate",
+                "\uC790\uCCB4 \uC11C\uBA85\uB41C \uC778\uC99D\uC11C\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4."}, //-selfcert
+        {"Changes.the.store.password.of.a.keystore",
+                "\uD0A4 \uC800\uC7A5\uC18C\uC758 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638\uB97C \uBCC0\uACBD\uD569\uB2C8\uB2E4."}, //-storepasswd
+        // keytool: help: options
+        {"alias.name.of.the.entry.to.process",
+                "\uCC98\uB9AC\uD560 \uD56D\uBAA9\uC758 \uBCC4\uCE6D \uC774\uB984"}, //-alias
+        {"destination.alias",
+                "\uB300\uC0C1 \uBCC4\uCE6D"}, //-destalias
+        {"destination.key.password",
+                "\uB300\uC0C1 \uD0A4 \uBE44\uBC00\uBC88\uD638"}, //-destkeypass
+        {"destination.keystore.name",
+                "\uB300\uC0C1 \uD0A4 \uC800\uC7A5\uC18C \uC774\uB984"}, //-destkeystore
+        {"destination.keystore.password.protected",
+                "\uB300\uC0C1 \uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638\uB85C \uBCF4\uD638\uB428"}, //-destprotected
+        {"destination.keystore.provider.name",
+                "\uB300\uC0C1 \uD0A4 \uC800\uC7A5\uC18C \uC81C\uACF5\uC790 \uC774\uB984"}, //-destprovidername
+        {"destination.keystore.password",
+                "\uB300\uC0C1 \uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638"}, //-deststorepass
+        {"destination.keystore.type",
+                "\uB300\uC0C1 \uD0A4 \uC800\uC7A5\uC18C \uC720\uD615"}, //-deststoretype
+        {"distinguished.name",
+                "\uC2DD\uBCC4 \uC774\uB984"}, //-dname
+        {"X.509.extension",
+                "X.509 \uD655\uC7A5"}, //-ext
+        {"output.file.name",
+                "\uCD9C\uB825 \uD30C\uC77C \uC774\uB984"}, //-file and -outfile
+        {"input.file.name",
+                "\uC785\uB825 \uD30C\uC77C \uC774\uB984"}, //-file and -infile
+        {"key.algorithm.name",
+                "\uD0A4 \uC54C\uACE0\uB9AC\uC998 \uC774\uB984"}, //-keyalg
+        {"key.password",
+                "\uD0A4 \uBE44\uBC00\uBC88\uD638"}, //-keypass
+        {"key.bit.size",
+                "\uD0A4 \uBE44\uD2B8 \uD06C\uAE30"}, //-keysize
+        {"keystore.name",
+                "\uD0A4 \uC800\uC7A5\uC18C \uC774\uB984"}, //-keystore
+        {"new.password",
+                "\uC0C8 \uBE44\uBC00\uBC88\uD638"}, //-new
+        {"do.not.prompt",
+                "\uD655\uC778\uD558\uC9C0 \uC54A\uC74C"}, //-noprompt
+        {"password.through.protected.mechanism",
+                "\uBCF4\uD638\uB418\uB294 \uBA54\uCEE4\uB2C8\uC998\uC744 \uD1B5\uD55C \uBE44\uBC00\uBC88\uD638"}, //-protected
+        {"provider.argument",
+                "\uC81C\uACF5\uC790 \uC778\uC218"}, //-providerarg
+        {"provider.class.name",
+                "\uC81C\uACF5\uC790 \uD074\uB798\uC2A4 \uC774\uB984"}, //-providerclass
+        {"provider.name",
+                "\uC81C\uACF5\uC790 \uC774\uB984"}, //-providername
+        {"provider.classpath",
+                "\uC81C\uACF5\uC790 \uD074\uB798\uC2A4 \uACBD\uB85C"}, //-providerpath
+        {"output.in.RFC.style",
+                "RFC \uC2A4\uD0C0\uC77C\uC758 \uCD9C\uB825"}, //-rfc
+        {"signature.algorithm.name",
+                "\uC11C\uBA85 \uC54C\uACE0\uB9AC\uC998 \uC774\uB984"}, //-sigalg
+        {"source.alias",
+                "\uC18C\uC2A4 \uBCC4\uCE6D"}, //-srcalias
+        {"source.key.password",
+                "\uC18C\uC2A4 \uD0A4 \uBE44\uBC00\uBC88\uD638"}, //-srckeypass
+        {"source.keystore.name",
+                "\uC18C\uC2A4 \uD0A4 \uC800\uC7A5\uC18C \uC774\uB984"}, //-srckeystore
+        {"source.keystore.password.protected",
+                "\uC18C\uC2A4 \uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638\uB85C \uBCF4\uD638\uB428"}, //-srcprotected
+        {"source.keystore.provider.name",
+                "\uC18C\uC2A4 \uD0A4 \uC800\uC7A5\uC18C \uC81C\uACF5\uC790 \uC774\uB984"}, //-srcprovidername
+        {"source.keystore.password",
+                "\uC18C\uC2A4 \uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638"}, //-srcstorepass
+        {"source.keystore.type",
+                "\uC18C\uC2A4 \uD0A4 \uC800\uC7A5\uC18C \uC720\uD615"}, //-srcstoretype
+        {"SSL.server.host.and.port",
+                "SSL \uC11C\uBC84 \uD638\uC2A4\uD2B8 \uBC0F \uD3EC\uD2B8"}, //-sslserver
+        {"signed.jar.file",
+                "\uC11C\uBA85\uB41C jar \uD30C\uC77C"}, //=jarfile
+        {"certificate.validity.start.date.time",
+                "\uC778\uC99D\uC11C \uC720\uD6A8 \uAE30\uAC04 \uC2DC\uC791 \uB0A0\uC9DC/\uC2DC\uAC04"}, //-startdate
+        {"keystore.password",
+                "\uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638"}, //-storepass
+        {"keystore.type",
+                "\uD0A4 \uC800\uC7A5\uC18C \uC720\uD615"}, //-storetype
+        {"trust.certificates.from.cacerts",
+                "cacerts\uC758 \uBCF4\uC548 \uC778\uC99D\uC11C"}, //-trustcacerts
+        {"verbose.output",
+                "\uC0C1\uC138 \uC815\uBCF4 \uCD9C\uB825"}, //-v
+        {"validity.number.of.days",
+                "\uC720\uD6A8 \uAE30\uAC04 \uC77C \uC218"}, //-validity
+        {"Serial.ID.of.cert.to.revoke",
+                 "\uCCA0\uD68C\uD560 \uC778\uC99D\uC11C\uC758 \uC77C\uB828 ID"}, //-id
+        // keytool: Running part
+        {"keytool.error.", "keytool \uC624\uB958: "},
+        {"Illegal.option.", "\uC798\uBABB\uB41C \uC635\uC158:   "},
+        {"Illegal.value.", "\uC798\uBABB\uB41C \uAC12: "},
+        {"Unknown.password.type.", "\uC54C \uC218 \uC5C6\uB294 \uBE44\uBC00\uBC88\uD638 \uC720\uD615: "},
+        {"Cannot.find.environment.variable.",
+                "\uD658\uACBD \uBCC0\uC218\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC74C: "},
+        {"Cannot.find.file.", "\uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC74C: "},
+        {"Command.option.flag.needs.an.argument.", "\uBA85\uB839 \uC635\uC158 {0}\uC5D0 \uC778\uC218\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4."},
+        {"Warning.Different.store.and.key.passwords.not.supported.for.PKCS12.KeyStores.Ignoring.user.specified.command.value.",
+                "\uACBD\uACE0: \uB2E4\uB978 \uC800\uC7A5\uC18C \uBC0F \uD0A4 \uBE44\uBC00\uBC88\uD638\uB294 PKCS12 KeyStores\uC5D0 \uB300\uD574 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uC0AC\uC6A9\uC790\uAC00 \uC9C0\uC815\uD55C {0} \uAC12\uC744 \uBB34\uC2DC\uD558\uB294 \uC911\uC785\uB2C8\uB2E4."},
+        {".keystore.must.be.NONE.if.storetype.is.{0}",
+                "-storetype\uC774 {0}\uC778 \uACBD\uC6B0 -keystore\uB294 NONE\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4."},
+        {"Too.many.retries.program.terminated",
+                 "\uC7AC\uC2DC\uB3C4 \uD69F\uC218\uAC00 \uB108\uBB34 \uB9CE\uC544 \uD504\uB85C\uADF8\uB7A8\uC774 \uC885\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+        {".storepasswd.and.keypasswd.commands.not.supported.if.storetype.is.{0}",
+                "-storetype\uC774 {0}\uC778 \uACBD\uC6B0 -storepasswd \uBC0F -keypasswd \uBA85\uB839\uC774 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."},
+        {".keypasswd.commands.not.supported.if.storetype.is.PKCS12",
+                "-storetype\uC774 PKCS12\uC778 \uACBD\uC6B0 -keypasswd \uBA85\uB839\uC774 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."},
+        {".keypass.and.new.can.not.be.specified.if.storetype.is.{0}",
+                "-storetype\uC774 {0}\uC778 \uACBD\uC6B0 -keypass \uBC0F -new\uB97C \uC9C0\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"if.protected.is.specified.then.storepass.keypass.and.new.must.not.be.specified",
+                "-protected\uB97C \uC9C0\uC815\uD55C \uACBD\uC6B0 -storepass, -keypass \uBC0F -new\uB97C \uC9C0\uC815\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4."},
+        {"if.srcprotected.is.specified.then.srcstorepass.and.srckeypass.must.not.be.specified",
+                "-srcprotected\uB97C \uC9C0\uC815\uD55C \uACBD\uC6B0 -srcstorepass \uBC0F -srckeypass\uB97C \uC9C0\uC815\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4."},
+        {"if.keystore.is.not.password.protected.then.storepass.keypass.and.new.must.not.be.specified",
+                "\uD0A4 \uC800\uC7A5\uC18C\uAC00 \uBE44\uBC00\uBC88\uD638\uB85C \uBCF4\uD638\uB418\uC9C0 \uC54A\uB294 \uACBD\uC6B0 -storepass, -keypass \uBC0F -new\uB97C \uC9C0\uC815\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4."},
+        {"if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified",
+                "\uC18C\uC2A4 \uD0A4 \uC800\uC7A5\uC18C\uAC00 \uBE44\uBC00\uBC88\uD638\uB85C \uBCF4\uD638\uB418\uC9C0 \uC54A\uB294 \uACBD\uC6B0 -srcstorepass \uBC0F -srckeypass\uB97C \uC9C0\uC815\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4."},
+        {"Illegal.startdate.value", "startdate \uAC12\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+        {"Validity.must.be.greater.than.zero",
+                "\uC720\uD6A8 \uAE30\uAC04\uC740 0\uBCF4\uB2E4 \uCEE4\uC57C \uD569\uB2C8\uB2E4."},
+        {"provName.not.a.provider", "{0}\uC740(\uB294) \uC81C\uACF5\uC790\uAC00 \uC544\uB2D9\uB2C8\uB2E4."},
+        {"Usage.error.no.command.provided", "\uC0AC\uC6A9\uBC95 \uC624\uB958: \uBA85\uB839\uC744 \uC785\uB825\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."},
+        {"Source.keystore.file.exists.but.is.empty.", "\uC18C\uC2A4 \uD0A4 \uC800\uC7A5\uC18C \uD30C\uC77C\uC774 \uC874\uC7AC\uD558\uC9C0\uB9CC \uBE44\uC5B4 \uC788\uC74C: "},
+        {"Please.specify.srckeystore", "-srckeystore\uB97C \uC9C0\uC815\uD558\uC2ED\uC2DC\uC624."},
+        {"Must.not.specify.both.v.and.rfc.with.list.command",
+                "'list' \uBA85\uB839\uC5D0 -v\uC640 -rfc\uB97C \uD568\uAED8 \uC9C0\uC815\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4."},
+        {"Key.password.must.be.at.least.6.characters",
+                "\uD0A4 \uBE44\uBC00\uBC88\uD638\uB294 6\uC790 \uC774\uC0C1\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4."},
+        {"New.password.must.be.at.least.6.characters",
+                "\uC0C8 \uBE44\uBC00\uBC88\uD638\uB294 6\uC790 \uC774\uC0C1\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4."},
+        {"Keystore.file.exists.but.is.empty.",
+                "\uD0A4 \uC800\uC7A5\uC18C \uD30C\uC77C\uC774 \uC874\uC7AC\uD558\uC9C0\uB9CC \uBE44\uC5B4 \uC788\uC74C: "},
+        {"Keystore.file.does.not.exist.",
+                "\uD0A4 \uC800\uC7A5\uC18C \uD30C\uC77C\uC774 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC74C: "},
+        {"Must.specify.destination.alias", "\uB300\uC0C1 \uBCC4\uCE6D\uC744 \uC9C0\uC815\uD574\uC57C \uD569\uB2C8\uB2E4."},
+        {"Must.specify.alias", "\uBCC4\uCE6D\uC744 \uC9C0\uC815\uD574\uC57C \uD569\uB2C8\uB2E4."},
+        {"Keystore.password.must.be.at.least.6.characters",
+                "\uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638\uB294 6\uC790 \uC774\uC0C1\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4."},
+        {"Enter.keystore.password.", "\uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638 \uC785\uB825:  "},
+        {"Enter.source.keystore.password.", "\uC18C\uC2A4 \uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638 \uC785\uB825:  "},
+        {"Enter.destination.keystore.password.", "\uB300\uC0C1 \uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638 \uC785\uB825:  "},
+        {"Keystore.password.is.too.short.must.be.at.least.6.characters",
+         "\uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638\uAC00 \uB108\uBB34 \uC9E7\uC74C - 6\uC790 \uC774\uC0C1\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4."},
+        {"Unknown.Entry.Type", "\uC54C \uC218 \uC5C6\uB294 \uD56D\uBAA9 \uC720\uD615"},
+        {"Too.many.failures.Alias.not.changed", "\uC624\uB958\uAC00 \uB108\uBB34 \uB9CE\uC2B5\uB2C8\uB2E4. \uBCC4\uCE6D\uC774 \uBCC0\uACBD\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."},
+        {"Entry.for.alias.alias.successfully.imported.",
+                 "{0} \uBCC4\uCE6D\uC5D0 \uB300\uD55C \uD56D\uBAA9\uC774 \uC131\uACF5\uC801\uC73C\uB85C \uC784\uD3EC\uD2B8\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+        {"Entry.for.alias.alias.not.imported.", "{0} \uBCC4\uCE6D\uC5D0 \uB300\uD55C \uD56D\uBAA9\uC774 \uC784\uD3EC\uD2B8\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."},
+        {"Problem.importing.entry.for.alias.alias.exception.Entry.for.alias.alias.not.imported.",
+                 "{0} \uBCC4\uCE6D\uC5D0 \uB300\uD55C \uD56D\uBAA9\uC744 \uC784\uD3EC\uD2B8\uD558\uB294 \uC911 \uBB38\uC81C \uBC1C\uC0DD: {1}.\n{0} \uBCC4\uCE6D\uC5D0 \uB300\uD55C \uD56D\uBAA9\uC774 \uC784\uD3EC\uD2B8\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."},
+        {"Import.command.completed.ok.entries.successfully.imported.fail.entries.failed.or.cancelled",
+                 "\uC784\uD3EC\uD2B8 \uBA85\uB839 \uC644\uB8CC: \uC131\uACF5\uC801\uC73C\uB85C \uC784\uD3EC\uD2B8\uB41C \uD56D\uBAA9\uC740 {0}\uAC1C, \uC2E4\uD328\uD558\uAC70\uB098 \uCDE8\uC18C\uB41C \uD56D\uBAA9\uC740 {1}\uAC1C\uC785\uB2C8\uB2E4."},
+        {"Warning.Overwriting.existing.alias.alias.in.destination.keystore",
+                 "\uACBD\uACE0: \uB300\uC0C1 \uD0A4 \uC800\uC7A5\uC18C\uC5D0\uC11C \uAE30\uC874 \uBCC4\uCE6D {0}\uC744(\uB97C) \uACB9\uCCD0 \uC4F0\uB294 \uC911"},
+        {"Existing.entry.alias.alias.exists.overwrite.no.",
+                 "\uAE30\uC874 \uD56D\uBAA9 \uBCC4\uCE6D {0}\uC774(\uAC00) \uC874\uC7AC\uD569\uB2C8\uB2E4. \uACB9\uCCD0 \uC4F0\uACA0\uC2B5\uB2C8\uAE4C? [\uC544\uB2C8\uC624]:  "},
+        {"Too.many.failures.try.later", "\uC624\uB958\uAC00 \uB108\uBB34 \uB9CE\uC74C - \uB098\uC911\uC5D0 \uC2DC\uB3C4\uD558\uC2ED\uC2DC\uC624."},
+        {"Certification.request.stored.in.file.filename.",
+                "\uC778\uC99D \uC694\uCCAD\uC774 <{0}> \uD30C\uC77C\uC5D0 \uC800\uC7A5\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+        {"Submit.this.to.your.CA", "CA\uC5D0\uAC8C \uC81C\uCD9C\uD558\uC2ED\uC2DC\uC624."},
+        {"if.alias.not.specified.destalias.srckeypass.and.destkeypass.must.not.be.specified",
+            "\uBCC4\uCE6D\uC744 \uC9C0\uC815\uD558\uC9C0 \uC54A\uC740 \uACBD\uC6B0 destalias, srckeypass \uBC0F destkeypass\uB97C \uC9C0\uC815\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4."},
+        {"Certificate.stored.in.file.filename.",
+                "\uC778\uC99D\uC11C\uAC00 <{0}> \uD30C\uC77C\uC5D0 \uC800\uC7A5\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+        {"Certificate.reply.was.installed.in.keystore",
+                "\uC778\uC99D\uC11C \uD68C\uC2E0\uC774 \uD0A4 \uC800\uC7A5\uC18C\uC5D0 \uC124\uCE58\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+        {"Certificate.reply.was.not.installed.in.keystore",
+                "\uC778\uC99D\uC11C \uD68C\uC2E0\uC774 \uD0A4 \uC800\uC7A5\uC18C\uC5D0 \uC124\uCE58\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."},
+        {"Certificate.was.added.to.keystore",
+                "\uC778\uC99D\uC11C\uAC00 \uD0A4 \uC800\uC7A5\uC18C\uC5D0 \uCD94\uAC00\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+        {"Certificate.was.not.added.to.keystore",
+                "\uC778\uC99D\uC11C\uAC00 \uD0A4 \uC800\uC7A5\uC18C\uC5D0 \uCD94\uAC00\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."},
+        {".Storing.ksfname.", "[{0}\uC744(\uB97C) \uC800\uC7A5\uD558\uB294 \uC911]"},
+        {"alias.has.no.public.key.certificate.",
+                "{0}\uC5D0 \uACF5\uC6A9 \uD0A4(\uC778\uC99D\uC11C)\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"Cannot.derive.signature.algorithm",
+                "\uC11C\uBA85 \uC54C\uACE0\uB9AC\uC998\uC744 \uD30C\uC0DD\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"Alias.alias.does.not.exist",
+                "<{0}> \uBCC4\uCE6D\uC774 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."},
+        {"Alias.alias.has.no.certificate",
+                "<{0}> \uBCC4\uCE6D\uC5D0 \uC778\uC99D\uC11C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"Key.pair.not.generated.alias.alias.already.exists",
+                "\uD0A4 \uC30D\uC774 \uC0DD\uC131\uB418\uC9C0 \uC54A\uC558\uC73C\uBA70 <{0}> \uBCC4\uCE6D\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4."},
+        {"Generating.keysize.bit.keyAlgName.key.pair.and.self.signed.certificate.sigAlgName.with.a.validity.of.validality.days.for",
+                "\uB2E4\uC74C\uC5D0 \uB300\uD574 \uC720\uD6A8 \uAE30\uAC04\uC774 {3}\uC77C\uC778 {0}\uBE44\uD2B8 {1} \uD0A4 \uC30D \uBC0F \uC790\uCCB4 \uC11C\uBA85\uB41C \uC778\uC99D\uC11C({2})\uB97C \uC0DD\uC131\uD558\uB294 \uC911\n\t: {4}"},
+        {"Enter.key.password.for.alias.", "<{0}>\uC5D0 \uB300\uD55C \uD0A4 \uBE44\uBC00\uBC88\uD638\uB97C \uC785\uB825\uD558\uC2ED\uC2DC\uC624."},
+        {".RETURN.if.same.as.keystore.password.",
+                "\t(\uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638\uC640 \uB3D9\uC77C\uD55C \uACBD\uC6B0 Enter \uD0A4\uB97C \uB204\uB984):  "},
+        {"Key.password.is.too.short.must.be.at.least.6.characters",
+                "\uD0A4 \uBE44\uBC00\uBC88\uD638\uAC00 \uB108\uBB34 \uC9E7\uC74C - 6\uC790 \uC774\uC0C1\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4."},
+        {"Too.many.failures.key.not.added.to.keystore",
+                "\uC624\uB958\uAC00 \uB108\uBB34 \uB9CE\uC74C - \uD0A4 \uC800\uC7A5\uC18C\uC5D0 \uD0A4\uAC00 \uCD94\uAC00\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."},
+        {"Destination.alias.dest.already.exists",
+                "\uB300\uC0C1 \uBCC4\uCE6D <{0}>\uC774(\uAC00) \uC874\uC7AC\uD569\uB2C8\uB2E4."},
+        {"Password.is.too.short.must.be.at.least.6.characters",
+                "\uBE44\uBC00\uBC88\uD638\uAC00 \uB108\uBB34 \uC9E7\uC74C - 6\uC790 \uC774\uC0C1\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4."},
+        {"Too.many.failures.Key.entry.not.cloned",
+                "\uC624\uB958\uAC00 \uB108\uBB34 \uB9CE\uC2B5\uB2C8\uB2E4. \uD0A4 \uD56D\uBAA9\uC774 \uBCF5\uC81C\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."},
+        {"key.password.for.alias.", "<{0}>\uC5D0 \uB300\uD55C \uD0A4 \uBE44\uBC00\uBC88\uD638"},
+        {"Keystore.entry.for.id.getName.already.exists",
+                "<{0}>\uC5D0 \uB300\uD55C \uD0A4 \uC800\uC7A5\uC18C \uD56D\uBAA9\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4."},
+        {"Creating.keystore.entry.for.id.getName.",
+                "<{0}>\uC5D0 \uB300\uD55C \uD0A4 \uC800\uC7A5\uC18C \uD56D\uBAA9\uC744 \uC0DD\uC131\uD558\uB294 \uC911..."},
+        {"No.entries.from.identity.database.added",
+                "ID \uB370\uC774\uD130\uBCA0\uC774\uC2A4\uC5D0\uC11C \uCD94\uAC00\uB41C \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"Alias.name.alias", "\uBCC4\uCE6D \uC774\uB984: {0}"},
+        {"Creation.date.keyStore.getCreationDate.alias.",
+                "\uC0DD\uC131 \uB0A0\uC9DC: {0,date}"},
+        {"alias.keyStore.getCreationDate.alias.",
                 "{0}, {1,date}, "},
-        {"alias, ", "{0},"},
-        {"Entry type: <type>", "\ud56d\ubaa9 \uc720\ud615: {0}"},
-        {"Certificate chain length: ", "\uc778\uc99d\uc11c \uccb4\uc778 \uae38\uc774: "},
-        {"Certificate[(i + 1)]:", "\uc778\uc99d\uc11c[{0,number,integer}]:"},
-        {"Certificate fingerprint (MD5): ", "\uc778\uc99d\uc11c \uc9c0\ubb38(MD5): "},
-        {"Entry type: trustedCertEntry\n", "\uc785\ub825 \uc720\ud615: trustedCertEntry\n"},
-        {"trustedCertEntry,", "trustedCertEntry,"},
-        {"Keystore type: ", "Keystore \uc720\ud615: "},
-        {"Keystore provider: ", "Keystore \uacf5\uae09\uc790: "},
-        {"Your keystore contains keyStore.size() entry",
-                "Keystore\uc5d0\ub294 {0,number,integer} \ud56d\ubaa9\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4."},
-        {"Your keystore contains keyStore.size() entries",
-                "Keystore\uc5d0\ub294 {0,number,integer} \ud56d\ubaa9\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4."},
-        {"Failed to parse input", "\uc785\ub825\uc744 \uad6c\ubb38 \ubd84\uc11d\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4."},
-        {"Empty input", "\uc785\ub825\uc774 \ube44\uc5b4\uc788\uc2b5\ub2c8\ub2e4."},
-        {"Not X.509 certificate", "X.509 \uc778\uc99d\uc11c\uac00 \uc544\ub2d9\ub2c8\ub2e4."},
-        {"Cannot derive signature algorithm",
-                "\uc11c\uba85 \uc54c\uace0\ub9ac\uc998\uc744 \uc720\ub3c4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
-        {"alias has no public key", "{0}\uc5d0\ub294 \uacf5\uac1c \ud0a4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4."},
-        {"alias has no X.509 certificate", "{0}\uc5d0 X.509 \uc778\uc99d\uc11c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4."},
-        {"New certificate (self-signed):", "\uc0c8 \uc778\uc99d\uc11c(\uc790\uccb4 \uc11c\uba85):"},
-        {"Reply has no certificates", "\ud68c\uc2e0\uc5d0 \uc778\uc99d\uc11c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4."},
-        {"Certificate not imported, alias <alias> already exists",
-                "\uc778\uc99d\uc11c\ub97c \uac00\uc838\uc624\uc9c0 \uc54a\uc558\uace0 <{0}> \ubcc4\uce6d\uc774 \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4."},
-        {"Input not an X.509 certificate", "\uc785\ub825\uc774 X.509 \uc778\uc99d\uc11c\uac00 \uc544\ub2d9\ub2c8\ub2e4."},
-        {"Certificate already exists in keystore under alias <trustalias>",
-                "\uc778\uc99d\uc11c\uac00 <{0}> \ubcc4\uce6d \uc544\ub798\uc758 keystore\uc5d0 \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4."},
-        {"Do you still want to add it? [no]:  ",
-                "\ucd94\uac00\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? [\uc544\ub2c8\uc624]:  "},
-        {"Certificate already exists in system-wide CA keystore under alias <trustalias>",
-                "\uc778\uc99d\uc11c\uac00 <{0}> \ubcc4\uce6d \uc544\ub798\uc758 \uc2dc\uc2a4\ud15c \ubc94\uc704 CA keystore\uc5d0 \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4."},
-        {"Do you still want to add it to your own keystore? [no]:  ",
-                "\uc0ac\uc6a9\uc790 keystore\uc5d0 \ucd94\uac00\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? [\uc544\ub2c8\uc624]:  "},
-        {"Trust this certificate? [no]:  ", "\uc774 \uc778\uc99d\uc11c\ub97c \uc2e0\ub8b0\ud558\uc2ed\ub2c8\uae4c? [\uc544\ub2c8\uc624]:  "},
-        {"YES", "\uc608"},
-        {"New prompt: ", "\uc0c8 \ud504\ub86c\ud504\ud2b8: "},
-        {"Passwords must differ", "\uc554\ud638\ub294 \ub2ec\ub77c\uc57c \ud569\ub2c8\ub2e4."},
-        {"Re-enter new prompt: ", "\uc0c8 {0}\uc744(\ub97c) \ub2e4\uc2dc \uc785\ub825\ud558\uc2ed\uc2dc\uc624: "},
-        {"Re-enter new password: ", "\uc0c8 \uc554\ud638\ub97c \ub2e4\uc2dc \uc785\ub825\ud558\uc2ed\uc2dc\uc624: "},
-        {"They don't match. Try again", "\uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc \uc2dc\ub3c4\ud558\uc2ed\uc2dc\uc624."},
-        {"Enter prompt alias name:  ", "{0} \ubcc4\uce6d \uc774\ub984\uc744 \uc785\ub825\ud558\uc2ed\uc2dc\uc624:  "},
-        {"Enter new alias name\t(RETURN to cancel import for this entry):  ",
-                 "\uc0c8 \ubcc4\uce6d \uc785\ub825\t(Enter - \uc774 \ud56d\ubaa9\uc5d0 \ub300\ud55c \uac00\uc838\uc624\uae30 \ucde8\uc18c):  "},
-        {"Enter alias name:  ", "\ubcc4\uce6d \uc774\ub984\uc744 \uc785\ub825\ud558\uc2ed\uc2dc\uc624:  "},
-        {"\t(RETURN if same as for <otherAlias>)",
-                "\t(<{0}>\uc640(\uacfc) \uac19\uc740 \uacbd\uc6b0 Enter\ub97c \ub204\ub974\uc2ed\uc2dc\uc624.)"},
-        {"*PATTERN* printX509Cert",
-                "\uc18c\uc720\uc790: {0}\n\ubc1c\uae09\uc790: {1}\n\uc77c\ub828 \ubc88\ud638: {2}\n\uc720\ud6a8 \uae30\uac04 \uc2dc\uc791: {3} \ub05d: {4}\n\uc778\uc99d \uc9c0\ubb38:\n\t MD5:  {5}\n\t SHA1: {6}\n\t \uc11c\uba85 \uc54c\uace0\ub9ac\uc998 \uc774\ub984: {7}\n\t \ubc84\uc804: {8}"},
-        {"What is your first and last name?",
-                "\uc774\ub984\uacfc \uc131\uc744 \uc785\ub825\ud558\uc2ed\uc2dc\uc624."},
-        {"What is the name of your organizational unit?",
-                "\uc870\uc9c1 \ub2e8\uc704 \uc774\ub984\uc744 \uc785\ub825\ud558\uc2ed\uc2dc\uc624."},
-        {"What is the name of your organization?",
-                "\uc870\uc9c1 \uc774\ub984\uc744 \uc785\ub825\ud558\uc2ed\uc2dc\uc624."},
-        {"What is the name of your City or Locality?",
-                "\uad6c/\uad70/\uc2dc \uc774\ub984\uc744 \uc785\ub825\ud558\uc2ed\uc2dc\uc624?"},
-        {"What is the name of your State or Province?",
-                "\uc2dc/\ub3c4 \uc774\ub984\uc744 \uc785\ub825\ud558\uc2ed\uc2dc\uc624."},
-        {"What is the two-letter country code for this unit?",
-                "\uc774 \uc870\uc9c1\uc758 \ub450 \uc790\ub9ac \uad6d\uac00 \ucf54\ub4dc\ub97c \uc785\ub825\ud558\uc2ed\uc2dc\uc624."},
-        {"Is <name> correct?", "{0}\uc774(\uac00) \ub9de\uc2b5\ub2c8\uae4c?"},
-        {"no", "\uc544\ub2c8\uc624"},
-        {"yes", "\uc608"},
+        {"alias.", "{0}, "},
+        {"Entry.type.type.", "\uD56D\uBAA9 \uC720\uD615: {0}"},
+        {"Certificate.chain.length.", "\uC778\uC99D\uC11C \uCCB4\uC778 \uAE38\uC774: "},
+        {"Certificate.i.1.", "\uC778\uC99D\uC11C[{0,number,integer}]:"},
+        {"Certificate.fingerprint.SHA1.", "\uC778\uC99D\uC11C \uC9C0\uBB38(SHA1): "},
+        {"Entry.type.trustedCertEntry.", "\uD56D\uBAA9 \uC720\uD615: trustedCertEntry\n"},
+        {"trustedCertEntry.", "trustedCertEntry,"},
+        {"Keystore.type.", "\uD0A4 \uC800\uC7A5\uC18C \uC720\uD615: "},
+        {"Keystore.provider.", "\uD0A4 \uC800\uC7A5\uC18C \uC81C\uACF5\uC790: "},
+        {"Your.keystore.contains.keyStore.size.entry",
+                "\uD0A4 \uC800\uC7A5\uC18C\uC5D0 {0,number,integer}\uAC1C\uC758 \uD56D\uBAA9\uC774 \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4."},
+        {"Your.keystore.contains.keyStore.size.entries",
+                "\uD0A4 \uC800\uC7A5\uC18C\uC5D0 {0,number,integer}\uAC1C\uC758 \uD56D\uBAA9\uC774 \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4."},
+        {"Failed.to.parse.input", "\uC785\uB825\uAC12\uC758 \uAD6C\uBB38 \uBD84\uC11D\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4."},
+        {"Empty.input", "\uC785\uB825\uAC12\uC774 \uBE44\uC5B4 \uC788\uC2B5\uB2C8\uB2E4."},
+        {"Not.X.509.certificate", "X.509 \uC778\uC99D\uC11C\uAC00 \uC544\uB2D9\uB2C8\uB2E4."},
+        {"alias.has.no.public.key", "{0}\uC5D0 \uACF5\uC6A9 \uD0A4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"alias.has.no.X.509.certificate", "{0}\uC5D0 X.509 \uC778\uC99D\uC11C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"New.certificate.self.signed.", "\uC0C8 \uC778\uC99D\uC11C(\uC790\uCCB4 \uC11C\uBA85):"},
+        {"Reply.has.no.certificates", "\uD68C\uC2E0\uC5D0 \uC778\uC99D\uC11C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"Certificate.not.imported.alias.alias.already.exists",
+                "\uC778\uC99D\uC11C\uAC00 \uC784\uD3EC\uD2B8\uB418\uC9C0 \uC54A\uC558\uC73C\uBA70 <{0}> \uBCC4\uCE6D\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4."},
+        {"Input.not.an.X.509.certificate", "\uC785\uB825\uC774 X.509 \uC778\uC99D\uC11C\uAC00 \uC544\uB2D9\uB2C8\uB2E4."},
+        {"Certificate.already.exists.in.keystore.under.alias.trustalias.",
+                "\uC778\uC99D\uC11C\uAC00 <{0}> \uBCC4\uCE6D \uC544\uB798\uC758 \uD0A4 \uC800\uC7A5\uC18C\uC5D0 \uC874\uC7AC\uD569\uB2C8\uB2E4."},
+        {"Do.you.still.want.to.add.it.no.",
+                "\uCD94\uAC00\uD558\uACA0\uC2B5\uB2C8\uAE4C? [\uC544\uB2C8\uC624]:  "},
+        {"Certificate.already.exists.in.system.wide.CA.keystore.under.alias.trustalias.",
+                "\uC778\uC99D\uC11C\uAC00 <{0}> \uBCC4\uCE6D \uC544\uB798\uC5D0 \uC788\uB294 \uC2DC\uC2A4\uD15C \uCC28\uC6D0\uC758 CA \uD0A4 \uC800\uC7A5\uC18C\uC5D0 \uC874\uC7AC\uD569\uB2C8\uB2E4."},
+        {"Do.you.still.want.to.add.it.to.your.own.keystore.no.",
+                "\uACE0\uC720\uD55C \uD0A4 \uC800\uC7A5\uC18C\uC5D0 \uCD94\uAC00\uD558\uACA0\uC2B5\uB2C8\uAE4C? [\uC544\uB2C8\uC624]:  "},
+        {"Trust.this.certificate.no.", "\uC774 \uC778\uC99D\uC11C\uB97C \uC2E0\uB8B0\uD569\uB2C8\uAE4C? [\uC544\uB2C8\uC624]:  "},
+        {"YES", "\uC608"},
+        {"New.prompt.", "\uC0C8 {0}: "},
+        {"Passwords.must.differ", "\uBE44\uBC00\uBC88\uD638\uB294 \uB2EC\uB77C\uC57C \uD569\uB2C8\uB2E4."},
+        {"Re.enter.new.prompt.", "\uC0C8 {0} \uB2E4\uC2DC \uC785\uB825: "},
+        {"Re.enter.new.password.", "\uC0C8 \uBE44\uBC00\uBC88\uD638 \uB2E4\uC2DC \uC785\uB825: "},
+        {"They.don.t.match.Try.again", "\uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC2ED\uC2DC\uC624."},
+        {"Enter.prompt.alias.name.", "{0} \uBCC4\uCE6D \uC774\uB984 \uC785\uB825:  "},
+        {"Enter.new.alias.name.RETURN.to.cancel.import.for.this.entry.",
+                 "\uC0C8 \uBCC4\uCE6D \uC774\uB984 \uC785\uB825\t(\uC774 \uD56D\uBAA9\uC5D0 \uB300\uD55C \uC784\uD3EC\uD2B8\uB97C \uCDE8\uC18C\uD558\uB824\uBA74 Enter \uD0A4\uB97C \uB204\uB984):  "},
+        {"Enter.alias.name.", "\uBCC4\uCE6D \uC774\uB984 \uC785\uB825:  "},
+        {".RETURN.if.same.as.for.otherAlias.",
+                "\t(<{0}>\uACFC(\uC640) \uB3D9\uC77C\uD55C \uACBD\uC6B0 Enter \uD0A4\uB97C \uB204\uB984)"},
+        {".PATTERN.printX509Cert",
+                "\uC18C\uC720\uC790: {0}\n\uBC1C\uD589\uC790: {1}\n\uC77C\uB828 \uBC88\uD638: {2}\n\uC801\uD569\uD55C \uC2DC\uC791 \uB0A0\uC9DC: {3}, \uC885\uB8CC \uB0A0\uC9DC: {4}\n\uC778\uC99D\uC11C \uC9C0\uBB38:\n\t MD5: {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t \uC11C\uBA85 \uC54C\uACE0\uB9AC\uC998 \uC774\uB984: {8}\n\t \uBC84\uC804: {9}"},
+        {"What.is.your.first.and.last.name.",
+                "\uC774\uB984\uACFC \uC131\uC744 \uC785\uB825\uD558\uC2ED\uC2DC\uC624."},
+        {"What.is.the.name.of.your.organizational.unit.",
+                "\uC870\uC9C1 \uB2E8\uC704 \uC774\uB984\uC744 \uC785\uB825\uD558\uC2ED\uC2DC\uC624."},
+        {"What.is.the.name.of.your.organization.",
+                "\uC870\uC9C1 \uC774\uB984\uC744 \uC785\uB825\uD558\uC2ED\uC2DC\uC624."},
+        {"What.is.the.name.of.your.City.or.Locality.",
+                "\uAD6C/\uAD70/\uC2DC \uC774\uB984\uC744 \uC785\uB825\uD558\uC2ED\uC2DC\uC624?"},
+        {"What.is.the.name.of.your.State.or.Province.",
+                "\uC2DC/\uB3C4 \uC774\uB984\uC744 \uC785\uB825\uD558\uC2ED\uC2DC\uC624."},
+        {"What.is.the.two.letter.country.code.for.this.unit.",
+                "\uC774 \uC870\uC9C1\uC758 \uB450 \uC790\uB9AC \uAD6D\uAC00 \uCF54\uB4DC\uB97C \uC785\uB825\uD558\uC2ED\uC2DC\uC624."},
+        {"Is.name.correct.", "{0}\uC774(\uAC00) \uB9DE\uC2B5\uB2C8\uAE4C?"},
+        {"no", "\uC544\uB2C8\uC624"},
+        {"yes", "\uC608"},
         {"y", "y"},
-        {"  [defaultValue]:  ", "  [{0}]:  "},
-        {"Alias <alias> has no key",
-                "\ubcc4\uce6d <{0}>\uc5d0 \ud0a4 \uc5c6\uc74c"},
-        {"Alias <alias> references an entry type that is not a private key entry.  The -keyclone command only supports cloning of private key entries",
-                 "\ubcc4\uce6d <{0}>\uc774(\uac00) \uac1c\uc778 \ud0a4 \ud56d\ubaa9\uc774 \uc544\ub2cc \ud56d\ubaa9 \uc720\ud615\uc744 \ucc38\uc870\ud569\ub2c8\ub2e4.  -keyclone \uba85\ub839\uc740 \uac1c\uc778 \ud0a4 \ud56d\ubaa9\uc758 \ubcf5\uc81c\ub9cc \uc9c0\uc6d0\ud569\ub2c8\ub2e4."},
+        {".defaultValue.", "  [{0}]:  "},
+        {"Alias.alias.has.no.key",
+                "<{0}> \uBCC4\uCE6D\uC5D0 \uD0A4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"Alias.alias.references.an.entry.type.that.is.not.a.private.key.entry.The.keyclone.command.only.supports.cloning.of.private.key",
+                 "<{0}> \uBCC4\uCE6D\uC740 \uC804\uC6A9 \uD0A4 \uD56D\uBAA9\uC774 \uC544\uB2CC \uD56D\uBAA9 \uC720\uD615\uC744 \uCC38\uC870\uD569\uB2C8\uB2E4. -keyclone \uBA85\uB839\uC740 \uC804\uC6A9 \uD0A4 \uD56D\uBAA9\uC758 \uBCF5\uC81C\uB9CC \uC9C0\uC6D0\uD569\uB2C8\uB2E4."},
 
-        {"*****************  WARNING WARNING WARNING  *****************",
-            "**************  \uacbd\uace0 \uacbd\uace0 \uacbd\uace0  **************"},
+        {".WARNING.WARNING.WARNING.",
+            "*****************  WARNING WARNING WARNING  *****************"},
+        {"Signer.d.", "\uC11C\uBA85\uC790 #%d:"},
+        {"Timestamp.", "\uC2DC\uAC04 \uAE30\uB85D:"},
+        {"Signature.", "\uC11C\uBA85:"},
+        {"CRLs.", "CRL:"},
+        {"Certificate.owner.", "\uC778\uC99D\uC11C \uC18C\uC720\uC790: "},
+        {"Not.a.signed.jar.file", "\uC11C\uBA85\uB41C jar \uD30C\uC77C\uC774 \uC544\uB2D9\uB2C8\uB2E4."},
+        {"No.certificate.from.the.SSL.server",
+                "SSL \uC11C\uBC84\uC5D0\uC11C \uAC00\uC838\uC628 \uC778\uC99D\uC11C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."},
 
         // Translators of the following 5 pairs, ATTENTION:
         // the next 5 string pairs are meant to be combined into 2 paragraphs,
         // 1+3+4 and 2+3+5. make sure your translation also does.
-        {"* The integrity of the information stored in your keystore  *",
-            "* keystore\uc5d0 \uc800\uc7a5\ub41c \uc815\ubcf4\uc758 \ubb34\uacb0\uc131\uc774 \ud655\uc778\ub418\uc9c0 *"},
-        {"* The integrity of the information stored in the srckeystore*",
-            "* srckeystore\uc5d0 \uc800\uc7a5\ub41c \uc815\ubcf4\uc758 \ubb34\uacb0\uc131*"},
-        {"* has NOT been verified!  In order to verify its integrity, *",
-            "* \uc54a\uc558\uc2b5\ub2c8\ub2e4! \ubb34\uacb0\uc131\uc744 \ud655\uc778\ud558\ub824\uba74 keystore   *"},
-        {"* you must provide your keystore password.                  *",
-            "* \uc554\ud638\ub97c \uc81c\uacf5\ud574\uc57c \ud569\ub2c8\ub2e4.                    *"},
-        {"* you must provide the srckeystore password.                *",
-            "* srckeystore \uc554\ud638\ub97c \uc81c\uacf5\ud574\uc57c \ud569\ub2c8\ub2e4.                *"},
+        {".The.integrity.of.the.information.stored.in.your.keystore.",
+            "* \uD0A4 \uC800\uC7A5\uC18C\uC5D0 \uC800\uC7A5\uB41C \uC815\uBCF4\uC758 \uBB34\uACB0\uC131\uC774 *"},
+        {".The.integrity.of.the.information.stored.in.the.srckeystore.",
+            "* srckeystore\uC5D0 \uC800\uC7A5\uB41C \uC815\uBCF4\uC758 \uBB34\uACB0\uC131\uC774*"},
+        {".has.NOT.been.verified.In.order.to.verify.its.integrity.",
+            "* \uD655\uC778\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4! \uBB34\uACB0\uC131\uC744 \uD655\uC778\uD558\uB824\uBA74 *"},
+        {".you.must.provide.your.keystore.password.",
+            "* \uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638\uB97C \uC81C\uACF5\uD574\uC57C \uD569\uB2C8\uB2E4.                  *"},
+        {".you.must.provide.the.srckeystore.password.",
+            "* srckeystore \uBE44\uBC00\uBC88\uD638\uB97C \uC81C\uACF5\uD574\uC57C \uD569\uB2C8\uB2E4.                *"},
 
 
-        {"Certificate reply does not contain public key for <alias>",
-                "\uc778\uc99d\uc11c \ud68c\uc2e0\uc5d0 <{0}>\uc5d0 \ub300\ud55c \uacf5\uac1c \ud0a4\uac00 \ub4e4\uc5b4\uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."},
-        {"Incomplete certificate chain in reply",
-                "\ud68c\uc2e0\uc758 \ubd88\uc644\uc804\ud55c \uc778\uc99d\uc11c \uccb4\uc778"},
-        {"Certificate chain in reply does not verify: ",
-                "\ud68c\uc2e0\uc758 \uc778\uc99d\uc11c \uccb4\uc778\uc774 \ud655\uc778\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4: "},
-        {"Top-level certificate in reply:\n",
-                "\ud68c\uc2e0\uc758 \ucd5c\uc0c1\uc704 \uc778\uc99d\uc11c:\n"},
-        {"... is not trusted. ", "... \uc778\uc99d\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. "},
-        {"Install reply anyway? [no]:  ", "\ud68c\uc2e0\uc744 \uc124\uce58\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? [\uc544\ub2c8\uc624]:  "},
-        {"NO", "\uc544\ub2c8\uc624"},
-        {"Public keys in reply and keystore don't match",
-                "\ud68c\uc2e0\uacfc keystore\uc758 \uacf5\uac1c \ud0a4\uac00 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."},
-        {"Certificate reply and certificate in keystore are identical",
-                "\ud68c\uc2e0\uc758 \uc778\uc99d\uc11c\uc640 keystore\uc758 \uc778\uc99d\uc11c\uac00 \ub3d9\uc77c\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."},
-        {"Failed to establish chain from reply",
-                "\ud68c\uc2e0\uc758 \uccb4\uc778\uc744 \uc124\uc815\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4."},
+        {"Certificate.reply.does.not.contain.public.key.for.alias.",
+                "\uC778\uC99D\uC11C \uD68C\uC2E0\uC5D0 <{0}>\uC5D0 \uB300\uD55C \uACF5\uC6A9 \uD0A4\uAC00 \uD3EC\uD568\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."},
+        {"Incomplete.certificate.chain.in.reply",
+                "\uD68C\uC2E0\uC5D0 \uBD88\uC644\uC804\uD55C \uC778\uC99D\uC11C \uCCB4\uC778\uC774 \uC788\uC2B5\uB2C8\uB2E4."},
+        {"Certificate.chain.in.reply.does.not.verify.",
+                "\uD68C\uC2E0\uC758 \uC778\uC99D\uC11C \uCCB4\uC778\uC774 \uD655\uC778\uB418\uC9C0 \uC54A\uC74C: "},
+        {"Top.level.certificate.in.reply.",
+                "\uD68C\uC2E0\uC5D0 \uCD5C\uC0C1\uC704 \uB808\uBCA8 \uC778\uC99D\uC11C\uAC00 \uC788\uC74C:\n"},
+        {".is.not.trusted.", "...\uC744(\uB97C) \uC2E0\uB8B0\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. "},
+        {"Install.reply.anyway.no.", "\uD68C\uC2E0\uC744 \uC124\uCE58\uD558\uACA0\uC2B5\uB2C8\uAE4C? [\uC544\uB2C8\uC624]:  "},
+        {"NO", "\uC544\uB2C8\uC624"},
+        {"Public.keys.in.reply.and.keystore.don.t.match",
+                "\uD68C\uC2E0\uACFC \uD0A4 \uC800\uC7A5\uC18C\uC758 \uACF5\uC6A9 \uD0A4\uAC00 \uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."},
+        {"Certificate.reply.and.certificate.in.keystore.are.identical",
+                "\uD68C\uC2E0\uACFC \uD0A4 \uC800\uC7A5\uC18C\uC758 \uC778\uC99D\uC11C\uAC00 \uB3D9\uC77C\uD569\uB2C8\uB2E4."},
+        {"Failed.to.establish.chain.from.reply",
+                "\uD68C\uC2E0\uC758 \uCCB4\uC778 \uC124\uC815\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4."},
         {"n", "n"},
-        {"Wrong answer, try again", "\uc798\ubabb\ub41c \uc751\ub2f5\uc785\ub2c8\ub2e4. \ub2e4\uc2dc \uc2dc\ub3c4\ud558\uc2ed\uc2dc\uc624."},
-        {"Secret key not generated, alias <alias> already exists",
-                "\ubcf4\uc548 \ud0a4\uac00 \uc0dd\uc131\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. \ubcc4\uce6d <{0}>\uc774(\uac00) \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4."},
-        {"Please provide -keysize for secret key generation",
-                "\ubcf4\uc548 \ud0a4 \uc0dd\uc131\uc744 \uc704\ud55c -keysize\ub97c \uc81c\uacf5\ud558\uc2ed\uc2dc\uc624."},
-        {"keytool usage:\n", "keytool \uc0ac\uc6a9\ubc95:\n"},
-
-        {"Extensions: ", "\ud655\uc7a5\uc790: "},
-
-        {"-certreq     [-v] [-protected]",
-                "-certreq     [-v] [-protected]"},
-        {"\t     [-alias <alias>] [-sigalg <sigalg>]",
-                "\t     [-alias <\ubcc4\uce6d>] [-sigalg <\uc11c\uba85 \uc54c\uace0\ub9ac\uc998>]"},
-        {"\t     [-file <csr_file>] [-keypass <keypass>]",
-                "\t     [-file <csr \ud30c\uc77c>] [-keypass <\ud0a4 \uc554\ud638>]"},
-        {"\t     [-keystore <keystore>] [-storepass <storepass>]",
-                "\t     [-keystore <\ud0a4 \uc800\uc7a5\uc18c>] [-storepass <\uc800\uc7a5\uc18c \uc554\ud638>]"},
-        {"\t     [-storetype <storetype>] [-providername <name>]",
-                "\t     [-storetype <\uc800\uc7a5\uc18c \uc720\ud615>] [-providername <\uc774\ub984>]"},
-        {"\t     [-providerclass <provider_class_name> [-providerarg <arg>]] ...",
-                "\t     [-providerclass <\uacf5\uae09\uc790 \ud074\ub798\uc2a4 \uc774\ub984> [-providerarg <\uc778\uc218>]] ..."},
-        {"\t     [-providerpath <pathlist>]",
-                "\t     [-providerpath <\uacbd\ub85c \ubaa9\ub85d>]"},
-        {"-delete      [-v] [-protected] -alias <alias>",
-                "-delete      [-v] [-protected] -alias <\ubcc4\uce6d>"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-export      [-v] [-rfc] [-protected]",
-        //       "-export      [-v] [-rfc] [-protected]"},
-        {"-exportcert  [-v] [-rfc] [-protected]",
-                "-exportcert  [-v] [-rfc] [-protected]"},
-        {"\t     [-alias <alias>] [-file <cert_file>]",
-                "\t     [-alias <\ubcc4\uce6d>] [-file <\uc778\uc99d\uc11c \ud30c\uc77c>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-genkey      [-v] [-protected]",
-        //        "-genkey      [-v] [-protected]"},
-        {"-genkeypair  [-v] [-protected]",
-                "-genkeypair  [-v] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <\ubcc4\uce6d>]"},
-        {"\t     [-keyalg <keyalg>] [-keysize <keysize>]",
-                "\t     [-keyalg <\ud0a4 \uc54c\uace0\ub9ac\uc998>] [-keysize <\ud0a4 \ud06c\uae30>]"},
-        {"\t     [-sigalg <sigalg>] [-dname <dname>]",
-                "\t     [-sigalg <\uc11c\uba85 \uc54c\uace0\ub9ac\uc998>] [-dname <\ub300\uc0c1 \uc774\ub984>]"},
-        {"\t     [-validity <valDays>] [-keypass <keypass>]",
-                "\t     [-validity <\uc720\ud6a8\uc77c>] [-keypass <\ud0a4 \uc554\ud638>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-genseckey   [-v] [-protected]",
-                "-genseckey   [-v] [-protected]"},
-        /** rest is same as -certreq starting from -keystore **/
+        {"Wrong.answer.try.again", "\uC798\uBABB\uB41C \uC751\uB2F5\uC785\uB2C8\uB2E4. \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC2ED\uC2DC\uC624."},
+        {"Secret.key.not.generated.alias.alias.already.exists",
+                "\uBCF4\uC548 \uD0A4\uAC00 \uC0DD\uC131\uB418\uC9C0 \uC54A\uC558\uC73C\uBA70 <{0}> \uBCC4\uCE6D\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4."},
+        {"Please.provide.keysize.for.secret.key.generation",
+                "\uBCF4\uC548 \uD0A4\uB97C \uC0DD\uC131\uD558\uB824\uBA74 -keysize\uB97C \uC81C\uACF5\uD558\uC2ED\uC2DC\uC624."},
 
-        {"-help", "-help"},
-        //{"-identitydb  [-v] [-protected]",
-        //      "-identitydb  [-v] [-protected]"},
-        //{"\t     [-file <idb_file>]", "\t     [-file <idb_file>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-import      [-v] [-noprompt] [-trustcacerts] [-protected]",
-        //       "-import      [-v] [-noprompt] [-trustcacerts] [-protected]"},
-        {"-importcert  [-v] [-noprompt] [-trustcacerts] [-protected]",
-                "-importcert  [-v] [-noprompt] [-trustcacerts] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <\ubcc4\uce6d>]"},
-        {"\t     [-alias <alias>] [-keypass <keypass>]",
-            "\t     [-alias <\ubcc4\uce6d>] [-keypass <\ud0a4 \uc554\ud638>]"},
-        {"\t     [-file <cert_file>] [-keypass <keypass>]",
-                "\t     [-file <\uc778\uc99d\uc11c \ud30c\uc77c>] [-keypass <\ud0a4 \uc554\ud638>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-importkeystore [-v] ",
-                "-importkeystore [-v] "},
-        {"\t     [-srckeystore <srckeystore>] [-destkeystore <deststoretype>]",
-                "\t     [-srckeystore <\uc18c\uc2a4 \ud0a4 \uc800\uc7a5\uc18c>] [-destkeystore <\ub300\uc0c1 \ud0a4 \uc800\uc7a5\uc18c>]"},
-        {"\t     [-srcstoretype <srcstoretype>] [-deststoretype <deststoretype>]",
-                "\t     [-srcstoretype <\uc18c\uc2a4 \uc800\uc7a5\uc18c \uc720\ud615>] [-deststoretype <\ub300\uc0c1 \uc800\uc7a5\uc18c \uc720\ud615>]"},
-        {"\t     [-srcprotected] [-destprotected]",
-                "\t     [-srcprotected] [-destprotected]"},
-        {"\t     [-srcstorepass <srcstorepass>] [-deststorepass <deststorepass>]",
-                "\t     [-srcstorepass <\uc18c\uc2a4 \uc800\uc7a5\uc18c \uc554\ud638>] [-deststorepass <\ub300\uc0c1 \uc800\uc7a5\uc18c \uc554\ud638>]"},
-        {"\t     [-srcprovidername <\uc18c\uc2a4 \uacf5\uae09\uc790 \uc774\ub984>]\n\t     [-destprovidername <\ub300\uc0c1 \uacf5\uae09\uc790 \uc774\ub984>]",  // \ud589\uc774 \ub108\ubb34 \uae41\ub2c8\ub2e4. 2\ud589\uc73c\ub85c \ubd84\ud560\ud558\uc2ed\uc2dc\uc624.
-                 "\t     [-srcprovidername <\uc18c\uc2a4 \uacf5\uae09\uc790 \uc774\ub984>]\n\t     [-destprovidername <\ub300\uc0c1 \uacf5\uae09\uc790 \uc774\ub984>]"},
-        {"\t     [-srcalias <srcalias> [-destalias <destalias>]",
-                "\t     [-srcalias <\uc18c\uc2a4 \ubcc4\uce6d> [-destalias <\ub300\uc0c1 \ubcc4\uce6d>]"},
-        {"\t       [-srckeypass <srckeypass>] [-destkeypass <destkeypass>]]",
-                "\t       [-srckeypass <\uc18c\uc2a4 \ud0a4 \uc554\ud638>] [-destkeypass <\ub300\uc0c1 \ud0a4 \uc554\ud638>]]"},
-        {"\t     [-noprompt]", "\t     [-noprompt]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-changealias [-v] [-protected] -alias <alias> -destalias <destalias>",
-                "-changealias [-v] [-protected] -alias <\ubcc4\uce6d> -destalias <\ub300\uc0c1 \ubcc4\uce6d>"},
-        {"\t     [-keypass <keypass>]", "\t     [-keypass <\ud0a4 \uc554\ud638>]"},
-
-        //{"-keyclone    [-v] [-protected]",
-        //      "-keyclone    [-v] [-protected]"},
-        //{"\t     [-alias <alias>] -dest <destalias>",
-        //      "\t     [-alias <\ubcc4\uce6d>] -dest <\ub300\uc0c1 \ubcc4\uce6d>"},
-        //{"\t     [-keypass <keypass>] [-new <new_keypass>]",
-        //      "\t     [-keypass <\ud0a4 \uc554\ud638>] [-new <\uc0c8 \ud0a4 \uc554\ud638>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-keypasswd   [-v] [-alias <alias>]",
-                "-keypasswd   [-v] [-alias <\ubcc4\uce6d>]"},
-        {"\t     [-keypass <old_keypass>] [-new <new_keypass>]",
-                "\t     [-keypass <\uae30\uc874 \ud0a4 \uc554\ud638>] [-new <\uc0c8 \ud0a4 \uc554\ud638>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-list        [-v | -rfc] [-protected]",
-                "-list        [-v | -rfc] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <\ubcc4\uce6d>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-printcert   [-v] [-file <cert_file>]",
-                "-printcert   [-v] [-file <\uc778\uc99d\uc11c \ud30c\uc77c>]"},
-
-        //{"-selfcert    [-v] [-protected]",
-        //      "-selfcert    [-v] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <\ubcc4\uce6d>]"},
-        //{"\t     [-dname <dname>] [-validity <valDays>]",
-        //      "\t     [-dname <\ub300\uc0c1 \uc774\ub984>] [-validity <\uc720\ud6a8\uc77c>]"},
-        //{"\t     [-keypass <keypass>] [-sigalg <sigalg>]",
-        //      "\t     [-keypass <\ud0a4 \uc554\ud638>] [-sigalg <\uc11c\uba85 \uc54c\uace0\ub9ac\uc998>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-storepasswd [-v] [-new <new_storepass>]",
-                "-storepasswd [-v] [-new <\uc0c8 \uc800\uc7a5\uc18c \uc554\ud638>]"},
-        /** rest is same as -certreq starting from -keystore **/
+        {"Extensions.", "\uD655\uC7A5: "},
+        {".Empty.value.", "(\uBE44\uC5B4 \uC788\uB294 \uAC12)"},
+        {"Extension.Request.", "\uD655\uC7A5 \uC694\uCCAD:"},
+        {"PKCS.10.Certificate.Request.Version.1.0.Subject.s.Public.Key.s.format.s.key.",
+                "PKCS #10 \uC778\uC99D\uC11C \uC694\uCCAD(1.0 \uBC84\uC804)\n\uC81C\uBAA9: %s\n\uACF5\uC6A9 \uD0A4: %s \uD615\uC2DD %s \uD0A4\n"},
+        {"Unknown.keyUsage.type.", "\uC54C \uC218 \uC5C6\uB294 keyUsage \uC720\uD615: "},
+        {"Unknown.extendedkeyUsage.type.", "\uC54C \uC218 \uC5C6\uB294 extendedkeyUsage \uC720\uD615: "},
+        {"Unknown.AccessDescription.type.", "\uC54C \uC218 \uC5C6\uB294 AccessDescription \uC720\uD615: "},
+        {"Unrecognized.GeneralName.type.", "\uC54C \uC218 \uC5C6\uB294 GeneralName \uC720\uD615: "},
+        {"This.extension.cannot.be.marked.as.critical.",
+                 "\uC774 \uD655\uC7A5\uC740 \uC911\uC694\uD55C \uAC83\uC73C\uB85C \uD45C\uC2DC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. "},
+        {"Odd.number.of.hex.digits.found.", "\uD640\uC218 \uAC1C\uC758 16\uC9C4\uC218\uAC00 \uBC1C\uACAC\uB428: "},
+        {"Unknown.extension.type.", "\uC54C \uC218 \uC5C6\uB294 \uD655\uC7A5 \uC720\uD615: "},
+        {"command.{0}.is.ambiguous.", "{0} \uBA85\uB839\uC774 \uBAA8\uD638\uD568:"},
 
         // policytool
-        {"Warning: A public key for alias 'signers[i]' does not exist.  Make sure a KeyStore is properly configured.",
-                "\uacbd\uace0:\t \ubcc4\uce6d {0}\uc5d0 \ub300\ud55c \uacf5\uac1c \ud0a4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.  \ud0a4 \uc800\uc7a5\uc18c\uac00 \uc81c\ub300\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\ub294\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624."},
-        {"Warning: Class not found: class", "\uacbd\uace0: \ud074\ub798\uc2a4\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc74c: {0}"},
-        {"Warning: Invalid argument(s) for constructor: {0}",
-                "\uacbd\uace0:\t \uc798\ubabb\ub41c \uad6c\uc131\uc790 \uc778\uc218: {0}"},
-        {"Illegal Principal Type: type", "\uc798\ubabb\ub41c \uae30\ubcf8 \uc720\ud615: {0}"},
-        {"Illegal option: option", "\uc798\ubabb\ub41c \uc635\uc158: {0}"},
-        {"Usage: policytool [options]", "\uc0ac\uc6a9\ubc95: policytool [\uc635\uc158]"},
-        {"  [-file <file>]    policy file location",
-                "  [-file <\ud30c\uc77c>]    \uc815\ucc45 \ud30c\uc77c \uc704\uce58"},
-        {"New", "\uc0c8\ub85c \ub9cc\ub4e4\uae30"},
-        {"Open", "\uc5f4\uae30"},
-        {"Save", "\uc800\uc7a5"},
-        {"Save As", "\ub2e4\ub978 \uc774\ub984\uc73c\ub85c \uc800\uc7a5"},
-        {"View Warning Log", "\uacbd\uace0 \ub85c\uadf8 \ubcf4\uae30"},
-        {"Exit", "\uc885\ub8cc"},
-        {"Add Policy Entry", "\uc815\ucc45 \ud56d\ubaa9 \ucd94\uac00"},
-        {"Edit Policy Entry", "\uc815\ucc45 \ud56d\ubaa9 \ud3b8\uc9d1"},
-        {"Remove Policy Entry", "\uc815\ucc45 \ud56d\ubaa9 \uc81c\uac70"},
-        {"Edit", "\ud3b8\uc9d1"},
-        {"Retain", "\uc720\uc9c0"},
+        {"Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured.",
+                "\uACBD\uACE0: {0} \uBCC4\uCE6D\uC5D0 \uB300\uD55C \uACF5\uC6A9 \uD0A4\uAC00 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uD0A4 \uC800\uC7A5\uC18C\uAC00 \uC81C\uB300\uB85C \uAD6C\uC131\uB418\uC5B4 \uC788\uB294\uC9C0 \uD655\uC778\uD558\uC2ED\uC2DC\uC624."},
+        {"Warning.Class.not.found.class", "\uACBD\uACE0: \uD074\uB798\uC2A4\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC74C: {0}"},
+        {"Warning.Invalid.argument.s.for.constructor.arg",
+                "\uACBD\uACE0: \uC0DD\uC131\uC790\uC5D0 \uB300\uD574 \uBD80\uC801\uD569\uD55C \uC778\uC218: {0}"},
+        {"Illegal.Principal.Type.type", "\uC798\uBABB\uB41C \uC8FC\uCCB4 \uC720\uD615: {0}"},
+        {"Illegal.option.option", "\uC798\uBABB\uB41C \uC635\uC158: {0}"},
+        {"Usage.policytool.options.", "\uC0AC\uC6A9\uBC95: policytool [options]"},
+        {".file.file.policy.file.location",
+                "  [-file <file>]    \uC815\uCC45 \uD30C\uC77C \uC704\uCE58"},
+        {"New", "\uC0C8\uB85C \uB9CC\uB4E4\uAE30"},
+        {"Open", "\uC5F4\uAE30"},
+        {"Save", "\uC800\uC7A5"},
+        {"Save.As", "\uB2E4\uB978 \uC774\uB984\uC73C\uB85C \uC800\uC7A5"},
+        {"View.Warning.Log", "\uACBD\uACE0 \uB85C\uADF8 \uBCF4\uAE30"},
+        {"Exit", "\uC885\uB8CC"},
+        {"Add.Policy.Entry", "\uC815\uCC45 \uD56D\uBAA9 \uCD94\uAC00"},
+        {"Edit.Policy.Entry", "\uC815\uCC45 \uD56D\uBAA9 \uD3B8\uC9D1"},
+        {"Remove.Policy.Entry", "\uC815\uCC45 \uD56D\uBAA9 \uC81C\uAC70"},
+        {"Edit", "\uD3B8\uC9D1"},
+        {"Retain", "\uC720\uC9C0"},
 
-        {"Warning: File name may include escaped backslash characters. " +
-                        "It is not necessary to escape backslash characters " +
-                        "(the tool escapes characters as necessary when writing " +
-                        "the policy contents to the persistent store).\n\n" +
-                        "Click on Retain to retain the entered name, or click on " +
-                        "Edit to edit the name.",
-            "Warning: File name may include escaped backslash characters. " +
-                        "It is not necessary to escape backslash characters " +
-                        "(the tool escapes characters as necessary when writing " +
-                        "the policy contents to the persistent store).\n\n" +
-                        "Click on Retain to retain the entered name, or click on " +
-                        "Edit to edit the name."},
+        {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
+            "\uACBD\uACE0: \uD30C\uC77C \uC774\uB984\uC5D0 \uC774\uC2A4\uCF00\uC774\uD504\uB41C \uBC31\uC2AC\uB798\uC2DC \uBB38\uC790\uAC00 \uD3EC\uD568\uB418\uC5C8\uC744 \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uBC31\uC2AC\uB798\uC2DC \uBB38\uC790\uB294 \uC774\uC2A4\uCF00\uC774\uD504\uD560 \uD544\uC694\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. \uC601\uAD6C \uC800\uC7A5\uC18C\uC5D0 \uC815\uCC45 \uCF58\uD150\uCE20\uB97C \uC4F8 \uB54C \uD544\uC694\uC5D0 \uB530\uB77C \uC790\uB3D9\uC73C\uB85C \uBB38\uC790\uAC00 \uC774\uC2A4\uCF00\uC774\uD504\uB429\uB2C8\uB2E4.\n\n\uC785\uB825\uB41C \uC774\uB984\uC744 \uADF8\uB300\uB85C \uC720\uC9C0\uD558\uB824\uBA74 [\uC720\uC9C0]\uB97C \uB204\uB974\uACE0, \uC774\uB984\uC744 \uD3B8\uC9D1\uD558\uB824\uBA74 [\uD3B8\uC9D1]\uC744 \uB204\uB974\uC2ED\uC2DC\uC624."},
 
-        {"Add Public Key Alias", "\uacf5\uac1c \ud0a4 \ubcc4\uce6d \ucd94\uac00"},
-        {"Remove Public Key Alias", "\uacf5\uac1c \ud0a4 \ubcc4\uce6d \uc81c\uac70"},
-        {"File", "\ud30c\uc77c"},
-        {"KeyStore", "\ud0a4 \uc800\uc7a5\uc18c"},
-        {"Policy File:", "\uc815\ucc45 \ud30c\uc77c:"},
-        {"Could not open policy file: policyFile: e.toString()",
-                "\uc815\ucc45 \ud30c\uc77c\uc744 \uc5f4\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. {0}: {1}"},
-        {"Policy Tool", "\uc815\ucc45 \ub3c4\uad6c"},
-        {"Errors have occurred while opening the policy configuration.  View the Warning Log for more information.",
-                "\uc815\ucc45 \uad6c\uc131\uc744 \uc5ec\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \uacbd\uace0 \ub85c\uadf8\ub97c \ubcf4\uc2ed\uc2dc\uc624."},
-        {"Error", "\uc624\ub958"},
-        {"OK", "\ud655\uc778"},
-        {"Status", "\uc0c1\ud0dc"},
-        {"Warning", "\uacbd\uace0"},
-        {"Permission:                                                       ",
-                "\uc0ac\uc6a9 \uad8c\ud55c:                                                       "},
-        {"Principal Type:", "Principal \uc720\ud615:"},
-        {"Principal Name:", "Principal \uc774\ub984:"},
-        {"Target Name:                                                    ",
-                "\ub300\uc0c1 \uc774\ub984:                                                    "},
-        {"Actions:                                                             ",
-                "\uc791\uc5c5:                                                             "},
-        {"OK to overwrite existing file filename?",
-                "\uae30\uc874 \ud30c\uc77c {0}\uc744(\ub97c) \uacb9\uccd0\uc4f0\uc2dc\uaca0\uc2b5\ub2c8\uae4c?"},
-        {"Cancel", "\ucde8\uc18c"},
-        {"CodeBase:", "CodeBase:"},
-        {"SignedBy:", "SignedBy:"},
-        {"Add Principal", "Principal \ucd94\uac00"},
-        {"Edit Principal", "Principal \ud3b8\uc9d1"},
-        {"Remove Principal", "Principal \uc81c\uac70"},
-        {"Principals:", "Principals:"},
-        {"  Add Permission", "  \uc0ac\uc6a9 \uad8c\ud55c \ucd94\uac00"},
-        {"  Edit Permission", "  \uc0ac\uc6a9 \uad8c\ud55c \ud3b8\uc9d1"},
-        {"Remove Permission", "\uc0ac\uc6a9 \uad8c\ud55c \uc81c\uac70"},
-        {"Done", "\uc644\ub8cc"},
-        {"KeyStore URL:", "\ud0a4 \uc800\uc7a5\uc18c URL:"},
-        {"KeyStore Type:", "\ud0a4 \uc800\uc7a5\uc18c \uc720\ud615:"},
-        {"KeyStore Provider:", "\ud0a4 \uc800\uc7a5\uc18c \uacf5\uae09\uc790:"},
-        {"KeyStore Password URL:", "\ud0a4 \uc800\uc7a5\uc18c \ube44\ubc00\ubc88\ud638 URL:"},
-        {"Principals", "Principals"},
-        {"  Edit Principal:", "  Principal \ud3b8\uc9d1:"},
-        {"  Add New Principal:", "  \uc0c8 Principal \ucd94\uac00:"},
-        {"Permissions", "\uc0ac\uc6a9 \uad8c\ud55c"},
-        {"  Edit Permission:", "  \uc0ac\uc6a9 \uad8c\ud55c \ud3b8\uc9d1:"},
-        {"  Add New Permission:", "  \uc0c8 \uc0ac\uc6a9 \uad8c\ud55c \ucd94\uac00:"},
-        {"Signed By:", "\uc11c\uba85\uc790:"},
-        {"Cannot Specify Principal with a Wildcard Class without a Wildcard Name",
-            "\uc640\uc77c\ub4dc\uce74\ub4dc \uc774\ub984 \uc5c6\uc774 \uc640\uc77c\ub4dc\uce74\ub4dc \ud074\ub798\uc2a4\ub97c \uac00\uc9c4 Principal\uc744 \uc9c0\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
-        {"Cannot Specify Principal without a Name",
-            "\uc774\ub984 \uc5c6\uc774 Principal\uc744 \uc9c0\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
-        {"Permission and Target Name must have a value",
-                "\uc0ac\uc6a9 \uad8c\ud55c\uacfc \ub300\uc0c1 \uc774\ub984\uc740 \uac12\uc744 \uac00\uc838\uc57c \ud569\ub2c8\ub2e4."},
-        {"Remove this Policy Entry?", "\uc774 \uc815\ucc45 \ud56d\ubaa9\uc744 \uc81c\uac70\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?"},
-        {"Overwrite File", "\ud30c\uc77c \uacb9\uccd0\uc4f0\uae30"},
-        {"Policy successfully written to filename",
-                "\uc815\ucc45\uc744 \ud30c\uc77c \uc774\ub984\uc5d0 \uc131\uacf5\uc801\uc73c\ub85c \uae30\ub85d\ud588\uc2b5\ub2c8\ub2e4."},
-        {"null filename", "\ud30c\uc77c \uc774\ub984\uc774 \uc5c6\uc74c"},
-        {"Save changes?", "\ubcc0\uacbd \uc0ac\ud56d\uc744 \uc800\uc7a5\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?"},
-        {"Yes", "\uc608"},
-        {"No", "\uc544\ub2c8\uc624"},
-        {"Policy Entry", "\uc815\ucc45 \ud56d\ubaa9"},
-        {"Save Changes", "\ubcc0\uacbd \uc0ac\ud56d \uc800\uc7a5"},
-        {"No Policy Entry selected", "\uc815\ucc45 \ud56d\ubaa9\uc774 \uc120\ud0dd\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."},
-        {"Unable to open KeyStore: ex.toString()",
-                "\ud0a4 \uc800\uc7a5\uc18c\ub97c \uc5f4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. {0}"},
-        {"No principal selected", "Principal\uc744 \uc120\ud0dd\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."},
-        {"No permission selected", "\uc0ac\uc6a9 \uad8c\ud55c\uc744 \uc120\ud0dd\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."},
-        {"name", "\uc774\ub984"},
-        {"configuration type", "\uad6c\uc131 \uc720\ud615"},
-        {"environment variable name", "\ud658\uacbd \ubcc0\uc218 \uc774\ub984"},
-        {"library name", "\ub77c\uc774\ube0c\ub7ec\ub9ac \uc774\ub984"},
-        {"package name", "\ud328\ud0a4\uc9c0 \uc774\ub984"},
-        {"policy type", "\uc815\ucc45 \uc720\ud615"},
-        {"property name", "\ud2b9\uc131 \uc774\ub984"},
-        {"provider name", "\uacf5\uae09\uc790 \uc774\ub984"},
-        {"Principal List", "\uae30\ubcf8 \ubaa9\ub85d"},
-        {"Permission List", "\uad8c\ud55c \ubaa9\ub85d"},
-        {"Code Base", "\ucf54\ub4dc \ubca0\uc774\uc2a4"},
-        {"KeyStore U R L:", "\ud0a4 \uc800\uc7a5\uc18c U R L:"},
-        {"KeyStore Password U R L:", "\ud0a4 \uc800\uc7a5\uc18c \ube44\ubc00\ubc88\ud638 U R L:"},
+        {"Add.Public.Key.Alias", "\uACF5\uC6A9 \uD0A4 \uBCC4\uCE6D \uCD94\uAC00"},
+        {"Remove.Public.Key.Alias", "\uACF5\uC6A9 \uD0A4 \uBCC4\uCE6D \uC81C\uAC70"},
+        {"File", "\uD30C\uC77C"},
+        {"KeyStore", "\uD0A4 \uC800\uC7A5\uC18C"},
+        {"Policy.File.", "\uC815\uCC45 \uD30C\uC77C:"},
+        {"Could.not.open.policy.file.policyFile.e.toString.",
+                "\uC815\uCC45 \uD30C\uC77C\uC744 \uC5F4 \uC218 \uC5C6\uC74C: {0}: {1}"},
+        {"Policy.Tool", "\uC815\uCC45 \uD234"},
+        {"Errors.have.occurred.while.opening.the.policy.configuration.View.the.Warning.Log.for.more.information.",
+                "\uC815\uCC45 \uAD6C\uC131\uC744 \uC5EC\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. \uC790\uC138\uD55C \uB0B4\uC6A9\uC740 \uACBD\uACE0 \uB85C\uADF8\uB97C \uD655\uC778\uD558\uC2ED\uC2DC\uC624."},
+        {"Error", "\uC624\uB958"},
+        {"OK", "\uD655\uC778"},
+        {"Status", "\uC0C1\uD0DC"},
+        {"Warning", "\uACBD\uACE0"},
+        {"Permission.",
+                "\uAD8C\uD55C:                                                       "},
+        {"Principal.Type.", "\uC8FC\uCCB4 \uC720\uD615:"},
+        {"Principal.Name.", "\uC8FC\uCCB4 \uC774\uB984:"},
+        {"Target.Name.",
+                "\uB300\uC0C1 \uC774\uB984:                                                    "},
+        {"Actions.",
+                "\uC791\uC5C5:                                                             "},
+        {"OK.to.overwrite.existing.file.filename.",
+                "\uAE30\uC874 \uD30C\uC77C {0}\uC744(\uB97C) \uACB9\uCCD0 \uC4F0\uACA0\uC2B5\uB2C8\uAE4C?"},
+        {"Cancel", "\uCDE8\uC18C"},
+        {"CodeBase.", "CodeBase:"},
+        {"SignedBy.", "SignedBy:"},
+        {"Add.Principal", "\uC8FC\uCCB4 \uCD94\uAC00"},
+        {"Edit.Principal", "\uC8FC\uCCB4 \uD3B8\uC9D1"},
+        {"Remove.Principal", "\uC8FC\uCCB4 \uC81C\uAC70"},
+        {"Principals.", "\uC8FC\uCCB4:"},
+        {".Add.Permission", "  \uAD8C\uD55C \uCD94\uAC00"},
+        {".Edit.Permission", "  \uAD8C\uD55C \uD3B8\uC9D1"},
+        {"Remove.Permission", "\uAD8C\uD55C \uC81C\uAC70"},
+        {"Done", "\uC644\uB8CC"},
+        {"KeyStore.URL.", "\uD0A4 \uC800\uC7A5\uC18C URL:"},
+        {"KeyStore.Type.", "\uD0A4 \uC800\uC7A5\uC18C \uC720\uD615:"},
+        {"KeyStore.Provider.", "\uD0A4 \uC800\uC7A5\uC18C \uC81C\uACF5\uC790:"},
+        {"KeyStore.Password.URL.", "\uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638 URL:"},
+        {"Principals", "\uC8FC\uCCB4"},
+        {".Edit.Principal.", "  \uC8FC\uCCB4 \uD3B8\uC9D1:"},
+        {".Add.New.Principal.", "  \uC0C8 \uC8FC\uCCB4 \uCD94\uAC00:"},
+        {"Permissions", "\uAD8C\uD55C"},
+        {".Edit.Permission.", "  \uAD8C\uD55C \uD3B8\uC9D1:"},
+        {".Add.New.Permission.", "  \uC0C8 \uAD8C\uD55C \uCD94\uAC00:"},
+        {"Signed.By.", "\uC11C\uBA85\uC790:"},
+        {"Cannot.Specify.Principal.with.a.Wildcard.Class.without.a.Wildcard.Name",
+            "\uC640\uC77C\uB4DC \uCE74\uB4DC \uBB38\uC790 \uC774\uB984 \uC5C6\uC774 \uC640\uC77C\uB4DC \uCE74\uB4DC \uBB38\uC790 \uD074\uB798\uC2A4\uB97C \uC0AC\uC6A9\uD558\uB294 \uC8FC\uCCB4\uB97C \uC9C0\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"Cannot.Specify.Principal.without.a.Name",
+            "\uC774\uB984 \uC5C6\uC774 \uC8FC\uCCB4\uB97C \uC9C0\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"Permission.and.Target.Name.must.have.a.value",
+                "\uAD8C\uD55C\uACFC \uB300\uC0C1 \uC774\uB984\uC758 \uAC12\uC774 \uC788\uC5B4\uC57C \uD569\uB2C8\uB2E4."},
+        {"Remove.this.Policy.Entry.", "\uC774 \uC815\uCC45 \uD56D\uBAA9\uC744 \uC81C\uAC70\uD558\uACA0\uC2B5\uB2C8\uAE4C?"},
+        {"Overwrite.File", "\uD30C\uC77C \uACB9\uCCD0\uC4F0\uAE30"},
+        {"Policy.successfully.written.to.filename",
+                "{0}\uC5D0 \uC131\uACF5\uC801\uC73C\uB85C \uC815\uCC45\uC744 \uC37C\uC2B5\uB2C8\uB2E4."},
+        {"null.filename", "\uB110 \uD30C\uC77C \uC774\uB984"},
+        {"Save.changes.", "\uBCC0\uACBD \uC0AC\uD56D\uC744 \uC800\uC7A5\uD558\uACA0\uC2B5\uB2C8\uAE4C?"},
+        {"Yes", "\uC608"},
+        {"No", "\uC544\uB2C8\uC624"},
+        {"Policy.Entry", "\uC815\uCC45 \uD56D\uBAA9"},
+        {"Save.Changes", "\uBCC0\uACBD \uC0AC\uD56D \uC800\uC7A5"},
+        {"No.Policy.Entry.selected", "\uC120\uD0DD\uB41C \uC815\uCC45 \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"Unable.to.open.KeyStore.ex.toString.",
+                "\uD0A4 \uC800\uC7A5\uC18C\uB97C \uC5F4 \uC218 \uC5C6\uC74C: {0}"},
+        {"No.principal.selected", "\uC120\uD0DD\uB41C \uC8FC\uCCB4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"No.permission.selected", "\uC120\uD0DD\uB41C \uAD8C\uD55C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"name", "\uC774\uB984"},
+        {"configuration.type", "\uAD6C\uC131 \uC720\uD615"},
+        {"environment.variable.name", "\uD658\uACBD \uBCC0\uC218 \uC774\uB984"},
+        {"library.name", "\uB77C\uC774\uBE0C\uB7EC\uB9AC \uC774\uB984"},
+        {"package.name", "\uD328\uD0A4\uC9C0 \uC774\uB984"},
+        {"policy.type", "\uC815\uCC45 \uC720\uD615"},
+        {"property.name", "\uC18D\uC131 \uC774\uB984"},
+        {"Principal.List", "\uC8FC\uCCB4 \uBAA9\uB85D"},
+        {"Permission.List", "\uAD8C\uD55C \uBAA9\uB85D"},
+        {"Code.Base", "\uCF54\uB4DC \uBCA0\uC774\uC2A4"},
+        {"KeyStore.U.R.L.", "\uD0A4 \uC800\uC7A5\uC18C URL:"},
+        {"KeyStore.Password.U.R.L.", "\uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638 URL:"},
 
 
         // javax.security.auth.PrivateCredentialPermission
-        {"invalid null input(s)", "\uc798\ubabb\ub41c null \uc785\ub825"},
-        {"actions can only be 'read'", "\uc791\uc5c5\uc740 '\uc77d\uae30' \uc804\uc6a9\uc785\ub2c8\ub2e4."},
-        {"permission name [name] syntax invalid: ",
-                "\uc0ac\uc6a9 \uad8c\ud55c \uc774\ub984 [{0}] \uad6c\ubb38\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4: "},
-        {"Credential Class not followed by a Principal Class and Name",
-                "Principal \ud074\ub798\uc2a4 \ubc0f \uc774\ub984 \ub2e4\uc74c\uc5d0 \uc778\uc99d\uc11c \ud074\ub798\uc2a4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4."},
-        {"Principal Class not followed by a Principal Name",
-                "Principal \uc774\ub984 \ub2e4\uc74c\uc5d0 Principal \ud074\ub798\uc2a4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4."},
-        {"Principal Name must be surrounded by quotes",
-                "Principal \uc774\ub984\uc740 \uc778\uc6a9 \ubd80\ud638\ub85c \ubb36\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
-        {"Principal Name missing end quote",
-                "Principal \uc774\ub984\uc5d0 \ub2eb\ub294 \uc778\uc6a9 \ubd80\ud638\uac00 \uc5c6\uc2b5\ub2c8\ub2e4."},
-        {"PrivateCredentialPermission Principal Class can not be a wildcard (*) value if Principal Name is not a wildcard (*) value",
-                "PrivateCredentialPermission Principal \ud074\ub798\uc2a4\ub294 Principal \uc774\ub984\uc774 \uc640\uc77c\ub4dc\uce74\ub4dc(*) \uac12\uc774 \uc544\ub2cc \uacbd\uc6b0 \uc640\uc77c\ub4dc\uce74\ub4dc(*) \uac12\uc774 \ub420 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
-        {"CredOwner:\n\tPrincipal Class = class\n\tPrincipal Name = name",
-                "CredOwner:\n\tPrincipal \ud074\ub798\uc2a4 = \ud074\ub798\uc2a4\n\tPrincipal \uc774\ub984 = \uc774\ub984"},
+        {"invalid.null.input.s.", "\uB110 \uC785\uB825\uAC12\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4."},
+        {"actions.can.only.be.read.", "\uC791\uC5C5\uC740 '\uC77D\uAE30' \uC804\uC6A9\uC785\uB2C8\uB2E4."},
+        {"permission.name.name.syntax.invalid.",
+                "\uAD8C\uD55C \uC774\uB984 [{0}] \uAD6C\uBB38\uC774 \uBD80\uC801\uD569\uD568: "},
+        {"Credential.Class.not.followed.by.a.Principal.Class.and.Name",
+                "\uC778\uC99D\uC11C \uD074\uB798\uC2A4 \uB2E4\uC74C\uC5D0 \uC8FC\uCCB4 \uD074\uB798\uC2A4\uC640 \uC774\uB984\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"Principal.Class.not.followed.by.a.Principal.Name",
+                "\uC8FC\uCCB4 \uD074\uB798\uC2A4 \uB2E4\uC74C\uC5D0 \uC8FC\uCCB4 \uC774\uB984\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"Principal.Name.must.be.surrounded.by.quotes",
+                "\uC8FC\uCCB4 \uC774\uB984\uC740 \uB530\uC634\uD45C\uB85C \uBB36\uC5B4\uC57C \uD569\uB2C8\uB2E4."},
+        {"Principal.Name.missing.end.quote",
+                "\uC8FC\uCCB4 \uC774\uB984\uC5D0 \uB2EB\uB294 \uB530\uC634\uD45C\uAC00 \uB204\uB77D\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+        {"PrivateCredentialPermission.Principal.Class.can.not.be.a.wildcard.value.if.Principal.Name.is.not.a.wildcard.value",
+                "\uC8FC\uCCB4 \uC774\uB984\uC774 \uC640\uC77C\uB4DC \uCE74\uB4DC \uBB38\uC790(*) \uAC12\uC774 \uC544\uB2CC \uACBD\uC6B0 PrivateCredentialPermission \uC8FC\uCCB4 \uD074\uB798\uC2A4\uB294 \uC640\uC77C\uB4DC \uCE74\uB4DC \uBB38\uC790(*) \uAC12\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"CredOwner.Principal.Class.class.Principal.Name.name",
+                "CredOwner:\n\t\uC8FC\uCCB4 \uD074\uB798\uC2A4 = {0}\n\t\uC8FC\uCCB4 \uC774\uB984 = {1}"},
 
         // javax.security.auth.x500
-        {"provided null name", "null \uc774\ub984\uc744 \uc81c\uacf5\ud588\uc2b5\ub2c8\ub2e4."},
-        {"provided null keyword map", "null \ud0a4\uc6cc\ub4dc \ub9f5\uc744 \uc81c\uacf5\ud588\uc2b5\ub2c8\ub2e4."},
-        {"provided null OID map", "null OID \ub9f5\uc744 \uc81c\uacf5\ud588\uc2b5\ub2c8\ub2e4."},
+        {"provided.null.name", "\uB110 \uC774\uB984\uC744 \uC81C\uACF5\uD588\uC2B5\uB2C8\uB2E4."},
+        {"provided.null.keyword.map", "\uB110 \uD0A4\uC6CC\uB4DC \uB9F5\uC744 \uC81C\uACF5\uD588\uC2B5\uB2C8\uB2E4."},
+        {"provided.null.OID.map", "\uB110 OID \uB9F5\uC744 \uC81C\uACF5\uD588\uC2B5\uB2C8\uB2E4."},
 
         // javax.security.auth.Subject
-        {"invalid null AccessControlContext provided",
-                "\uc798\ubabb\ub41c null AccessControlContext\ub97c \uc81c\uacf5\ud588\uc2b5\ub2c8\ub2e4."},
-        {"invalid null action provided", "\uc798\ubabb\ub41c null \uc791\uc5c5\uc744 \uc81c\uacf5\ud588\uc2b5\ub2c8\ub2e4."},
-        {"invalid null Class provided", "\uc798\ubabb\ub41c null \ud074\ub798\uc2a4\ub97c \uc81c\uacf5\ud588\uc2b5\ub2c8\ub2e4."},
-        {"Subject:\n", "\uc81c\ubaa9:\n"},
-        {"\tPrincipal: ", "\tPrincipal: "},
-        {"\tPublic Credential: ", "\t\uacf5\uac1c \uc778\uc99d\uc11c: "},
-        {"\tPrivate Credentials inaccessible\n",
-                "\t\uac1c\uc778 \uc778\uc99d\uc11c\uc5d0 \uc561\uc138\uc2a4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.\n"},
-        {"\tPrivate Credential: ", "\t\uac1c\uc778 \uc778\uc99d\uc11c: "},
-        {"\tPrivate Credential inaccessible\n",
-                "\t\uac1c\uc778 \uc778\uc99d\uc11c\uc5d0 \uc561\uc138\uc2a4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.\n"},
-        {"Subject is read-only", "\uc81c\ubaa9\uc774 \uc77d\uae30 \uc804\uc6a9\uc785\ub2c8\ub2e4."},
-        {"attempting to add an object which is not an instance of java.security.Principal to a Subject's Principal Set",
-                "java.security.Principal\uc758 \uc778\uc2a4\ud134\uc2a4\uac00 \uc544\ub2cc \uac1d\uccb4\ub97c \uc81c\ubaa9\uc758 Principal \uc138\ud2b8\uc5d0 \ucd94\uac00\ud558\ub824\uace0 \uc2dc\ub3c4\ud558\ub294 \uc911"},
-        {"attempting to add an object which is not an instance of class",
-                "\ud074\ub798\uc2a4\uc758 \uc778\uc2a4\ud134\uc2a4\uac00 \uc544\ub2cc \uac1d\uccb4\ub97c \ucd94\uac00\ud558\ub824\uace0 \uc2dc\ub3c4\ud558\ub294 \uc911"},
+        {"invalid.null.AccessControlContext.provided",
+                "\uBD80\uC801\uD569\uD55C \uB110 AccessControlContext\uAC00 \uC81C\uACF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+        {"invalid.null.action.provided", "\uBD80\uC801\uD569\uD55C \uB110 \uC791\uC5C5\uC774 \uC81C\uACF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+        {"invalid.null.Class.provided", "\uBD80\uC801\uD569\uD55C \uB110 \uD074\uB798\uC2A4\uAC00 \uC81C\uACF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+        {"Subject.", "\uC81C\uBAA9:\n"},
+        {".Principal.", "\\\uC8FC\uCCB4: "},
+        {".Public.Credential.", "\t\uACF5\uC6A9 \uC778\uC99D\uC11C: "},
+        {".Private.Credentials.inaccessible.",
+                "\t\uC804\uC6A9 \uC778\uC99D\uC11C\uC5D0 \uC561\uC138\uC2A4\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.\n"},
+        {".Private.Credential.", "\t\uC804\uC6A9 \uC778\uC99D\uC11C: "},
+        {".Private.Credential.inaccessible.",
+                "\t\uC804\uC6A9 \uC778\uC99D\uC11C\uC5D0 \uC561\uC138\uC2A4\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.\n"},
+        {"Subject.is.read.only", "\uC81C\uBAA9\uC774 \uC77D\uAE30 \uC804\uC6A9\uC785\uB2C8\uB2E4."},
+        {"attempting.to.add.an.object.which.is.not.an.instance.of.java.security.Principal.to.a.Subject.s.Principal.Set",
+                "java.security.Principal\uC758 \uC778\uC2A4\uD134\uC2A4\uAC00 \uC544\uB2CC \uAC1D\uCCB4\uB97C \uC81C\uBAA9\uC758 \uC8FC\uCCB4 \uC9D1\uD569\uC5D0 \uCD94\uAC00\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911"},
+        {"attempting.to.add.an.object.which.is.not.an.instance.of.class",
+                "{0}\uC758 \uC778\uC2A4\uD134\uC2A4\uAC00 \uC544\uB2CC \uAC1D\uCCB4\uB97C \uCD94\uAC00\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911"},
 
         // javax.security.auth.login.AppConfigurationEntry
-        {"LoginModuleControlFlag: ", "LoginModuleControlFlag: "},
+        {"LoginModuleControlFlag.", "LoginModuleControlFlag: "},
 
         // javax.security.auth.login.LoginContext
-        {"Invalid null input: name", "\uc798\ubabb\ub41c null \uc785\ub825: \uc774\ub984"},
-        {"No LoginModules configured for name",
-         "{0}\uc5d0 \ub300\ud574 LoginModules\uac00 \uad6c\uc131\ub418\uc9c0 \uc54a\uc558\uc74c"},
-        {"invalid null Subject provided", "\uc798\ubabb\ub41c null \uc81c\ubaa9\uc744 \uc81c\uacf5\ud588\uc2b5\ub2c8\ub2e4."},
-        {"invalid null CallbackHandler provided",
-                "\uc798\ubabb\ub41c null CallbackHandler\ub97c \uc81c\uacf5\ud588\uc2b5\ub2c8\ub2e4."},
-        {"null subject - logout called before login",
-                "null \uc81c\ubaa9 - \ub85c\uadf8\uc778 \uc804\uc5d0 \ub85c\uadf8\uc544\uc6c3\uc744 \ud638\ucd9c\ud588\uc2b5\ub2c8\ub2e4."},
-        {"unable to instantiate LoginModule, module, because it does not provide a no-argument constructor",
-                "\uc778\uc218\uac00 \uc5c6\ub294 \uad6c\uc131\uc790\ub97c \uc81c\uacf5\ud558\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc5d0 LoginModule, {0}\uc744(\ub97c) \uc778\uc2a4\ud134\uc2a4\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
-        {"unable to instantiate LoginModule",
-                "LoginModule\uc744 \uc778\uc2a4\ud134\uc2a4\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
-        {"unable to instantiate LoginModule: ",
-                "LoginModule\uc744 \uc778\uc2a4\ud134\uc2a4\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. "},
-        {"unable to find LoginModule class: ",
-                "LoginModule \ud074\ub798\uc2a4\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4: "},
-        {"unable to access LoginModule: ",
-                "LoginModule\uc5d0 \uc561\uc138\uc2a4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4: "},
-        {"Login Failure: all modules ignored",
-                "\ub85c\uadf8\uc778 \uc2e4\ud328: \ubaa8\ub4e0 \ubaa8\ub4c8\uc774 \ubb34\uc2dc\ub418\uc5c8\uc2b5\ub2c8\ub2e4."},
+        {"Invalid.null.input.name", "\uBD80\uC801\uD569\uD55C \uB110 \uC785\uB825\uAC12: \uC774\uB984"},
+        {"No.LoginModules.configured.for.name",
+         "{0}\uC5D0 \uB300\uD574 \uAD6C\uC131\uB41C LoginModules\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"invalid.null.Subject.provided", "\uBD80\uC801\uD569\uD55C \uB110 \uC81C\uBAA9\uC774 \uC81C\uACF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+        {"invalid.null.CallbackHandler.provided",
+                "\uBD80\uC801\uD569\uD55C \uB110 CallbackHandler\uAC00 \uC81C\uACF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+        {"null.subject.logout.called.before.login",
+                "\uB110 \uC81C\uBAA9 - \uB85C\uADF8\uC778 \uC804\uC5D0 \uB85C\uADF8\uC544\uC6C3\uC774 \uD638\uCD9C\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+        {"unable.to.instantiate.LoginModule.module.because.it.does.not.provide.a.no.argument.constructor",
+                "\uC778\uC218\uAC00 \uC5C6\uB294 \uC0DD\uC131\uC790\uB97C \uC81C\uACF5\uD558\uC9C0 \uC54A\uC544 LoginModule {0}\uC744(\uB97C) \uC778\uC2A4\uD134\uC2A4\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"unable.to.instantiate.LoginModule",
+                "LoginModule\uC744 \uC778\uC2A4\uD134\uC2A4\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"unable.to.instantiate.LoginModule.",
+                "LoginModule\uC744 \uC778\uC2A4\uD134\uC2A4\uD654\uD560 \uC218 \uC5C6\uC74C: "},
+        {"unable.to.find.LoginModule.class.",
+                "LoginModule \uD074\uB798\uC2A4\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC74C: "},
+        {"unable.to.access.LoginModule.",
+                "LoginModule\uC5D0 \uC561\uC138\uC2A4\uD560 \uC218 \uC5C6\uC74C: "},
+        {"Login.Failure.all.modules.ignored",
+                "\uB85C\uADF8\uC778 \uC2E4\uD328: \uBAA8\uB4E0 \uBAA8\uB4C8\uC774 \uBB34\uC2DC\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
 
         // sun.security.provider.PolicyFile
 
-        {"java.security.policy: error parsing policy:\n\tmessage",
-                "java.security.policy: {0}\uc744(\ub97c) \uad6c\ubb38 \ubd84\uc11d\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd:\n\t{1}"},
-        {"java.security.policy: error adding Permission, perm:\n\tmessage",
-                "java.security.policy: {0} \uc0ac\uc6a9 \uad8c\ud55c\uc744 \ucd94\uac00\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd:\n\t{1}"},
-        {"java.security.policy: error adding Entry:\n\tmessage",
-                "java.security.policy: \ud56d\ubaa9\uc744 \ucd94\uac00\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd:\n\t{0}"},
-        {"alias name not provided (pe.name)", "\ubcc4\uce6d\uc774 \uc81c\uacf5\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4({0})."},
-        {"unable to perform substitution on alias, suffix",
-                "\ubcc4\uce6d{0}\uc5d0\uc11c \ub300\uccb4 \uc218\ud589\uc774 \ubd88\uac00\ub2a5\ud569\ub2c8\ub2e4."},
-        {"substitution value, prefix, unsupported",
-                "\ub300\uccb4 \uac12 {0}\uc774(\uac00) \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."},
-        {"(", "("},
-        {")", ")"},
-        {"type can't be null","\uc720\ud615\uc740 null\uc77c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+        {"java.security.policy.error.parsing.policy.message",
+                "java.security.policy: {0}\uC758 \uAD6C\uBB38\uC744 \uBD84\uC11D\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD:\n\t{1}"},
+        {"java.security.policy.error.adding.Permission.perm.message",
+                "java.security.policy: {0} \uAD8C\uD55C\uC744 \uCD94\uAC00\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD:\n\t{1}"},
+        {"java.security.policy.error.adding.Entry.message",
+                "java.security.policy: \uD56D\uBAA9\uC744 \uCD94\uAC00\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD:\n\t{0}"},
+        {"alias.name.not.provided.pe.name.", "\uBCC4\uCE6D \uC774\uB984\uC774 \uC81C\uACF5\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4({0})."},
+        {"unable.to.perform.substitution.on.alias.suffix",
+                "{0} \uBCC4\uCE6D\uC744 \uB300\uCCB4\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"substitution.value.prefix.unsupported",
+                "\uB300\uCCB4 \uAC12 {0}\uC740(\uB294) \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."},
+        {"LPARAM", "("},
+        {"RPARAM", ")"},
+        {"type.can.t.be.null","\uC720\uD615\uC740 \uB110\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
 
         // sun.security.provider.PolicyParser
-        {"keystorePasswordURL can not be specified without also specifying keystore",
-                "Keystore \uc9c0\uc815 \uc5c6\uc774 keystorePasswordURL\uc744 \uc9c0\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
-        {"expected keystore type", "keystore \uc720\ud615\uc774 \uc608\uc0c1\ub429\ub2c8\ub2e4."},
-        {"expected keystore provider", "keystore \uacf5\uae09\uc790\uac00 \uc608\uc0c1\ub429\ub2c8\ub2e4."},
-        {"multiple Codebase expressions",
-                "\ubcf5\uc218 Codebase \ud45c\ud604\uc2dd"},
-        {"multiple SignedBy expressions","\ubcf5\uc218 SignedBy \ud45c\ud604\uc2dd"},
-        {"SignedBy has empty alias","SignedBy\uc5d0 \ube44\uc5b4 \uc788\ub294 \ubcc4\uce6d\uc774 \uc788\uc2b5\ub2c8\ub2e4."},
-        {"can not specify Principal with a wildcard class without a wildcard name",
-                "\uc640\uc77c\ub4dc\uce74\ub4dc \uc774\ub984 \uc5c6\uc774 \uc640\uc77c\ub4dc\uce74\ub4dc \ud074\ub798\uc2a4\ub97c \uac00\uc9c4 Principal\uc744 \uc9c0\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
-        {"expected codeBase or SignedBy or Principal",
-                "codeBase, SignedBy \ub610\ub294 Principal\uc774 \uc608\uc0c1\ub429\ub2c8\ub2e4."},
-        {"expected permission entry", "\uc0ac\uc6a9 \uad8c\ud55c \ud56d\ubaa9\uc774 \uc608\uc0c1\ub429\ub2c8\ub2e4."},
-        {"number ", "\ubc88\ud638 "},
-        {"expected [expect], read [end of file]",
-                "[{0}]\uc774 \uc608\uc0c1\ub429\ub2c8\ub2e4. [EOF]\ub97c \uc77d\uc5c8\uc2b5\ub2c8\ub2e4."},
-        {"expected [;], read [end of file]",
-                "[;]\uc774 \uc608\uc0c1\ub429\ub2c8\ub2e4. [EOF]\ub97c \uc77d\uc5c8\uc2b5\ub2c8\ub2e4."},
-        {"line number: msg", "\ud589 {0}: {1}"},
-        {"line number: expected [expect], found [actual]",
-                "\ud589 {0}: [{1}]\uc744(\ub97c) \uc608\uc0c1\ud588\ub294\ub370, [{2}]\uc774(\uac00) \ubc1c\uacac\ub418\uc5c8\uc2b5\ub2c8\ub2e4."},
-        {"null principalClass or principalName",
-                "principalClass \ub610\ub294 principalName\uc774 \uc5c6\uc2b5\ub2c8\ub2e4."},
+        {"keystorePasswordURL.can.not.be.specified.without.also.specifying.keystore",
+                "\uD0A4 \uC800\uC7A5\uC18C\uB97C \uC9C0\uC815\uD558\uC9C0 \uC54A\uACE0 keystorePasswordURL\uC744 \uC9C0\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"expected.keystore.type", "\uD0A4 \uC800\uC7A5\uC18C \uC720\uD615\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."},
+        {"expected.keystore.provider", "\uD0A4 \uC800\uC7A5\uC18C \uC81C\uACF5\uC790\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4."},
+        {"multiple.Codebase.expressions",
+                "Codebase \uD45C\uD604\uC2DD\uC774 \uC5EC\uB7EC \uAC1C\uC785\uB2C8\uB2E4."},
+        {"multiple.SignedBy.expressions","SignedBy \uD45C\uD604\uC2DD\uC774 \uC5EC\uB7EC \uAC1C\uC785\uB2C8\uB2E4."},
+        {"SignedBy.has.empty.alias","SignedBy\uC758 \uBCC4\uCE6D\uC774 \uBE44\uC5B4 \uC788\uC2B5\uB2C8\uB2E4."},
+        {"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name",
+                "\uC640\uC77C\uB4DC \uCE74\uB4DC \uBB38\uC790 \uC774\uB984 \uC5C6\uC774 \uC640\uC77C\uB4DC \uCE74\uB4DC \uBB38\uC790 \uD074\uB798\uC2A4\uB97C \uC0AC\uC6A9\uD558\uB294 \uC8FC\uCCB4\uB97C \uC9C0\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+        {"expected.codeBase.or.SignedBy.or.Principal",
+                "codeBase, SignedBy \uB610\uB294 \uC8FC\uCCB4\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4."},
+        {"expected.permission.entry", "\uAD8C\uD55C \uD56D\uBAA9\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."},
+        {"number.", "\uC22B\uC790 "},
+        {"expected.expect.read.end.of.file.",
+                "[{0}]\uC774(\uAC00) \uD544\uC694\uD558\uC9C0\uB9CC [\uD30C\uC77C\uC758 \uB05D]\uAE4C\uC9C0 \uC77D\uC5C8\uC2B5\uB2C8\uB2E4."},
+        {"expected.read.end.of.file.",
+                "[;]\uC774 \uD544\uC694\uD558\uC9C0\uB9CC [\uD30C\uC77C\uC758 \uB05D]\uAE4C\uC9C0 \uC77D\uC5C8\uC2B5\uB2C8\uB2E4."},
+        {"line.number.msg", "{0} \uD589: {1}"},
+        {"line.number.expected.expect.found.actual.",
+                "{0} \uD589: [{1}]\uC774(\uAC00) \uD544\uC694\uD558\uC9C0\uB9CC [{2}]\uC774(\uAC00) \uBC1C\uACAC\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+        {"null.principalClass.or.principalName",
+                "principalClass \uB610\uB294 principalName\uC774 \uB110\uC785\uB2C8\uB2E4."},
 
         // sun.security.pkcs11.SunPKCS11
-        {"PKCS11 Token [providerName] Password: ",
-                "PKCS11 \ud1a0\ud070 [{0}] \uc554\ud638: "},
+        {"PKCS11.Token.providerName.Password.",
+                "PKCS11 \uD1A0\uD070 [{0}] \uBE44\uBC00\uBC88\uD638: "},
 
         /* --- DEPRECATED --- */
         // javax.security.auth.Policy
-        {"unable to instantiate Subject-based policy",
-                "\uc8fc\uc81c \uae30\ubc18 \uc815\ucc45\uc744 \uc778\uc2a4\ud134\uc2a4\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."}
+        {"unable.to.instantiate.Subject.based.policy",
+                "\uC81C\uBAA9 \uAE30\uBC18 \uC815\uCC45\uC744 \uC778\uC2A4\uD134\uC2A4\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."}
     };
 
 
@@ -648,3 +670,4 @@
         return contents;
     }
 }
+
--- a/jdk/src/share/classes/sun/security/util/Resources_pt_BR.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/util/Resources_pt_BR.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, 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
@@ -29,607 +29,633 @@
  * <p> This class represents the <code>ResourceBundle</code>
  * for javax.security.auth and sun.security.
  *
- * @version 1.33, 12/06/05
  */
 public class Resources_pt_BR extends java.util.ListResourceBundle {
 
     private static final Object[][] contents = {
 
-    // shared (from jarsigner)
-    {" ", " "},
-    {"  ", "  "},
-    {"      ", "      "},
-    {", ", ", "},
-    // shared (from keytool)
-    {"\n", "\n"},
-    {"*******************************************",
-        "*******************************************"},
-    {"*******************************************\n\n",
-        "*******************************************\n\n"},
+        // shared (from jarsigner)
+        {"SPACE", " "},
+        {"2SPACE", "  "},
+        {"6SPACE", "      "},
+        {"COMMA", ", "},
+        // shared (from keytool)
+        {"NEWLINE", "\n"},
+        {"STAR",
+                "*******************************************"},
+        {"STARNN",
+                "*******************************************\n\n"},
 
-    // keytool
-    {"keytool error: ", "erro de keytool: "},
-    {"Illegal option:  ", "Op\u00e7\u00e3o ilegal:  "},
-        {"Try keytool -help","Tentar keytool -help"},
-        {"Command option <flag> needs an argument.", "A op\u00e7\u00e3o de comando {0} precisa de um argumento."},
-        {"Warning:  Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified <command> value.",
-                "Aviso:  senhas de chave e de armazenamento diferentes n\u00e3o suportadas para KeyStores PKCS12. Ignorando valor {0} especificado pelo usu\u00e1rio."},
-    {"-keystore must be NONE if -storetype is {0}",
-        "-keystore deve ser NONE se -storetype for {0}"},
-        {"Too may retries, program terminated",
-                 "N\u00famero de tentativas excedido, programa finalizado"},
-    {"-storepasswd and -keypasswd commands not supported if -storetype is {0}",
-        "comandos -storepasswd e -keypasswd n\u00e3o suportados se -storetype for {0}"},
-    {"-keypasswd commands not supported if -storetype is PKCS12",
-        "comandos -keypasswd n\u00e3o suportados se -storetype for PKCS12"},
-    {"-keypass and -new can not be specified if -storetype is {0}",
-        "-keypass e -new n\u00e3o podem ser especificados se -storetype for {0}"},
-    {"if -protected is specified, then -storepass, -keypass, and -new must not be specified",
-        "se -protected estiver especificado, ent\u00e3o -storepass, -keypass e -new n\u00e3o devem ser especificados"},
-    {"if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified",
-        "se -srcprotected estiver especificado, ent\u00e3o -srcstorepass e -srckeypass n\u00e3o devem ser especificados"},
-    {"if keystore is not password protected, then -storepass, -keypass, and -new must not be specified",
-        "se o armazenamento de chaves n\u00e3o estiver protegido por senha, ent\u00e3o -storepass, -keypass e -new n\u00e3o devem ser especificados"},
-    {"if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified",
-        "se o armazenamento de chaves de origem n\u00e3o estiver protegido por senha, ent\u00e3o -srcstorepass e -srckeypass n\u00e3o devem ser especificados"},
-    {"Validity must be greater than zero",
-        "A validade deve ser maior do que zero"},
-    {"provName not a provider", "{0} n\u00e3o \u00e9 um fornecedor"},
-    {"Usage error: no command provided", "Erro de uso: nenhum comando fornecido"},
-    {"Usage error, <arg> is not a legal command", "Erro de uso, {0} n\u00e3o \u00e9 um comando legal"},
-    {"Source keystore file exists, but is empty: ", "O arquivo de armazenamento de chaves de origem existe, mas est\u00e1 vazio: "},
-    {"Please specify -srckeystore", "Especifique -srckeystore"},
-    {"Must not specify both -v and -rfc with 'list' command",
-        "N\u00e3o devem ser especificados -v e -rfc com o comando 'list'"},
-    {"Key password must be at least 6 characters",
-        "A senha da chave deve ter como m\u00ednimo 6 caracteres"},
-    {"New password must be at least 6 characters",
-        "A nova senha deve ter como m\u00ednimo 6 caracteres"},
-    {"Keystore file exists, but is empty: ",
-        "O arquivo de armazenamento de chaves existe, mas est\u00e1 vazio: "},
-    {"Keystore file does not exist: ",
-        "O arquivo de armazenamento de chaves n\u00e3o existe. "},
-    {"Must specify destination alias", "Deve ser especificado um alias de destino"},
-    {"Must specify alias", "Deve ser especificado um alias"},
-    {"Keystore password must be at least 6 characters",
-        "A senha do armazenamento de chaves deve ter como m\u00ednimo 6 caracteres"},
-    {"Enter keystore password:  ", "Insira a senha do armazenamento de chaves:  "},
-    {"Enter source keystore password:  ", "Insira a senha do armazenamento de chaves de origem:  "},
-        {"Enter destination keystore password:  ", "Insira a senha do armazenamento de chaves de destino:  "},
-    {"Keystore password is too short - must be at least 6 characters",
-     "A senha do armazenamento de chaves \u00e9 muito curta - deve ter como m\u00ednimo 6 caracteres"},
-        {"Unknown Entry Type", "Tipo de entrada desconhecido"},
-        {"Too many failures. Alias not changed", "Excesso de falhas. Alias n\u00e3o alterado"},
-        {"Entry for alias <alias> successfully imported.",
-                 "Entrada do alias {0} importada com \u00eaxito."},
-        {"Entry for alias <alias> not imported.", "Entrada do alias {0} n\u00e3o importada."},
-        {"Problem importing entry for alias <alias>: <exception>.\nEntry for alias <alias> not imported.",
-                 "Problema ao importar a entrada do {0}: {1}.\nEntrada do alias {0} n\u00e3o importada."},
-        {"Import command completed:  <ok> entries successfully imported, <fail> entries failed or cancelled",
-                 "Comando de importa\u00e7\u00e3o conclu\u00eddo:  {0} entradas importadas com \u00eaxito, {1} entradas falhas ou canceladas"},
-        {"Warning: Overwriting existing alias <alias> in destination keystore",
-                 "Aviso: substitui\u00e7\u00e3o de alias {0} existente no armazenamento de chaves de destino"},
-        {"Existing entry alias <alias> exists, overwrite? [no]:  ",
-                 "Entrada j\u00e1 existente no alias {0}, substituir? [n\u00e3o]:  "},
-    {"Too many failures - try later", "Excesso de falhas - tentar mais tarde"},
-    {"Certification request stored in file <filename>",
-        "Solicita\u00e7\u00e3o de certificado armazenada no arquivo <{0}>"},
-    {"Submit this to your CA", "Enviar \u00e0 CA"},
-        {"if alias not specified, destalias, srckeypass, and destkeypass must not be specified",
-            "se o alias n\u00e3o estiver especificado, destalias, srckeypass e destkeypass n\u00e3o devem ser especificados"},
-    {"Certificate stored in file <filename>",
-        "Certificado armazenado no arquivo <{0}>"},
-    {"Certificate reply was installed in keystore",
-        "Resposta do certificado foi instalada no armazenamento de chaves"},
-    {"Certificate reply was not installed in keystore",
-        "Resposta do certificado n\u00e3o foi instalada no armazenamento de chaves"},
-    {"Certificate was added to keystore",
-        "O certificado foi adicionado ao armazenamento de chaves"},
-    {"Certificate was not added to keystore",
-        "O certificado n\u00e3o foi adicionado ao armazenamento de chaves"},
-    {"[Storing ksfname]", "[Armazenando {0}]"},
-    {"alias has no public key (certificate)",
-        "{0} n\u00e3o possui chave p\u00fablica (certificado)"},
-    {"Cannot derive signature algorithm",
-        "N\u00e3o \u00e9 poss\u00edvel obter algoritmo de assinatura"},
-    {"Alias <alias> does not exist",
-        "O alias <{0}> n\u00e3o existe"},
-    {"Alias <alias> has no certificate",
-        "O alias <{0}> n\u00e3o possui certificado"},
-    {"Key pair not generated, alias <alias> already exists",
-        "Par de chaves n\u00e3o gerado, o alias <{0}> j\u00e1 existe"},
-    {"Cannot derive signature algorithm",
-        "N\u00e3o \u00e9 poss\u00edvel obter algoritmo de assinatura"},
-    {"Generating keysize bit keyAlgName key pair and self-signed certificate (sigAlgName) with a validity of validality days\n\tfor: x500Name",
+        // keytool: Help part
+        {".OPTION.", " [OPTION]..."},
+        {"Options.", "Op\u00E7\u00F5es:"},
+        {"Use.keytool.help.for.all.available.commands",
+                 "Use \"keytool -help\" para todos os comandos dispon\u00EDveis"},
+        {"Key.and.Certificate.Management.Tool",
+                 "Ferramenta de Gerenciamento de Chave e Certificado"},
+        {"Commands.", "Comandos:"},
+        {"Use.keytool.command.name.help.for.usage.of.command.name",
+                "Use \"keytool -command_name -help\" para uso de command_name"},
+        // keytool: help: commands
+        {"Generates.a.certificate.request",
+                "Gera uma solicita\u00E7\u00E3o de certificado"}, //-certreq
+        {"Changes.an.entry.s.alias",
+                "Altera um alias de entrada"}, //-changealias
+        {"Deletes.an.entry",
+                "Deleta uma entrada"}, //-delete
+        {"Exports.certificate",
+                "Exporta o certificado"}, //-exportcert
+        {"Generates.a.key.pair",
+                "Gera um par de chaves"}, //-genkeypair
+        {"Generates.a.secret.key",
+                "Gera uma chave secreta"}, //-genseckey
+        {"Generates.certificate.from.a.certificate.request",
+                "Gera um certificado de uma solicita\u00E7\u00E3o de certificado"}, //-gencert
+        {"Generates.CRL", "Gera CRL"}, //-gencrl
+        {"Imports.entries.from.a.JDK.1.1.x.style.identity.database",
+                "Importa entradas de um banco de dados de identidade JDK 1.1.x-style"}, //-identitydb
+        {"Imports.a.certificate.or.a.certificate.chain",
+                "Importa um certificado ou uma cadeia de certificados"}, //-importcert
+        {"Imports.one.or.all.entries.from.another.keystore",
+                "Importa uma ou todas as entradas de outra \u00E1rea de armazenamento de chaves"}, //-importkeystore
+        {"Clones.a.key.entry",
+                "Clona uma entrada de chave"}, //-keyclone
+        {"Changes.the.key.password.of.an.entry",
+                "Altera a senha da chave de uma entrada"}, //-keypasswd
+        {"Lists.entries.in.a.keystore",
+                "Lista entradas em uma \u00E1rea de armazenamento de chaves"}, //-list
+        {"Prints.the.content.of.a.certificate",
+                "Imprime o conte\u00FAdo de um certificado"}, //-printcert
+        {"Prints.the.content.of.a.certificate.request",
+                "Imprime o conte\u00FAdo de uma solicita\u00E7\u00E3o de certificado"}, //-printcertreq
+        {"Prints.the.content.of.a.CRL.file",
+                "Imprime o conte\u00FAdo de um arquivo CRL"}, //-printcrl
+        {"Generates.a.self.signed.certificate",
+                "Gera um certificado autoassinado"}, //-selfcert
+        {"Changes.the.store.password.of.a.keystore",
+                "Altera a senha de armazenamento de uma \u00E1rea de armazenamento de chaves"}, //-storepasswd
+        // keytool: help: options
+        {"alias.name.of.the.entry.to.process",
+                "nome do alias da entrada a ser processada"}, //-alias
+        {"destination.alias",
+                "alias de destino"}, //-destalias
+        {"destination.key.password",
+                "senha da chave de destino"}, //-destkeypass
+        {"destination.keystore.name",
+                "nome da \u00E1rea de armazenamento de chaves de destino"}, //-destkeystore
+        {"destination.keystore.password.protected",
+                "senha protegida da \u00E1rea de armazenamento de chaves de destino"}, //-destprotected
+        {"destination.keystore.provider.name",
+                "nome do fornecedor da \u00E1rea de armazenamento de chaves de destino"}, //-destprovidername
+        {"destination.keystore.password",
+                "senha da \u00E1rea de armazenamento de chaves de destino"}, //-deststorepass
+        {"destination.keystore.type",
+                "tipo de \u00E1rea de armazenamento de chaves de destino"}, //-deststoretype
+        {"distinguished.name",
+                "nome distinto"}, //-dname
+        {"X.509.extension",
+                "extens\u00E3o X.509"}, //-ext
+        {"output.file.name",
+                "nome do arquivo de sa\u00EDda"}, //-file and -outfile
+        {"input.file.name",
+                "nome do arquivo de entrada"}, //-file and -infile
+        {"key.algorithm.name",
+                "nome do algoritmo da chave"}, //-keyalg
+        {"key.password",
+                "senha da chave"}, //-keypass
+        {"key.bit.size",
+                "tamanho do bit da chave"}, //-keysize
+        {"keystore.name",
+                "nome da \u00E1rea de armazenamento de chaves"}, //-keystore
+        {"new.password",
+                "nova senha"}, //-new
+        {"do.not.prompt",
+                "n\u00E3o perguntar"}, //-noprompt
+        {"password.through.protected.mechanism",
+                "senha por meio de mecanismo protegido"}, //-protected
+        {"provider.argument",
+                "argumento do fornecedor"}, //-providerarg
+        {"provider.class.name",
+                "nome da classe do fornecedor"}, //-providerclass
+        {"provider.name",
+                "nome do fornecedor"}, //-providername
+        {"provider.classpath",
+                "classpath do fornecedor"}, //-providerpath
+        {"output.in.RFC.style",
+                "sa\u00EDda no estilo RFC"}, //-rfc
+        {"signature.algorithm.name",
+                "nome do algoritmo de assinatura"}, //-sigalg
+        {"source.alias",
+                "alias de origem"}, //-srcalias
+        {"source.key.password",
+                "senha da chave de origem"}, //-srckeypass
+        {"source.keystore.name",
+                "nome da \u00E1rea de armazenamento de chaves de origem"}, //-srckeystore
+        {"source.keystore.password.protected",
+                "senha protegida da \u00E1rea de armazenamento de chaves de origem"}, //-srcprotected
+        {"source.keystore.provider.name",
+                "nome do fornecedor da \u00E1rea de armazenamento de chaves de origem"}, //-srcprovidername
+        {"source.keystore.password",
+                "senha da \u00E1rea de armazenamento de chaves de origem"}, //-srcstorepass
+        {"source.keystore.type",
+                "tipo de \u00E1rea de armazenamento de chaves de origem"}, //-srcstoretype
+        {"SSL.server.host.and.port",
+                "porta e host do servidor SSL"}, //-sslserver
+        {"signed.jar.file",
+                "arquivo jar assinado"}, //=jarfile
+        {"certificate.validity.start.date.time",
+                "data/hora inicial de validade do certificado"}, //-startdate
+        {"keystore.password",
+                "senha da \u00E1rea de armazenamento de chaves"}, //-storepass
+        {"keystore.type",
+                "tipo de \u00E1rea de armazenamento de chaves"}, //-storetype
+        {"trust.certificates.from.cacerts",
+                "certificados confi\u00E1veis do cacerts"}, //-trustcacerts
+        {"verbose.output",
+                "sa\u00EDda detalhada"}, //-v
+        {"validity.number.of.days",
+                "n\u00FAmero de dias da validade"}, //-validity
+        {"Serial.ID.of.cert.to.revoke",
+                 "ID de s\u00E9rie do certificado a ser revogado"}, //-id
+        // keytool: Running part
+        {"keytool.error.", "erro de keytool: "},
+        {"Illegal.option.", "Op\u00E7\u00E3o inv\u00E1lida:  "},
+        {"Illegal.value.", "Valor inv\u00E1lido: "},
+        {"Unknown.password.type.", "Tipo de senha desconhecido: "},
+        {"Cannot.find.environment.variable.",
+                "N\u00E3o \u00E9 poss\u00EDvel localizar a vari\u00E1vel do ambiente: "},
+        {"Cannot.find.file.", "N\u00E3o \u00E9 poss\u00EDvel localizar o arquivo: "},
+        {"Command.option.flag.needs.an.argument.", "A op\u00E7\u00E3o de comando {0} precisa de um argumento."},
+        {"Warning.Different.store.and.key.passwords.not.supported.for.PKCS12.KeyStores.Ignoring.user.specified.command.value.",
+                "Advert\u00EAncia: Senhas de chave e de armazenamento diferentes n\u00E3o suportadas para KeyStores PKCS12. Ignorando valor {0} especificado pelo usu\u00E1rio."},
+        {".keystore.must.be.NONE.if.storetype.is.{0}",
+                "-keystore deve ser NONE se -storetype for {0}"},
+        {"Too.many.retries.program.terminated",
+                 "Excesso de tentativas de repeti\u00E7\u00E3o; programa finalizado"},
+        {".storepasswd.and.keypasswd.commands.not.supported.if.storetype.is.{0}",
+                "comandos -storepasswd e -keypasswd n\u00E3o suportados se -storetype for {0}"},
+        {".keypasswd.commands.not.supported.if.storetype.is.PKCS12",
+                "comandos -keypasswd n\u00E3o suportados se -storetype for PKCS12"},
+        {".keypass.and.new.can.not.be.specified.if.storetype.is.{0}",
+                "-keypass e -new n\u00E3o podem ser especificados se -storetype for {0}"},
+        {"if.protected.is.specified.then.storepass.keypass.and.new.must.not.be.specified",
+                "se -protected for especificado, ent\u00E3o -storepass, -keypass e -new n\u00E3o dever\u00E3o ser especificados"},
+        {"if.srcprotected.is.specified.then.srcstorepass.and.srckeypass.must.not.be.specified",
+                "se -srcprotected for especificado, ent\u00E3o -srcstorepass e -srckeypass n\u00E3o dever\u00E3o ser especificados"},
+        {"if.keystore.is.not.password.protected.then.storepass.keypass.and.new.must.not.be.specified",
+                "se a \u00E1rea de armazenamento de chaves n\u00E3o estiver protegida por senha, ent\u00E3o -storepass, -keypass e -new n\u00E3o dever\u00E3o ser especificados"},
+        {"if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified",
+                "se a \u00E1rea de armazenamento de chaves de origem n\u00E3o estiver protegida por senha, ent\u00E3o -srcstorepass e -srckeypass n\u00E3o dever\u00E3o ser especificados"},
+        {"Illegal.startdate.value", "valor da data inicial inv\u00E1lido"},
+        {"Validity.must.be.greater.than.zero",
+                "A validade deve ser maior do que zero"},
+        {"provName.not.a.provider", "{0} n\u00E3o \u00E9 um fornecedor"},
+        {"Usage.error.no.command.provided", "Erro de uso: nenhum comando fornecido"},
+        {"Source.keystore.file.exists.but.is.empty.", "O arquivo da \u00E1rea de armazenamento de chaves de origem existe, mas est\u00E1 vazio: "},
+        {"Please.specify.srckeystore", "Especifique -srckeystore"},
+        {"Must.not.specify.both.v.and.rfc.with.list.command",
+                "N\u00E3o devem ser especificados -v e -rfc com o comando 'list'"},
+        {"Key.password.must.be.at.least.6.characters",
+                "A senha da chave deve ter, no m\u00EDnimo, 6 caracteres"},
+        {"New.password.must.be.at.least.6.characters",
+                "A nova senha deve ter, no m\u00EDnimo, 6 caracteres"},
+        {"Keystore.file.exists.but.is.empty.",
+                "O arquivo da \u00E1rea de armazenamento de chaves existe, mas est\u00E1 vazio: "},
+        {"Keystore.file.does.not.exist.",
+                "O arquivo da \u00E1rea de armazenamento de chaves n\u00E3o existe. "},
+        {"Must.specify.destination.alias", "Deve ser especificado um alias de destino"},
+        {"Must.specify.alias", "Deve ser especificado um alias"},
+        {"Keystore.password.must.be.at.least.6.characters",
+                "A senha da \u00E1rea de armazenamento de chaves deve ter, no m\u00EDnimo, 6 caracteres"},
+        {"Enter.keystore.password.", "Informe a senha da \u00E1rea de armazenamento de chaves:  "},
+        {"Enter.source.keystore.password.", "Informe a senha da \u00E1rea de armazenamento de chaves de origem:  "},
+        {"Enter.destination.keystore.password.", "Informe a senha da \u00E1rea de armazenamento de chaves de destino:  "},
+        {"Keystore.password.is.too.short.must.be.at.least.6.characters",
+         "A senha da \u00E1rea de armazenamento de chaves \u00E9 muito curta - ela deve ter, no m\u00EDnimo, 6 caracteres"},
+        {"Unknown.Entry.Type", "Tipo de Entrada Desconhecido"},
+        {"Too.many.failures.Alias.not.changed", "Excesso de falhas. Alias n\u00E3o alterado"},
+        {"Entry.for.alias.alias.successfully.imported.",
+                 "Entrada do alias {0} importada com \u00EAxito."},
+        {"Entry.for.alias.alias.not.imported.", "Entrada do alias {0} n\u00E3o importada."},
+        {"Problem.importing.entry.for.alias.alias.exception.Entry.for.alias.alias.not.imported.",
+                 "Problema ao importar a entrada do alias {0}: {1}.\nEntrada do alias {0} n\u00E3o importada."},
+        {"Import.command.completed.ok.entries.successfully.imported.fail.entries.failed.or.cancelled",
+                 "Comando de importa\u00E7\u00E3o conclu\u00EDdo:  {0} entradas importadas com \u00EAxito, {1} entradas falharam ou foram canceladas"},
+        {"Warning.Overwriting.existing.alias.alias.in.destination.keystore",
+                 "Advert\u00EAncia: Substitui\u00E7\u00E3o do alias {0} existente na \u00E1rea de armazenamento de chaves de destino"},
+        {"Existing.entry.alias.alias.exists.overwrite.no.",
+                 "Entrada j\u00E1 existente no alias {0}, substituir? [n\u00E3o]:  "},
+        {"Too.many.failures.try.later", "Excesso de falhas - tente mais tarde"},
+        {"Certification.request.stored.in.file.filename.",
+                "Solicita\u00E7\u00E3o de certificado armazenada no arquivo <{0}>"},
+        {"Submit.this.to.your.CA", "Submeter \u00E0 CA"},
+        {"if.alias.not.specified.destalias.srckeypass.and.destkeypass.must.not.be.specified",
+            "se o alias n\u00E3o estiver especificado, destalias, srckeypass e destkeypass n\u00E3o dever\u00E3o ser especificados"},
+        {"Certificate.stored.in.file.filename.",
+                "Certificado armazenado no arquivo <{0}>"},
+        {"Certificate.reply.was.installed.in.keystore",
+                "A resposta do certificado foi instalada na \u00E1rea de armazenamento de chaves"},
+        {"Certificate.reply.was.not.installed.in.keystore",
+                "A resposta do certificado n\u00E3o foi instalada na \u00E1rea de armazenamento de chaves"},
+        {"Certificate.was.added.to.keystore",
+                "O certificado foi adicionado \u00E0 \u00E1rea de armazenamento de chaves"},
+        {"Certificate.was.not.added.to.keystore",
+                "O certificado n\u00E3o foi adicionado \u00E0 \u00E1rea de armazenamento de chaves"},
+        {".Storing.ksfname.", "[Armazenando {0}]"},
+        {"alias.has.no.public.key.certificate.",
+                "{0} n\u00E3o tem chave p\u00FAblica (certificado)"},
+        {"Cannot.derive.signature.algorithm",
+                "N\u00E3o \u00E9 poss\u00EDvel obter um algoritmo de assinatura"},
+        {"Alias.alias.does.not.exist",
+                "O alias <{0}> n\u00E3o existe"},
+        {"Alias.alias.has.no.certificate",
+                "O alias <{0}> n\u00E3o tem certificado"},
+        {"Key.pair.not.generated.alias.alias.already.exists",
+                "Par de chaves n\u00E3o gerado; o alias <{0}> j\u00E1 existe"},
+        {"Generating.keysize.bit.keyAlgName.key.pair.and.self.signed.certificate.sigAlgName.with.a.validity.of.validality.days.for",
                 "Gerando o par de chaves {1} de {0} bit e o certificado autoassinado ({2}) com uma validade de {3} dias\n\tpara: {4}"},
-    {"Enter key password for <alias>", "Inserir a senha da chave de <{0}>"},
-    {"\t(RETURN if same as keystore password):  ",
-        "\t(RETURN se for igual \u00e0 senha do armazenamento de chaves):  "},
-    {"Key password is too short - must be at least 6 characters",
-        "A senha da chave \u00e9 muito curta - deve ter como m\u00ednimo 6 caracteres"},
-    {"Too many failures - key not added to keystore",
-        "Excesso de falhas - chave n\u00e3o adicionada ao armazenamento de chaves"},
-    {"Destination alias <dest> already exists",
-        "O alias de destino <{0}> j\u00e1 existe"},
-    {"Password is too short - must be at least 6 characters",
-        "A senha \u00e9 muito curta - deve ter como m\u00ednimo 6 caracteres"},
-    {"Too many failures. Key entry not cloned",
-        "Excesso de falhas. Entrada da chave n\u00e3o clonada"},
-    {"key password for <alias>", "senha da chave de <{0}>"},
-    {"Keystore entry for <id.getName()> already exists",
-        "A entrada do armazenamento de chaves de <{0}> j\u00e1 existe"},
-    {"Creating keystore entry for <id.getName()> ...",
-        "Criando entrada do armazenamento de chaves para <{0}> ..."},
-    {"No entries from identity database added",
-        "Nenhuma entrada adicionada do banco de dados de identidades"},
-    {"Alias name: alias", "Nome do alias: {0}"},
-    {"Creation date: keyStore.getCreationDate(alias)",
-        "Data de cria\u00e7\u00e3o: {0,data}"},
-    {"alias, keyStore.getCreationDate(alias), ",
-        "{0}, {1,data}, "},
-    {"alias, ", "{0}, "},
-    {"Entry type: <type>", "Tipo de entrada: {0}"},
-    {"Certificate chain length: ", "Comprimento da cadeia de certificados: "},
-    {"Certificate[(i + 1)]:", "Certificado[{0,n\u00famero,inteiro}]:"},
-    {"Certificate fingerprint (MD5): ", "Fingerprint (MD5) do certificado: "},
-    {"Entry type: trustedCertEntry\n", "Tipo de entrada: trustedCertEntry\n"},
-    {"trustedCertEntry,", "trustedCertEntry,"},
-    {"Keystore type: ", "Tipo de armazenamento de chaves: "},
-    {"Keystore provider: ", "Fornecedor de armazenamento de chaves: "},
-    {"Your keystore contains keyStore.size() entry",
-        "Seu armazenamento de chaves cont\u00e9m {0,n\u00famero,inteiro} entrada"},
-    {"Your keystore contains keyStore.size() entries",
-        "Seu armazenamento de chaves cont\u00e9m {0,n\u00famero,inteiro} entradas"},
-    {"Failed to parse input", "Falha ao analisar a entrada"},
-    {"Empty input", "Entrada vazia"},
-    {"Not X.509 certificate", "N\u00e3o \u00e9 um certificado X.509"},
-    {"Cannot derive signature algorithm",
-        "N\u00e3o \u00e9 poss\u00edvel obter algoritmo de assinatura"},
-    {"alias has no public key", "{0} n\u00e3o possui chave p\u00fablica"},
-    {"alias has no X.509 certificate", "{0} n\u00e3o possui certificado X.509"},
-    {"New certificate (self-signed):", "Novo certificado (autoassinado):"},
-    {"Reply has no certificates", "A resposta n\u00e3o possui certificado"},
-    {"Certificate not imported, alias <alias> already exists",
-        "Certificado n\u00e3o importado, o alias <{0}> j\u00e1 existe"},
-    {"Input not an X.509 certificate", "A entrada n\u00e3o \u00e9 um certificado X.509"},
-    {"Certificate already exists in keystore under alias <trustalias>",
-        "O certificado j\u00e1 existe no armazenamento de chaves no alias <{0}>"},
-    {"Do you still want to add it? [no]:  ",
-        "Ainda deseja adicion\u00e1-lo? [n\u00e3o]:  "},
-    {"Certificate already exists in system-wide CA keystore under alias <trustalias>",
-        "O certificado j\u00e1 existe no armazenamento de chaves de CA em todo o sistema no alias <{0}>"},
-    {"Do you still want to add it to your own keystore? [no]:  ",
-        "Ainda deseja adicion\u00e1-lo ao seu pr\u00f3prio armazenamento de chaves? [n\u00e3o]:  "},
-    {"Trust this certificate? [no]:  ", "Confiar neste certificado? [n\u00e3o]:  "},
-    {"YES", "SIM"},
-    {"New prompt: ", "Nova {0}: "},
-    {"Passwords must differ", "As senhas devem ser diferentes"},
-    {"Re-enter new prompt: ", "Insira novamente a nova {0}: "},
-    {"Re-enter new password: ", "Insira novamente a nova senha: "},
-    {"They don't match. Try again", "Elas n\u00e3o correspondem. Tente novamente"},
-    {"Enter prompt alias name:  ", "Insira o nome do alias {0}:  "},
-        {"Enter new alias name\t(RETURN to cancel import for this entry):  ",
-                 "Insira o novo nome do alias\t(RETURN para cancelar a importa\u00e7\u00e3o desta entrada):  "},
-    {"Enter alias name:  ", "Insira o nome do alias:  "},
-    {"\t(RETURN if same as for <otherAlias>)",
-        "\t(RETURN se for igual ao de <{0}>)"},
-    {"*PATTERN* printX509Cert",
-        "Propriet\u00e1rio: {0}\nEmissor: {1}\nN\u00famero de s\u00e9rie: {2}\nV\u00e1lido de: {3} a: {4}\nFingerprints do certificado:\n\t MD5:  {5}\n\t SHA1: {6}\n\t Nome do algoritmo de assinatura: {7}\n\t Vers\u00e3o: {8}"},
-    {"What is your first and last name?",
-        "Qual \u00e9 o seu nome e o seu sobrenome?"},
-    {"What is the name of your organizational unit?",
-        "Qual \u00e9 o nome da sua unidade organizacional?"},
-    {"What is the name of your organization?",
-        "Qual \u00e9 o nome da sua empresa?"},
-    {"What is the name of your City or Locality?",
-        "Qual \u00e9 o nome da sua cidade ou localidade?"},
-    {"What is the name of your State or Province?",
-        "Qual \u00e9 o nome do seu estado ou munic\u00edpio?"},
-    {"What is the two-letter country code for this unit?",
-        "Quais s\u00e3o as duas letras do c\u00f3digo do pa\u00eds desta unidade?"},
-    {"Is <name> correct?", "{0} \u00e9 correto?"},
-    {"no", "n\u00e3o"},
-    {"yes", "sim"},
-    {"y", "s"},
-    {"  [defaultValue]:  ", "  [{0}]:  "},
-    {"Alias <alias> has no key",
-        "O alias <{0}> n\u00e3o possui chave"},
-        {"Alias <alias> references an entry type that is not a private key entry.  The -keyclone command only supports cloning of private key entries",
-                 "O alias <{0}> faz refer\u00eancia a um tipo de entrada que n\u00e3o \u00e9 uma entrada de chave privada.  O comando -keyclone oferece suporte somente \u00e0 clonagem de entradas de chave privada"},
+        {"Enter.key.password.for.alias.", "Informar a senha da chave de <{0}>"},
+        {".RETURN.if.same.as.keystore.password.",
+                "\t(RETURN se for igual \u00E0 senha da \u00E1rea do armazenamento de chaves):  "},
+        {"Key.password.is.too.short.must.be.at.least.6.characters",
+                "A senha da chave \u00E9 muito curta - deve ter, no m\u00EDnimo, 6 caracteres"},
+        {"Too.many.failures.key.not.added.to.keystore",
+                "Excesso de falhas - chave n\u00E3o adicionada a \u00E1rea de armazenamento de chaves"},
+        {"Destination.alias.dest.already.exists",
+                "O alias de destino <{0}> j\u00E1 existe"},
+        {"Password.is.too.short.must.be.at.least.6.characters",
+                "A senha \u00E9 muito curta - deve ter, no m\u00EDnimo, 6 caracteres"},
+        {"Too.many.failures.Key.entry.not.cloned",
+                "Excesso de falhas. Entrada da chave n\u00E3o clonada"},
+        {"key.password.for.alias.", "senha da chave de <{0}>"},
+        {"Keystore.entry.for.id.getName.already.exists",
+                "A entrada da \u00E1rea do armazenamento de chaves de <{0}> j\u00E1 existe"},
+        {"Creating.keystore.entry.for.id.getName.",
+                "Criando entrada da \u00E1rea do armazenamento de chaves para <{0}> ..."},
+        {"No.entries.from.identity.database.added",
+                "Nenhuma entrada adicionada do banco de dados de identidades"},
+        {"Alias.name.alias", "Nome do alias: {0}"},
+        {"Creation.date.keyStore.getCreationDate.alias.",
+                "Data de cria\u00E7\u00E3o: {0,date}"},
+        {"alias.keyStore.getCreationDate.alias.",
+                "{0}, {1,date}, "},
+        {"alias.", "{0}, "},
+        {"Entry.type.type.", "Tipo de entrada: {0}"},
+        {"Certificate.chain.length.", "Comprimento da cadeia de certificados: "},
+        {"Certificate.i.1.", "Certificado[{0,number,integer}]:"},
+        {"Certificate.fingerprint.SHA1.", "Fingerprint (MD5) do certificado: "},
+        {"Entry.type.trustedCertEntry.", "Tipo de entrada: trustedCertEntry\n"},
+        {"trustedCertEntry.", "trustedCertEntry,"},
+        {"Keystore.type.", "Tipo de \u00E1rea de armazenamento de chaves: "},
+        {"Keystore.provider.", "Fornecedor da \u00E1rea de armazenamento de chaves: "},
+        {"Your.keystore.contains.keyStore.size.entry",
+                "Sua \u00E1rea de armazenamento de chaves cont\u00E9m {0,number,integer} entrada"},
+        {"Your.keystore.contains.keyStore.size.entries",
+                "Sua \u00E1rea de armazenamento de chaves cont\u00E9m {0,number,integer} entradas"},
+        {"Failed.to.parse.input", "Falha durante o parse da entrada"},
+        {"Empty.input", "Entrada vazia"},
+        {"Not.X.509.certificate", "N\u00E3o \u00E9 um certificado X.509"},
+        {"alias.has.no.public.key", "{0} n\u00E3o tem chave p\u00FAblica"},
+        {"alias.has.no.X.509.certificate", "{0} n\u00E3o tem certificado X.509"},
+        {"New.certificate.self.signed.", "Novo certificado (autoassinado):"},
+        {"Reply.has.no.certificates", "A resposta n\u00E3o tem certificado"},
+        {"Certificate.not.imported.alias.alias.already.exists",
+                "Certificado n\u00E3o importado, o alias <{0}> j\u00E1 existe"},
+        {"Input.not.an.X.509.certificate", "A entrada n\u00E3o \u00E9 um certificado X.509"},
+        {"Certificate.already.exists.in.keystore.under.alias.trustalias.",
+                "O certificado j\u00E1 existe no armazenamento de chaves no alias <{0}>"},
+        {"Do.you.still.want.to.add.it.no.",
+                "Ainda deseja adicion\u00E1-lo? [n\u00E3o]:  "},
+        {"Certificate.already.exists.in.system.wide.CA.keystore.under.alias.trustalias.",
+                "O certificado j\u00E1 existe na \u00E1rea de armazenamento de chaves da CA em todo o sistema no alias <{0}>"},
+        {"Do.you.still.want.to.add.it.to.your.own.keystore.no.",
+                "Ainda deseja adicion\u00E1-lo \u00E0 sua \u00E1rea de armazenamento de chaves? [n\u00E3o]:  "},
+        {"Trust.this.certificate.no.", "Confiar neste certificado? [n\u00E3o]:  "},
+        {"YES", "SIM"},
+        {"New.prompt.", "Nova {0}: "},
+        {"Passwords.must.differ", "As senhas devem ser diferentes"},
+        {"Re.enter.new.prompt.", "Informe novamente a nova {0}: "},
+        {"Re.enter.new.password.", "Informe novamente a nova senha: "},
+        {"They.don.t.match.Try.again", "Elas n\u00E3o correspondem. Tente novamente"},
+        {"Enter.prompt.alias.name.", "Informe o nome do alias {0}:  "},
+        {"Enter.new.alias.name.RETURN.to.cancel.import.for.this.entry.",
+                 "Informe o novo nome do alias\t(RETURN para cancelar a importa\u00E7\u00E3o desta entrada):  "},
+        {"Enter.alias.name.", "Informe o nome do alias:  "},
+        {".RETURN.if.same.as.for.otherAlias.",
+                "\t(RETURN se for igual ao de <{0}>)"},
+        {".PATTERN.printX509Cert",
+                "Propriet\u00E1rio: {0}\nEmissor: {1}\nN\u00FAmero de s\u00E9rie: {2}\nV\u00E1lido de: {3} a: {4}\nFingerprints do certificado:\n\t MD5:  {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t Nome do algoritmo de assinatura: {8}\n\t Vers\u00E3o: {9}"},
+        {"What.is.your.first.and.last.name.",
+                "Qual \u00E9 o seu nome e o seu sobrenome?"},
+        {"What.is.the.name.of.your.organizational.unit.",
+                "Qual \u00E9 o nome da sua unidade organizacional?"},
+        {"What.is.the.name.of.your.organization.",
+                "Qual \u00E9 o nome da sua empresa?"},
+        {"What.is.the.name.of.your.City.or.Locality.",
+                "Qual \u00E9 o nome da sua Cidade ou Localidade?"},
+        {"What.is.the.name.of.your.State.or.Province.",
+                "Qual \u00E9 o nome do seu Estado ou Munic\u00EDpio?"},
+        {"What.is.the.two.letter.country.code.for.this.unit.",
+                "Quais s\u00E3o as duas letras do c\u00F3digo do pa\u00EDs desta unidade?"},
+        {"Is.name.correct.", "{0} Est\u00E1 correto?"},
+        {"no", "n\u00E3o"},
+        {"yes", "sim"},
+        {"y", "s"},
+        {".defaultValue.", "  [{0}]:  "},
+        {"Alias.alias.has.no.key",
+                "O alias <{0}> n\u00E3o tem chave"},
+        {"Alias.alias.references.an.entry.type.that.is.not.a.private.key.entry.The.keyclone.command.only.supports.cloning.of.private.key",
+                 "O alias <{0}> faz refer\u00EAncia a um tipo de entrada que n\u00E3o \u00E9 uma entrada de chave privada. O comando -keyclone oferece suporte somente \u00E0 clonagem de entradas de chave privada"},
 
-    {"*****************  WARNING WARNING WARNING  *****************",
-        "*****************  AVISO AVISO AVISO  *****************"},
+        {".WARNING.WARNING.WARNING.",
+            "*****************  WARNING WARNING WARNING  *****************"},
+        {"Signer.d.", "Signat\u00E1rio #%d:"},
+        {"Timestamp.", "Timestamp:"},
+        {"Signature.", "Assinatura:"},
+        {"CRLs.", "CRLs:"},
+        {"Certificate.owner.", "Propriet\u00E1rio do certificado: "},
+        {"Not.a.signed.jar.file", "N\u00E3o \u00E9 um arquivo jar assinado"},
+        {"No.certificate.from.the.SSL.server",
+                "N\u00E3o \u00E9 um certificado do servidor SSL"},
 
         // Translators of the following 5 pairs, ATTENTION:
         // the next 5 string pairs are meant to be combined into 2 paragraphs,
         // 1+3+4 and 2+3+5. make sure your translation also does.
-        {"* The integrity of the information stored in your keystore  *",
-        "* A integridade das informa\u00e7\u00f5es armazenadas no seu armazenamento de chaves  *"},
-        {"* The integrity of the information stored in the srckeystore*",
-            "* A integridade das informa\u00e7\u00f5es armazenadas no srckeystore*"},
-    {"* has NOT been verified!  In order to verify its integrity, *",
-        "* N\u00c3O foi verificada!  Para verificar a integridade destas informa\u00e7\u00f5es, *"},
-    {"* you must provide your keystore password.                  *",
-        "* voc\u00ea deve fornecer a senha do seu armazenamento de chaves.                  *"},
-        {"* you must provide the srckeystore password.                *",
-            "* voc\u00ea deve fornecer a senha do srckeystore.                  *"},
+        {".The.integrity.of.the.information.stored.in.your.keystore.",
+            "* A integridade das informa\u00E7\u00F5es armazenadas na sua \u00E1rea de armazenamento de chaves  *"},
+        {".The.integrity.of.the.information.stored.in.the.srckeystore.",
+            "* A integridade das informa\u00E7\u00F5es armazenadas no srckeystore*"},
+        {".has.NOT.been.verified.In.order.to.verify.its.integrity.",
+            "* N\u00C3O foi verificada! Para verificar a integridade destas informa\u00E7\u00F5es, *"},
+        {".you.must.provide.your.keystore.password.",
+            "* voc\u00EA deve fornecer a senha da sua \u00E1rea de armazenamento de chaves.                 *"},
+        {".you.must.provide.the.srckeystore.password.",
+            "* voc\u00EA deve fornecer a senha do srckeystore.                 *"},
 
 
-    {"Certificate reply does not contain public key for <alias>",
-        "A resposta do certificado n\u00e3o cont\u00e9m a chave p\u00fablica de <{0}>"},
-    {"Incomplete certificate chain in reply",
-        "Cadeia de certificados incompleta na resposta"},
-    {"Certificate chain in reply does not verify: ",
-        "A cadeia de certificados da resposta n\u00e3o verifica: "},
-    {"Top-level certificate in reply:\n",
-        "Certificado de n\u00edvel superior na resposta:\n"},
-    {"... is not trusted. ", "... n\u00e3o \u00e9 confi\u00e1vel. "},
-    {"Install reply anyway? [no]:  ", "Instalar resposta assim mesmo? [n\u00e3o]:  "},
-    {"NO", "N\u00c3O"},
-    {"Public keys in reply and keystore don't match",
-        "As chaves p\u00fablicas da resposta e do armazenamento de chaves n\u00e3o correspondem"},
-    {"Certificate reply and certificate in keystore are identical",
-        "O certificado da resposta e o certificado do armazenamento de chaves s\u00e3o id\u00eanticos"},
-    {"Failed to establish chain from reply",
-        "Falha ao estabelecer a cadeia a partir da resposta"},
-    {"n", "n"},
-    {"Wrong answer, try again", "Resposta errada, tente novamente"},
-    {"Secret key not generated, alias <alias> already exists",
-        "Chave secreta n\u00e3o gerada, o alias <{0}> j\u00e1 existe"},
-        {"Please provide -keysize for secret key generation",
-                "Forne\u00e7a o -keysize para a gera\u00e7\u00e3o da chave secreta"},
-    {"keytool usage:\n", "uso de keytool:\n"},
-
-        {"Extensions: ", "Extens\u00f5es: "},
-
-    {"-certreq     [-v] [-protected]",
-        "-certreq     [-v] [-protected]"},
-    {"\t     [-alias <alias>] [-sigalg <sigalg>]",
-        "\t     [-alias <alias>] [-sigalg <sigalg>]"},
-    {"\t     [-file <csr_file>] [-keypass <keypass>]",
-        "\t     [-file <csr_file>] [-keypass <keypass>]"},
-    {"\t     [-keystore <keystore>] [-storepass <storepass>]",
-        "\t     [-keystore <keystore>] [-storepass <storepass>]"},
-    {"\t     [-storetype <storetype>] [-providername <name>]",
-        "\t     [-storetype <storetype>] [-providername <name>]"},
-    {"\t     [-providerclass <provider_class_name> [-providerarg <arg>]] ...",
-        "\t     [-providerclass <provider_class_name> [-providerarg <arg>]] ..."},
-        {"\t     [-providerpath <pathlist>]",
-                "\t     [-providerpath <pathlist>]"},
-    {"-delete      [-v] [-protected] -alias <alias>",
-        "-delete      [-v] [-protected] -alias <alias>"},
-    /** rest is same as -certreq starting from -keystore **/
-
-        //{"-export      [-v] [-rfc] [-protected]",
-        //       "-export      [-v] [-rfc] [-protected]"},
-    {"-exportcert  [-v] [-rfc] [-protected]",
-        "-exportcert  [-v] [-rfc] [-protected]"},
-    {"\t     [-alias <alias>] [-file <cert_file>]",
-        "\t     [-alias <alias>] [-file <cert_file>]"},
-    /** rest is same as -certreq starting from -keystore **/
+        {"Certificate.reply.does.not.contain.public.key.for.alias.",
+                "A resposta do certificado n\u00E3o cont\u00E9m a chave p\u00FAblica de <{0}>"},
+        {"Incomplete.certificate.chain.in.reply",
+                "Cadeia de certificados incompleta na resposta"},
+        {"Certificate.chain.in.reply.does.not.verify.",
+                "A cadeia de certificados da resposta n\u00E3o verifica: "},
+        {"Top.level.certificate.in.reply.",
+                "Certificado de n\u00EDvel superior na resposta:\n"},
+        {".is.not.trusted.", "... n\u00E3o \u00E9 confi\u00E1vel. "},
+        {"Install.reply.anyway.no.", "Instalar resposta assim mesmo? [n\u00E3o]:  "},
+        {"NO", "N\u00C3O"},
+        {"Public.keys.in.reply.and.keystore.don.t.match",
+                "As chaves p\u00FAblicas da resposta e da \u00E1rea de armazenamento de chaves n\u00E3o correspondem"},
+        {"Certificate.reply.and.certificate.in.keystore.are.identical",
+                "O certificado da resposta e o certificado da \u00E1rea de armazenamento de chaves s\u00E3o id\u00EAnticos"},
+        {"Failed.to.establish.chain.from.reply",
+                "Falha ao estabelecer a cadeia a partir da resposta"},
+        {"n", "n"},
+        {"Wrong.answer.try.again", "Resposta errada; tente novamente"},
+        {"Secret.key.not.generated.alias.alias.already.exists",
+                "Chave secreta n\u00E3o gerada; o alias <{0}> j\u00E1 existe"},
+        {"Please.provide.keysize.for.secret.key.generation",
+                "Forne\u00E7a o -keysize para a gera\u00E7\u00E3o da chave secreta"},
 
-        //{"-genkey      [-v] [-protected]",
-        //        "-genkey      [-v] [-protected]"},
-    {"-genkeypair  [-v] [-protected]",
-        "-genkeypair  [-v] [-protected]"},
-    {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
-    {"\t     [-keyalg <keyalg>] [-keysize <keysize>]",
-        "\t     [-keyalg <keyalg>] [-keysize <keysize>]"},
-    {"\t     [-sigalg <sigalg>] [-dname <dname>]",
-        "\t     [-sigalg <sigalg>] [-dname <dname>]"},
-    {"\t     [-validity <valDays>] [-keypass <keypass>]",
-        "\t     [-validity <valDays>] [-keypass <keypass>]"},
-    /** rest is same as -certreq starting from -keystore **/
-
-    {"-genseckey   [-v] [-protected]",
-        "-genseckey   [-v] [-protected]"},
-    /** rest is same as -certreq starting from -keystore **/
-
-    {"-help", "-help"},
-    //{"-identitydb  [-v] [-protected]",
-    //    "-identitydb  [-v] [-protected]"},
-    //{"\t     [-file <idb_file>]", "\t     [-file <idb_file>]"},
-    /** rest is same as -certreq starting from -keystore **/
-
-        //{"-import      [-v] [-noprompt] [-trustcacerts] [-protected]",
-        //       "-import      [-v] [-noprompt] [-trustcacerts] [-protected]"},
-    {"-importcert  [-v] [-noprompt] [-trustcacerts] [-protected]",
-        "-importcert  [-v] [-noprompt] [-trustcacerts] [-protected]"},
-    {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
-        {"\t     [-alias <alias>] [-keypass <keypass>]",
-            "\t     [-alias <alias>] [-keypass <keypass>]"},
-    {"\t     [-file <cert_file>] [-keypass <keypass>]",
-        "\t     [-file <cert_file>] [-keypass <keypass>]"},
-    /** rest is same as -certreq starting from -keystore **/
+        {"Extensions.", "Extens\u00F5es: "},
+        {".Empty.value.", "(Valor vazio)"},
+        {"Extension.Request.", "Solicita\u00E7\u00E3o de Extens\u00E3o:"},
+        {"PKCS.10.Certificate.Request.Version.1.0.Subject.s.Public.Key.s.format.s.key.",
+                "Solicita\u00E7\u00E3o do Certificado PKCS #10 (Vers\u00E3o 1.0)\nAssunto: %s\nChave P\u00FAblica: %s formato %s chave\n"},
+        {"Unknown.keyUsage.type.", "Tipo de keyUsage desconhecido: "},
+        {"Unknown.extendedkeyUsage.type.", "Tipo de extendedkeyUsage desconhecido: "},
+        {"Unknown.AccessDescription.type.", "Tipo de AccessDescription desconhecido: "},
+        {"Unrecognized.GeneralName.type.", "Tipo de GeneralName n\u00E3o reconhecido: "},
+        {"This.extension.cannot.be.marked.as.critical.",
+                 "Esta extens\u00E3o n\u00E3o pode ser marcada como cr\u00EDtica. "},
+        {"Odd.number.of.hex.digits.found.", "Encontrado n\u00FAmero \u00EDmpar de seis d\u00EDgitos: "},
+        {"Unknown.extension.type.", "Tipo de extens\u00E3o desconhecido: "},
+        {"command.{0}.is.ambiguous.", "o comando {0} \u00E9 amb\u00EDguo:"},
 
-    {"-importkeystore [-v] ",
-                "-importkeystore [-v] "},
-    {"\t     [-srckeystore <srckeystore>] [-destkeystore <destkeystore>]",
-                "\t     [-srckeystore <srckeystore>] [-destkeystore <destkeystore>]"},
-    {"\t     [-srcstoretype <srcstoretype>] [-deststoretype <deststoretype>]",
-                "\t     [-srcstoretype <srcstoretype>] [-deststoretype <deststoretype>]"},
-    {"\t     [-srcprotected] [-destprotected]",
-                "\t     [-srcprotected] [-destprotected]"},
-        {"\t     [-srcstorepass <srcstorepass>] [-deststorepass <deststorepass>]",
-                "\t     [-srcstorepass <srcstorepass>] [-deststorepass <deststorepass>]"},
-        {"\t     [-srcprovidername <srcprovidername>]\n\t     [-destprovidername <destprovidername>]",  // line too long, split to 2
-                 "\t     [-srcprovidername <srcprovidername>]\n\t     [-destprovidername <destprovidername>]"},
-    {"\t     [-srcalias <srcalias> [-destalias <destalias>]",
-                "\t     [-srcalias <srcalias> [-destalias <destalias>]"},
-    {"\t       [-srckeypass <srckeypass>] [-destkeypass <destkeypass>]]",
-                "\t       [-srckeypass <srckeypass>] [-destkeypass <destkeypass>]]"},
-        {"\t     [-noprompt]", "\t     [-noprompt]"},
-    /** rest is same as -certreq starting from -keystore **/
+        // policytool
+        {"Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured.",
+                "Advert\u00EAncia: N\u00E3o existe uma chave p\u00FAblica para o alias {0}. Certifique-se de que um KeyStore esteja configurado adequadamente."},
+        {"Warning.Class.not.found.class", "Advert\u00EAncia: Classe n\u00E3o encontrada: {0}"},
+        {"Warning.Invalid.argument.s.for.constructor.arg",
+                "Advert\u00EAncia: Argumento(s) inv\u00E1lido(s) para o construtor: {0}"},
+        {"Illegal.Principal.Type.type", "Tipo Principal Inv\u00E1lido: {0}"},
+        {"Illegal.option.option", "Op\u00E7\u00E3o inv\u00E1lida: {0}"},
+        {"Usage.policytool.options.", "Uso: policytool [options]"},
+        {".file.file.policy.file.location",
+                "  [-file <file>]    localiza\u00E7\u00E3o do arquivo de pol\u00EDtica"},
+        {"New", "Novo"},
+        {"Open", "Abrir"},
+        {"Save", "Salvar"},
+        {"Save.As", "Salvar Como"},
+        {"View.Warning.Log", "Exibir Log de Advert\u00EAncias"},
+        {"Exit", "Sair"},
+        {"Add.Policy.Entry", "Adicionar Entrada de Pol\u00EDtica"},
+        {"Edit.Policy.Entry", "Editar Entrada de Pol\u00EDtica"},
+        {"Remove.Policy.Entry", "Remover Entrada de Pol\u00EDtica"},
+        {"Edit", "Editar"},
+        {"Retain", "Reter"},
 
-        {"-changealias [-v] [-protected] -alias <alias> -destalias <destalias>",
-                "-changealias [-v] [-protected] -alias <alias> -destalias <destalias>"},
-        {"\t     [-keypass <keypass>]", "\t     [-keypass <keypass>]"},
-
-    //{"-keyclone    [-v] [-protected]",
-    //    "-keyclone    [-v] [-protected]"},
-    //{"\t     [-alias <alias>] -dest <dest_alias>",
-    //    "\t     [-alias <alias>] -dest <dest_alias>"},
-    //{"\t     [-keypass <keypass>] [-new <new_keypass>]",
-    //    "\t     [-keypass <keypass>] [-new <new_keypass>]"},
-    /** rest is same as -certreq starting from -keystore **/
-
-    {"-keypasswd   [-v] [-alias <alias>]",
-        "-keypasswd   [-v] [-alias <alias>]"},
-    {"\t     [-keypass <old_keypass>] [-new <new_keypass>]",
-        "\t     [-keypass <old_keypass>] [-new <new_keypass>]"},
-    /** rest is same as -certreq starting from -keystore **/
+        {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
+            "Advert\u00EAncia: O nome do arquivo pode conter caracteres de escape barra invertida. N\u00E3o \u00E9 necess\u00E1rio fazer o escape dos caracteres de barra invertida (a ferramenta faz o escape dos caracteres conforme necess\u00E1rio ao gravar o conte\u00FAdo da pol\u00EDtica no armazenamento persistente).\n\nClique em Reter para reter o nome da entrada ou clique em Editar para edit\u00E1-lo."},
 
-    {"-list        [-v | -rfc] [-protected]",
-        "-list        [-v | -rfc] [-protected]"},
-    {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
-    /** rest is same as -certreq starting from -keystore **/
-
-    {"-printcert   [-v] [-file <cert_file>]",
-        "-printcert   [-v] [-file <cert_file>]"},
-
-    //{"-selfcert    [-v] [-protected]",
-    //    "-selfcert    [-v] [-protected]"},
-    {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
-    //{"\t     [-dname <dname>] [-validity <valDays>]",
-    //    "\t     [-dname <dname>] [-validity <valDays>]"},
-    //{"\t     [-keypass <keypass>] [-sigalg <sigalg>]",
-    //    "\t     [-keypass <keypass>] [-sigalg <sigalg>]"},
-    /** rest is same as -certreq starting from -keystore **/
-
-    {"-storepasswd [-v] [-new <new_storepass>]",
-        "-storepasswd [-v] [-new <new_storepass>]"},
-    /** rest is same as -certreq starting from -keystore **/
-
-    // policytool
-    {"Warning: A public key for alias 'signers[i]' does not exist.  Make sure a KeyStore is properly configured.",
-        "Aviso: n\u00e3o existe uma chave p\u00fablica para o alias {0}.  Certifique-se de que um KeyStore esteja configurado adequadamente."},
-    {"Warning: Class not found: class", "Aviso: classe n\u00e3o encontrada: {0}"},
-    {"Warning: Invalid argument(s) for constructor: arg",
-        "Aviso: argumento(s) inv\u00e1lido(s) para o construtor: {0}"},
-    {"Illegal Principal Type: type", "Tipo principal ilegal: {0}"},
-    {"Illegal option: option", "Op\u00e7\u00e3o ilegal: {0}"},
-    {"Usage: policytool [options]", "Uso: policytool [op\u00e7\u00f5es]"},
-    {"  [-file <file>]    policy file location",
-        "  [-file <file>]    local do arquivo de pol\u00edtica"},
-    {"New", "Novo"},
-    {"Open", "Abrir"},
-    {"Save", "Salvar"},
-    {"Save As", "Salvar como"},
-    {"View Warning Log", "Visualizar registro de avisos"},
-    {"Exit", "Sair"},
-    {"Add Policy Entry", "Adicionar entrada de pol\u00edtica"},
-    {"Edit Policy Entry", "Editar entrada de pol\u00edtica"},
-    {"Remove Policy Entry", "Remover entrada de pol\u00edtica"},
-    {"Edit", "Editar"},
-        {"Retain", "Conservar"},
-
-        {"Warning: File name may include escaped backslash characters. " +
-                        "It is not necessary to escape backslash characters " +
-                        "(the tool escapes characters as necessary when writing " +
-                        "the policy contents to the persistent store).\n\n" +
-                        "Click on Retain to retain the entered name, or click on " +
-                        "Edit to edit the name.",
-            "Aviso: o nome do arquivo pode incluir caracteres de escape barra invertida. N\u00e3o \u00e9 necess\u00e1rio fazer o escape dos caracteres de barra invertida (a ferramenta faz o escape dos caracteres conforme necess\u00e1rio ao gravar o conte\u00fado da pol\u00edtica no armazenamento persistente).\n\nClique em Conservar para conservar o nome da entrada ou clique em Editar para edit\u00e1-lo."},
-
-        {"Add Public Key Alias", "Adicionar alias de chave p\u00fablica"},
-    {"Remove Public Key Alias", "Remover alias de chave p\u00fablica"},
-    {"File", "Arquivo"},
-    {"KeyStore", "KeyStore"},
-    {"Policy File:", "Arquivo de pol\u00edtica:"},
-    {"Could not open policy file: policyFile: e.toString()",
-        "N\u00e3o foi poss\u00edvel abrir o arquivo de pol\u00edtica: {0}: {1}"},
-    {"Policy Tool", "Ferramenta de pol\u00edtica"},
-    {"Errors have occurred while opening the policy configuration.  View the Warning Log for more information.",
-        "Ocorreram erros ao abrir a configura\u00e7\u00e3o da pol\u00edtica.  Consulte o registro de avisos para obter mais informa\u00e7\u00f5es."},
-    {"Error", "Erro"},
-    {"OK", "OK"},
-    {"Status", "Status"},
-    {"Warning", "Aviso"},
-    {"Permission:                                                       ",
-        "Permiss\u00e3o:                                                       "},
-    {"Principal Type:", "Tipo do principal:"},
-        {"Principal Name:", "Nome do principal:"},
-    {"Target Name:                                                    ",
-        "Nome de destino:                                                    "},
-    {"Actions:                                                             ",
-        "A\u00e7\u00f5es:                                                             "},
-    {"OK to overwrite existing file filename?",
-        "OK para substituir o arquivo existente {0}?"},
-    {"Cancel", "Cancelar"},
-    {"CodeBase:", "CodeBase:"},
-    {"SignedBy:", "SignedBy:"},
-    {"Add Principal", "Adicionar principal"},
-    {"Edit Principal", "Editar principal"},
-    {"Remove Principal", "Remover principal"},
-    {"Principals:", "Principais:"},
-    {"  Add Permission", "  Adicionar permiss\u00e3o"},
-    {"  Edit Permission", "  Editar permiss\u00e3o"},
-    {"Remove Permission", "Remover permiss\u00e3o"},
-    {"Done", "Conclu\u00eddo"},
-    {"KeyStore URL:", "URL do KeyStore:"},
-    {"KeyStore Type:", "Tipo de KeyStore:"},
-    {"KeyStore Provider:", "Fornecedor de KeyStore:"},
-    {"KeyStore Password URL:", "URL da senha do KeyStore:"},
-    {"Principals", "Principais"},
-    {"  Edit Principal:", "  Editar principal:"},
-    {"  Add New Principal:", "  Adicionar novo principal:"},
-    {"Permissions", "Permiss\u00f5es"},
-    {"  Edit Permission:", "  Editar permiss\u00e3o:"},
-    {"  Add New Permission:", "  Adicionar nova permiss\u00e3o:"},
-    {"Signed By:", "Assinado por:"},
-    {"Cannot Specify Principal with a Wildcard Class without a Wildcard Name",
-        "N\u00e3o \u00e9 poss\u00edvel especificar principal com uma classe de coringa sem um nome de coringa"},
-        {"Cannot Specify Principal without a Name",
-            "N\u00e3o \u00e9 poss\u00edvel especificar principal sem um nome"},
-    {"Permission and Target Name must have a value",
-        "O nome de destino e a permiss\u00e3o devem ter um valor"},
-    {"Remove this Policy Entry?", "Remover esta entrada de pol\u00edtica?"},
-    {"Overwrite File", "Substituir arquivo"},
-    {"Policy successfully written to filename",
-        "Pol\u00edtica gravada com \u00eaxito em {0}"},
-    {"null filename", "nome de arquivo nulo"},
-    {"Save changes?", "Salvar altera\u00e7\u00f5es?"},
-    {"Yes", "Sim"},
-    {"No", "N\u00e3o"},
-    {"Policy Entry", "Entrada de pol\u00edtica"},
-    {"Save Changes", "Salvar altera\u00e7\u00f5es"},
-    {"No Policy Entry selected", "Nenhuma entrada de pol\u00edtica selecionada"},
-    {"Unable to open KeyStore: ex.toString()",
-        "N\u00e3o \u00e9 poss\u00edvel abrir o KeyStore: {0}"},
-    {"No principal selected", "Nenhum principal selecionado"},
-    {"No permission selected", "Nenhuma permiss\u00e3o selecionada"},
-    {"name", "nome"},
-    {"configuration type", "tipo de configura\u00e7\u00e3o"},
-    {"environment variable name", "nome da vari\u00e1vel de ambiente"},
-    {"library name", "nome da biblioteca"},
-    {"package name", "nome do pacote"},
-    {"policy type", "tipo de pol\u00edtica"},
-    {"property name", "nome da propriedade"},
-    {"provider name", "nome do fornecedor"},
-        {"Principal List", "Lista de principais"},
-        {"Permission List", "Lista de permiss\u00f5es"},
-        {"Code Base", "Base de c\u00f3digo"},
-        {"KeyStore U R L:", "U R L do KeyStore:"},
-        {"KeyStore Password U R L:", "U R L da senha do KeyStore:"},
+        {"Add.Public.Key.Alias", "Adicionar Alias de Chave P\u00FAblica"},
+        {"Remove.Public.Key.Alias", "Remover Alias de Chave P\u00FAblica"},
+        {"File", "Arquivo"},
+        {"KeyStore", "KeyStore"},
+        {"Policy.File.", "Arquivo de Pol\u00EDtica:"},
+        {"Could.not.open.policy.file.policyFile.e.toString.",
+                "N\u00E3o foi poss\u00EDvel abrir o arquivo de pol\u00EDtica: {0}: {1}"},
+        {"Policy.Tool", "Ferramenta de Pol\u00EDtica"},
+        {"Errors.have.occurred.while.opening.the.policy.configuration.View.the.Warning.Log.for.more.information.",
+                "Erros durante a abertura da configura\u00E7\u00E3o da pol\u00EDtica. Consulte o Log de Advert\u00EAncias para obter mais informa\u00E7\u00F5es."},
+        {"Error", "Erro"},
+        {"OK", "OK"},
+        {"Status", "Status"},
+        {"Warning", "Advert\u00EAncia"},
+        {"Permission.",
+                "Permiss\u00E3o:                                                       "},
+        {"Principal.Type.", "Tipo do Principal:"},
+        {"Principal.Name.", "Nome do Principal:"},
+        {"Target.Name.",
+                "Nome do Alvo:                                                    "},
+        {"Actions.",
+                "A\u00E7\u00F5es:                                                             "},
+        {"OK.to.overwrite.existing.file.filename.",
+                "Est\u00E1 correto substituir o arquivo existente {0}?"},
+        {"Cancel", "Cancelar"},
+        {"CodeBase.", "CodeBase:"},
+        {"SignedBy.", "SignedBy:"},
+        {"Add.Principal", "Adicionar Principal"},
+        {"Edit.Principal", "Editar Principal"},
+        {"Remove.Principal", "Remover Principal"},
+        {"Principals.", "Principais:"},
+        {".Add.Permission", "  Adicionar Permiss\u00E3o"},
+        {".Edit.Permission", "  Editar Permiss\u00E3o"},
+        {"Remove.Permission", "Remover Permiss\u00E3o"},
+        {"Done", "Conclu\u00EDdo"},
+        {"KeyStore.URL.", "URL do KeyStore:"},
+        {"KeyStore.Type.", "Tipo de KeyStore:"},
+        {"KeyStore.Provider.", "Fornecedor de KeyStore:"},
+        {"KeyStore.Password.URL.", "URL da Senha do KeyStore:"},
+        {"Principals", "Principais"},
+        {".Edit.Principal.", "  Editar Principal:"},
+        {".Add.New.Principal.", "  Adicionar Novo Principal:"},
+        {"Permissions", "Permiss\u00F5es"},
+        {".Edit.Permission.", "  Editar Permiss\u00E3o:"},
+        {".Add.New.Permission.", "  Adicionar Nova Permiss\u00E3o:"},
+        {"Signed.By.", "Assinado por:"},
+        {"Cannot.Specify.Principal.with.a.Wildcard.Class.without.a.Wildcard.Name",
+            "N\u00E3o \u00E9 Poss\u00EDvel Especificar um Principal com uma Classe de Curinga sem um Nome de Curinga"},
+        {"Cannot.Specify.Principal.without.a.Name",
+            "N\u00E3o \u00E9 Poss\u00EDvel Especificar um Principal sem um Nome"},
+        {"Permission.and.Target.Name.must.have.a.value",
+                "O Nome de Destino e a Permiss\u00E3o devem ter um Valor"},
+        {"Remove.this.Policy.Entry.", "Remover esta Entrada de Pol\u00EDtica?"},
+        {"Overwrite.File", "Substituir Arquivo"},
+        {"Policy.successfully.written.to.filename",
+                "Pol\u00EDtica gravada com \u00EAxito em {0}"},
+        {"null.filename", "nome de arquivo nulo"},
+        {"Save.changes.", "Salvar altera\u00E7\u00F5es?"},
+        {"Yes", "Sim"},
+        {"No", "N\u00E3o"},
+        {"Policy.Entry", "Entrada de Pol\u00EDtica"},
+        {"Save.Changes", "Salvar Altera\u00E7\u00F5es"},
+        {"No.Policy.Entry.selected", "Nenhuma Entrada de Pol\u00EDtica Selecionada"},
+        {"Unable.to.open.KeyStore.ex.toString.",
+                "N\u00E3o \u00E9 poss\u00EDvel abrir a KeyStore: {0}"},
+        {"No.principal.selected", "Nenhum principal selecionado"},
+        {"No.permission.selected", "Nenhuma permiss\u00E3o selecionada"},
+        {"name", "nome"},
+        {"configuration.type", "tipo de configura\u00E7\u00E3o"},
+        {"environment.variable.name", "nome da vari\u00E1vel de ambiente"},
+        {"library.name", "nome da biblioteca"},
+        {"package.name", "nome do pacote"},
+        {"policy.type", "tipo de pol\u00EDtica"},
+        {"property.name", "nome da propriedade"},
+        {"Principal.List", "Lista de Principais"},
+        {"Permission.List", "Lista de Permiss\u00F5es"},
+        {"Code.Base", "Base de C\u00F3digo"},
+        {"KeyStore.U.R.L.", "U R L da KeyStore:"},
+        {"KeyStore.Password.U.R.L.", "U R L da Senha do KeyStore:"},
 
 
-    // javax.security.auth.PrivateCredentialPermission
-    {"invalid null input(s)", "entrada(s) nula(s) inv\u00e1lida(s)"},
-    {"actions can only be 'read'", "as a\u00e7\u00f5es podem ser somente 'lidas'"},
-    {"permission name [name] syntax invalid: ",
-        "sintaxe inv\u00e1lida do nome da permiss\u00e3o [{0}]: "},
-    {"Credential Class not followed by a Principal Class and Name",
-        "Classe da credencial n\u00e3o seguida por um nome e classe do principal"},
-    {"Principal Class not followed by a Principal Name",
-        "Classe do principal n\u00e3o seguida por um nome do principal"},
-    {"Principal Name must be surrounded by quotes",
-        "O nome do principal deve estar entre aspas"},
-    {"Principal Name missing end quote",
-        "Faltam as aspas finais no nome do principal "},
-    {"PrivateCredentialPermission Principal Class can not be a wildcard (*) value if Principal Name is not a wildcard (*) value",
-        "A classe do principal PrivateCredentialPermission n\u00e3o pode ser um valor coringa (*) se o nome do principal n\u00e3o for um valor coringa (*)"},
-    {"CredOwner:\n\tPrincipal Class = class\n\tPrincipal Name = name",
-        "CredOwner:\n\tClasse do principal = {0}\n\tNome do principal = {1}"},
+        // javax.security.auth.PrivateCredentialPermission
+        {"invalid.null.input.s.", "entrada(s) nula(s) inv\u00E1lida(s)"},
+        {"actions.can.only.be.read.", "as a\u00E7\u00F5es s\u00F3 podem ser 'lidas'"},
+        {"permission.name.name.syntax.invalid.",
+                "sintaxe inv\u00E1lida do nome da permiss\u00E3o [{0}]: "},
+        {"Credential.Class.not.followed.by.a.Principal.Class.and.Name",
+                "Classe da Credencial n\u00E3o seguida por um Nome e uma Classe do Principal"},
+        {"Principal.Class.not.followed.by.a.Principal.Name",
+                "Classe do Principal n\u00E3o seguida por um Nome do Principal"},
+        {"Principal.Name.must.be.surrounded.by.quotes",
+                "O Nome do Principal deve estar entre aspas"},
+        {"Principal.Name.missing.end.quote",
+                "Faltam as aspas finais no Nome do Principal"},
+        {"PrivateCredentialPermission.Principal.Class.can.not.be.a.wildcard.value.if.Principal.Name.is.not.a.wildcard.value",
+                "A Classe do Principal PrivateCredentialPermission n\u00E3o pode ser um valor curinga (*) se o Nome do Principal n\u00E3o for um valor curinga (*)"},
+        {"CredOwner.Principal.Class.class.Principal.Name.name",
+                "CredOwner:\n\tClasse do Principal = {0}\n\tNome do Principal = {1}"},
 
-    // javax.security.auth.x500
-    {"provided null name", "nome nulo fornecido"},
-    {"provided null keyword map", "mapa de palavra-chave nulo fornecido"},
-    {"provided null OID map", "mapa OID nulo fornecido"},
+        // javax.security.auth.x500
+        {"provided.null.name", "nome nulo fornecido"},
+        {"provided.null.keyword.map", "mapa de palavra-chave nulo fornecido"},
+        {"provided.null.OID.map", "mapa OID nulo fornecido"},
 
-    // javax.security.auth.Subject
-    {"invalid null AccessControlContext provided",
-        "AccessControlContext nulo inv\u00e1lido fornecido"},
-    {"invalid null action provided", "a\u00e7\u00e3o nula inv\u00e1lida fornecida"},
-    {"invalid null Class provided", "classe nula inv\u00e1lida fornecida"},
-    {"Subject:\n", "Subject:\n"},
-    {"\tPrincipal: ", "\tPrincipal: "},
-    {"\tPublic Credential: ", "\tCredencial p\u00fablica: "},
-    {"\tPrivate Credentials inaccessible\n",
-        "\tCredenciais privadas inacess\u00edveis\n"},
-    {"\tPrivate Credential: ", "\tCredencial privada: "},
-    {"\tPrivate Credential inaccessible\n",
-        "\tCredencial privada inacess\u00edvel\n"},
-    {"Subject is read-only", "O Subject \u00e9 de somente leitura"},
-    {"attempting to add an object which is not an instance of java.security.Principal to a Subject's Principal Set",
-        "tentativa de adicionar um objeto que n\u00e3o \u00e9 uma inst\u00e2ncia de java.security.Principal a um conjunto de principais do Subject"},
-    {"attempting to add an object which is not an instance of class",
-        "tentativa de adicionar um objeto que n\u00e3o \u00e9 uma inst\u00e2ncia de {0}"},
+        // javax.security.auth.Subject
+        {"invalid.null.AccessControlContext.provided",
+                "AccessControlContext nulo inv\u00E1lido fornecido"},
+        {"invalid.null.action.provided", "a\u00E7\u00E3o nula inv\u00E1lida fornecida"},
+        {"invalid.null.Class.provided", "Classe nula inv\u00E1lida fornecida"},
+        {"Subject.", "Assunto:\n"},
+        {".Principal.", "\tPrincipal: "},
+        {".Public.Credential.", "\tCredencial P\u00FAblica: "},
+        {".Private.Credentials.inaccessible.",
+                "\tCredenciais Privadas inacess\u00EDveis\n"},
+        {".Private.Credential.", "\tCredencial Privada: "},
+        {".Private.Credential.inaccessible.",
+                "\tCredencial Privada inacess\u00EDvel\n"},
+        {"Subject.is.read.only", "O Assunto \u00E9 somente para leitura"},
+        {"attempting.to.add.an.object.which.is.not.an.instance.of.java.security.Principal.to.a.Subject.s.Principal.Set",
+                "tentativa de adicionar um objeto que n\u00E3o \u00E9 uma inst\u00E2ncia de java.security.Principal a um conjunto de principais do Subject"},
+        {"attempting.to.add.an.object.which.is.not.an.instance.of.class",
+                "tentativa de adicionar um objeto que n\u00E3o \u00E9 uma inst\u00E2ncia de {0}"},
 
-    // javax.security.auth.login.AppConfigurationEntry
-    {"LoginModuleControlFlag: ", "LoginModuleControlFlag: "},
+        // javax.security.auth.login.AppConfigurationEntry
+        {"LoginModuleControlFlag.", "LoginModuleControlFlag: "},
 
-    // javax.security.auth.login.LoginContext
-    {"Invalid null input: name", "Entrada nula inv\u00e1lida: nome"},
-    {"No LoginModules configured for name",
-     "Nenhum LoginModule configurado para {0}"},
-    {"invalid null Subject provided", "Subject nulo inv\u00e1lido fornecido"},
-    {"invalid null CallbackHandler provided",
-        "CallbackHandler nulo inv\u00e1lido fornecido"},
-    {"null subject - logout called before login",
-        "Subject nulo - logoff chamado antes do logon"},
-    {"unable to instantiate LoginModule, module, because it does not provide a no-argument constructor",
-        "n\u00e3o \u00e9 poss\u00edvel instanciar LoginModule, {0}, porque n\u00e3o fornece um construtor sem argumento"},
-    {"unable to instantiate LoginModule",
-        "n\u00e3o \u00e9 poss\u00edvel instanciar LoginModule"},
-    {"unable to instantiate LoginModule: ",
-        "n\u00e3o \u00e9 poss\u00edvel instanciar LoginModule: "},
-    {"unable to find LoginModule class: ",
-        "n\u00e3o \u00e9 poss\u00edvel localizar a classe LoginModule: "},
-    {"unable to access LoginModule: ",
-        "n\u00e3o \u00e9 poss\u00edvel acessar LoginModule: "},
-    {"Login Failure: all modules ignored",
-        "Falha de logon: todos os m\u00f3dulos ignorados"},
+        // javax.security.auth.login.LoginContext
+        {"Invalid.null.input.name", "Entrada nula inv\u00E1lida: nome"},
+        {"No.LoginModules.configured.for.name",
+         "Nenhum LoginModule configurado para {0}"},
+        {"invalid.null.Subject.provided", "Subject nulo inv\u00E1lido fornecido"},
+        {"invalid.null.CallbackHandler.provided",
+                "CallbackHandler nulo inv\u00E1lido fornecido"},
+        {"null.subject.logout.called.before.login",
+                "Subject nulo - log-out chamado antes do log-in"},
+        {"unable.to.instantiate.LoginModule.module.because.it.does.not.provide.a.no.argument.constructor",
+                "n\u00E3o \u00E9 poss\u00EDvel instanciar LoginModule, {0}, porque ele n\u00E3o fornece um construtor sem argumento"},
+        {"unable.to.instantiate.LoginModule",
+                "n\u00E3o \u00E9 poss\u00EDvel instanciar LoginModule"},
+        {"unable.to.instantiate.LoginModule.",
+                "n\u00E3o \u00E9 poss\u00EDvel instanciar LoginModule: "},
+        {"unable.to.find.LoginModule.class.",
+                "n\u00E3o \u00E9 poss\u00EDvel localizar a classe LoginModule: "},
+        {"unable.to.access.LoginModule.",
+                "n\u00E3o \u00E9 poss\u00EDvel acessar LoginModule: "},
+        {"Login.Failure.all.modules.ignored",
+                "Falha de Log-in: todos os m\u00F3dulos ignorados"},
 
-    // sun.security.provider.PolicyFile
+        // sun.security.provider.PolicyFile
 
-    {"java.security.policy: error parsing policy:\n\tmessage",
-        "java.security.policy: erro ao analisar {0}:\n\t{1}"},
-    {"java.security.policy: error adding Permission, perm:\n\tmessage",
-        "java.security.policy: erro ao adicionar permiss\u00e3o, {0}:\n\t{1}"},
-    {"java.security.policy: error adding Entry:\n\tmessage",
-        "java.security.policy: erro ao adicionar entrada:\n\t{0}"},
-    {"alias name not provided (pe.name)", "nome de alias n\u00e3o fornecido ({0})"},
-    {"unable to perform substitution on alias, suffix",
-        "n\u00e3o \u00e9 poss\u00edvel realizar a substitui\u00e7\u00e3o no alias, {0}"},
-    {"substitution value, prefix, unsupported",
-        "valor da substitui\u00e7\u00e3o, {0}, n\u00e3o suportado"},
-    {"(", "("},
-    {")", ")"},
-    {"type can't be null","o tipo n\u00e3o pode ser nulo"},
+        {"java.security.policy.error.parsing.policy.message",
+                "java.security.policy: erro durante o parse de {0}:\n\t{1}"},
+        {"java.security.policy.error.adding.Permission.perm.message",
+                "java.security.policy: erro ao adicionar a permiss\u00E3o, {0}:\n\t{1}"},
+        {"java.security.policy.error.adding.Entry.message",
+                "java.security.policy: erro ao adicionar a Entrada:\n\t{0}"},
+        {"alias.name.not.provided.pe.name.", "nome de alias n\u00E3o fornecido ({0})"},
+        {"unable.to.perform.substitution.on.alias.suffix",
+                "n\u00E3o \u00E9 poss\u00EDvel realizar a substitui\u00E7\u00E3o no alias, {0}"},
+        {"substitution.value.prefix.unsupported",
+                "valor da substitui\u00E7\u00E3o, {0}, n\u00E3o suportado"},
+        {"LPARAM", "("},
+        {"RPARAM", ")"},
+        {"type.can.t.be.null","o tipo n\u00E3o pode ser nulo"},
 
-    // sun.security.provider.PolicyParser
-    {"keystorePasswordURL can not be specified without also specifying keystore",
-        "keystorePasswordURL n\u00e3o pode ser especificado sem que o armazenamento de chaves tamb\u00e9m seja especificado"},
-    {"expected keystore type", "tipo de armazenamento de chaves esperado"},
-    {"expected keystore provider", "fornecedor de armazenamento de chaves esperado"},
-    {"multiple Codebase expressions",
-            "v\u00e1rias express\u00f5es CodeBase"},
-        {"multiple SignedBy expressions","v\u00e1rias express\u00f5es SignedBy"},
-    {"SignedBy has empty alias","SignedBy possui alias vazio"},
-    {"can not specify Principal with a wildcard class without a wildcard name",
-        "n\u00e3o \u00e9 poss\u00edvel especificar principal com uma classe de coringa sem um nome de coringa"},
-    {"expected codeBase or SignedBy or Principal",
-        "CodeBase ou SignedBy ou Principal esperado"},
-    {"expected permission entry", "entrada de permiss\u00e3o esperada"},
-    {"number ", "n\u00famero "},
-    {"expected [expect], read [end of file]",
-        "esperado [{0}], lido [fim do arquivo]"},
-    {"expected [;], read [end of file]",
-        "esperado [;], lido [fim do arquivo]"},
-    {"line number: msg", "linha {0}: {1}"},
-    {"line number: expected [expect], found [actual]",
-        "linha {0}: esperado [{1}], encontrado [{2}]"},
-    {"null principalClass or principalName",
-        "principalClass ou principalName nulo "},
+        // sun.security.provider.PolicyParser
+        {"keystorePasswordURL.can.not.be.specified.without.also.specifying.keystore",
+                "keystorePasswordURL n\u00E3o pode ser especificado sem que a \u00E1rea de armazenamento de chaves tamb\u00E9m seja especificada"},
+        {"expected.keystore.type", "tipo de armazenamento de chaves esperado"},
+        {"expected.keystore.provider", "fornecedor da \u00E1rea de armazenamento de chaves esperado"},
+        {"multiple.Codebase.expressions",
+                "v\u00E1rias express\u00F5es CodeBase"},
+        {"multiple.SignedBy.expressions","v\u00E1rias express\u00F5es SignedBy"},
+        {"SignedBy.has.empty.alias","SignedBy tem alias vazio"},
+        {"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name",
+                "n\u00E3o \u00E9 poss\u00EDvel especificar um principal com uma classe curinga sem um nome curinga"},
+        {"expected.codeBase.or.SignedBy.or.Principal",
+                "CodeBase ou SignedBy ou Principal esperado"},
+        {"expected.permission.entry", "entrada de permiss\u00E3o esperada"},
+        {"number.", "n\u00FAmero "},
+        {"expected.expect.read.end.of.file.",
+                "esperado [{0}], lido [fim do arquivo]"},
+        {"expected.read.end.of.file.",
+                "esperado [;], lido [fim do arquivo]"},
+        {"line.number.msg", "linha {0}: {1}"},
+        {"line.number.expected.expect.found.actual.",
+                "linha {0}: esperada [{1}], encontrada [{2}]"},
+        {"null.principalClass.or.principalName",
+                "principalClass ou principalName nulo"},
 
-    // sun.security.pkcs11.SunPKCS11
-    {"PKCS11 Token [providerName] Password: ",
-        "Senha PKCS11 Token [{0}]: "},
+        // sun.security.pkcs11.SunPKCS11
+        {"PKCS11.Token.providerName.Password.",
+                "Senha PKCS11 de Token [{0}]: "},
 
-    /* --- DEPRECATED --- */
-    // javax.security.auth.Policy
-    {"unable to instantiate Subject-based policy",
-        "n\u00e3o \u00e9 poss\u00edvel instanciar a pol\u00edtica com base em Subject"}
+        /* --- DEPRECATED --- */
+        // javax.security.auth.Policy
+        {"unable.to.instantiate.Subject.based.policy",
+                "n\u00E3o \u00E9 poss\u00EDvel instanciar a pol\u00EDtica com base em Subject"}
     };
 
 
@@ -641,6 +667,7 @@
      * @return the contents of this <code>ResourceBundle</code>.
      */
     public Object[][] getContents() {
-    return contents;
+        return contents;
     }
 }
+
--- a/jdk/src/share/classes/sun/security/util/Resources_sv.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/util/Resources_sv.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, 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
@@ -35,605 +35,627 @@
     private static final Object[][] contents = {
 
         // shared (from jarsigner)
-        {" ", " "},
-        {"  ", "  "},
-        {"      ", "      "},
-        {", ", ", "},
+        {"SPACE", " "},
+        {"2SPACE", "  "},
+        {"6SPACE", "      "},
+        {"COMMA", ", "},
         // shared (from keytool)
-        {"\n", "\n"},
-        {"*******************************************",
+        {"NEWLINE", "\n"},
+        {"STAR",
                 "*******************************************"},
-        {"*******************************************\n\n",
+        {"STARNN",
                 "*******************************************\n\n"},
 
-        // keytool
-        {"keytool error: ", "nyckelverktygsfel: "},
-        {"Illegal option:  ", "Ogiltigt alternativ:  "},
-        {"Try keytool -help","Try keytool -help"},
-        {"Command option <flag> needs an argument.", "Kommandoalternativet {0} beh\u00f6ver ett argument."},
-        {"Warning:  Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified <command> value.",
-                "Varning!  PKCS12 KeyStores har inte st\u00f6d f\u00f6r olika l\u00f6senord f\u00f6r lagret och nyckeln. Det anv\u00e4ndarspecificerade {0}-v\u00e4rdet ignoreras."},
-        {"-keystore must be NONE if -storetype is {0}",
-                "-keystore m\u00e5ste vara NONE om -storetype \u00e4r {0}"},
-        {"Too may retries, program terminated",
-                 "F\u00f6r m\u00e5nga f\u00f6rs\u00f6k. Programmet avslutas."},
-        {"-storepasswd and -keypasswd commands not supported if -storetype is {0}",
-                "-storepasswd- och -keypasswd-kommandon st\u00f6ds inte om -storetype \u00e4r {0}"},
-        {"-keypasswd commands not supported if -storetype is PKCS12",
-                " \u0096keypasswd-kommandon st\u00f6ds inte om -storetype \u00e4r inst\u00e4lld p\u00e5 PKCS12"},
-        {"-keypass and -new can not be specified if -storetype is {0}",
-                "-keypass och -new kan inte anges om -storetype \u00e4r {0}"},
-        {"if -protected is specified, then -storepass, -keypass, and -new must not be specified",
-                "om -protected har angetts f\u00e5r inte -storepass, -keypass och -new anges"},
-        {"if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified",
-                "om -srcprotected anges f\u00e5r -srcstorepass och -srckeypass inte anges"},
-        {"if keystore is not password protected, then -storepass, -keypass, and -new must not be specified",
-                "om nyckelfilen inte \u00e4r l\u00f6senordsskyddad f\u00e5r -storepass, -keypass och -new inte anges"},
-        {"if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified",
-                "om k\u00e4llnyckelfilen inte \u00e4r l\u00f6senordsskyddad f\u00e5r -srcstorepass och -srckeypass inte anges"},
-        {"Validity must be greater than zero",
-                "Giltigheten m\u00e5ste vara st\u00f6rre \u00e4n noll"},
-        {"provName not a provider", "{0} inte en leverant\u00f6r"},
-        {"Usage error: no command provided", "Anv\u00e4ndningsfel: inget kommando angivet"},
-        {"Usage error, <arg> is not a legal command", "Anv\u00e4ndningsfel: {0} \u00e4r inte ett giltigt kommando"},
-        {"Source keystore file exists, but is empty: ", "Nyckellagrets k\u00e4llfil finns, men \u00e4r tom: "},
-        {"Please specify -srckeystore", "Ange -srckeystore"},
-        {"Must not specify both -v and -rfc with 'list' command",
-                "Det g\u00e5r inte att specificera b\u00e5de -v och -rfc med 'list'-kommandot"},
-        {"Key password must be at least 6 characters",
-                "Nyckell\u00f6senordet m\u00e5ste inneh\u00e5lla minst 6 tecken"},
-        {"New password must be at least 6 characters",
-                "Det nya l\u00f6senordet m\u00e5ste inneh\u00e5lla minst 6 tecken"},
-        {"Keystore file exists, but is empty: ",
-                "Keystore-filen finns, men \u00e4r tom: "},
-        {"Keystore file does not exist: ",
-                "Keystore-filen finns inte: "},
-        {"Must specify destination alias", "Du m\u00e5ste ange destinations-alias"},
-        {"Must specify alias", "Du m\u00e5ste ange alias"},
-        {"Keystore password must be at least 6 characters",
-                "Keystore-l\u00f6senordet m\u00e5ste inneh\u00e5lla minst 6 tecken"},
-        {"Enter keystore password:  ", "Ange keystore-l\u00f6senord:  "},
-        {"Enter source keystore password:  ", "Ange l\u00f6senord f\u00f6r k\u00e4llnyckellagret:  "},
-        {"Enter destination keystore password:  ", "Ange destination f\u00f6r nyckellagrets l\u00f6senord:  "},
-        {"Keystore password is too short - must be at least 6 characters",
-         "Keystore-l\u00f6senordet \u00e4r f\u00f6r kort - det m\u00e5ste inneh\u00e5lla minst 6 tecken"},
-        {"Unknown Entry Type", "Ok\u00e4nd posttyp"},
-        {"Too many failures. Alias not changed", "Alias har inte \u00e4ndrats p.g.a. f\u00f6r m\u00e5nga fel."},
-        {"Entry for alias <alias> successfully imported.",
-                 "Posten f\u00f6r alias {0} har importerats."},
-        {"Entry for alias <alias> not imported.", "Posten f\u00f6r alias {0} har inte importerats."},
-        {"Problem importing entry for alias <alias>: <exception>.\nEntry for alias <alias> not imported.",
-                 "Ett problem uppstod vid importen av posten f\u00f6r alias {0}: {1}.\nPosten har inte importerats."},
-        {"Import command completed:  <ok> entries successfully imported, <fail> entries failed or cancelled",
-                 "Kommandoimporten slutf\u00f6rd: {0} poster har importerats, {1} poster var felaktiga eller utesl\u00f6ts"},
-        {"Warning: Overwriting existing alias <alias> in destination keystore",
-                 "Varning! Det befintliga aliaset {0} i m\u00e5lnyckellagret skrivs \u00f6ver"},
-        {"Existing entry alias <alias> exists, overwrite? [no]:  ",
-                 "Aliaset {0} finns redan. Vill du skriva \u00f6ver det? [no]:  "},
-        {"Too many failures - try later", "F\u00f6r m\u00e5nga fel - f\u00f6rs\u00f6k igen senare"},
-        {"Certification request stored in file <filename>",
-                "Certifikat-f\u00f6rfr\u00e5gan har lagrats i filen <{0}>"},
-        {"Submit this to your CA", "Skicka detta till din CA"},
-        {"if alias not specified, destalias, srckeypass, and destkeypass must not be specified",
-            "om n\u00e5got alias inte anges f\u00e5r destalias, srckeypass och destkeypass inte anges"},
-        {"Certificate stored in file <filename>",
+        // keytool: Help part
+        {".OPTION.", " [OPTION]..."},
+        {"Options.", "Alternativ:"},
+        {"Use.keytool.help.for.all.available.commands",
+                 "L\u00E4s \"Hj\u00E4lp - Nyckelverktyg\" f\u00F6r alla tillg\u00E4ngliga kommandon"},
+        {"Key.and.Certificate.Management.Tool",
+                 "Hanteringsverktyg f\u00F6r nycklar och certifikat"},
+        {"Commands.", "Kommandon:"},
+        {"Use.keytool.command.name.help.for.usage.of.command.name",
+                "L\u00E4s \"Hj\u00E4lp - Nyckelverktyg - command_name\" om anv\u00E4ndning av command_name"},
+        // keytool: help: commands
+        {"Generates.a.certificate.request",
+                "Genererar certifikatbeg\u00E4ran"}, //-certreq
+        {"Changes.an.entry.s.alias",
+                "\u00C4ndrar postalias"}, //-changealias
+        {"Deletes.an.entry",
+                "Tar bort post"}, //-delete
+        {"Exports.certificate",
+                "Exporterar certifikat"}, //-exportcert
+        {"Generates.a.key.pair",
+                "Genererar nyckelpar"}, //-genkeypair
+        {"Generates.a.secret.key",
+                "Genererar hemlig nyckel"}, //-genseckey
+        {"Generates.certificate.from.a.certificate.request",
+                "Genererar certifikat fr\u00E5n certifikatbeg\u00E4ran"}, //-gencert
+        {"Generates.CRL", "Genererar CRL"}, //-gencrl
+        {"Imports.entries.from.a.JDK.1.1.x.style.identity.database",
+                "Importerar poster fr\u00E5n identitetsdatabas i JDK 1.1.x-format"}, //-identitydb
+        {"Imports.a.certificate.or.a.certificate.chain",
+                "Importerar ett certifikat eller en certifikatkedja"}, //-importcert
+        {"Imports.one.or.all.entries.from.another.keystore",
+                "Importerar en eller alla poster fr\u00E5n annat nyckellager"}, //-importkeystore
+        {"Clones.a.key.entry",
+                "Klonar en nyckelpost"}, //-keyclone
+        {"Changes.the.key.password.of.an.entry",
+                "\u00C4ndrar nyckell\u00F6senordet f\u00F6r en post"}, //-keypasswd
+        {"Lists.entries.in.a.keystore",
+                "Visar lista \u00F6ver poster i nyckellager"}, //-list
+        {"Prints.the.content.of.a.certificate",
+                "Skriver ut inneh\u00E5llet i ett certifikat"}, //-printcert
+        {"Prints.the.content.of.a.certificate.request",
+                "Skriver ut inneh\u00E5llet i en certifikatbeg\u00E4ran"}, //-printcertreq
+        {"Prints.the.content.of.a.CRL.file",
+                "Skriver ut inneh\u00E5llet i en CRL-fil"}, //-printcrl
+        {"Generates.a.self.signed.certificate",
+                "Genererar ett sj\u00E4lvsignerat certifikat"}, //-selfcert
+        {"Changes.the.store.password.of.a.keystore",
+                "\u00C4ndrar lagerl\u00F6senordet f\u00F6r ett nyckellager"}, //-storepasswd
+        // keytool: help: options
+        {"alias.name.of.the.entry.to.process",
+                "aliasnamn f\u00F6r post som ska bearbetas"}, //-alias
+        {"destination.alias",
+                "destinationsalias"}, //-destalias
+        {"destination.key.password",
+                "l\u00F6senord f\u00F6r destinationsnyckel"}, //-destkeypass
+        {"destination.keystore.name",
+                "namn p\u00E5 destinationsnyckellager"}, //-destkeystore
+        {"destination.keystore.password.protected",
+                "skyddat l\u00F6senord f\u00F6r destinationsnyckellager"}, //-destprotected
+        {"destination.keystore.provider.name",
+                "leverant\u00F6rsnamn f\u00F6r destinationsnyckellager"}, //-destprovidername
+        {"destination.keystore.password",
+                "l\u00F6senord f\u00F6r destinationsnyckellager"}, //-deststorepass
+        {"destination.keystore.type",
+                "typ av destinationsnyckellager"}, //-deststoretype
+        {"distinguished.name",
+                "unikt namn"}, //-dname
+        {"X.509.extension",
+                "X.509-till\u00E4gg"}, //-ext
+        {"output.file.name",
+                "namn p\u00E5 utdatafil"}, //-file and -outfile
+        {"input.file.name",
+                "namn p\u00E5 indatafil"}, //-file and -infile
+        {"key.algorithm.name",
+                "namn p\u00E5 nyckelalgoritm"}, //-keyalg
+        {"key.password",
+                "nyckell\u00F6senord"}, //-keypass
+        {"key.bit.size",
+                "nyckelbitstorlek"}, //-keysize
+        {"keystore.name",
+                "namn p\u00E5 nyckellager"}, //-keystore
+        {"new.password",
+                "nytt l\u00F6senord"}, //-new
+        {"do.not.prompt",
+                "fr\u00E5ga inte"}, //-noprompt
+        {"password.through.protected.mechanism",
+                "l\u00F6senord med skyddad mekanism"}, //-protected
+        {"provider.argument",
+                "leverant\u00F6rsargument"}, //-providerarg
+        {"provider.class.name",
+                "namn p\u00E5 leverant\u00F6rsklass"}, //-providerclass
+        {"provider.name",
+                "leverant\u00F6rsnamn"}, //-providername
+        {"provider.classpath",
+                "leverant\u00F6rsklass\u00F6kv\u00E4g"}, //-providerpath
+        {"output.in.RFC.style",
+                "utdata i RFC-format"}, //-rfc
+        {"signature.algorithm.name",
+                "namn p\u00E5 signaturalgoritm"}, //-sigalg
+        {"source.alias",
+                "k\u00E4llalias"}, //-srcalias
+        {"source.key.password",
+                "l\u00F6senord f\u00F6r k\u00E4llnyckel"}, //-srckeypass
+        {"source.keystore.name",
+                "namn p\u00E5 k\u00E4llnyckellager"}, //-srckeystore
+        {"source.keystore.password.protected",
+                "skyddat l\u00F6senord f\u00F6r k\u00E4llnyckellager"}, //-srcprotected
+        {"source.keystore.provider.name",
+                "leverant\u00F6rsnamn f\u00F6r k\u00E4llnyckellager"}, //-srcprovidername
+        {"source.keystore.password",
+                "l\u00F6senord f\u00F6r k\u00E4llnyckellager"}, //-srcstorepass
+        {"source.keystore.type",
+                "typ av k\u00E4llnyckellager"}, //-srcstoretype
+        {"SSL.server.host.and.port",
+                "SSL-serverv\u00E4rd och -port"}, //-sslserver
+        {"signed.jar.file",
+                "signerad jar-fil"}, //=jarfile
+        {"certificate.validity.start.date.time",
+                "startdatum/-tid f\u00F6r certifikatets giltighet"}, //-startdate
+        {"keystore.password",
+                "l\u00F6senord f\u00F6r nyckellager"}, //-storepass
+        {"keystore.type",
+                "nyckellagertyp"}, //-storetype
+        {"trust.certificates.from.cacerts",
+                "tillf\u00F6rlitliga certifikat fr\u00E5n cacerts"}, //-trustcacerts
+        {"verbose.output",
+                "utf\u00F6rliga utdata"}, //-v
+        {"validity.number.of.days",
+                "antal dagar f\u00F6r giltighet"}, //-validity
+        {"Serial.ID.of.cert.to.revoke",
+                 "Seriellt ID f\u00F6r certifikat som ska \u00E5terkallas"}, //-id
+        // keytool: Running part
+        {"keytool.error.", "nyckelverktygsfel: "},
+        {"Illegal.option.", "Otill\u00E5tet alternativ:  "},
+        {"Illegal.value.", "Otill\u00E5tet v\u00E4rde: "},
+        {"Unknown.password.type.", "Ok\u00E4nd l\u00F6senordstyp: "},
+        {"Cannot.find.environment.variable.",
+                "Kan inte hitta milj\u00F6variabel: "},
+        {"Cannot.find.file.", "Hittar inte fil: "},
+        {"Command.option.flag.needs.an.argument.", "Kommandoalternativet {0} beh\u00F6ver ett argument."},
+        {"Warning.Different.store.and.key.passwords.not.supported.for.PKCS12.KeyStores.Ignoring.user.specified.command.value.",
+                "Varning!  PKCS12-nyckellager har inte st\u00F6d f\u00F6r olika l\u00F6senord f\u00F6r lagret och nyckeln. Det anv\u00E4ndarspecificerade {0}-v\u00E4rdet ignoreras."},
+        {".keystore.must.be.NONE.if.storetype.is.{0}",
+                "-keystore m\u00E5ste vara NONE om -storetype \u00E4r {0}"},
+        {"Too.many.retries.program.terminated",
+                 "F\u00F6r m\u00E5nga f\u00F6rs\u00F6k. Programmet avslutas"},
+        {".storepasswd.and.keypasswd.commands.not.supported.if.storetype.is.{0}",
+                "-storepasswd- och -keypasswd-kommandon st\u00F6ds inte om -storetype \u00E4r {0}"},
+        {".keypasswd.commands.not.supported.if.storetype.is.PKCS12",
+                "-keypasswd-kommandon st\u00F6ds inte om -storetype \u00E4r PKCS12"},
+        {".keypass.and.new.can.not.be.specified.if.storetype.is.{0}",
+                "-keypass och -new kan inte anges om -storetype \u00E4r {0}"},
+        {"if.protected.is.specified.then.storepass.keypass.and.new.must.not.be.specified",
+                "om -protected har angetts f\u00E5r inte -storepass, -keypass och -new anges"},
+        {"if.srcprotected.is.specified.then.srcstorepass.and.srckeypass.must.not.be.specified",
+                "om -srcprotected anges f\u00E5r -srcstorepass och -srckeypass inte anges"},
+        {"if.keystore.is.not.password.protected.then.storepass.keypass.and.new.must.not.be.specified",
+                "om nyckellagret inte \u00E4r l\u00F6senordsskyddat f\u00E5r -storepass, -keypass och -new inte anges"},
+        {"if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified",
+                "om k\u00E4llnyckellagret inte \u00E4r l\u00F6senordsskyddat f\u00E5r -srcstorepass och -srckeypass inte anges"},
+        {"Illegal.startdate.value", "Otill\u00E5tet v\u00E4rde f\u00F6r startdatum"},
+        {"Validity.must.be.greater.than.zero",
+                "Giltigheten m\u00E5ste vara st\u00F6rre \u00E4n noll"},
+        {"provName.not.a.provider", "{0} \u00E4r inte en leverant\u00F6r"},
+        {"Usage.error.no.command.provided", "Syntaxfel: inget kommando angivet"},
+        {"Source.keystore.file.exists.but.is.empty.", "Nyckellagrets k\u00E4llfil finns, men \u00E4r tom: "},
+        {"Please.specify.srckeystore", "Ange -srckeystore"},
+        {"Must.not.specify.both.v.and.rfc.with.list.command",
+                "Kan inte specificera b\u00E5de -v och -rfc med 'list'-kommandot"},
+        {"Key.password.must.be.at.least.6.characters",
+                "Nyckell\u00F6senordet m\u00E5ste inneh\u00E5lla minst 6 tecken"},
+        {"New.password.must.be.at.least.6.characters",
+                "Det nya l\u00F6senordet m\u00E5ste inneh\u00E5lla minst 6 tecken"},
+        {"Keystore.file.exists.but.is.empty.",
+                "Nyckellagerfilen finns, men \u00E4r tom: "},
+        {"Keystore.file.does.not.exist.",
+                "Nyckellagerfilen finns inte: "},
+        {"Must.specify.destination.alias", "Du m\u00E5ste ange destinationsalias"},
+        {"Must.specify.alias", "Du m\u00E5ste ange alias"},
+        {"Keystore.password.must.be.at.least.6.characters",
+                "Nyckellagerl\u00F6senordet m\u00E5ste inneh\u00E5lla minst 6 tecken"},
+        {"Enter.keystore.password.", "Ange nyckellagerl\u00F6senord:  "},
+        {"Enter.source.keystore.password.", "Ange l\u00F6senord f\u00F6r k\u00E4llnyckellagret:  "},
+        {"Enter.destination.keystore.password.", "Ange nyckellagerl\u00F6senord f\u00F6r destination:  "},
+        {"Keystore.password.is.too.short.must.be.at.least.6.characters",
+         "Nyckellagerl\u00F6senordet \u00E4r f\u00F6r kort - det m\u00E5ste inneh\u00E5lla minst 6 tecken"},
+        {"Unknown.Entry.Type", "Ok\u00E4nd posttyp"},
+        {"Too.many.failures.Alias.not.changed", "F\u00F6r m\u00E5nga fel. Alias har inte \u00E4ndrats"},
+        {"Entry.for.alias.alias.successfully.imported.",
+                 "Posten f\u00F6r alias {0} har importerats."},
+        {"Entry.for.alias.alias.not.imported.", "Posten f\u00F6r alias {0} har inte importerats."},
+        {"Problem.importing.entry.for.alias.alias.exception.Entry.for.alias.alias.not.imported.",
+                 "Ett problem uppstod vid importen av posten f\u00F6r alias {0}: {1}.\nPosten {0} har inte importerats."},
+        {"Import.command.completed.ok.entries.successfully.imported.fail.entries.failed.or.cancelled",
+                 "Kommandoimporten slutf\u00F6rd: {0} poster har importerats, {1} poster var felaktiga eller annullerades"},
+        {"Warning.Overwriting.existing.alias.alias.in.destination.keystore",
+                 "Varning! Det befintliga aliaset {0} i destinationsnyckellagret skrivs \u00F6ver"},
+        {"Existing.entry.alias.alias.exists.overwrite.no.",
+                 "Aliaset {0} finns redan. Vill du skriva \u00F6ver det? [nej]:  "},
+        {"Too.many.failures.try.later", "F\u00F6r m\u00E5nga fel - f\u00F6rs\u00F6k igen senare"},
+        {"Certification.request.stored.in.file.filename.",
+                "Certifikatbeg\u00E4ran har lagrats i filen <{0}>"},
+        {"Submit.this.to.your.CA", "Skicka detta till certifikatutf\u00E4rdaren"},
+        {"if.alias.not.specified.destalias.srckeypass.and.destkeypass.must.not.be.specified",
+            "om n\u00E5got alias inte anges f\u00E5r destalias, srckeypass och destkeypass inte anges"},
+        {"Certificate.stored.in.file.filename.",
                 "Certifikatet har lagrats i filen <{0}>"},
-        {"Certificate reply was installed in keystore",
-                "Certifikatsvaret har installerats i keystore-filen"},
-        {"Certificate reply was not installed in keystore",
-                "Certifikatsvaret har inte installerats i keystore-filen"},
-        {"Certificate was added to keystore",
-                "Certifikatet har lagts till i keystore-filen"},
-        {"Certificate was not added to keystore",
-                "Certifikatet har inte lagts till i keystore-filen"},
-        {"[Storing ksfname]", "[Lagrar {0}]"},
-        {"alias has no public key (certificate)",
+        {"Certificate.reply.was.installed.in.keystore",
+                "Certifikatsvaret har installerats i nyckellagret"},
+        {"Certificate.reply.was.not.installed.in.keystore",
+                "Certifikatsvaret har inte installerats i nyckellagret"},
+        {"Certificate.was.added.to.keystore",
+                "Certifikatet har lagts till i nyckellagret"},
+        {"Certificate.was.not.added.to.keystore",
+                "Certifikatet har inte lagts till i nyckellagret"},
+        {".Storing.ksfname.", "[Lagrar {0}]"},
+        {"alias.has.no.public.key.certificate.",
                 "{0} saknar offentlig nyckel (certifikat)"},
-        {"Cannot derive signature algorithm",
-                "Det g\u00e5r inte att h\u00e4mta n\u00e5gon signatur-algoritm"},
-        {"Alias <alias> does not exist",
+        {"Cannot.derive.signature.algorithm",
+                "Kan inte h\u00E4rleda signaturalgoritm"},
+        {"Alias.alias.does.not.exist",
                 "Aliaset <{0}> finns inte"},
-        {"Alias <alias> has no certificate",
+        {"Alias.alias.has.no.certificate",
                 "Aliaset <{0}> saknar certifikat"},
-        {"Key pair not generated, alias <alias> already exists",
+        {"Key.pair.not.generated.alias.alias.already.exists",
                 "Nyckelparet genererades inte. Aliaset <{0}> finns redan"},
-        {"Cannot derive signature algorithm",
-                "Det g\u00e5r inte att h\u00e4mta n\u00e5gon signatur-algoritm"},
-        {"Generating keysize bit keyAlgName key pair and self-signed certificate (sigAlgName) with a validity of validality days\n\tfor: x500Name",
-                "Genererar {0}-bitars {1}-nyckelpar och sj\u00e4lvsignerat certifikat ({2}) med en giltighet p\u00e5 {3} dagar\n\tf\u00f6r: {4}"},
-        {"Enter key password for <alias>", "Ange nyckell\u00f6senord f\u00f6r <{0}>"},
-        {"\t(RETURN if same as keystore password):  ",
-                "\t(RETURN om det \u00e4r identiskt med keystore-l\u00f6senordet):  "},
-        {"Key password is too short - must be at least 6 characters",
-                "Nyckell\u00f6senordet \u00e4r f\u00f6r kort - det m\u00e5ste inneh\u00e5lla minst 6 tecken"},
-        {"Too many failures - key not added to keystore",
-                "F\u00f6r m\u00e5nga fel - nyckeln lades inte till i keystore-filen"},
-        {"Destination alias <dest> already exists",
+        {"Generating.keysize.bit.keyAlgName.key.pair.and.self.signed.certificate.sigAlgName.with.a.validity.of.validality.days.for",
+                "Genererar {0} bitars {1}-nyckelpar och sj\u00E4lvsignerat certifikat ({2}) med en giltighet p\u00E5 {3} dagar\n\tf\u00F6r: {4}"},
+        {"Enter.key.password.for.alias.", "Ange nyckell\u00F6senord f\u00F6r <{0}>"},
+        {".RETURN.if.same.as.keystore.password.",
+                "\t(RETURN om det \u00E4r identiskt med nyckellagerl\u00F6senordet):  "},
+        {"Key.password.is.too.short.must.be.at.least.6.characters",
+                "Nyckell\u00F6senordet \u00E4r f\u00F6r kort - det m\u00E5ste inneh\u00E5lla minst 6 tecken"},
+        {"Too.many.failures.key.not.added.to.keystore",
+                "F\u00F6r m\u00E5nga fel - nyckeln lades inte till i nyckellagret"},
+        {"Destination.alias.dest.already.exists",
                 "Destinationsaliaset <{0}> finns redan"},
-        {"Password is too short - must be at least 6 characters",
-                "L\u00f6senordet \u00e4r f\u00f6r kort - det m\u00e5ste inneh\u00e5lla minst 6 tecken"},
-        {"Too many failures. Key entry not cloned",
-                "F\u00f6r m\u00e5nga fel. Nyckelposten har inte klonats"},
-        {"key password for <alias>", "nyckell\u00f6senord f\u00f6r <{0}>"},
-        {"Keystore entry for <id.getName()> already exists",
-                "Keystore-post f\u00f6r <{0}> finns redan"},
-        {"Creating keystore entry for <id.getName()> ...",
-                "Skapar keystore-post f\u00f6r <{0}> ..."},
-        {"No entries from identity database added",
-                "Inga poster fr\u00e5n identitetsdatabasen har lagts till"},
-        {"Alias name: alias", "Aliasnamn: {0}"},
-        {"Creation date: keyStore.getCreationDate(alias)",
+        {"Password.is.too.short.must.be.at.least.6.characters",
+                "L\u00F6senordet \u00E4r f\u00F6r kort - det m\u00E5ste inneh\u00E5lla minst 6 tecken"},
+        {"Too.many.failures.Key.entry.not.cloned",
+                "F\u00F6r m\u00E5nga fel. Nyckelposten har inte klonats"},
+        {"key.password.for.alias.", "nyckell\u00F6senord f\u00F6r <{0}>"},
+        {"Keystore.entry.for.id.getName.already.exists",
+                "Nyckellagerpost f\u00F6r <{0}> finns redan"},
+        {"Creating.keystore.entry.for.id.getName.",
+                "Skapar nyckellagerpost f\u00F6r <{0}> ..."},
+        {"No.entries.from.identity.database.added",
+                "Inga poster fr\u00E5n identitetsdatabasen har lagts till"},
+        {"Alias.name.alias", "Aliasnamn: {0}"},
+        {"Creation.date.keyStore.getCreationDate.alias.",
                 "Skapat den: {0,date}"},
-        {"alias, keyStore.getCreationDate(alias), ",
+        {"alias.keyStore.getCreationDate.alias.",
                 "{0}, {1,date}, "},
-        {"alias, ", "{0}, "},
-        {"Entry type: <type>", "Posttyp: {0}"},
-        {"Certificate chain length: ", "L\u00e4ngd p\u00e5 certifikatskedja: "},
-        {"Certificate[(i + 1)]:", "Certifikat[{0,number,integer}]:"},
-        {"Certificate fingerprint (MD5): ", "Certifikatsfingeravtryck (MD5): "},
-        {"Entry type: trustedCertEntry\n", "Posttyp: trustedCertEntry\n"},
-        {"trustedCertEntry,", "trustedCertEntry,"},
-        {"Keystore type: ", "Keystore-typ: "},
-        {"Keystore provider: ", "Keystore-leverant\u00f6r: "},
-        {"Your keystore contains keyStore.size() entry",
-                "Din keystore inneh\u00e5ller en {0,number,integer} post"},
-        {"Your keystore contains keyStore.size() entries",
-                "Din keystore inneh\u00e5ller {0,number,integer} poster"},
-        {"Failed to parse input", "Det g\u00e5r inte att analysera indata"},
-        {"Empty input", "Inga indata"},
-        {"Not X.509 certificate", "Inte ett X.509-certifikat"},
-        {"Cannot derive signature algorithm",
-                "Det g\u00e5r inte att h\u00e4mta n\u00e5gon signatur-algoritm"},
-        {"alias has no public key", "{0} saknar offentlig nyckel"},
-        {"alias has no X.509 certificate", "{0} saknar X.509-certifikat"},
-        {"New certificate (self-signed):", "Nytt certifikat (sj\u00e4lvsignerat):"},
-        {"Reply has no certificates", "Svaret saknar certifikat"},
-        {"Certificate not imported, alias <alias> already exists",
+        {"alias.", "{0}, "},
+        {"Entry.type.type.", "Posttyp: {0}"},
+        {"Certificate.chain.length.", "L\u00E4ngd p\u00E5 certifikatskedja: "},
+        {"Certificate.i.1.", "Certifikat[{0,number,integer}]:"},
+        {"Certificate.fingerprint.SHA1.", "Certifikatets fingeravtryck (SHA1): "},
+        {"Entry.type.trustedCertEntry.", "Posttyp: trustedCertEntry\n"},
+        {"trustedCertEntry.", "trustedCertEntry,"},
+        {"Keystore.type.", "Nyckellagertyp: "},
+        {"Keystore.provider.", "Nyckellagerleverant\u00F6r: "},
+        {"Your.keystore.contains.keyStore.size.entry",
+                "Nyckellagret inneh\u00E5ller {0,number,integer} post"},
+        {"Your.keystore.contains.keyStore.size.entries",
+                "Nyckellagret inneh\u00E5ller {0,number,integer} poster"},
+        {"Failed.to.parse.input", "Kunde inte tolka indata"},
+        {"Empty.input", "Inga indata"},
+        {"Not.X.509.certificate", "Inte ett X.509-certifikat"},
+        {"alias.has.no.public.key", "{0} saknar offentlig nyckel"},
+        {"alias.has.no.X.509.certificate", "{0} saknar X.509-certifikat"},
+        {"New.certificate.self.signed.", "Nytt certifikat (sj\u00E4lvsignerat):"},
+        {"Reply.has.no.certificates", "Svaret saknar certifikat"},
+        {"Certificate.not.imported.alias.alias.already.exists",
                 "Certifikatet importerades inte. Aliaset <{0}> finns redan"},
-        {"Input not an X.509 certificate", "Indata \u00e4r inte ett X.509-certifikat"},
-        {"Certificate already exists in keystore under alias <trustalias>",
-                "Certifikatet finns redan i keystore-filen under aliaset <{0}>"},
-        {"Do you still want to add it? [no]:  ",
-                "Vill du fortfarande l\u00e4gga till det? [nej]:  "},
-        {"Certificate already exists in system-wide CA keystore under alias <trustalias>",
-                "Certifikatet finns redan i systemkeystore-filen under aliaset <{0}>"},
-        {"Do you still want to add it to your own keystore? [no]:  ",
-                "Vill du fortfarande l\u00e4gga till det i din egen keystore-fil? [nej]:  "},
-        {"Trust this certificate? [no]:  ", "Betror du det h\u00e4r certifikatet? [nej]:  "},
+        {"Input.not.an.X.509.certificate", "Indata \u00E4r inte ett X.509-certifikat"},
+        {"Certificate.already.exists.in.keystore.under.alias.trustalias.",
+                "Certifikatet finns redan i nyckellagerfilen under aliaset <{0}>"},
+        {"Do.you.still.want.to.add.it.no.",
+                "Vill du fortfarande l\u00E4gga till det? [nej]:  "},
+        {"Certificate.already.exists.in.system.wide.CA.keystore.under.alias.trustalias.",
+                "Certifikatet finns redan i den systemomsp\u00E4nnande CA-nyckellagerfilen under aliaset <{0}>"},
+        {"Do.you.still.want.to.add.it.to.your.own.keystore.no.",
+                "Vill du fortfarande l\u00E4gga till det i ditt eget nyckellagret? [nej]:  "},
+        {"Trust.this.certificate.no.", "Litar du p\u00E5 det h\u00E4r certifikatet? [nej]:  "},
         {"YES", "JA"},
-        {"New prompt: ", "Nytt {0}: "},
-        {"Passwords must differ", "L\u00f6senorden m\u00e5ste vara olika"},
-        {"Re-enter new prompt: ", "Ange nytt {0} igen: "},
-        {"Re-enter new password: ", "Ange det nya l\u00f6senordet igen: "},
-        {"They don't match. Try again", "De matchar inte. F\u00f6rs\u00f6k igen"},
-        {"Enter prompt alias name:  ", "Ange {0}-aliasnamn:  "},
-        {"Enter new alias name\t(RETURN to cancel import for this entry):  ",
-                 "Ange ett nytt aliasnamn\t(skriv RETURN f\u00f6r att avbryta importen av denna post):  "},
-        {"Enter alias name:  ", "Ange aliasnamn:  "},
-        {"\t(RETURN if same as for <otherAlias>)",
-                "\t(RETURN om det \u00e4r det samma som f\u00f6r <{0}>)"},
-        {"*PATTERN* printX509Cert",
-                "\u00c4gare: {0}\nUtf\u00e4rdare: {1}\nSerienummer: {2}\nGiltigt fr\u00e5n: {3} till: {4}\nCertifikatfingeravtryck:\n\t MD5: {5}\n\t SHA1: {6}\n\t Signaturalgoritm: {7}\n\t Version: {8}"},
-        {"What is your first and last name?",
-                "Vad heter du i f\u00f6r- och efternamn?"},
-        {"What is the name of your organizational unit?",
+        {"New.prompt.", "Nytt {0}: "},
+        {"Passwords.must.differ", "L\u00F6senorden m\u00E5ste vara olika"},
+        {"Re.enter.new.prompt.", "Ange nytt {0} igen: "},
+        {"Re.enter.new.password.", "Ange det nya l\u00F6senordet igen: "},
+        {"They.don.t.match.Try.again", "De matchar inte. F\u00F6rs\u00F6k igen"},
+        {"Enter.prompt.alias.name.", "Ange aliasnamn f\u00F6r {0}:  "},
+        {"Enter.new.alias.name.RETURN.to.cancel.import.for.this.entry.",
+                 "Ange ett nytt aliasnamn\t(skriv RETURN f\u00F6r att avbryta importen av denna post):  "},
+        {"Enter.alias.name.", "Ange aliasnamn:  "},
+        {".RETURN.if.same.as.for.otherAlias.",
+                "\t(RETURN om det \u00E4r det samma som f\u00F6r <{0}>)"},
+        {".PATTERN.printX509Cert",
+                "\u00C4gare: {0}\nUtf\u00E4rdare: {1}\nSerienummer: {2}\nGiltigt fr\u00E5n den: {3} till: {4}\nCertifikatets fingeravtryck:\n\t MD5: {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t Namn p\u00E5 signaturalgoritm: {8}\n\t Version: {9}"},
+        {"What.is.your.first.and.last.name.",
+                "Vad heter du i f\u00F6r- och efternamn?"},
+        {"What.is.the.name.of.your.organizational.unit.",
                 "Vad heter din avdelning inom organisationen?"},
-        {"What is the name of your organization?",
+        {"What.is.the.name.of.your.organization.",
                 "Vad heter din organisation?"},
-        {"What is the name of your City or Locality?",
+        {"What.is.the.name.of.your.City.or.Locality.",
                 "Vad heter din ort eller plats?"},
-        {"What is the name of your State or Province?",
+        {"What.is.the.name.of.your.State.or.Province.",
                 "Vad heter ditt land eller din provins?"},
-        {"What is the two-letter country code for this unit?",
-                "Vilken \u00e4r den tv\u00e5st\u00e4lliga landskoden?"},
-        {"Is <name> correct?", "\u00c4r {0} korrekt?"},
+        {"What.is.the.two.letter.country.code.for.this.unit.",
+                "Vilken \u00E4r den tv\u00E5st\u00E4lliga landskoden?"},
+        {"Is.name.correct.", "\u00C4r {0} korrekt?"},
         {"no", "nej"},
         {"yes", "ja"},
         {"y", "j"},
-        {"  [defaultValue]:  ", "  [{0}]:  "},
-        {"Alias <alias> has no key",
+        {".defaultValue.", "  [{0}]:  "},
+        {"Alias.alias.has.no.key",
                 "Aliaset <{0}> saknar nyckel"},
-        {"Alias <alias> references an entry type that is not a private key entry.  The -keyclone command only supports cloning of private key entries",
-                 "Aliaset <{0}> h\u00e4nvisar till en posttyp som inte \u00e4r n\u00e5gon privat nyckelpost. Kommandot -keyclone har endast st\u00f6d f\u00f6r kloning av privata nyckelposter"},
+        {"Alias.alias.references.an.entry.type.that.is.not.a.private.key.entry.The.keyclone.command.only.supports.cloning.of.private.key",
+                 "Aliaset <{0}> refererar till en posttyp som inte \u00E4r n\u00E5gon privat nyckelpost. Kommandot -keyclone har endast st\u00F6d f\u00F6r kloning av privata nyckelposter"},
 
-        {"*****************  WARNING WARNING WARNING  *****************",
-            "*****************  VARNING VARNING VARNING  *****************"},
+        {".WARNING.WARNING.WARNING.",
+            "*****************  WARNING WARNING WARNING  *****************"},
+        {"Signer.d.", "Signerare #%d:"},
+        {"Timestamp.", "Tidsst\u00E4mpel:"},
+        {"Signature.", "Underskrift:"},
+        {"CRLs.", "CRL:er:"},
+        {"Certificate.owner.", "Certifikat\u00E4gare: "},
+        {"Not.a.signed.jar.file", "Ingen signerad jar-fil"},
+        {"No.certificate.from.the.SSL.server",
+                "Inget certifikat fr\u00E5n SSL-servern"},
 
         // Translators of the following 5 pairs, ATTENTION:
         // the next 5 string pairs are meant to be combined into 2 paragraphs,
         // 1+3+4 and 2+3+5. make sure your translation also does.
-        {"* The integrity of the information stored in your keystore  *",
-            "* Integriteten betr\u00e4ffande den information som lagras i keystore-filen  *"},
-        {"* The integrity of the information stored in the srckeystore*",
-            "* Integriteten f\u00f6r informationen som lagras i srckeystore*"},
-        {"* has NOT been verified!  In order to verify its integrity, *",
+        {".The.integrity.of.the.information.stored.in.your.keystore.",
+            "* Integriteten f\u00F6r den information som lagras i nyckellagerfilen  *"},
+        {".The.integrity.of.the.information.stored.in.the.srckeystore.",
+            "* Integriteten f\u00F6r informationen som lagras i srckeystore*"},
+        {".has.NOT.been.verified.In.order.to.verify.its.integrity.",
             "* har INTE verifierats!  Om du vill verifiera dess integritet, *"},
-        {"* you must provide your keystore password.                  *",
-            "* m\u00e5ste du tillhandah\u00e5lla ditt keystore-l\u00f6senord.                  *"},
-        {"* you must provide the srckeystore password.                *",
-            "* du m\u00e5ste ange l\u00f6senordet f\u00f6r srckeystore.                *"},
+        {".you.must.provide.your.keystore.password.",
+            "* m\u00E5ste du ange nyckellagerl\u00F6senord.                  *"},
+        {".you.must.provide.the.srckeystore.password.",
+            "* du m\u00E5ste ange l\u00F6senordet f\u00F6r srckeystore.                *"},
 
 
-        {"Certificate reply does not contain public key for <alias>",
-                "Certifikatsvaret inneh\u00e5ller inte n\u00e5gon offentlig nyckel f\u00f6r <{0}>"},
-        {"Incomplete certificate chain in reply",
-                "Ofullst\u00e4ndig certifikatskedja i svaret"},
-        {"Certificate chain in reply does not verify: ",
-                "Certifikatskedjan i svaret g\u00e5r inte att verifiera: "},
-        {"Top-level certificate in reply:\n",
-                "Toppniv\u00e5certifikatet i svaret:\n"},
-        {"... is not trusted. ", "... \u00e4r inte betrott. "},
-        {"Install reply anyway? [no]:  ", "Vill du installera svaret \u00e4nd\u00e5? [nej]:  "},
+        {"Certificate.reply.does.not.contain.public.key.for.alias.",
+                "Certifikatsvaret inneh\u00E5ller inte n\u00E5gon offentlig nyckel f\u00F6r <{0}>"},
+        {"Incomplete.certificate.chain.in.reply",
+                "Ofullst\u00E4ndig certifikatskedja i svaret"},
+        {"Certificate.chain.in.reply.does.not.verify.",
+                "Certifikatskedjan i svaret g\u00E5r inte att verifiera: "},
+        {"Top.level.certificate.in.reply.",
+                "Toppniv\u00E5certifikatet i svaret:\n"},
+        {".is.not.trusted.", "... \u00E4r inte betrott. "},
+        {"Install.reply.anyway.no.", "Vill du installera svaret \u00E4nd\u00E5? [nej]:  "},
         {"NO", "NEJ"},
-        {"Public keys in reply and keystore don't match",
-                "De offentliga nycklarna i svaret och keystore-filen matchar inte varandra"},
-        {"Certificate reply and certificate in keystore are identical",
-                "Certifikatssvaret och certifikatet i keystore-filen \u00e4r identiska"},
-        {"Failed to establish chain from reply",
-                "Det gick inte att uppr\u00e4tta n\u00e5gon kedja ur svaret"},
+        {"Public.keys.in.reply.and.keystore.don.t.match",
+                "De offentliga nycklarna i svaret och nyckellagret matchar inte varandra"},
+        {"Certificate.reply.and.certificate.in.keystore.are.identical",
+                "Certifikatsvaret och certifikatet i nyckellagret \u00E4r identiska"},
+        {"Failed.to.establish.chain.from.reply",
+                "Kunde inte uppr\u00E4tta kedja fr\u00E5n svaret"},
         {"n", "n"},
-        {"Wrong answer, try again", "Fel svar. F\u00f6rs\u00f6k p\u00e5 nytt."},
-        {"Secret key not generated, alias <alias> already exists",
+        {"Wrong.answer.try.again", "Fel svar. F\u00F6rs\u00F6k p\u00E5 nytt."},
+        {"Secret.key.not.generated.alias.alias.already.exists",
                 "Den hemliga nyckeln har inte genererats eftersom aliaset <{0}> redan finns"},
-        {"Please provide -keysize for secret key generation",
-                "Ange -keysize f\u00f6r skapande av hemlig nyckel"},
-        {"keytool usage:\n", "nyckelverktyg:\n"},
-
-        {"Extensions: ", "Filtill\u00e4gg: "},
-
-        {"-certreq     [-v] [-protected]",
-                "-certreq     [-v] [-protected]"},
-        {"\t     [-alias <alias>] [-sigalg <sigalg>]",
-                "\t     [-alias <alias>] [-sigalg <signaturalgoritm>]"},
-        {"\t     [-file <csr_file>] [-keypass <keypass>]",
-                "\t     [-file <csr_fil>] [-keypass <nyckell\u00f6senord>]"},
-        {"\t     [-keystore <keystore>] [-storepass <storepass>]",
-                "\t     [-keystore <keystore>] [-storepass <lagringsl\u00f6senord>]"},
-        {"\t     [-storetype <storetype>] [-providername <name>]",
-                "\t     [-storetype <storetype>] [-providername <name>]"},
-        {"\t     [-providerclass <provider_class_name> [-providerarg <arg>]] ...",
-                "\t     [-providerclass <provider_class_name> [-providerarg <arg>]] ..."},
-        {"\t     [-providerpath <pathlist>]",
-                "\t     [-providerpath <pathlist>]"},
-        {"-delete      [-v] [-protected] -alias <alias>",
-                "-delete      [-v] [-protected] -alias <alias>"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-export      [-v] [-rfc] [-protected]",
-        //       "-export      [-v] [-rfc] [-protected]"},
-        {"-exportcert  [-v] [-rfc] [-protected]",
-                "-exportcert  [-v] [-rfc] [-protected]"},
-        {"\t     [-alias <alias>] [-file <cert_file>]",
-                "\t     [-alias <alias>] [-file <certifikatsfil>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-genkey      [-v] [-protected]",
-        //        "-genkey      [-v] [-protected]"},
-        {"-genkeypair  [-v] [-protected]",
-                "-genkeypair  [-v] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
-        {"\t     [-keyalg <keyalg>] [-keysize <keysize>]",
-                "\t     [-keyalg <nyckelalgoritm>] [-keysize <nyckelstorlek>]"},
-        {"\t     [-sigalg <sigalg>] [-dname <dname>]",
-                "\t     [-sigalg <signaturalgoritm>] [-dname <dnamn>]"},
-        {"\t     [-validity <valDays>] [-keypass <keypass>]",
-                "\t     [-validity <dagar>] [-keypass <nyckell\u00f6senord>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-genseckey   [-v] [-protected]",
-                "-genseckey   [-v] [-protected]"},
-        /** rest is same as -certreq starting from -keystore **/
+        {"Please.provide.keysize.for.secret.key.generation",
+                "Ange -keysize f\u00F6r att skapa hemlig nyckel"},
 
-        {"-help", "-help"},
-        //{"-identitydb  [-v] [-protected]",
-        //      "-identitydb  [-v] [-protected]"},
-        //{"\t     [-file <idb_file>]", "\t     [-file <idb_file>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-import      [-v] [-noprompt] [-trustcacerts] [-protected]",
-        //       "-import      [-v] [-noprompt] [-trustcacerts] [-protected]"},
-        {"-importcert  [-v] [-noprompt] [-trustcacerts] [-protected]",
-                "-importcert  [-v] [-noprompt] [-trustcacerts] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
-        {"\t     [-alias <alias>] [-keypass <keypass>]",
-            "\t     [-alias <alias>] [-keypass <keypass>]"},
-        {"\t     [-file <cert_file>] [-keypass <keypass>]",
-                "\t     [-file <certifikatsfil>] [-keypass <nyckell\u00f6senord>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-importkeystore [-v] ",
-                "-importkeystore [-v] "},
-        {"\t     [-srckeystore <srckeystore>] [-destkeystore <destkeystore>]",
-                "\t     [-srckeystore <srckeystore>] [-destkeystore <destkeystore>]"},
-        {"\t     [-srcstoretype <srcstoretype>] [-deststoretype <deststoretype>]",
-                "\t     [-srcstoretype <srcstoretype>] [-deststoretype <deststoretype>]"},
-        {"\t     [-srcprotected] [-destprotected]",
-                "\t     [-srcprotected] [-destprotected]"},
-        {"\t     [-srcstorepass <srcstorepass>] [-deststorepass <deststorepass>]",
-                "\t     [-srcstorepass <srcstorepass>] [-deststorepass <deststorepass>]"},
-        {"\t     [-srcprovidername <srcprovidername>]\n\t     [-destprovidername <destprovidername>]",  // raden \u00e4r f\u00f6r l\u00e5ng, dela upp p\u00e5 2
-                 "\t     [-srcprovidername <srcprovidername>]\n\t     [-destprovidername <destprovidername>]"},
-        {"\t     [-srcalias <srcalias> [-destalias <destalias>]",
-                "\t     [-srcalias <srcalias> [-destalias <destalias>]"},
-        {"\t       [-srckeypass <srckeypass>] [-destkeypass <destkeypass>]]",
-                "\t       [-srckeypass <srckeypass>] [-destkeypass <destkeypass>]]"},
-        {"\t     [-noprompt]", "\t     [-noprompt]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-changealias [-v] [-protected] -alias <alias> -destalias <destalias>",
-                "-changealias [-v] [-protected] -alias <alias> -destalias <destalias>"},
-        {"\t     [-keypass <keypass>]", "\t     [-keypass <keypass>]"},
-
-        //{"-keyclone    [-v] [-protected]",
-        //      "-keyclone    [-v] [-protected]"},
-        //{"\t     [-alias <alias>] -dest <dest_alias>",
-        //      "\t     [-alias <alias>] -dest <dest_alias>"},
-        //{"\t     [-keypass <keypass>] [-new <new_keypass>]",
-        //      "\t     [-keypass <keypass>] [-new <new_keypass>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-keypasswd   [-v] [-alias <alias>]",
-                "-keypasswd   [-v] [-alias <alias>]"},
-        {"\t     [-keypass <old_keypass>] [-new <new_keypass>]",
-                "\t     [-keypass <gammalt_nyckell\u00f6senord>] [-new <nytt_nyckell\u00f6senord>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-list        [-v | -rfc] [-protected]",
-                "-list        [-v | -rfc] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-printcert   [-v] [-file <cert_file>]",
-                "-printcert   [-v] [-file <certifikatsfil>]"},
-
-        //{"-selfcert    [-v] [-protected]",
-        //      "-selfcert    [-v] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
-        //{"\t     [-dname <dname>] [-validity <valDays>]",
-        //      "\t     [-dname <dname>] [-validity <valDays>]"},
-        //{"\t     [-keypass <keypass>] [-sigalg <sigalg>]",
-        //      "\t     [-keypass <keypass>] [-sigalg <sigalg>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-storepasswd [-v] [-new <new_storepass>]",
-                "-storepasswd [-v] [-new <nytt_lagringsl\u00f6senord>]"},
-        /** rest is same as -certreq starting from -keystore **/
+        {"Extensions.", "Till\u00E4gg: "},
+        {".Empty.value.", "(Tomt v\u00E4rde)"},
+        {"Extension.Request.", "Till\u00E4ggsbeg\u00E4ran:"},
+        {"PKCS.10.Certificate.Request.Version.1.0.Subject.s.Public.Key.s.format.s.key.",
+                "PKCS #10 certifikatbeg\u00E4ran (version 1.0)\n\u00C4mne: %s\nAllm\u00E4n nyckel: %s-format %s-nyckel\n"},
+        {"Unknown.keyUsage.type.", "Ok\u00E4nd keyUsage-typ: "},
+        {"Unknown.extendedkeyUsage.type.", "Ok\u00E4nd extendedkeyUsage-typ: "},
+        {"Unknown.AccessDescription.type.", "Ok\u00E4nd AccessDescription-typ: "},
+        {"Unrecognized.GeneralName.type.", "Ok\u00E4nd GeneralName-typ: "},
+        {"This.extension.cannot.be.marked.as.critical.",
+                 "Detta till\u00E4gg kan inte markeras som kritiskt. "},
+        {"Odd.number.of.hex.digits.found.", "Udda antal hex-siffror p\u00E5tr\u00E4ffades: "},
+        {"Unknown.extension.type.", "Ok\u00E4nd till\u00E4ggstyp: "},
+        {"command.{0}.is.ambiguous.", "kommandot {0} \u00E4r tvetydigt:"},
 
         // policytool
-        {"Warning: A public key for alias 'signers[i]' does not exist.  Make sure a KeyStore is properly configured.",
-                "Varning! Det finns ingen offentlig nyckel f\u00f6r aliaset {0}. Kontrollera att det aktuella nyckellagret \u00e4r korrekt konfigurerat."},
-        {"Warning: Class not found: class", "Varning! Klassen hittades inte: {0}"},
-        {"Warning: Invalid argument(s) for constructor: arg",
-                "Varning! Ogiltigt/Ogiltiga argument f\u00f6r konstrukt\u00f6r: {0}"},
-        {"Illegal Principal Type: type", "Ogiltig huvudtyp: {0}"},
-        {"Illegal option: option", "Ogiltigt alternativ: {0}"},
-        {"Usage: policytool [options]", "G\u00f6r s\u00e5 h\u00e4r: policytool [alternativ]"},
-        {"  [-file <file>]    policy file location",
+        {"Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured.",
+                "Varning! Det finns ingen offentlig nyckel f\u00F6r aliaset {0}. Kontrollera att det aktuella nyckellagret \u00E4r korrekt konfigurerat."},
+        {"Warning.Class.not.found.class", "Varning! Klassen hittades inte: {0}"},
+        {"Warning.Invalid.argument.s.for.constructor.arg",
+                "Varning! Ogiltiga argument f\u00F6r konstruktor: {0}"},
+        {"Illegal.Principal.Type.type", "Otill\u00E5ten identitetshavaretyp: {0}"},
+        {"Illegal.option.option", "Otill\u00E5tet alternativ: {0}"},
+        {"Usage.policytool.options.", "Syntax: policytool [alternativ]"},
+        {".file.file.policy.file.location",
                 "  [-file <fil>]    policyfilens plats"},
         {"New", "Nytt"},
-        {"Open", "\u00d6ppna"},
+        {"Open", "\u00D6ppna"},
         {"Save", "Spara"},
-        {"Save As", "Spara som"},
-        {"View Warning Log", "Visa varningslogg"},
+        {"Save.As", "Spara som"},
+        {"View.Warning.Log", "Visa varningslogg"},
         {"Exit", "Avsluta"},
-        {"Add Policy Entry", "L\u00e4gg till policypost"},
-        {"Edit Policy Entry", "Redigera policypost"},
-        {"Remove Policy Entry", "Ta bort policypost"},
+        {"Add.Policy.Entry", "L\u00E4gg till policypost"},
+        {"Edit.Policy.Entry", "Redigera policypost"},
+        {"Remove.Policy.Entry", "Ta bort policypost"},
         {"Edit", "Redigera"},
-        {"Retain", "Beh\u00e5ll"},
+        {"Retain", "Beh\u00E5ll"},
 
-        {"Warning: File name may include escaped backslash characters. " +
-                        "It is not necessary to escape backslash characters " +
-                        "(the tool escapes characters as necessary when writing " +
-                        "the policy contents to the persistent store).\n\n" +
-                        "Click on Retain to retain the entered name, or click on " +
-                        "Edit to edit the name.",
-            "Warning: File name may include escaped backslash characters. " +
-                        "It is not necessary to escape backslash characters " +
-                        "(the tool escapes characters as necessary when writing " +
-                        "the policy contents to the persistent store).\n\n" +
-                        "Click on Retain to retain the entered name, or click on " +
-                        "Edit to edit the name."},
+        {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
+            "Varning! Filnamnet kan inneh\u00E5lla omv\u00E4nda snedstreck inom citattecken. Citattecken kr\u00E4vs inte f\u00F6r omv\u00E4nda snedstreck (verktyget hanterar detta n\u00E4r policyinneh\u00E5llet skrivs till det best\u00E4ndiga lagret).\n\nKlicka p\u00E5 Beh\u00E5ll f\u00F6r att beh\u00E5lla det angivna namnet, eller klicka p\u00E5 Redigera f\u00F6r att \u00E4ndra det."},
 
-        {"Add Public Key Alias", "L\u00e4gg till offentligt nyckelalias"},
-        {"Remove Public Key Alias", "Ta bort offentligt nyckelalias"},
-        {"File", "Arkiv"},
+        {"Add.Public.Key.Alias", "L\u00E4gg till offentligt nyckelalias"},
+        {"Remove.Public.Key.Alias", "Ta bort offentligt nyckelalias"},
+        {"File", "Fil"},
         {"KeyStore", "Nyckellager"},
-        {"Policy File:", "Policyfil:"},
-        {"Could not open policy file: policyFile: e.toString()",
-                "Det g\u00e5r inte att \u00f6ppna policyfilen: {0}: {1}"},
-        {"Policy Tool", "Policyverktyg"},
-        {"Errors have occurred while opening the policy configuration.  View the Warning Log for more information.",
-                "Det uppstod ett fel n\u00e4r policykonfigurationen skulle \u00f6ppnas.  Visa varningsloggen med ytterligare information."},
+        {"Policy.File.", "Policyfil:"},
+        {"Could.not.open.policy.file.policyFile.e.toString.",
+                "Kan inte \u00F6ppna policyfilen: {0}: {1}"},
+        {"Policy.Tool", "Policyverktyg"},
+        {"Errors.have.occurred.while.opening.the.policy.configuration.View.the.Warning.Log.for.more.information.",
+                "Det uppstod ett fel n\u00E4r policykonfigurationen skulle \u00F6ppnas. Se varningsloggen f\u00F6r mer information."},
         {"Error", "Fel"},
         {"OK", "OK"},
         {"Status", "Status"},
         {"Warning", "Varning"},
-        {"Permission:                                                       ",
-                "Beh\u00f6righet:                                                       "},
-        {"Principal Type:", "Principaltyp:"},
-        {"Principal Name:", "Principalnamn:"},
-        {"Target Name:                                                    ",
-                "M\u00e5lets namn:                                                    "},
-        {"Actions:                                                             ",
+        {"Permission.",
+                "Beh\u00F6righet:                                                       "},
+        {"Principal.Type.", "Identitetshavaretyp:"},
+        {"Principal.Name.", "Identitetshavare:"},
+        {"Target.Name.",
+                "M\u00E5l:                                                    "},
+        {"Actions.",
                 "Funktioner:                                                             "},
-        {"OK to overwrite existing file filename?",
-                "Ska den befintliga filen {0} skrivas \u00f6ver?"},
+        {"OK.to.overwrite.existing.file.filename.",
+                "Ska den befintliga filen {0} skrivas \u00F6ver?"},
         {"Cancel", "Avbryt"},
-        {"CodeBase:", "CodeBase:"},
-        {"SignedBy:", "SignedBy:"},
-        {"Add Principal", "L\u00e4gg till principal"},
-        {"Edit Principal", "Redigera principal"},
-        {"Remove Principal", "Ta bort principal"},
-        {"Principals:", "Principaler:"},
-        {"  Add Permission", "  L\u00e4gg till beh\u00f6righet"},
-        {"  Edit Permission", "  Redigera beh\u00f6righet"},
-        {"Remove Permission", "Ta bort beh\u00f6righet"},
-        {"Done", "Klar"},
-        {"KeyStore URL:", "Webbadress f\u00f6r nyckellager:"},
-        {"KeyStore Type:", "Nyckellagertyp:"},
-        {"KeyStore Provider:", "Nyckellagerleverant\u00f6r:"},
-        {"KeyStore Password URL:", "Webbadress f\u00f6r l\u00f6senord till nyckellager:"},
-        {"Principals", "Principaler"},
-        {"  Edit Principal:", "  Redigera principal:"},
-        {"  Add New Principal:", "  L\u00e4gg till ny principal:"},
-        {"Permissions", "Beh\u00f6righet"},
-        {"  Edit Permission:", "  Redigera beh\u00f6righet:"},
-        {"  Add New Permission:", "  L\u00e4gg till ny beh\u00f6righet:"},
-        {"Signed By:", "Signerad av:"},
-        {"Cannot Specify Principal with a Wildcard Class without a Wildcard Name",
-            "Det g\u00e5r inte att specificera principal med wildcard-klass utan wildcard-namn"},
-        {"Cannot Specify Principal without a Name",
-            "Det g\u00e5r inte att specificera principal utan namn"},
-        {"Permission and Target Name must have a value",
-                "Beh\u00f6righet och m\u00e5lnamn m\u00e5ste ha ett v\u00e4rde"},
-        {"Remove this Policy Entry?", "Vill du ta bort den h\u00e4r policyposten?"},
-        {"Overwrite File", "Skriva \u00f6ver fil"},
-        {"Policy successfully written to filename",
+        {"CodeBase.", "Kodbas:"},
+        {"SignedBy.", "Signerad av:"},
+        {"Add.Principal", "L\u00E4gg till identitetshavare"},
+        {"Edit.Principal", "Redigera identitetshavare"},
+        {"Remove.Principal", "Ta bort identitetshavare"},
+        {"Principals.", "Identitetshavare:"},
+        {".Add.Permission", "  L\u00E4gg till beh\u00F6righet"},
+        {".Edit.Permission", "  Redigera beh\u00F6righet"},
+        {"Remove.Permission", "Ta bort beh\u00F6righet"},
+        {"Done", "Utf\u00F6rd"},
+        {"KeyStore.URL.", "URL f\u00F6r nyckellager:"},
+        {"KeyStore.Type.", "Nyckellagertyp:"},
+        {"KeyStore.Provider.", "Nyckellagerleverant\u00F6r:"},
+        {"KeyStore.Password.URL.", "URL f\u00F6r l\u00F6senord till nyckellager:"},
+        {"Principals", "Identitetshavare"},
+        {".Edit.Principal.", "  Redigera identitetshavare:"},
+        {".Add.New.Principal.", "  L\u00E4gg till ny identitetshavare:"},
+        {"Permissions", "Beh\u00F6righet"},
+        {".Edit.Permission.", "  Redigera beh\u00F6righet:"},
+        {".Add.New.Permission.", "  L\u00E4gg till ny beh\u00F6righet:"},
+        {"Signed.By.", "Signerad av:"},
+        {"Cannot.Specify.Principal.with.a.Wildcard.Class.without.a.Wildcard.Name",
+            "Kan inte specificera identitetshavare med jokerteckenklass utan jokerteckennamn"},
+        {"Cannot.Specify.Principal.without.a.Name",
+            "Kan inte specificera identitetshavare utan namn"},
+        {"Permission.and.Target.Name.must.have.a.value",
+                "Beh\u00F6righet och m\u00E5lnamn m\u00E5ste ha ett v\u00E4rde"},
+        {"Remove.this.Policy.Entry.", "Vill du ta bort den h\u00E4r policyposten?"},
+        {"Overwrite.File", "Skriv \u00F6ver fil"},
+        {"Policy.successfully.written.to.filename",
                 "Policy har skrivits till {0}"},
-        {"null filename", "nullfilnamn"},
-        {"Save changes?", "Vill du spara \u00e4ndringarna?"},
+        {"null.filename", "nullfilnamn"},
+        {"Save.changes.", "Vill du spara \u00E4ndringarna?"},
         {"Yes", "Ja"},
         {"No", "Nej"},
-        {"Policy Entry", "Policyfel"},
-        {"Save Changes", "Vill du spara \u00e4ndringarna?"},
-        {"No Policy Entry selected", "N\u00e5gon policypost har inte markerats"},
-        {"Unable to open KeyStore: ex.toString()",
-                "Det g\u00e5r inte att \u00f6ppna nyckellagret: {0}"},
-        {"No principal selected", "Ingen principal har markerats"},
-        {"No permission selected", "N\u00e5gon beh\u00f6righet har inte markerats"},
+        {"Policy.Entry", "Policyfel"},
+        {"Save.Changes", "Spara \u00E4ndringar"},
+        {"No.Policy.Entry.selected", "Ingen policypost har valts"},
+        {"Unable.to.open.KeyStore.ex.toString.",
+                "Kan inte \u00F6ppna nyckellagret: {0}"},
+        {"No.principal.selected", "Ingen identitetshavare har valts"},
+        {"No.permission.selected", "Ingen beh\u00F6righet har valts"},
         {"name", "namn"},
-        {"configuration type", "konfigurationstyp"},
-        {"environment variable name", "variabelnamn f\u00f6r milj\u00f6"},
-        {"library name", "biblioteksnamn"},
-        {"package name", "paketnamn"},
-        {"policy type", "policytyp"},
-        {"property name", "egenskapsnamn"},
-        {"provider name", "leverant\u00f6rsnamn"},
-        {"Principal List", "Huvudlista"},
-        {"Permission List", "Beh\u00f6righetslista"},
-        {"Code Base", "Kodbas"},
-        {"KeyStore U R L:", "Webbadress f\u00f6r nyckellager:"},
-        {"KeyStore Password U R L:", "Webbadress f\u00f6r l\u00f6senord till nyckellager:"},
+        {"configuration.type", "konfigurationstyp"},
+        {"environment.variable.name", "variabelnamn f\u00F6r milj\u00F6"},
+        {"library.name", "biblioteksnamn"},
+        {"package.name", "paketnamn"},
+        {"policy.type", "policytyp"},
+        {"property.name", "egenskapsnamn"},
+        {"Principal.List", "Lista \u00F6ver identitetshavare"},
+        {"Permission.List", "Beh\u00F6righetslista"},
+        {"Code.Base", "Kodbas"},
+        {"KeyStore.U.R.L.", "URL f\u00F6r nyckellager:"},
+        {"KeyStore.Password.U.R.L.", "URL f\u00F6r l\u00F6senord till nyckellager:"},
 
 
         // javax.security.auth.PrivateCredentialPermission
-        {"invalid null input(s)", "ogiltiga null-indata"},
-        {"actions can only be 'read'", "funktioner kan endast 'l\u00e4sas'"},
-        {"permission name [name] syntax invalid: ",
-                "syntaxen f\u00f6r beh\u00f6righetsnamnet [{0}] \u00e4r ogiltig: "},
-        {"Credential Class not followed by a Principal Class and Name",
-                "Kreditivklassen f\u00f6ljs inte av principalklass eller principalnamn"},
-        {"Principal Class not followed by a Principal Name",
-                "Principalklassen f\u00f6ljs inte av n\u00e5got principalnamn"},
-        {"Principal Name must be surrounded by quotes",
-                "Principalnamnet m\u00e5ste anges inom citattecken"},
-        {"Principal Name missing end quote",
-                "Principalnamnet saknar avslutande citattecken"},
-        {"PrivateCredentialPermission Principal Class can not be a wildcard (*) value if Principal Name is not a wildcard (*) value",
-                "V\u00e4rdet f\u00f6r principalklassen PrivateCredentialPermission kan inte ha n\u00e5got jokertecken (*) om principalnamnet inte anges med jokertecken (*)"},
-        {"CredOwner:\n\tPrincipal Class = class\n\tPrincipal Name = name",
-                "CredOwner:\n\tPrincipalklass = {0}\n\tPrincipalnamn = {1}"},
+        {"invalid.null.input.s.", "ogiltiga null-indata"},
+        {"actions.can.only.be.read.", "funktioner kan endast 'l\u00E4sas'"},
+        {"permission.name.name.syntax.invalid.",
+                "syntaxen f\u00F6r beh\u00F6righetsnamnet [{0}] \u00E4r ogiltig: "},
+        {"Credential.Class.not.followed.by.a.Principal.Class.and.Name",
+                "Inloggningsuppgiftsklassen f\u00F6ljs inte av klass eller namn f\u00F6r identitetshavare"},
+        {"Principal.Class.not.followed.by.a.Principal.Name",
+                "Identitetshavareklassen f\u00F6ljs inte av n\u00E5got identitetshavarenamn"},
+        {"Principal.Name.must.be.surrounded.by.quotes",
+                "Identitetshavarenamnet m\u00E5ste anges inom citattecken"},
+        {"Principal.Name.missing.end.quote",
+                "Identitetshavarenamnet saknar avslutande citattecken"},
+        {"PrivateCredentialPermission.Principal.Class.can.not.be.a.wildcard.value.if.Principal.Name.is.not.a.wildcard.value",
+                "Identitetshavareklassen PrivateCredentialPermission kan inte ha n\u00E5got jokertecken (*) om inte namnet p\u00E5 identitetshavaren anges med jokertecken (*)"},
+        {"CredOwner.Principal.Class.class.Principal.Name.name",
+                "CredOwner:\n\tIdentitetshavareklass = {0}\n\tIdentitetshavarenamn = {1}"},
 
         // javax.security.auth.x500
-        {"provided null name", "gav null-namn"},
-        {"provided null keyword map", "nullnyckelordsmappning tillhandah\u00f6lls"},
-        {"provided null OID map", "null-OID-mappning tillhandah\u00f6lls"},
+        {"provided.null.name", "angav null-namn"},
+        {"provided.null.keyword.map", "nullnyckelordsmappning tillhandah\u00F6lls"},
+        {"provided.null.OID.map", "null-OID-mappning tillhandah\u00F6lls"},
 
         // javax.security.auth.Subject
-        {"invalid null AccessControlContext provided",
+        {"invalid.null.AccessControlContext.provided",
                 "ogiltigt null-AccessControlContext"},
-        {"invalid null action provided", "ogiltig null-funktion"},
-        {"invalid null Class provided", "ogiltig null-klass"},
-        {"Subject:\n", "\u00c4rende:\n"},
-        {"\tPrincipal: ", "\tPrincipal: "},
-        {"\tPublic Credential: ", "\tOffentligt kreditiv: "},
-        {"\tPrivate Credentials inaccessible\n",
-                "\tPrivata kreditiv \u00e4r otillg\u00e4ngliga\n"},
-        {"\tPrivate Credential: ", "\tPrivata kreditiv: "},
-        {"\tPrivate Credential inaccessible\n",
-                "\tPrivata kreditiv \u00e4r otillg\u00e4ngliga\n"},
-        {"Subject is read-only", "\u00c4mnet \u00e4r skrivskyddat"},
-        {"attempting to add an object which is not an instance of java.security.Principal to a Subject's Principal Set",
-                "f\u00f6rs\u00f6k att l\u00e4gga till ett objekt som inte \u00e4r en f\u00f6rekomst av java.security.Principal till en principalupps\u00e4ttning"},
-        {"attempting to add an object which is not an instance of class",
-                "f\u00f6rs\u00f6ker l\u00e4gga till ett objekt som inte \u00e4r en f\u00f6rekomst av {0}"},
+        {"invalid.null.action.provided", "ogiltig null-funktion"},
+        {"invalid.null.Class.provided", "ogiltig null-klass"},
+        {"Subject.", "Innehavare:\n"},
+        {".Principal.", "\tIdentitetshavare: "},
+        {".Public.Credential.", "\tOffentlig inloggning: "},
+        {".Private.Credentials.inaccessible.",
+                "\tPrivat inloggning \u00E4r inte tillg\u00E4nglig\n"},
+        {".Private.Credential.", "\tPrivat inloggning: "},
+        {".Private.Credential.inaccessible.",
+                "\tPrivat inloggning \u00E4r inte tillg\u00E4nglig\n"},
+        {"Subject.is.read.only", "Innehavare \u00E4r skrivskyddad"},
+        {"attempting.to.add.an.object.which.is.not.an.instance.of.java.security.Principal.to.a.Subject.s.Principal.Set",
+                "f\u00F6rs\u00F6k att l\u00E4gga till ett objekt som inte \u00E4r en f\u00F6rekomst av java.security.Principal till en upps\u00E4ttning av identitetshavare"},
+        {"attempting.to.add.an.object.which.is.not.an.instance.of.class",
+                "f\u00F6rs\u00F6ker l\u00E4gga till ett objekt som inte \u00E4r en instans av {0}"},
 
         // javax.security.auth.login.AppConfigurationEntry
-        {"LoginModuleControlFlag: ", "LoginModuleControlFlag: "},
+        {"LoginModuleControlFlag.", "LoginModuleControlFlag: "},
 
         // javax.security.auth.login.LoginContext
-        {"Invalid null input: name", "Ogiltiga null-indata: namn"},
-        {"No LoginModules configured for name",
-         "Inga inloggningsmoduler har konfigurerats f\u00f6r {0}"},
-        {"invalid null Subject provided", "ogiltigt null-Subject"},
-        {"invalid null CallbackHandler provided",
+        {"Invalid.null.input.name", "Ogiltiga null-indata: namn"},
+        {"No.LoginModules.configured.for.name",
+         "Inga inloggningsmoduler har konfigurerats f\u00F6r {0}"},
+        {"invalid.null.Subject.provided", "ogiltig null-innehavare"},
+        {"invalid.null.CallbackHandler.provided",
                 "ogiltig null-CallbackHandler"},
-        {"null subject - logout called before login",
-                "null-subject - utloggning anropades f\u00f6re inloggning"},
-        {"unable to instantiate LoginModule, module, because it does not provide a no-argument constructor",
-                "det g\u00e5r inta att representera LoginModule, {0}, eftersom den inte tillhandah\u00e5ller n\u00e5gon argumentfri konstruktion"},
-        {"unable to instantiate LoginModule",
-                "det g\u00e5r inte att representera LoginModule"},
-        {"unable to instantiate LoginModule: ",
-                "inloggningsmodulen kan inte skapas: "},
-        {"unable to find LoginModule class: ",
-                "det g\u00e5r inte att hitta LoginModule-klassen: "},
-        {"unable to access LoginModule: ",
-                "det g\u00e5r inte att komma \u00e5t LoginModule: "},
-        {"Login Failure: all modules ignored",
+        {"null.subject.logout.called.before.login",
+                "null-innehavare - utloggning anropades f\u00F6re inloggning"},
+        {"unable.to.instantiate.LoginModule.module.because.it.does.not.provide.a.no.argument.constructor",
+                "kan inte instansiera LoginModule, {0}, eftersom den inte tillhandah\u00E5ller n\u00E5gon icke-argumentskonstruktor"},
+        {"unable.to.instantiate.LoginModule",
+                "kan inte instansiera LoginModule"},
+        {"unable.to.instantiate.LoginModule.",
+                "kan inte instansiera LoginModule: "},
+        {"unable.to.find.LoginModule.class.",
+                "hittar inte LoginModule-klassen: "},
+        {"unable.to.access.LoginModule.",
+                "ingen \u00E5tkomst till LoginModule: "},
+        {"Login.Failure.all.modules.ignored",
                 "Inloggningsfel: alla moduler ignoreras"},
 
         // sun.security.provider.PolicyFile
 
-        {"java.security.policy: error parsing policy:\n\tmessage",
-                "java.security.policy: fel vid analys av {0}:\n\t{1}"},
-        {"java.security.policy: error adding Permission, perm:\n\tmessage",
-                "java.security.policy: fel vid till\u00e4gg av beh\u00f6righet, {0}:\n\t{1}"},
-        {"java.security.policy: error adding Entry:\n\tmessage",
-                "java.security.policy: fel vid till\u00e4gg av post:\n\t{0}"},
-        {"alias name not provided (pe.name)", "aliasnamn ej angivet ({0})"},
-        {"unable to perform substitution on alias, suffix",
-                "kan ej ers\u00e4tta aliasnamn, {0}"},
-        {"substitution value, prefix, unsupported",
-                "ers\u00e4ttningsv\u00e4rde, {0}, st\u00f6ds ej"},
-        {"(", "("},
-        {")", ")"},
-        {"type can't be null","typen kan inte vara null"},
+        {"java.security.policy.error.parsing.policy.message",
+                "java.security.policy: fel vid tolkning av {0}:\n\t{1}"},
+        {"java.security.policy.error.adding.Permission.perm.message",
+                "java.security.policy: fel vid till\u00E4gg av beh\u00F6righet, {0}:\n\t{1}"},
+        {"java.security.policy.error.adding.Entry.message",
+                "java.security.policy: fel vid till\u00E4gg av post:\n\t{0}"},
+        {"alias.name.not.provided.pe.name.", "aliasnamn ej angivet ({0})"},
+        {"unable.to.perform.substitution.on.alias.suffix",
+                "kan ej ers\u00E4tta alias, {0}"},
+        {"substitution.value.prefix.unsupported",
+                "ers\u00E4ttningsv\u00E4rde, {0}, st\u00F6ds ej"},
+        {"LPARAM", "("},
+        {"RPARAM", ")"},
+        {"type.can.t.be.null","typen kan inte vara null"},
 
         // sun.security.provider.PolicyParser
-        {"keystorePasswordURL can not be specified without also specifying keystore",
-                "det g\u00e5r inte att ange keystorePasswordURL utan att ange keystore"},
-        {"expected keystore type", "f\u00f6rv\u00e4ntad keystore-typ"},
-        {"expected keystore provider", "keystore-leverant\u00f6r f\u00f6rv\u00e4ntades"},
-        {"multiple Codebase expressions",
-                "flera Codebase-uttryck"},
-        {"multiple SignedBy expressions","flera SignedBy-uttryck"},
-        {"SignedBy has empty alias","SignedBy har ett tomt alias"},
-        {"can not specify Principal with a wildcard class without a wildcard name",
-                "Det g\u00e5r inte att specificera principal genom att ange jokertecken f\u00f6r klass utan att samtidigt ange jokertecken f\u00f6r namn"},
-        {"expected codeBase or SignedBy or Principal",
-                "f\u00f6rv\u00e4ntad codeBase eller SignedBy eller Principal"},
-        {"expected permission entry", "f\u00f6rv\u00e4ntade beh\u00f6righetspost"},
-        {"number ", "antal "},
-        {"expected [expect], read [end of file]",
-                "f\u00f6rv\u00e4ntade [{0}], l\u00e4ste [end of file]"},
-        {"expected [;], read [end of file]",
-                "f\u00f6rv\u00e4ntade [;], l\u00e4ste [end of file]"},
-        {"line number: msg", "rad {0}: {1}"},
-        {"line number: expected [expect], found [actual]",
-                "rad {0}: f\u00f6rv\u00e4ntade [{1}], hittade [{2}]"},
-        {"null principalClass or principalName",
+        {"keystorePasswordURL.can.not.be.specified.without.also.specifying.keystore",
+                "kan inte ange keystorePasswordURL utan att ange nyckellager"},
+        {"expected.keystore.type", "f\u00F6rv\u00E4ntad nyckellagertyp"},
+        {"expected.keystore.provider", "nyckellagerleverant\u00F6r f\u00F6rv\u00E4ntades"},
+        {"multiple.Codebase.expressions",
+                "flera CodeBase-uttryck"},
+        {"multiple.SignedBy.expressions","flera SignedBy-uttryck"},
+        {"SignedBy.has.empty.alias","SignedBy har ett tomt alias"},
+        {"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name",
+                "kan inte ange identitetshavare med en jokerteckenklass utan ett jokerteckennamn"},
+        {"expected.codeBase.or.SignedBy.or.Principal",
+                "f\u00F6rv\u00E4ntad codeBase eller SignedBy eller identitetshavare"},
+        {"expected.permission.entry", "f\u00F6rv\u00E4ntade beh\u00F6righetspost"},
+        {"number.", "antal "},
+        {"expected.expect.read.end.of.file.",
+                "f\u00F6rv\u00E4ntade [{0}], l\u00E4ste [end of file]"},
+        {"expected.read.end.of.file.",
+                "f\u00F6rv\u00E4ntade [;], l\u00E4ste [end of file]"},
+        {"line.number.msg", "rad {0}: {1}"},
+        {"line.number.expected.expect.found.actual.",
+                "rad {0}: f\u00F6rv\u00E4ntade [{1}], hittade [{2}]"},
+        {"null.principalClass.or.principalName",
                 "null-principalClass eller -principalName"},
 
         // sun.security.pkcs11.SunPKCS11
-        {"PKCS11 Token [providerName] Password: ",
-                "PKCS11-pollett [{0}] L\u00f6senord: "},
+        {"PKCS11.Token.providerName.Password.",
+                "PKCS11-tecken [{0}] L\u00F6senord: "},
 
         /* --- DEPRECATED --- */
         // javax.security.auth.Policy
-        {"unable to instantiate Subject-based policy",
-                "den Subject-baserade policyn kan inte skapas"}
+        {"unable.to.instantiate.Subject.based.policy",
+                "den innehavarbaserade policyn kan inte skapas"}
     };
 
 
@@ -648,3 +670,4 @@
         return contents;
     }
 }
+
--- a/jdk/src/share/classes/sun/security/util/Resources_zh_CN.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/util/Resources_zh_CN.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, 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
@@ -35,605 +35,627 @@
     private static final Object[][] contents = {
 
         // shared (from jarsigner)
-        {" ", " "},
-        {"  ", "  "},
-        {"      ", "      "},
-        {", ", ", "},
+        {"SPACE", " "},
+        {"2SPACE", "  "},
+        {"6SPACE", "      "},
+        {"COMMA", ", "},
         // shared (from keytool)
-        {"\n", "\n"},
-        {"*******************************************",
+        {"NEWLINE", "\n"},
+        {"STAR",
                 "*******************************************"},
-        {"*******************************************\n\n",
+        {"STARNN",
                 "*******************************************\n\n"},
 
-        // keytool
-        {"keytool error: ", "keytool\u9519\u8bef\uff1a "},
-        {"Illegal option:  ", "\u975e\u6cd5\u9009\u9879\uff1a  "},
-        {"Try keytool -help","\u5c1d\u8bd5 keytool -help"},
-        {"Command option <flag> needs an argument.", "\u547d\u4ee4\u9009\u9879 {0} \u9700\u8981\u4e00\u4e2a\u53c2\u6570\u3002"},
-        {"Warning:  Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified <command> value.",
-"\u8b66\u544a: PKCS12 KeyStores \u4e0d\u652f\u6301\u5176\u4ed6\u5b58\u50a8\u548c\u5bc6\u94a5\u53e3\u4ee4\u3002\u5ffd\u7565\u7528\u6237\u6307\u5b9a\u7684 {0} \u503c\u3002"},
-        {"-keystore must be NONE if -storetype is {0}",
-                "\u5982\u679c -storetype \u4e3a {0}\uff0c\u5219 -keystore \u5fc5\u987b\u4e3a NONE"},
-        {"Too may retries, program terminated",
-"\u91cd\u8bd5\u6b21\u6570\u8fc7\u591a\uff0c\u7a0b\u5e8f\u5df2\u7ec8\u6b62"},
-        {"-storepasswd and -keypasswd commands not supported if -storetype is {0}",
-                "\u5982\u679c -storetype \u4e3a {0}\uff0c\u5219\u4e0d\u652f\u6301 -storepasswd \u548c -keypasswd \u547d\u4ee4"},
-        {"-keypasswd commands not supported if -storetype is PKCS12",
-                "\u5982\u679c -storetype \u4e3a PKCS12\uff0c\u5219\u4e0d\u652f\u6301 -keypasswd \u547d\u4ee4"},
-        {"-keypass and -new can not be specified if -storetype is {0}",
-                "\u5982\u679c -storetype \u4e3a {0}\uff0c\u5219\u4e0d\u80fd\u6307\u5b9a -keypass \u548c -new"},
-        {"if -protected is specified, then -storepass, -keypass, and -new must not be specified",
-                "\u5982\u679c\u6307\u5b9a\u4e86 -protected\uff0c\u5219\u4e0d\u8981\u6307\u5b9a -storepass\u3001-keypass \u548c -new"},
-        {"if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified",
-                "\u5982\u679c\u6307\u5b9a\u4e86 -srcprotected\uff0c\u5219\u4e0d\u80fd\u6307\u5b9a -srcstorepass \u548c -srckeypass"},
-        {"if keystore is not password protected, then -storepass, -keypass, and -new must not be specified",
-                "\u5982\u679c\u5bc6\u94a5\u5e93\u672a\u53d7\u5bc6\u7801\u4fdd\u62a4\uff0c\u5219\u8bf7\u52ff\u6307\u5b9a -storepass\u3001-keypass \u548c -new"},
-        {"if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified",
-                "\u5982\u679c\u6e90\u5bc6\u94a5\u5e93\u672a\u53d7\u5bc6\u7801\u4fdd\u62a4\uff0c\u5219\u8bf7\u52ff\u6307\u5b9a -srcstorepass \u548c -srckeypass"},
-        {"Validity must be greater than zero",
-                "\u6709\u6548\u6027\u5fc5\u987b\u5927\u4e8e\u96f6"},
-        {"provName not a provider", "{0}\u4e0d\u662f\u4e00\u4e2a\u63d0\u4f9b\u8005"},
-        {"Usage error: no command provided", "\u7528\u6cd5\u9519\u8bef: \u6ca1\u6709\u63d0\u4f9b\u547d\u4ee4"},
-        {"Usage error, <arg> is not a legal command", "\u7528\u6cd5\u9519\u8bef\uff0c{0} \u4e0d\u662f\u5408\u6cd5\u7684\u547d\u4ee4"},
-        {"Source keystore file exists, but is empty: ", "\u6e90\u5bc6\u94a5\u5e93\u6587\u4ef6\u5b58\u5728\uff0c\u4f46\u4e3a\u7a7a: "},
-        {"Please specify -srckeystore", "\u8bf7\u6307\u5b9a -srckeystore"},
-        {"Must not specify both -v and -rfc with 'list' command",
-                "\u4e0d\u5f97\u4ee5\u300c\u5217\u8868\u300d\u6307\u4ee4\u6765\u6307\u5b9a-v \u53ca-rfc"},
-        {"Key password must be at least 6 characters",
-                "\u5173\u952e\u5bc6\u7801\u81f3\u5c11\u5fc5\u987b\u4e3a6\u4e2a\u5b57\u7b26"},
-        {"New password must be at least 6 characters",
-                "\u65b0\u5bc6\u7801\u81f3\u5c11\u5fc5\u987b\u4e3a6\u4e2a\u5b57\u7b26"},
-        {"Keystore file exists, but is empty: ",
-                "Keystore\u6587\u4ef6\u5b58\u5728\uff0c\u4f46\u4e3a\u7a7a\u6587\u4ef6\uff1a "},
-        {"Keystore file does not exist: ",
-                "Keystore \u6587\u4ef6\u4e0d\u5b58\u5728\uff1a "},
-        {"Must specify destination alias", "\u5fc5\u987b\u6307\u5b9a\u76ee\u7684\u5730\u522b\u540d"},
-        {"Must specify alias", "\u5fc5\u987b\u6307\u5b9a\u522b\u540d"},
-        {"Keystore password must be at least 6 characters",
-                "Keystore \u5bc6\u7801\u81f3\u5c11\u5fc5\u987b\u4e3a6\u4e2a\u5b57\u7b26"},
-        {"Enter keystore password:  ", "\u8f93\u5165keystore\u5bc6\u7801\uff1a  "},
-        {"Enter source keystore password:  ", "\u8f93\u5165\u6e90\u5bc6\u94a5\u5e93\u53e3\u4ee4:  "},
-        {"Enter destination keystore password:  ", "\u8f93\u5165\u76ee\u6807\u5bc6\u94a5\u5e93\u53e3\u4ee4:  "},
-        {"Keystore password is too short - must be at least 6 characters",
-         "Keystore \u5bc6\u7801\u592a\u77ed -\u81f3\u5c11\u5fc5\u987b\u4e3a6\u4e2a\u5b57\u7b26"},
-        {"Unknown Entry Type", "\u672a\u77e5\u9879\u7c7b\u578b"},
-        {"Too many failures. Alias not changed", "\u9519\u8bef\u8fc7\u591a\u3002\u672a\u66f4\u6539\u522b\u540d"},
-        {"Entry for alias <alias> successfully imported.",
-"\u5df2\u6210\u529f\u5bfc\u5165\u522b\u540d {0} \u9879\u3002"},
-        {"Entry for alias <alias> not imported.", "\u672a\u5bfc\u5165\u522b\u540d {0} \u9879\u3002"},
-        {"Problem importing entry for alias <alias>: <exception>.\nEntry for alias <alias> not imported.",
-"\u5bfc\u5165\u522b\u540d {0} \u9879\u65f6\u51fa\u73b0\u95ee\u9898: {1}\u3002\n\u672a\u5bfc\u5165\u522b\u540d {0} \u9879\u3002"},
-        {"Import command completed:  <ok> entries successfully imported, <fail> entries failed or cancelled",
-"\u5df2\u5b8c\u6210\u5bfc\u5165\u547d\u4ee4: {0} \u9879\u6210\u529f\u5bfc\u5165\uff0c{1} \u9879\u5931\u8d25\u6216\u53d6\u6d88"},
-        {"Warning: Overwriting existing alias <alias> in destination keystore",
-"\u8b66\u544a: \u6b63\u5728\u8986\u76d6\u76ee\u6807\u5bc6\u94a5\u5e93\u4e2d\u7684\u73b0\u6709\u522b\u540d {0}"},
-        {"Existing entry alias <alias> exists, overwrite? [no]:  ",
-"\u5b58\u5728\u73b0\u6709\u9879\u522b\u540d {0}\uff0c\u662f\u5426\u8981\u8986\u76d6\uff1f[\u5426]:  "},
-        {"Too many failures - try later", "\u592a\u591a\u9519\u8bef - \u8bf7\u7a0d\u540e\u518d\u8bd5"},
-        {"Certification request stored in file <filename>",
-                "\u4fdd\u5b58\u5728\u6587\u4ef6\u4e2d\u7684\u8ba4\u8bc1\u8981\u6c42 <{0}>"},
-        {"Submit this to your CA", "\u5c06\u6b64\u63d0\u4ea4\u7ed9\u60a8\u7684CA"},
-        {"if alias not specified, destalias, srckeypass, and destkeypass must not be specified",
-"\u5982\u679c\u6ca1\u6709\u6307\u5b9a\u522b\u540d\uff0c\u5219\u4e0d\u80fd\u6307\u5b9a\u76ee\u6807\u522b\u540d\u3001\u6e90\u5bc6\u94a5\u5e93\u53e3\u4ee4\u548c\u76ee\u6807\u5bc6\u94a5\u5e93\u53e3\u4ee4"},
-        {"Certificate stored in file <filename>",
-                "\u4fdd\u5b58\u5728\u6587\u4ef6\u4e2d\u7684\u8ba4\u8bc1 <{0}>"},
-        {"Certificate reply was installed in keystore",
-                "\u8ba4\u8bc1\u56de\u590d\u5df2\u5b89\u88c5\u5728 keystore\u4e2d"},
-        {"Certificate reply was not installed in keystore",
-                "\u8ba4\u8bc1\u56de\u590d\u672a\u5b89\u88c5\u5728 keystore\u4e2d"},
-        {"Certificate was added to keystore",
-                "\u8ba4\u8bc1\u5df2\u6dfb\u52a0\u81f3keystore\u4e2d"},
-        {"Certificate was not added to keystore",
-                "\u8ba4\u8bc1\u672a\u6dfb\u52a0\u81f3keystore\u4e2d"},
-        {"[Storing ksfname]", "[\u6b63\u5728\u5b58\u50a8 {0}]"},
-        {"alias has no public key (certificate)",
-                "{0} \u6ca1\u6709\u516c\u5f00\u91d1\u94a5\uff08\u8ba4\u8bc1\uff09"},
-        {"Cannot derive signature algorithm",
-                "\u65e0\u6cd5\u53d6\u5f97\u7b7e\u540d\u7b97\u6cd5"},
-        {"Alias <alias> does not exist",
-                "\u522b\u540d <{0}> \u4e0d\u5b58\u5728"},
-        {"Alias <alias> has no certificate",
-                "\u522b\u540d <{0}> \u6ca1\u6709\u8ba4\u8bc1"},
-        {"Key pair not generated, alias <alias> already exists",
-                "\u6ca1\u6709\u521b\u5efa\u952e\u503c\u5bf9\uff0c\u522b\u540d <{0}> \u5df2\u7ecf\u5b58\u5728"},
-        {"Cannot derive signature algorithm",
-                "\u65e0\u6cd5\u53d6\u5f97\u7b7e\u540d\u7b97\u6cd5"},
-        {"Generating keysize bit keyAlgName key pair and self-signed certificate (sigAlgName) with a validity of validality days\n\tfor: x500Name",
-"\u6b63\u5728\u4e3a\u4ee5\u4e0b\u5bf9\u8c61\u751f\u6210 {0} \u4f4d {1} \u5bc6\u94a5\u5bf9\u548c\u81ea\u7b7e\u540d\u8bc1\u4e66 ({2})\uff08\u6709\u6548\u671f\u4e3a {3} \u5929\uff09:\n\t {4}"},
-        {"Enter key password for <alias>", "\u8f93\u5165<{0}>\u7684\u4e3b\u5bc6\u7801"},
-        {"\t(RETURN if same as keystore password):  ",
-                "\t\uff08\u5982\u679c\u548c keystore \u5bc6\u7801\u76f8\u540c\uff0c\u6309\u56de\u8f66\uff09\uff1a  "},
-        {"Key password is too short - must be at least 6 characters",
-                "\u4e3b\u5bc6\u7801\u592a\u77ed -\u81f3\u5c11\u5fc5\u987b\u4e3a 6 \u4e2a\u5b57\u7b26"},
-        {"Too many failures - key not added to keystore",
-                "\u592a\u591a\u9519\u8bef - \u952e\u503c\u672a\u88ab\u6dfb\u52a0\u81f3keystore\u4e2d"},
-        {"Destination alias <dest> already exists",
-                "\u76ee\u7684\u5730\u522b\u540d <{0}> \u5df2\u7ecf\u5b58\u5728"},
-        {"Password is too short - must be at least 6 characters",
-                "\u5bc6\u7801\u592a\u77ed -\u81f3\u5c11\u5fc5\u987b\u4e3a6\u4e2a\u5b57\u7b26"},
-        {"Too many failures. Key entry not cloned",
-                "\u592a\u591a\u9519\u8bef\u3002\u952e\u503c\u8f93\u5165\u672a\u88ab\u590d\u5236"},
-        {"key password for <alias>", "<{0}> \u7684\u4e3b\u5bc6\u7801"},
-        {"Keystore entry for <id.getName()> already exists",
-                "<{0}> \u7684 Keystore \u8f93\u5165\u5df2\u7ecf\u5b58\u5728"},
-        {"Creating keystore entry for <id.getName()> ...",
-                "\u521b\u5efa <{0}> \u7684 keystore\u8f93\u5165..."},
-        {"No entries from identity database added",
-                "\u4ece\u6dfb\u52a0\u7684\u8fa8\u8bc6\u6570\u636e\u5e93\u4e2d\uff0c\u6ca1\u6709\u8f93\u5165"},
-        {"Alias name: alias", "\u522b\u540d\u540d\u79f0\uff1a {0}"},
-        {"Creation date: keyStore.getCreationDate(alias)",
-                "\u521b\u5efa\u65e5\u671f\uff1a {0,date}"},
-        {"alias, keyStore.getCreationDate(alias), ",
+        // keytool: Help part
+        {".OPTION.", " [OPTION]..."},
+        {"Options.", "\u9009\u9879:"},
+        {"Use.keytool.help.for.all.available.commands",
+                 "\u4F7F\u7528 \"keytool -help\" \u83B7\u53D6\u6240\u6709\u53EF\u7528\u547D\u4EE4"},
+        {"Key.and.Certificate.Management.Tool",
+                 "\u5BC6\u94A5\u548C\u8BC1\u4E66\u7BA1\u7406\u5DE5\u5177"},
+        {"Commands.", "\u547D\u4EE4:"},
+        {"Use.keytool.command.name.help.for.usage.of.command.name",
+                "\u4F7F\u7528 \"keytool -command_name -help\" \u83B7\u53D6 command_name \u7684\u7528\u6CD5"},
+        // keytool: help: commands
+        {"Generates.a.certificate.request",
+                "\u751F\u6210\u8BC1\u4E66\u8BF7\u6C42"}, //-certreq
+        {"Changes.an.entry.s.alias",
+                "\u66F4\u6539\u6761\u76EE\u7684\u522B\u540D"}, //-changealias
+        {"Deletes.an.entry",
+                "\u5220\u9664\u6761\u76EE"}, //-delete
+        {"Exports.certificate",
+                "\u5BFC\u51FA\u8BC1\u4E66"}, //-exportcert
+        {"Generates.a.key.pair",
+                "\u751F\u6210\u5BC6\u94A5\u5BF9"}, //-genkeypair
+        {"Generates.a.secret.key",
+                "\u751F\u6210\u5BC6\u94A5"}, //-genseckey
+        {"Generates.certificate.from.a.certificate.request",
+                "\u6839\u636E\u8BC1\u4E66\u8BF7\u6C42\u751F\u6210\u8BC1\u4E66"}, //-gencert
+        {"Generates.CRL", "\u751F\u6210 CRL"}, //-gencrl
+        {"Imports.entries.from.a.JDK.1.1.x.style.identity.database",
+                "\u4ECE JDK 1.1.x \u6837\u5F0F\u7684\u8EAB\u4EFD\u6570\u636E\u5E93\u5BFC\u5165\u6761\u76EE"}, //-identitydb
+        {"Imports.a.certificate.or.a.certificate.chain",
+                "\u5BFC\u5165\u8BC1\u4E66\u6216\u8BC1\u4E66\u94FE"}, //-importcert
+        {"Imports.one.or.all.entries.from.another.keystore",
+                "\u4ECE\u5176\u4ED6\u5BC6\u94A5\u5E93\u5BFC\u5165\u4E00\u4E2A\u6216\u6240\u6709\u6761\u76EE"}, //-importkeystore
+        {"Clones.a.key.entry",
+                "\u514B\u9686\u5BC6\u94A5\u6761\u76EE"}, //-keyclone
+        {"Changes.the.key.password.of.an.entry",
+                "\u66F4\u6539\u6761\u76EE\u7684\u5BC6\u94A5\u53E3\u4EE4"}, //-keypasswd
+        {"Lists.entries.in.a.keystore",
+                "\u5217\u51FA\u5BC6\u94A5\u5E93\u4E2D\u7684\u6761\u76EE"}, //-list
+        {"Prints.the.content.of.a.certificate",
+                "\u6253\u5370\u8BC1\u4E66\u5185\u5BB9"}, //-printcert
+        {"Prints.the.content.of.a.certificate.request",
+                "\u6253\u5370\u8BC1\u4E66\u8BF7\u6C42\u7684\u5185\u5BB9"}, //-printcertreq
+        {"Prints.the.content.of.a.CRL.file",
+                "\u6253\u5370 CRL \u6587\u4EF6\u7684\u5185\u5BB9"}, //-printcrl
+        {"Generates.a.self.signed.certificate",
+                "\u751F\u6210\u81EA\u7B7E\u540D\u8BC1\u4E66"}, //-selfcert
+        {"Changes.the.store.password.of.a.keystore",
+                "\u66F4\u6539\u5BC6\u94A5\u5E93\u7684\u5B58\u50A8\u53E3\u4EE4"}, //-storepasswd
+        // keytool: help: options
+        {"alias.name.of.the.entry.to.process",
+                "\u8981\u5904\u7406\u7684\u6761\u76EE\u7684\u522B\u540D"}, //-alias
+        {"destination.alias",
+                "\u76EE\u6807\u522B\u540D"}, //-destalias
+        {"destination.key.password",
+                "\u76EE\u6807\u5BC6\u94A5\u53E3\u4EE4"}, //-destkeypass
+        {"destination.keystore.name",
+                "\u76EE\u6807\u5BC6\u94A5\u5E93\u540D\u79F0"}, //-destkeystore
+        {"destination.keystore.password.protected",
+                "\u53D7\u4FDD\u62A4\u7684\u76EE\u6807\u5BC6\u94A5\u5E93\u53E3\u4EE4"}, //-destprotected
+        {"destination.keystore.provider.name",
+                "\u76EE\u6807\u5BC6\u94A5\u5E93\u63D0\u4F9B\u65B9\u540D\u79F0"}, //-destprovidername
+        {"destination.keystore.password",
+                "\u76EE\u6807\u5BC6\u94A5\u5E93\u53E3\u4EE4"}, //-deststorepass
+        {"destination.keystore.type",
+                "\u76EE\u6807\u5BC6\u94A5\u5E93\u7C7B\u578B"}, //-deststoretype
+        {"distinguished.name",
+                "\u552F\u4E00\u5224\u522B\u540D"}, //-dname
+        {"X.509.extension",
+                "X.509 \u6269\u5C55"}, //-ext
+        {"output.file.name",
+                "\u8F93\u51FA\u6587\u4EF6\u540D"}, //-file and -outfile
+        {"input.file.name",
+                "\u8F93\u5165\u6587\u4EF6\u540D"}, //-file and -infile
+        {"key.algorithm.name",
+                "\u5BC6\u94A5\u7B97\u6CD5\u540D\u79F0"}, //-keyalg
+        {"key.password",
+                "\u5BC6\u94A5\u53E3\u4EE4"}, //-keypass
+        {"key.bit.size",
+                "\u5BC6\u94A5\u4F4D\u5927\u5C0F"}, //-keysize
+        {"keystore.name",
+                "\u5BC6\u94A5\u5E93\u540D\u79F0"}, //-keystore
+        {"new.password",
+                "\u65B0\u53E3\u4EE4"}, //-new
+        {"do.not.prompt",
+                "\u4E0D\u63D0\u793A"}, //-noprompt
+        {"password.through.protected.mechanism",
+                "\u901A\u8FC7\u53D7\u4FDD\u62A4\u7684\u673A\u5236\u7684\u53E3\u4EE4"}, //-protected
+        {"provider.argument",
+                "\u63D0\u4F9B\u65B9\u53C2\u6570"}, //-providerarg
+        {"provider.class.name",
+                "\u63D0\u4F9B\u65B9\u7C7B\u540D"}, //-providerclass
+        {"provider.name",
+                "\u63D0\u4F9B\u65B9\u540D\u79F0"}, //-providername
+        {"provider.classpath",
+                "\u63D0\u4F9B\u65B9\u7C7B\u8DEF\u5F84"}, //-providerpath
+        {"output.in.RFC.style",
+                "\u4EE5 RFC \u6837\u5F0F\u8F93\u51FA"}, //-rfc
+        {"signature.algorithm.name",
+                "\u7B7E\u540D\u7B97\u6CD5\u540D\u79F0"}, //-sigalg
+        {"source.alias",
+                "\u6E90\u522B\u540D"}, //-srcalias
+        {"source.key.password",
+                "\u6E90\u5BC6\u94A5\u53E3\u4EE4"}, //-srckeypass
+        {"source.keystore.name",
+                "\u6E90\u5BC6\u94A5\u5E93\u540D\u79F0"}, //-srckeystore
+        {"source.keystore.password.protected",
+                "\u53D7\u4FDD\u62A4\u7684\u6E90\u5BC6\u94A5\u5E93\u53E3\u4EE4"}, //-srcprotected
+        {"source.keystore.provider.name",
+                "\u6E90\u5BC6\u94A5\u5E93\u63D0\u4F9B\u65B9\u540D\u79F0"}, //-srcprovidername
+        {"source.keystore.password",
+                "\u6E90\u5BC6\u94A5\u5E93\u53E3\u4EE4"}, //-srcstorepass
+        {"source.keystore.type",
+                "\u6E90\u5BC6\u94A5\u5E93\u7C7B\u578B"}, //-srcstoretype
+        {"SSL.server.host.and.port",
+                "SSL \u670D\u52A1\u5668\u4E3B\u673A\u548C\u7AEF\u53E3"}, //-sslserver
+        {"signed.jar.file",
+                "\u5DF2\u7B7E\u540D\u7684 jar \u6587\u4EF6"}, //=jarfile
+        {"certificate.validity.start.date.time",
+                "\u8BC1\u4E66\u6709\u6548\u671F\u5F00\u59CB\u65E5\u671F/\u65F6\u95F4"}, //-startdate
+        {"keystore.password",
+                "\u5BC6\u94A5\u5E93\u53E3\u4EE4"}, //-storepass
+        {"keystore.type",
+                "\u5BC6\u94A5\u5E93\u7C7B\u578B"}, //-storetype
+        {"trust.certificates.from.cacerts",
+                "\u4FE1\u4EFB\u6765\u81EA cacerts \u7684\u8BC1\u4E66"}, //-trustcacerts
+        {"verbose.output",
+                "\u8BE6\u7EC6\u8F93\u51FA"}, //-v
+        {"validity.number.of.days",
+                "\u6709\u6548\u5929\u6570"}, //-validity
+        {"Serial.ID.of.cert.to.revoke",
+                 "\u8981\u64A4\u9500\u7684\u8BC1\u4E66\u7684\u5E8F\u5217 ID"}, //-id
+        // keytool: Running part
+        {"keytool.error.", "keytool \u9519\u8BEF: "},
+        {"Illegal.option.", "\u975E\u6CD5\u9009\u9879:  "},
+        {"Illegal.value.", "\u975E\u6CD5\u503C: "},
+        {"Unknown.password.type.", "\u672A\u77E5\u53E3\u4EE4\u7C7B\u578B: "},
+        {"Cannot.find.environment.variable.",
+                "\u627E\u4E0D\u5230\u73AF\u5883\u53D8\u91CF: "},
+        {"Cannot.find.file.", "\u627E\u4E0D\u5230\u6587\u4EF6: "},
+        {"Command.option.flag.needs.an.argument.", "\u547D\u4EE4\u9009\u9879{0}\u9700\u8981\u4E00\u4E2A\u53C2\u6570\u3002"},
+        {"Warning.Different.store.and.key.passwords.not.supported.for.PKCS12.KeyStores.Ignoring.user.specified.command.value.",
+                "\u8B66\u544A: PKCS12 KeyStores \u4E0D\u652F\u6301\u5176\u4ED6\u5B58\u50A8\u548C\u5BC6\u94A5\u53E3\u4EE4\u3002\u6B63\u5728\u5FFD\u7565\u7528\u6237\u6307\u5B9A\u7684{0}\u503C\u3002"},
+        {".keystore.must.be.NONE.if.storetype.is.{0}",
+                "\u5982\u679C -storetype \u4E3A {0}, \u5219 -keystore \u5FC5\u987B\u4E3A NONE"},
+        {"Too.many.retries.program.terminated",
+                 "\u91CD\u8BD5\u6B21\u6570\u8FC7\u591A, \u7A0B\u5E8F\u5DF2\u7EC8\u6B62"},
+        {".storepasswd.and.keypasswd.commands.not.supported.if.storetype.is.{0}",
+                "\u5982\u679C -storetype \u4E3A {0}, \u5219\u4E0D\u652F\u6301 -storepasswd \u548C -keypasswd \u547D\u4EE4"},
+        {".keypasswd.commands.not.supported.if.storetype.is.PKCS12",
+                "\u5982\u679C -storetype \u4E3A PKCS12, \u5219\u4E0D\u652F\u6301 -keypasswd \u547D\u4EE4"},
+        {".keypass.and.new.can.not.be.specified.if.storetype.is.{0}",
+                "\u5982\u679C -storetype \u4E3A {0}, \u5219\u4E0D\u80FD\u6307\u5B9A -keypass \u548C -new"},
+        {"if.protected.is.specified.then.storepass.keypass.and.new.must.not.be.specified",
+                "\u5982\u679C\u6307\u5B9A\u4E86 -protected, \u5219\u4E0D\u80FD\u6307\u5B9A -storepass, -keypass \u548C -new"},
+        {"if.srcprotected.is.specified.then.srcstorepass.and.srckeypass.must.not.be.specified",
+                "\u5982\u679C\u6307\u5B9A\u4E86 -srcprotected, \u5219\u4E0D\u80FD\u6307\u5B9A -srcstorepass \u548C -srckeypass"},
+        {"if.keystore.is.not.password.protected.then.storepass.keypass.and.new.must.not.be.specified",
+                "\u5982\u679C\u5BC6\u94A5\u5E93\u672A\u53D7\u53E3\u4EE4\u4FDD\u62A4, \u5219\u4E0D\u80FD\u6307\u5B9A -storepass, -keypass \u548C -new"},
+        {"if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified",
+                "\u5982\u679C\u6E90\u5BC6\u94A5\u5E93\u672A\u53D7\u53E3\u4EE4\u4FDD\u62A4, \u5219\u4E0D\u80FD\u6307\u5B9A -srcstorepass \u548C -srckeypass"},
+        {"Illegal.startdate.value", "\u975E\u6CD5\u5F00\u59CB\u65E5\u671F\u503C"},
+        {"Validity.must.be.greater.than.zero",
+                "\u6709\u6548\u6027\u5FC5\u987B\u5927\u4E8E\u96F6"},
+        {"provName.not.a.provider", "{0}\u4E0D\u662F\u63D0\u4F9B\u65B9"},
+        {"Usage.error.no.command.provided", "\u7528\u6CD5\u9519\u8BEF: \u6CA1\u6709\u63D0\u4F9B\u547D\u4EE4"},
+        {"Source.keystore.file.exists.but.is.empty.", "\u6E90\u5BC6\u94A5\u5E93\u6587\u4EF6\u5B58\u5728, \u4F46\u4E3A\u7A7A: "},
+        {"Please.specify.srckeystore", "\u8BF7\u6307\u5B9A -srckeystore"},
+        {"Must.not.specify.both.v.and.rfc.with.list.command",
+                "\u4E0D\u80FD\u4F7F\u7528 'list' \u547D\u4EE4\u6765\u6307\u5B9A -v \u53CA -rfc"},
+        {"Key.password.must.be.at.least.6.characters",
+                "\u5BC6\u94A5\u53E3\u4EE4\u81F3\u5C11\u5FC5\u987B\u4E3A 6 \u4E2A\u5B57\u7B26"},
+        {"New.password.must.be.at.least.6.characters",
+                "\u65B0\u53E3\u4EE4\u81F3\u5C11\u5FC5\u987B\u4E3A 6 \u4E2A\u5B57\u7B26"},
+        {"Keystore.file.exists.but.is.empty.",
+                "\u5BC6\u94A5\u5E93\u6587\u4EF6\u5B58\u5728, \u4F46\u4E3A\u7A7A: "},
+        {"Keystore.file.does.not.exist.",
+                "\u5BC6\u94A5\u5E93\u6587\u4EF6\u4E0D\u5B58\u5728: "},
+        {"Must.specify.destination.alias", "\u5FC5\u987B\u6307\u5B9A\u76EE\u6807\u522B\u540D"},
+        {"Must.specify.alias", "\u5FC5\u987B\u6307\u5B9A\u522B\u540D"},
+        {"Keystore.password.must.be.at.least.6.characters",
+                "\u5BC6\u94A5\u5E93\u53E3\u4EE4\u81F3\u5C11\u5FC5\u987B\u4E3A 6 \u4E2A\u5B57\u7B26"},
+        {"Enter.keystore.password.", "\u8F93\u5165\u5BC6\u94A5\u5E93\u53E3\u4EE4:  "},
+        {"Enter.source.keystore.password.", "\u8F93\u5165\u6E90\u5BC6\u94A5\u5E93\u53E3\u4EE4:  "},
+        {"Enter.destination.keystore.password.", "\u8F93\u5165\u76EE\u6807\u5BC6\u94A5\u5E93\u53E3\u4EE4:  "},
+        {"Keystore.password.is.too.short.must.be.at.least.6.characters",
+         "\u5BC6\u94A5\u5E93\u53E3\u4EE4\u592A\u77ED - \u81F3\u5C11\u5FC5\u987B\u4E3A 6 \u4E2A\u5B57\u7B26"},
+        {"Unknown.Entry.Type", "\u672A\u77E5\u6761\u76EE\u7C7B\u578B"},
+        {"Too.many.failures.Alias.not.changed", "\u6545\u969C\u592A\u591A\u3002\u672A\u66F4\u6539\u522B\u540D"},
+        {"Entry.for.alias.alias.successfully.imported.",
+                 "\u5DF2\u6210\u529F\u5BFC\u5165\u522B\u540D {0} \u7684\u6761\u76EE\u3002"},
+        {"Entry.for.alias.alias.not.imported.", "\u672A\u5BFC\u5165\u522B\u540D {0} \u7684\u6761\u76EE\u3002"},
+        {"Problem.importing.entry.for.alias.alias.exception.Entry.for.alias.alias.not.imported.",
+                 "\u5BFC\u5165\u522B\u540D {0} \u7684\u6761\u76EE\u65F6\u51FA\u73B0\u95EE\u9898: {1}\u3002\n\u672A\u5BFC\u5165\u522B\u540D {0} \u7684\u6761\u76EE\u3002"},
+        {"Import.command.completed.ok.entries.successfully.imported.fail.entries.failed.or.cancelled",
+                 "\u5DF2\u5B8C\u6210\u5BFC\u5165\u547D\u4EE4: {0} \u4E2A\u6761\u76EE\u6210\u529F\u5BFC\u5165, {1} \u4E2A\u6761\u76EE\u5931\u8D25\u6216\u53D6\u6D88"},
+        {"Warning.Overwriting.existing.alias.alias.in.destination.keystore",
+                 "\u8B66\u544A: \u6B63\u5728\u8986\u76D6\u76EE\u6807\u5BC6\u94A5\u5E93\u4E2D\u7684\u73B0\u6709\u522B\u540D {0}"},
+        {"Existing.entry.alias.alias.exists.overwrite.no.",
+                 "\u5B58\u5728\u73B0\u6709\u6761\u76EE\u522B\u540D {0}, \u662F\u5426\u8986\u76D6? [\u5426]:  "},
+        {"Too.many.failures.try.later", "\u6545\u969C\u592A\u591A - \u8BF7\u7A0D\u540E\u518D\u8BD5"},
+        {"Certification.request.stored.in.file.filename.",
+                "\u5B58\u50A8\u5728\u6587\u4EF6 <{0}> \u4E2D\u7684\u8BA4\u8BC1\u8BF7\u6C42"},
+        {"Submit.this.to.your.CA", "\u5C06\u6B64\u63D0\u4EA4\u7ED9\u60A8\u7684 CA"},
+        {"if.alias.not.specified.destalias.srckeypass.and.destkeypass.must.not.be.specified",
+            "\u5982\u679C\u6CA1\u6709\u6307\u5B9A\u522B\u540D, \u5219\u4E0D\u80FD\u6307\u5B9A\u76EE\u6807\u522B\u540D, \u6E90\u5BC6\u94A5\u5E93\u53E3\u4EE4\u548C\u76EE\u6807\u5BC6\u94A5\u5E93\u53E3\u4EE4"},
+        {"Certificate.stored.in.file.filename.",
+                "\u5B58\u50A8\u5728\u6587\u4EF6 <{0}> \u4E2D\u7684\u8BC1\u4E66"},
+        {"Certificate.reply.was.installed.in.keystore",
+                "\u8BC1\u4E66\u56DE\u590D\u5DF2\u5B89\u88C5\u5728\u5BC6\u94A5\u5E93\u4E2D"},
+        {"Certificate.reply.was.not.installed.in.keystore",
+                "\u8BC1\u4E66\u56DE\u590D\u672A\u5B89\u88C5\u5728\u5BC6\u94A5\u5E93\u4E2D"},
+        {"Certificate.was.added.to.keystore",
+                "\u8BC1\u4E66\u5DF2\u6DFB\u52A0\u5230\u5BC6\u94A5\u5E93\u4E2D"},
+        {"Certificate.was.not.added.to.keystore",
+                "\u8BC1\u4E66\u672A\u6DFB\u52A0\u5230\u5BC6\u94A5\u5E93\u4E2D"},
+        {".Storing.ksfname.", "[\u6B63\u5728\u5B58\u50A8{0}]"},
+        {"alias.has.no.public.key.certificate.",
+                "{0}\u6CA1\u6709\u516C\u5171\u5BC6\u94A5 (\u8BC1\u4E66)"},
+        {"Cannot.derive.signature.algorithm",
+                "\u65E0\u6CD5\u6D3E\u751F\u7B7E\u540D\u7B97\u6CD5"},
+        {"Alias.alias.does.not.exist",
+                "\u522B\u540D <{0}> \u4E0D\u5B58\u5728"},
+        {"Alias.alias.has.no.certificate",
+                "\u522B\u540D <{0}> \u6CA1\u6709\u8BC1\u4E66"},
+        {"Key.pair.not.generated.alias.alias.already.exists",
+                "\u672A\u751F\u6210\u5BC6\u94A5\u5BF9, \u522B\u540D <{0}> \u5DF2\u7ECF\u5B58\u5728"},
+        {"Generating.keysize.bit.keyAlgName.key.pair.and.self.signed.certificate.sigAlgName.with.a.validity.of.validality.days.for",
+                "\u6B63\u5728\u4E3A\u4EE5\u4E0B\u5BF9\u8C61\u751F\u6210 {0} \u4F4D{1}\u5BC6\u94A5\u5BF9\u548C\u81EA\u7B7E\u540D\u8BC1\u4E66 ({2}) (\u6709\u6548\u671F\u4E3A {3} \u5929):\n\t {4}"},
+        {"Enter.key.password.for.alias.", "\u8F93\u5165 <{0}> \u7684\u5BC6\u94A5\u53E3\u4EE4"},
+        {".RETURN.if.same.as.keystore.password.",
+                "\t(\u5982\u679C\u548C\u5BC6\u94A5\u5E93\u53E3\u4EE4\u76F8\u540C, \u6309\u56DE\u8F66):  "},
+        {"Key.password.is.too.short.must.be.at.least.6.characters",
+                "\u5BC6\u94A5\u53E3\u4EE4\u592A\u77ED - \u81F3\u5C11\u5FC5\u987B\u4E3A 6 \u4E2A\u5B57\u7B26"},
+        {"Too.many.failures.key.not.added.to.keystore",
+                "\u6545\u969C\u592A\u591A - \u5BC6\u94A5\u672A\u6DFB\u52A0\u5230\u5BC6\u94A5\u5E93\u4E2D"},
+        {"Destination.alias.dest.already.exists",
+                "\u76EE\u6807\u522B\u540D <{0}> \u5DF2\u7ECF\u5B58\u5728"},
+        {"Password.is.too.short.must.be.at.least.6.characters",
+                "\u53E3\u4EE4\u592A\u77ED - \u81F3\u5C11\u5FC5\u987B\u4E3A 6 \u4E2A\u5B57\u7B26"},
+        {"Too.many.failures.Key.entry.not.cloned",
+                "\u6545\u969C\u592A\u591A\u3002\u672A\u514B\u9686\u5BC6\u94A5\u6761\u76EE"},
+        {"key.password.for.alias.", "<{0}> \u7684\u5BC6\u94A5\u53E3\u4EE4"},
+        {"Keystore.entry.for.id.getName.already.exists",
+                "<{0}> \u7684\u5BC6\u94A5\u5E93\u6761\u76EE\u5DF2\u7ECF\u5B58\u5728"},
+        {"Creating.keystore.entry.for.id.getName.",
+                "\u6B63\u5728\u521B\u5EFA <{0}> \u7684\u5BC6\u94A5\u5E93\u6761\u76EE..."},
+        {"No.entries.from.identity.database.added",
+                "\u672A\u4ECE\u8EAB\u4EFD\u6570\u636E\u5E93\u4E2D\u6DFB\u52A0\u4EFB\u4F55\u6761\u76EE"},
+        {"Alias.name.alias", "\u522B\u540D: {0}"},
+        {"Creation.date.keyStore.getCreationDate.alias.",
+                "\u521B\u5EFA\u65E5\u671F: {0,date}"},
+        {"alias.keyStore.getCreationDate.alias.",
                 "{0}, {1,date}, "},
-        {"alias, ", "{0}, "},
-        {"Entry type: <type>", "\u9879\u7c7b\u578b: {0}"},
-        {"Certificate chain length: ", "\u8ba4\u8bc1\u94fe\u957f\u5ea6\uff1a "},
-        {"Certificate[(i + 1)]:", "\u8ba4\u8bc1 [{0,number,integer}]:"},
-        {"Certificate fingerprint (MD5): ", "\u8ba4\u8bc1\u6307\u7eb9 (MD5)\uff1a "},
-        {"Entry type: trustedCertEntry\n", "\u8f93\u5165\u7c7b\u578b\uff1a trustedCertEntry\n"},
-        {"trustedCertEntry,", "trustedCertEntry,"},
-        {"Keystore type: ", "Keystore \u7c7b\u578b\uff1a "},
-        {"Keystore provider: ", "Keystore \u63d0\u4f9b\u8005\uff1a "},
-        {"Your keystore contains keyStore.size() entry",
-                "\u60a8\u7684 keystore \u5305\u542b {0,number,integer} \u8f93\u5165"},
-        {"Your keystore contains keyStore.size() entries",
-                "\u60a8\u7684 keystore \u5305\u542b {0,number,integer} \u8f93\u5165"},
-        {"Failed to parse input", "\u65e0\u6cd5\u5bf9\u8f93\u5165\u8fdb\u884c\u8bed\u6cd5\u5206\u6790"},
-        {"Empty input", "\u7a7a\u8f93\u5165"},
-        {"Not X.509 certificate", "\u975e X.509 \u8ba4\u8bc1"},
-        {"Cannot derive signature algorithm",
-                "\u65e0\u6cd5\u53d6\u5f97\u7b7e\u540d\u7b97\u6cd5"},
-        {"alias has no public key", "{0} \u65e0\u516c\u7528\u5bc6\u94a5"},
-        {"alias has no X.509 certificate", "{0} \u65e0 X.509 \u8ba4\u8bc1"},
-        {"New certificate (self-signed):", "\u65b0\u8ba4\u8bc1\uff08\u81ea\u6211\u7b7e\u7f72\uff09\uff1a"},
-        {"Reply has no certificates", "\u56de\u590d\u4e2d\u6ca1\u6709\u8ba4\u8bc1"},
-        {"Certificate not imported, alias <alias> already exists",
-                "\u8ba4\u8bc1\u672a\u8f93\u5165\uff0c\u522b\u540d <{0}> \u5df2\u7ecf\u5b58\u5728"},
-        {"Input not an X.509 certificate", "\u6240\u8f93\u5165\u7684\u4e0d\u662f\u4e00\u4e2a X.509 \u8ba4\u8bc1"},
-        {"Certificate already exists in keystore under alias <trustalias>",
-                "\u5728 <{0}> \u7684\u522b\u540d\u4e4b\u4e0b\uff0c\u8ba4\u8bc1\u5df2\u7ecf\u5b58\u5728 keystore \u4e2d"},
-        {"Do you still want to add it? [no]:  ",
-                "\u60a8\u4ecd\u7136\u60f3\u8981\u6dfb\u52a0\u5b83\u5417\uff1f [\u5426]\uff1a  "},
-        {"Certificate already exists in system-wide CA keystore under alias <trustalias>",
-                "\u5728 <{0}> \u7684\u522b\u540d\u4e4b\u4e0b\uff0c\u8ba4\u8bc1\u5df2\u7ecf\u5b58\u5728\u4e8e CA keystore \u6574\u4e2a\u7cfb\u7edf\u4e4b\u4e2d"},
-        {"Do you still want to add it to your own keystore? [no]:  ",
-                "\u60a8\u4ecd\u7136\u60f3\u8981\u5c06\u5b83\u6dfb\u52a0\u5230\u81ea\u5df1\u7684keystore \u5417\uff1f [\u5426]\uff1a  "},
-        {"Trust this certificate? [no]:  ", "\u4fe1\u4efb\u8fd9\u4e2a\u8ba4\u8bc1\uff1f [\u5426]\uff1a  "},
-        {"YES", "\u662f"},
-        {"New prompt: ", "\u65b0 {0}\uff1a "},
-        {"Passwords must differ", "\u5fc5\u987b\u662f\u4e0d\u540c\u7684\u5bc6\u7801"},
-        {"Re-enter new prompt: ", "\u91cd\u65b0\u8f93\u5165\u65b0 {0}\uff1a "},
-        {"Re-enter new password: ", "\u518d\u6b21\u8f93\u5165\u65b0\u5bc6\u7801: "},
-        {"They don't match. Try again", "\u5b83\u4eec\u4e0d\u5339\u914d\u3002\u8bf7\u91cd\u8bd5"},
-        {"Enter prompt alias name:  ", "\u8f93\u5165 {0} \u522b\u540d\u540d\u79f0\uff1a  "},
-        {"Enter new alias name\t(RETURN to cancel import for this entry):  ",
-"\u8f93\u5165\u65b0\u7684\u522b\u540d\t\uff08\u6309\u56de\u8f66\u952e\u4ee5\u53d6\u6d88\u5bf9\u6b64\u9879\u7684\u5bfc\u5165\uff09:  "},
-        {"Enter alias name:  ", "\u8f93\u5165\u522b\u540d\u540d\u79f0\uff1a  "},
-        {"\t(RETURN if same as for <otherAlias>)",
-                "\t\uff08\u5982\u679c\u548c <{0}> \u7684\u76f8\u540c\uff0c\u6309\u56de\u8f66\uff09"},
-        {"*PATTERN* printX509Cert",
-                "\u6240\u6709\u8005:{0}\n\u7b7e\u53d1\u4eba:{1}\n\u5e8f\u5217\u53f7:{2}\n\u6709\u6548\u671f: {3} \u81f3{4}\n\u8bc1\u4e66\u6307\u7eb9:\n\t MD5:{5}\n\t SHA1:{6}\n\t \u7b7e\u540d\u7b97\u6cd5\u540d\u79f0:{7}\n\t \u7248\u672c: {8}"},
-        {"What is your first and last name?",
-                "\u60a8\u7684\u540d\u5b57\u4e0e\u59d3\u6c0f\u662f\u4ec0\u4e48\uff1f"},
-        {"What is the name of your organizational unit?",
-                "\u60a8\u7684\u7ec4\u7ec7\u5355\u4f4d\u540d\u79f0\u662f\u4ec0\u4e48\uff1f"},
-        {"What is the name of your organization?",
-                "\u60a8\u7684\u7ec4\u7ec7\u540d\u79f0\u662f\u4ec0\u4e48\uff1f"},
-        {"What is the name of your City or Locality?",
-                "\u60a8\u6240\u5728\u7684\u57ce\u5e02\u6216\u533a\u57df\u540d\u79f0\u662f\u4ec0\u4e48\uff1f"},
-        {"What is the name of your State or Province?",
-                "\u60a8\u6240\u5728\u7684\u5dde\u6216\u7701\u4efd\u540d\u79f0\u662f\u4ec0\u4e48\uff1f"},
-        {"What is the two-letter country code for this unit?",
-                "\u8be5\u5355\u4f4d\u7684\u4e24\u5b57\u6bcd\u56fd\u5bb6\u4ee3\u7801\u662f\u4ec0\u4e48"},
-        {"Is <name> correct?", "{0} \u6b63\u786e\u5417\uff1f"},
+        {"alias.", "{0}, "},
+        {"Entry.type.type.", "\u6761\u76EE\u7C7B\u578B: {0}"},
+        {"Certificate.chain.length.", "\u8BC1\u4E66\u94FE\u957F\u5EA6: "},
+        {"Certificate.i.1.", "\u8BC1\u4E66[{0,number,integer}]:"},
+        {"Certificate.fingerprint.SHA1.", "\u8BC1\u4E66\u6307\u7EB9 (SHA1): "},
+        {"Entry.type.trustedCertEntry.", "\u6761\u76EE\u7C7B\u578B: trustedCertEntry\n"},
+        {"trustedCertEntry.", "trustedCertEntry,"},
+        {"Keystore.type.", "\u5BC6\u94A5\u5E93\u7C7B\u578B: "},
+        {"Keystore.provider.", "\u5BC6\u94A5\u5E93\u63D0\u4F9B\u65B9: "},
+        {"Your.keystore.contains.keyStore.size.entry",
+                "\u60A8\u7684\u5BC6\u94A5\u5E93\u5305\u542B {0,number,integer} \u4E2A\u6761\u76EE"},
+        {"Your.keystore.contains.keyStore.size.entries",
+                "\u60A8\u7684\u5BC6\u94A5\u5E93\u5305\u542B {0,number,integer} \u4E2A\u6761\u76EE"},
+        {"Failed.to.parse.input", "\u65E0\u6CD5\u5BF9\u8F93\u5165\u8FDB\u884C\u8BED\u6CD5\u5206\u6790"},
+        {"Empty.input", "\u7A7A\u8F93\u5165"},
+        {"Not.X.509.certificate", "\u975E X.509 \u8BC1\u4E66"},
+        {"alias.has.no.public.key", "{0}\u6CA1\u6709\u516C\u5171\u5BC6\u94A5"},
+        {"alias.has.no.X.509.certificate", "{0}\u6CA1\u6709 X.509 \u8BC1\u4E66"},
+        {"New.certificate.self.signed.", "\u65B0\u8BC1\u4E66 (\u81EA\u7B7E\u540D):"},
+        {"Reply.has.no.certificates", "\u56DE\u590D\u4E2D\u6CA1\u6709\u8BC1\u4E66"},
+        {"Certificate.not.imported.alias.alias.already.exists",
+                "\u8BC1\u4E66\u672A\u5BFC\u5165, \u522B\u540D <{0}> \u5DF2\u7ECF\u5B58\u5728"},
+        {"Input.not.an.X.509.certificate", "\u6240\u8F93\u5165\u7684\u4E0D\u662F X.509 \u8BC1\u4E66"},
+        {"Certificate.already.exists.in.keystore.under.alias.trustalias.",
+                "\u5728\u522B\u540D <{0}> \u4E4B\u4E0B, \u8BC1\u4E66\u5DF2\u7ECF\u5B58\u5728\u4E8E\u5BC6\u94A5\u5E93\u4E2D"},
+        {"Do.you.still.want.to.add.it.no.",
+                "\u662F\u5426\u4ECD\u8981\u6DFB\u52A0? [\u5426]:  "},
+        {"Certificate.already.exists.in.system.wide.CA.keystore.under.alias.trustalias.",
+                "\u5728\u522B\u540D <{0}> \u4E4B\u4E0B, \u8BC1\u4E66\u5DF2\u7ECF\u5B58\u5728\u4E8E\u7CFB\u7EDF\u8303\u56F4\u7684 CA \u5BC6\u94A5\u5E93\u4E2D"},
+        {"Do.you.still.want.to.add.it.to.your.own.keystore.no.",
+                "\u662F\u5426\u4ECD\u8981\u5C06\u5B83\u6DFB\u52A0\u5230\u81EA\u5DF1\u7684\u5BC6\u94A5\u5E93? [\u5426]:  "},
+        {"Trust.this.certificate.no.", "\u662F\u5426\u4FE1\u4EFB\u6B64\u8BC1\u4E66? [\u5426]:  "},
+        {"YES", "YES"},
+        {"New.prompt.", "\u65B0{0}: "},
+        {"Passwords.must.differ", "\u53E3\u4EE4\u4E0D\u80FD\u76F8\u540C"},
+        {"Re.enter.new.prompt.", "\u91CD\u65B0\u8F93\u5165\u65B0{0}: "},
+        {"Re.enter.new.password.", "\u518D\u6B21\u8F93\u5165\u65B0\u53E3\u4EE4: "},
+        {"They.don.t.match.Try.again", "\u5B83\u4EEC\u4E0D\u5339\u914D\u3002\u8BF7\u91CD\u8BD5"},
+        {"Enter.prompt.alias.name.", "\u8F93\u5165{0}\u522B\u540D:  "},
+        {"Enter.new.alias.name.RETURN.to.cancel.import.for.this.entry.",
+                 "\u5BFC\u5165\u65B0\u7684\u522B\u540D\t(\u6309\u56DE\u8F66\u4EE5\u53D6\u6D88\u5BF9\u6B64\u6761\u76EE\u7684\u5BFC\u5165):  "},
+        {"Enter.alias.name.", "\u8F93\u5165\u522B\u540D:  "},
+        {".RETURN.if.same.as.for.otherAlias.",
+                "\t(\u5982\u679C\u548C <{0}> \u76F8\u540C, \u5219\u6309\u56DE\u8F66)"},
+        {".PATTERN.printX509Cert",
+                "\u6240\u6709\u8005: {0}\n\u53D1\u5E03\u8005: {1}\n\u5E8F\u5217\u53F7: {2}\n\u6709\u6548\u671F\u5F00\u59CB\u65E5\u671F: {3}, \u622A\u6B62\u65E5\u671F: {4}\n\u8BC1\u4E66\u6307\u7EB9:\n\t MD5: {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t \u7B7E\u540D\u7B97\u6CD5\u540D\u79F0: {8}\n\t \u7248\u672C: {9}"},
+        {"What.is.your.first.and.last.name.",
+                "\u60A8\u7684\u540D\u5B57\u4E0E\u59D3\u6C0F\u662F\u4EC0\u4E48?"},
+        {"What.is.the.name.of.your.organizational.unit.",
+                "\u60A8\u7684\u7EC4\u7EC7\u5355\u4F4D\u540D\u79F0\u662F\u4EC0\u4E48?"},
+        {"What.is.the.name.of.your.organization.",
+                "\u60A8\u7684\u7EC4\u7EC7\u540D\u79F0\u662F\u4EC0\u4E48?"},
+        {"What.is.the.name.of.your.City.or.Locality.",
+                "\u60A8\u6240\u5728\u7684\u57CE\u5E02\u6216\u533A\u57DF\u540D\u79F0\u662F\u4EC0\u4E48?"},
+        {"What.is.the.name.of.your.State.or.Province.",
+                "\u60A8\u6240\u5728\u7684\u7701/\u5E02/\u81EA\u6CBB\u533A\u540D\u79F0\u662F\u4EC0\u4E48?"},
+        {"What.is.the.two.letter.country.code.for.this.unit.",
+                "\u8BE5\u5355\u4F4D\u7684\u53CC\u5B57\u6BCD\u56FD\u5BB6/\u5730\u533A\u4EE3\u7801\u662F\u4EC0\u4E48?"},
+        {"Is.name.correct.", "{0}\u662F\u5426\u6B63\u786E?"},
         {"no", "\u5426"},
-        {"yes", "\u662f"},
+        {"yes", "\u662F"},
         {"y", "y"},
-        {"  [defaultValue]:  ", "  [{0}]\uff1a  "},
-        {"Alias <alias> has no key",
-                "\u522b\u540d <{0}> \u6ca1\u6709\u5bc6\u94a5"},
-        {"Alias <alias> references an entry type that is not a private key entry.  The -keyclone command only supports cloning of private key entries",
-"\u522b\u540d <{0}> \u5f15\u7528\u4e86\u4e0d\u5c5e\u4e8e\u4e13\u7528\u5bc6\u94a5\u9879\u7684\u9879\u7c7b\u578b\u3002-keyclone \u547d\u4ee4\u4ec5\u652f\u6301\u5bf9\u4e13\u7528\u5bc6\u94a5\u9879\u7684\u514b\u9686"},
+        {".defaultValue.", "  [{0}]:  "},
+        {"Alias.alias.has.no.key",
+                "\u522B\u540D <{0}> \u6CA1\u6709\u5BC6\u94A5"},
+        {"Alias.alias.references.an.entry.type.that.is.not.a.private.key.entry.The.keyclone.command.only.supports.cloning.of.private.key",
+                 "\u522B\u540D <{0}> \u5F15\u7528\u4E86\u4E0D\u5C5E\u4E8E\u79C1\u6709\u5BC6\u94A5\u6761\u76EE\u7684\u6761\u76EE\u7C7B\u578B\u3002-keyclone \u547D\u4EE4\u4EC5\u652F\u6301\u5BF9\u79C1\u6709\u5BC6\u94A5\u6761\u76EE\u7684\u514B\u9686"},
 
-        {"*****************  WARNING WARNING WARNING  *****************",
-            "***************** \u8b66\u544a \u8b66\u544a \u8b66\u544a  *****************"},
+        {".WARNING.WARNING.WARNING.",
+            "*****************  WARNING WARNING WARNING  *****************"},
+        {"Signer.d.", "\u7B7E\u540D\u8005 #%d:"},
+        {"Timestamp.", "\u65F6\u95F4\u6233:"},
+        {"Signature.", "\u7B7E\u540D:"},
+        {"CRLs.", "CRL:"},
+        {"Certificate.owner.", "\u8BC1\u4E66\u6240\u6709\u8005: "},
+        {"Not.a.signed.jar.file", "\u4E0D\u662F\u5DF2\u7B7E\u540D\u7684 jar \u6587\u4EF6"},
+        {"No.certificate.from.the.SSL.server",
+                "\u6CA1\u6709\u6765\u81EA SSL \u670D\u52A1\u5668\u7684\u8BC1\u4E66"},
 
         // Translators of the following 5 pairs, ATTENTION:
         // the next 5 string pairs are meant to be combined into 2 paragraphs,
         // 1+3+4 and 2+3+5. make sure your translation also does.
-        {"* The integrity of the information stored in your keystore  *",
-            "*\u4fdd\u5b58\u5728\u60a8\u7684 keystore \u4e2d\u6570\u636e\u7684\u5b8c\u6574\u6027  *"},
-        {"* The integrity of the information stored in the srckeystore*",
-"* srckeystore \u4e2d\u6240\u5b58\u50a8\u7684\u4fe1\u606f\u7684\u5b8c\u6574\u6027*"},
-        {"* has NOT been verified!  In order to verify its integrity, *",
-            "* \u5c1a\u672a\u88ab\u9a8c\u8bc1\uff01  \u4e3a\u4e86\u9a8c\u8bc1\u5176\u5b8c\u6574\u6027\uff0c *"},
-        {"* you must provide your keystore password.                  *",
-            "* \u60a8\u5fc5\u987b\u63d0\u4f9b\u60a8 keystore \u7684\u5bc6\u7801\u3002                  *"},
-        {"* you must provide the srckeystore password.                *",
-"* \u60a8\u5fc5\u987b\u63d0\u4f9b\u6e90\u5bc6\u94a5\u5e93\u53e3\u4ee4\u3002                *"},
+        {".The.integrity.of.the.information.stored.in.your.keystore.",
+            "* \u5B58\u50A8\u5728\u60A8\u7684\u5BC6\u94A5\u5E93\u4E2D\u7684\u4FE1\u606F\u7684\u5B8C\u6574\u6027  *"},
+        {".The.integrity.of.the.information.stored.in.the.srckeystore.",
+            "* \u5B58\u50A8\u5728 srckeystore \u4E2D\u7684\u4FE1\u606F\u7684\u5B8C\u6574\u6027 *"},
+        {".has.NOT.been.verified.In.order.to.verify.its.integrity.",
+            "* \u5C1A\u672A\u7ECF\u8FC7\u9A8C\u8BC1!  \u4E3A\u4E86\u9A8C\u8BC1\u5176\u5B8C\u6574\u6027, *"},
+        {".you.must.provide.your.keystore.password.",
+            "* \u5FC5\u987B\u63D0\u4F9B\u5BC6\u94A5\u5E93\u53E3\u4EE4\u3002                  *"},
+        {".you.must.provide.the.srckeystore.password.",
+            "* \u5FC5\u987B\u63D0\u4F9B\u6E90\u5BC6\u94A5\u5E93\u53E3\u4EE4\u3002                *"},
 
 
-        {"Certificate reply does not contain public key for <alias>",
-                "\u8ba4\u8bc1\u56de\u590d\u5e76\u672a\u5305\u542b <{0}> \u7684\u516c\u7528\u5bc6\u94a5"},
-        {"Incomplete certificate chain in reply",
-                "\u56de\u590d\u4e2d\u7684\u8ba4\u8bc1\u94fe\u4e0d\u5b8c\u6574"},
-        {"Certificate chain in reply does not verify: ",
-                "\u56de\u590d\u4e2d\u7684\u8ba4\u8bc1\u94fe\u672a\u9a8c\u8bc1\uff1a "},
-        {"Top-level certificate in reply:\n",
-                "\u56de\u590d\u4e2d\u7684\u6700\u9ad8\u7ea7\u8ba4\u8bc1\uff1a\n"},
-        {"... is not trusted. ", "... \u662f\u4e0d\u53ef\u4fe1\u7684\u3002 "},
-        {"Install reply anyway? [no]:  ", "\u8fd8\u662f\u8981\u5b89\u88c5\u56de\u590d\uff1f [\u5426]\uff1a  "},
-        {"NO", "\u5426"},
-        {"Public keys in reply and keystore don't match",
-                "\u56de\u590d\u4e2d\u7684\u516c\u7528\u5bc6\u94a5\u4e0e keystore \u4e0d\u7b26"},
-        {"Certificate reply and certificate in keystore are identical",
-                "\u8ba4\u8bc1\u56de\u590d\u4e0ekeystore\u4e2d\u7684\u8ba4\u8bc1\u662f\u76f8\u540c\u7684"},
-        {"Failed to establish chain from reply",
-                "\u65e0\u6cd5\u4ece\u56de\u590d\u4e2d\u5efa\u7acb\u94fe\u63a5"},
+        {"Certificate.reply.does.not.contain.public.key.for.alias.",
+                "\u8BC1\u4E66\u56DE\u590D\u4E2D\u4E0D\u5305\u542B <{0}> \u7684\u516C\u5171\u5BC6\u94A5"},
+        {"Incomplete.certificate.chain.in.reply",
+                "\u56DE\u590D\u4E2D\u7684\u8BC1\u4E66\u94FE\u4E0D\u5B8C\u6574"},
+        {"Certificate.chain.in.reply.does.not.verify.",
+                "\u56DE\u590D\u4E2D\u7684\u8BC1\u4E66\u94FE\u672A\u9A8C\u8BC1: "},
+        {"Top.level.certificate.in.reply.",
+                "\u56DE\u590D\u4E2D\u7684\u9876\u7EA7\u8BC1\u4E66:\n"},
+        {".is.not.trusted.", "... \u662F\u4E0D\u53EF\u4FE1\u7684\u3002"},
+        {"Install.reply.anyway.no.", "\u662F\u5426\u4ECD\u8981\u5B89\u88C5\u56DE\u590D? [\u5426]:  "},
+        {"NO", "NO"},
+        {"Public.keys.in.reply.and.keystore.don.t.match",
+                "\u56DE\u590D\u4E2D\u7684\u516C\u5171\u5BC6\u94A5\u4E0E\u5BC6\u94A5\u5E93\u4E0D\u5339\u914D"},
+        {"Certificate.reply.and.certificate.in.keystore.are.identical",
+                "\u8BC1\u4E66\u56DE\u590D\u4E0E\u5BC6\u94A5\u5E93\u4E2D\u7684\u8BC1\u4E66\u662F\u76F8\u540C\u7684"},
+        {"Failed.to.establish.chain.from.reply",
+                "\u65E0\u6CD5\u4ECE\u56DE\u590D\u4E2D\u5EFA\u7ACB\u94FE"},
         {"n", "n"},
-        {"Wrong answer, try again", "\u9519\u8bef\u7684\u7b54\u6848\uff0c\u8bf7\u518d\u8bd5\u4e00\u6b21"},
-        {"Secret key not generated, alias <alias> already exists",
-                "\u6ca1\u6709\u751f\u6210\u5bc6\u94a5\uff0c\u522b\u540d <{0}> \u5df2\u7ecf\u5b58\u5728"},
-        {"Please provide -keysize for secret key generation",
-"\u8bf7\u63d0\u4f9b -keysize \u4ee5\u751f\u6210\u5bc6\u94a5"},
-        {"keytool usage:\n", "keytool \u7528\u6cd5\uff1a\n"},
-
-        {"Extensions: ", "\u6269\u5c55: "},
-
-        {"-certreq     [-v] [-protected]",
-                "-certreq     [-v] [-protected]"},
-        {"\t     [-alias <alias>] [-sigalg <sigalg>]",
-                "\t     [-alias <\u522b\u540d>] [-sigalg <sigalg>]"},
-        {"\t     [-file <csr_file>] [-keypass <keypass>]",
-                "\t     [-file <csr_file>] [-keypass <\u5bc6\u94a5\u5e93\u53e3\u4ee4>]"},
-        {"\t     [-keystore <keystore>] [-storepass <storepass>]",
-                "\t     [-keystore <\u5bc6\u94a5\u5e93>] [-storepass <\u5b58\u50a8\u5e93\u53e3\u4ee4>]"},
-        {"\t     [-storetype <storetype>] [-providername <name>]",
-                "\t     [-storetype <\u5b58\u50a8\u7c7b\u578b>] [-providername <\u540d\u79f0>]"},
-        {"\t     [-providerclass <provider_class_name> [-providerarg <arg>]] ...",
-                "\t     [-providerclass <\u63d0\u4f9b\u65b9\u7c7b\u540d\u79f0> [-providerarg <\u53c2\u6570>]] ..."},
-        {"\t     [-providerpath <pathlist>]",
-"\t     [-providerpath <\u8def\u5f84\u5217\u8868>]"},
-        {"-delete      [-v] [-protected] -alias <alias>",
-                "-delete      [-v] [-protected] -alias <\u522b\u540d>"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-export      [-v] [-rfc] [-protected]",
-        //       "-export      [-v] [-rfc] [-protected]"},
-        {"-exportcert  [-v] [-rfc] [-protected]",
-                "-exportcert  [-v] [-rfc] [-protected]"},
-        {"\t     [-alias <alias>] [-file <cert_file>]",
-                "\t     [-alias <\u522b\u540d>] [-file <\u8ba4\u8bc1\u6587\u4ef6>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-genkey      [-v] [-protected]",
-        //        "-genkey      [-v] [-protected]"},
-        {"-genkeypair  [-v] [-protected]",
-                "-genkeypair  [-v] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <\u522b\u540d>]"},
-        {"\t     [-keyalg <keyalg>] [-keysize <keysize>]",
-                "\t     [-keyalg <keyalg>] [-keysize <\u5bc6\u94a5\u5927\u5c0f>]"},
-        {"\t     [-sigalg <sigalg>] [-dname <dname>]",
-                "\t     [-sigalg <sigalg>] [-dname <dname>]"},
-        {"\t     [-validity <valDays>] [-keypass <keypass>]",
-                "\t     [-validity <valDays>] [-keypass <\u5bc6\u94a5\u5e93\u53e3\u4ee4>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-genseckey   [-v] [-protected]",
-                "-genseckey   [-v] [-protected]"},
-        /** rest is same as -certreq starting from -keystore **/
+        {"Wrong.answer.try.again", "\u9519\u8BEF\u7684\u7B54\u6848, \u8BF7\u518D\u8BD5\u4E00\u6B21"},
+        {"Secret.key.not.generated.alias.alias.already.exists",
+                "\u6CA1\u6709\u751F\u6210\u5BC6\u94A5, \u522B\u540D <{0}> \u5DF2\u7ECF\u5B58\u5728"},
+        {"Please.provide.keysize.for.secret.key.generation",
+                "\u8BF7\u63D0\u4F9B -keysize \u4EE5\u751F\u6210\u5BC6\u94A5"},
 
-        {"-help", "-help"},
-        //{"-identitydb  [-v] [-protected]",
-        //      "-identitydb  [-v] [-protected]"},
-        //{"\t     [-file <idb_file>]", "\t     [-file <idb_file>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-import      [-v] [-noprompt] [-trustcacerts] [-protected]",
-        //       "-import      [-v] [-noprompt] [-trustcacerts] [-protected]"},
-        {"-importcert  [-v] [-noprompt] [-trustcacerts] [-protected]",
-                "-importcert  [-v] [-noprompt] [-trustcacerts] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <\u522b\u540d>]"},
-        {"\t     [-alias <alias>] [-keypass <keypass>]",
-"\t     [-alias <\u522b\u540d>] [-keypass <\u5bc6\u94a5\u5e93\u53e3\u4ee4>]"},
-        {"\t     [-file <cert_file>] [-keypass <keypass>]",
-                "\t     [-file <\u8ba4\u8bc1\u6587\u4ef6>] [-keypass <\u5bc6\u94a5\u5e93\u53e3\u4ee4>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-importkeystore [-v] ",
-"-importkeystore [-v] "},
-        {"\t     [-srckeystore <srckeystore>] [-destkeystore <destkeystore>]",
-"\t     [-srckeystore <\u6e90\u5bc6\u94a5\u5e93>] [-destkeystore <\u76ee\u6807\u5bc6\u94a5\u5e93>]"},
-        {"\t     [-srcstoretype <srcstoretype>] [-deststoretype <deststoretype>]",
-"\t     [-srcstoretype <\u6e90\u5b58\u50a8\u7c7b\u578b>] [-deststoretype <\u76ee\u6807\u5b58\u50a8\u7c7b\u578b>]"},
-        {"\t     [-srcprotected] [-destprotected]",
-"\t     [-srcprotected] [-destprotected]"},
-        {"\t     [-srcstorepass <srcstorepass>] [-deststorepass <deststorepass>]",
-"\t     [-srcstorepass <\u6e90\u5b58\u50a8\u5e93\u53e3\u4ee4>] [-deststorepass <\u76ee\u6807\u5b58\u50a8\u5e93\u53e3\u4ee4>]"},
-        {"\t     [-srcprovidername <srcprovidername>]\n\t     [-destprovidername <destprovidername>]",  // \u884c\u592a\u957f\uff0c\u5206\u4e3a\u4e24\u884c
-"\t     [-srcprovidername <\u6e90\u63d0\u4f9b\u65b9\u540d\u79f0>]\n\t     [-destprovidername <\u76ee\u6807\u63d0\u4f9b\u65b9\u540d\u79f0>]"},
-        {"\t     [-srcalias <srcalias> [-destalias <destalias>]",
-"\t     [-srcalias <\u6e90\u522b\u540d> [-destalias <\u76ee\u6807\u522b\u540d>]"},
-        {"\t       [-srckeypass <srckeypass>] [-destkeypass <destkeypass>]]",
-"\t       [-srckeypass <\u6e90\u5bc6\u94a5\u5e93\u53e3\u4ee4>] [-destkeypass <\u76ee\u6807\u5bc6\u94a5\u5e93\u53e3\u4ee4>]]"},
-        {"\t     [-noprompt]", "\t     [-noprompt]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-changealias [-v] [-protected] -alias <alias> -destalias <destalias>",
-"-changealias [-v] [-protected] -alias <\u522b\u540d> -destalias <\u76ee\u6807\u522b\u540d>"},
-        {"\t     [-keypass <keypass>]", "\t     [-keypass <\u5bc6\u94a5\u5e93\u53e3\u4ee4>]"},
-
-        //{"-keyclone    [-v] [-protected]",
-        //      "-keyclone    [-v] [-protected]"},
-        //{"\t     [-alias <alias>] -dest <dest_alias>",
-        //      "\t     [-alias <alias>] -dest <dest_alias>"},
-        //{"\t     [-keypass <keypass>] [-new <new_keypass>]",
-        //      "\t     [-keypass <keypass>] [-new <new_keypass>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-keypasswd   [-v] [-alias <alias>]",
-                "-keypasswd   [-v] [-alias <\u522b\u540d>]"},
-        {"\t     [-keypass <old_keypass>] [-new <new_keypass>]",
-                "\t     [-keypass <\u65e7\u5bc6\u94a5\u5e93\u53e3\u4ee4>] [-new <\u65b0\u5bc6\u94a5\u5e93\u53e3\u4ee4>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-list        [-v | -rfc] [-protected]",
-                "-list        [-v | -rfc] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <\u522b\u540d>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-printcert   [-v] [-file <cert_file>]",
-                "-printcert   [-v] [-file <\u8ba4\u8bc1\u6587\u4ef6>]"},
-
-        //{"-selfcert    [-v] [-protected]",
-        //      "-selfcert    [-v] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <\u522b\u540d>]"},
-        //{"\t     [-dname <dname>] [-validity <valDays>]",
-        //      "\t     [-dname <dname>] [-validity <valDays>]"},
-        //{"\t     [-keypass <keypass>] [-sigalg <sigalg>]",
-        //      "\t     [-keypass <\u5bc6\u94a5\u5e93\u53e3\u4ee4>] [-sigalg <sigalg>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-storepasswd [-v] [-new <new_storepass>]",
-                "-storepasswd [-v] [-new <\u65b0\u5b58\u50a8\u5e93\u53e3\u4ee4>]"},
-        /** rest is same as -certreq starting from -keystore **/
+        {"Extensions.", "\u6269\u5C55: "},
+        {".Empty.value.", "(\u7A7A\u503C)"},
+        {"Extension.Request.", "\u6269\u5C55\u8BF7\u6C42:"},
+        {"PKCS.10.Certificate.Request.Version.1.0.Subject.s.Public.Key.s.format.s.key.",
+                "PKCS #10 \u8BC1\u4E66\u8BF7\u6C42 (\u7248\u672C 1.0)\n\u4E3B\u9898: %s\n\u516C\u5171\u5BC6\u94A5: %s \u683C\u5F0F %s \u5BC6\u94A5\n"},
+        {"Unknown.keyUsage.type.", "\u672A\u77E5 keyUsage \u7C7B\u578B: "},
+        {"Unknown.extendedkeyUsage.type.", "\u672A\u77E5 extendedkeyUsage \u7C7B\u578B: "},
+        {"Unknown.AccessDescription.type.", "\u672A\u77E5 AccessDescription \u7C7B\u578B: "},
+        {"Unrecognized.GeneralName.type.", "\u65E0\u6CD5\u8BC6\u522B\u7684 GeneralName \u7C7B\u578B: "},
+        {"This.extension.cannot.be.marked.as.critical.",
+                 "\u65E0\u6CD5\u5C06\u6B64\u6269\u5C55\u6807\u8BB0\u4E3A\u201C\u4E25\u91CD\u201D\u3002"},
+        {"Odd.number.of.hex.digits.found.", "\u627E\u5230\u5947\u6570\u4E2A\u5341\u516D\u8FDB\u5236\u6570\u5B57: "},
+        {"Unknown.extension.type.", "\u672A\u77E5\u6269\u5C55\u7C7B\u578B: "},
+        {"command.{0}.is.ambiguous.", "\u547D\u4EE4{0}\u4E0D\u660E\u786E:"},
 
         // policytool
-        {"Warning: A public key for alias 'signers[i]' does not exist.  Make sure a KeyStore is properly configured.",
-                "\u8b66\u544a: \u522b\u540d {0} \u7684\u516c\u7528\u5bc6\u94a5\u4e0d\u5b58\u5728\u3002\u8bf7\u786e\u4fdd\u5df2\u6b63\u786e\u914d\u7f6e\u5bc6\u94a5\u5e93\u3002"},
-        {"Warning: Class not found: class", "\u8b66\u544a: \u627e\u4e0d\u5230\u7c7b: {0}"},
-        {"Warning: Invalid argument(s) for constructor: arg",
-                "\u8b66\u544a: \u6784\u9020\u51fd\u6570\u7684\u53c2\u6570\u65e0\u6548: {0}"},
-        {"Illegal Principal Type: type", "\u975e\u6cd5\u7684 Principal \u7c7b\u578b: {0}"},
-        {"Illegal option: option", "\u975e\u6cd5\u9009\u9879: {0}"},
-        {"Usage: policytool [options]", "\u7528\u6cd5\uff1a policytool [\u9009\u9879]"},
-        {"  [-file <file>]    policy file location",
-                "  [-file <file>]    \u89c4\u5219\u6587\u4ef6\u4f4d\u7f6e"},
-        {"New", "\u65b0\u6587\u4ef6"},
-        {"Open", "\u6253\u5f00"},
-        {"Save", "\u4fdd\u5b58"},
-        {"Save As", "\u53e6\u5b58\u4e3a"},
-        {"View Warning Log", "\u67e5\u770b\u8b66\u544a\u8bb0\u5f55"},
-        {"Exit", "\u9000\u51fa"},
-        {"Add Policy Entry", "\u6dfb\u52a0\u89c4\u5219\u9879\u76ee"},
-        {"Edit Policy Entry", "\u7f16\u8f91\u89c4\u5219\u9879\u76ee"},
-        {"Remove Policy Entry", "\u5220\u9664\u89c4\u5219\u9879\u76ee"},
-        {"Edit", "\u7f16\u8f91"},
-        {"Retain", "\u4fdd\u6301"},
+        {"Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured.",
+                "\u8B66\u544A: \u522B\u540D {0} \u7684\u516C\u5171\u5BC6\u94A5\u4E0D\u5B58\u5728\u3002\u8BF7\u786E\u4FDD\u5DF2\u6B63\u786E\u914D\u7F6E KeyStore\u3002"},
+        {"Warning.Class.not.found.class", "\u8B66\u544A: \u627E\u4E0D\u5230\u7C7B: {0}"},
+        {"Warning.Invalid.argument.s.for.constructor.arg",
+                "\u8B66\u544A: \u6784\u9020\u5668\u7684\u53C2\u6570\u65E0\u6548: {0}"},
+        {"Illegal.Principal.Type.type", "\u975E\u6CD5\u7684\u4E3B\u7528\u6237\u7C7B\u578B: {0}"},
+        {"Illegal.option.option", "\u975E\u6CD5\u9009\u9879: {0}"},
+        {"Usage.policytool.options.", "\u7528\u6CD5: policytool [\u9009\u9879]"},
+        {".file.file.policy.file.location",
+                "  [-file <file>]    \u7B56\u7565\u6587\u4EF6\u4F4D\u7F6E"},
+        {"New", "\u65B0\u5EFA"},
+        {"Open", "\u6253\u5F00"},
+        {"Save", "\u4FDD\u5B58"},
+        {"Save.As", "\u53E6\u5B58\u4E3A"},
+        {"View.Warning.Log", "\u67E5\u770B\u8B66\u544A\u65E5\u5FD7"},
+        {"Exit", "\u9000\u51FA"},
+        {"Add.Policy.Entry", "\u6DFB\u52A0\u7B56\u7565\u6761\u76EE"},
+        {"Edit.Policy.Entry", "\u7F16\u8F91\u7B56\u7565\u6761\u76EE"},
+        {"Remove.Policy.Entry", "\u5220\u9664\u7B56\u7565\u6761\u76EE"},
+        {"Edit", "\u7F16\u8F91"},
+        {"Retain", "\u4FDD\u7559"},
 
-        {"Warning: File name may include escaped backslash characters. " +
-                        "It is not necessary to escape backslash characters " +
-                        "(the tool escapes characters as necessary when writing " +
-                        "the policy contents to the persistent store).\n\n" +
-                        "Click on Retain to retain the entered name, or click on " +
-                        "Edit to edit the name.",
-            "Warning: File name may include escaped backslash characters. " +
-                        "It is not necessary to escape backslash characters " +
-                        "(the tool escapes characters as necessary when writing " +
-                        "the policy contents to the persistent store).\n\n" +
-                        "Click on Retain to retain the entered name, or click on " +
-                        "Edit to edit the name."},
+        {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
+            "\u8B66\u544A: \u6587\u4EF6\u540D\u5305\u542B\u8F6C\u4E49\u7684\u53CD\u659C\u6760\u5B57\u7B26\u3002\u4E0D\u9700\u8981\u5BF9\u53CD\u659C\u6760\u5B57\u7B26\u8FDB\u884C\u8F6C\u4E49 (\u8BE5\u5DE5\u5177\u5728\u5C06\u7B56\u7565\u5185\u5BB9\u5199\u5165\u6C38\u4E45\u5B58\u50A8\u65F6\u4F1A\u6839\u636E\u9700\u8981\u5BF9\u5B57\u7B26\u8FDB\u884C\u8F6C\u4E49)\u3002\n\n\u5355\u51FB\u201C\u4FDD\u7559\u201D\u53EF\u4FDD\u7559\u8F93\u5165\u7684\u540D\u79F0, \u6216\u8005\u5355\u51FB\u201C\u7F16\u8F91\u201D\u53EF\u7F16\u8F91\u8BE5\u540D\u79F0\u3002"},
 
-        {"Add Public Key Alias", "\u6dfb\u52a0\u516c\u7528\u5bc6\u94a5\u522b\u540d"},
-        {"Remove Public Key Alias", "\u5220\u9664\u516c\u7528\u5bc6\u94a5\u522b\u540d"},
-        {"File", "\u6587\u4ef6"},
-        {"KeyStore", "\u5bc6\u94a5\u5e93"},
-        {"Policy File:", "\u89c4\u5219\u6587\u4ef6\uff1a"},
-        {"Could not open policy file: policyFile: e.toString()",
-                "\u65e0\u6cd5\u6253\u5f00\u7b56\u7565\u6587\u4ef6: {0}: {1}"},
-        {"Policy Tool", "\u89c4\u5219\u5de5\u5177"},
-        {"Errors have occurred while opening the policy configuration.  View the Warning Log for more information.",
-                "\u6253\u5f00\u89c4\u5219\u914d\u7f6e\u65f6\u53d1\u751f\u9519\u8bef\u3002 \u8bf7\u67e5\u770b\u8b66\u544a\u8bb0\u5f55\u83b7\u53d6\u66f4\u591a\u4fe1\u606f"},
-        {"Error", "\u9519\u8bef"},
-        {"OK", "\u786e\u8ba4"},
-        {"Status", "\u72b6\u6001"},
-        {"Warning", "\u8b66\u544a"},
-        {"Permission:                                                       ",
-                "\u8bb8\u53ef\uff1a                                                       "},
-        {"Principal Type:", "Principal \u7c7b\u578b\uff1a"},
-        {"Principal Name:", "Principal \u540d\u79f0\uff1a"},
-        {"Target Name:                                                    ",
-                "\u76ee\u6807\u540d\u79f0\uff1a                                                    "},
-        {"Actions:                                                             ",
-                "\u52a8\u4f5c\uff1a                                                             "},
-        {"OK to overwrite existing file filename?",
-                "\u786e\u8ba4\u66ff\u6362\u73b0\u6709\u7684\u6587\u4ef6 {0}\uff1f"},
-        {"Cancel", "\u53d6\u6d88"},
-        {"CodeBase:", "CodeBase:"},
-        {"SignedBy:", "SignedBy:"},
-        {"Add Principal", "\u6dfb\u52a0 Principal"},
-        {"Edit Principal", "\u7f16\u8f91 Principal"},
-        {"Remove Principal", "\u5220\u9664 Principal"},
-        {"Principals:", "Principals\uff1a"},
-        {"  Add Permission", "  \u6dfb\u52a0\u6743\u9650"},
-        {"  Edit Permission", "  \u7f16\u8f91\u6743\u9650"},
-        {"Remove Permission", "\u5220\u9664\u6743\u9650"},
-        {"Done", "\u5b8c\u6210"},
-        {"KeyStore URL:", "\u5bc6\u94a5\u5e93 URL:"},
-        {"KeyStore Type:", "\u5bc6\u94a5\u5e93\u7c7b\u578b:"},
-        {"KeyStore Provider:", "\u5bc6\u94a5\u5e93\u63d0\u4f9b\u8005:"},
-        {"KeyStore Password URL:", "\u5bc6\u94a5\u5e93\u53e3\u4ee4 URL:"},
-        {"Principals", "Principals"},
-        {"  Edit Principal:", "  \u7f16\u8f91 Principal\uff1a"},
-        {"  Add New Principal:", "  \u52a0\u5165\u65b0 Principal\uff1a"},
+        {"Add.Public.Key.Alias", "\u6DFB\u52A0\u516C\u5171\u5BC6\u94A5\u522B\u540D"},
+        {"Remove.Public.Key.Alias", "\u5220\u9664\u516C\u5171\u5BC6\u94A5\u522B\u540D"},
+        {"File", "\u6587\u4EF6"},
+        {"KeyStore", "KeyStore"},
+        {"Policy.File.", "\u7B56\u7565\u6587\u4EF6:"},
+        {"Could.not.open.policy.file.policyFile.e.toString.",
+                "\u65E0\u6CD5\u6253\u5F00\u7B56\u7565\u6587\u4EF6: {0}: {1}"},
+        {"Policy.Tool", "\u7B56\u7565\u5DE5\u5177"},
+        {"Errors.have.occurred.while.opening.the.policy.configuration.View.the.Warning.Log.for.more.information.",
+                "\u6253\u5F00\u7B56\u7565\u914D\u7F6E\u65F6\u51FA\u9519\u3002\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u67E5\u770B\u8B66\u544A\u65E5\u5FD7\u3002"},
+        {"Error", "\u9519\u8BEF"},
+        {"OK", "\u786E\u5B9A"},
+        {"Status", "\u72B6\u6001"},
+        {"Warning", "\u8B66\u544A"},
+        {"Permission.",
+                "\u6743\u9650:                                                       "},
+        {"Principal.Type.", "\u4E3B\u7528\u6237\u7C7B\u578B:"},
+        {"Principal.Name.", "\u4E3B\u7528\u6237\u540D\u79F0:"},
+        {"Target.Name.",
+                "\u76EE\u6807\u540D\u79F0:                                                    "},
+        {"Actions.",
+                "\u64CD\u4F5C:                                                             "},
+        {"OK.to.overwrite.existing.file.filename.",
+                "\u786E\u8BA4\u8986\u76D6\u73B0\u6709\u7684\u6587\u4EF6{0}?"},
+        {"Cancel", "\u53D6\u6D88"},
+        {"CodeBase.", "CodeBase:"},
+        {"SignedBy.", "SignedBy:"},
+        {"Add.Principal", "\u6DFB\u52A0\u4E3B\u7528\u6237"},
+        {"Edit.Principal", "\u7F16\u8F91\u4E3B\u7528\u6237"},
+        {"Remove.Principal", "\u5220\u9664\u4E3B\u7528\u6237"},
+        {"Principals.", "\u4E3B\u7528\u6237:"},
+        {".Add.Permission", "  \u6DFB\u52A0\u6743\u9650"},
+        {".Edit.Permission", "  \u7F16\u8F91\u6743\u9650"},
+        {"Remove.Permission", "\u5220\u9664\u6743\u9650"},
+        {"Done", "\u5B8C\u6210"},
+        {"KeyStore.URL.", "KeyStore URL:"},
+        {"KeyStore.Type.", "KeyStore \u7C7B\u578B:"},
+        {"KeyStore.Provider.", "KeyStore \u63D0\u4F9B\u65B9:"},
+        {"KeyStore.Password.URL.", "KeyStore \u53E3\u4EE4 URL:"},
+        {"Principals", "\u4E3B\u7528\u6237"},
+        {".Edit.Principal.", "  \u7F16\u8F91\u4E3B\u7528\u6237:"},
+        {".Add.New.Principal.", "  \u6DFB\u52A0\u65B0\u4E3B\u7528\u6237:"},
         {"Permissions", "\u6743\u9650"},
-        {"  Edit Permission:", "  \u7f16\u8f91\u6743\u9650"},
-        {"  Add New Permission:", "  \u52a0\u5165\u65b0\u7684\u6743\u9650"},
-        {"Signed By:", "\u7b7e\u7f72\u4eba\uff1a"},
-        {"Cannot Specify Principal with a Wildcard Class without a Wildcard Name",
-            "\u6ca1\u6709\u901a\u914d\u7b26\u540d\u79f0\uff0c\u65e0\u6cd5\u7528\u901a\u914d\u7b26\u7c7b\u522b\u6307\u5b9aPrincipal"},
-        {"Cannot Specify Principal without a Name",
-            "\u6ca1\u6709\u540d\u79f0\uff0c\u65e0\u6cd5\u6307\u5b9a Principal"},
-        {"Permission and Target Name must have a value",
-                "\u6743\u9650\u53ca\u76ee\u6807\u540d\u5fc5\u987b\u6709\u4e00\u4e2a\u503c\u3002"},
-        {"Remove this Policy Entry?", "\u5220\u9664\u6b64\u89c4\u5219\u9879\uff1f"},
-        {"Overwrite File", "\u66ff\u6362\u6587\u4ef6"},
-        {"Policy successfully written to filename",
-                "\u89c4\u5219\u6210\u529f\u5199\u81f3 {0}"},
-        {"null filename", "\u65e0\u6548\u7684\u6587\u4ef6\u540d"},
-        {"Save changes?", "\u662f\u5426\u4fdd\u5b58\u6240\u505a\u7684\u66f4\u6539\uff1f"},
-        {"Yes", "\u662f"},
+        {".Edit.Permission.", "  \u7F16\u8F91\u6743\u9650:"},
+        {".Add.New.Permission.", "  \u52A0\u5165\u65B0\u7684\u6743\u9650:"},
+        {"Signed.By.", "\u7B7E\u7F72\u4EBA: "},
+        {"Cannot.Specify.Principal.with.a.Wildcard.Class.without.a.Wildcard.Name",
+            "\u6CA1\u6709\u901A\u914D\u7B26\u540D\u79F0, \u65E0\u6CD5\u4F7F\u7528\u901A\u914D\u7B26\u7C7B\u6307\u5B9A\u4E3B\u7528\u6237"},
+        {"Cannot.Specify.Principal.without.a.Name",
+            "\u6CA1\u6709\u540D\u79F0, \u65E0\u6CD5\u6307\u5B9A\u4E3B\u7528\u6237"},
+        {"Permission.and.Target.Name.must.have.a.value",
+                "\u6743\u9650\u53CA\u76EE\u6807\u540D\u5FC5\u987B\u6709\u4E00\u4E2A\u503C"},
+        {"Remove.this.Policy.Entry.", "\u662F\u5426\u5220\u9664\u6B64\u7B56\u7565\u6761\u76EE?"},
+        {"Overwrite.File", "\u8986\u76D6\u6587\u4EF6"},
+        {"Policy.successfully.written.to.filename",
+                "\u7B56\u7565\u5DF2\u6210\u529F\u5199\u5165\u5230{0}"},
+        {"null.filename", "\u7A7A\u6587\u4EF6\u540D"},
+        {"Save.changes.", "\u662F\u5426\u4FDD\u5B58\u6240\u505A\u7684\u66F4\u6539?"},
+        {"Yes", "\u662F"},
         {"No", "\u5426"},
-        {"Policy Entry", "\u89c4\u5219\u9879\u76ee"},
-        {"Save Changes", "\u4fdd\u5b58\u4fee\u6539"},
-        {"No Policy Entry selected", "\u6ca1\u6709\u9009\u62e9\u89c4\u5219\u9879\u76ee"},
-        {"Unable to open KeyStore: ex.toString()",
-                "\u65e0\u6cd5\u6253\u5f00\u5bc6\u94a5\u5e93: {0}"},
-        {"No principal selected", "\u672a\u9009\u62e9 Principal"},
-        {"No permission selected", "\u6ca1\u6709\u9009\u62e9\u6743\u9650"},
-        {"name", "\u540d\u79f0"},
-        {"configuration type", "\u914d\u7f6e\u7c7b\u578b"},
-        {"environment variable name", "\u73af\u5883\u53d8\u91cf\u540d"},
-        {"library name", "\u7a0b\u5e8f\u5e93\u540d\u79f0"},
-        {"package name", "\u8f6f\u4ef6\u5305\u540d\u79f0"},
-        {"policy type", "\u7b56\u7565\u7c7b\u578b"},
-        {"property name", "\u5c5e\u6027\u540d\u79f0"},
-        {"provider name", "\u63d0\u4f9b\u8005\u540d\u79f0"},
-        {"Principal List", "Principal \u5217\u8868"},
-        {"Permission List", "\u6743\u9650\u5217\u8868"},
-        {"Code Base", "Code Base\uff08\u4ee3\u7801\u5e93\uff09"},
-        {"KeyStore U R L:", "\u5bc6\u94a5\u5e93 URL:"},
-        {"KeyStore Password U R L:", "\u5bc6\u94a5\u5e93\u53e3\u4ee4 URL:"},
+        {"Policy.Entry", "\u7B56\u7565\u6761\u76EE"},
+        {"Save.Changes", "\u4FDD\u5B58\u66F4\u6539"},
+        {"No.Policy.Entry.selected", "\u6CA1\u6709\u9009\u62E9\u7B56\u7565\u6761\u76EE"},
+        {"Unable.to.open.KeyStore.ex.toString.",
+                "\u65E0\u6CD5\u6253\u5F00 KeyStore: {0}"},
+        {"No.principal.selected", "\u672A\u9009\u62E9\u4E3B\u7528\u6237"},
+        {"No.permission.selected", "\u6CA1\u6709\u9009\u62E9\u6743\u9650"},
+        {"name", "\u540D\u79F0"},
+        {"configuration.type", "\u914D\u7F6E\u7C7B\u578B"},
+        {"environment.variable.name", "\u73AF\u5883\u53D8\u91CF\u540D"},
+        {"library.name", "\u5E93\u540D\u79F0"},
+        {"package.name", "\u7A0B\u5E8F\u5305\u540D\u79F0"},
+        {"policy.type", "\u7B56\u7565\u7C7B\u578B"},
+        {"property.name", "\u5C5E\u6027\u540D\u79F0"},
+        {"Principal.List", "\u4E3B\u7528\u6237\u5217\u8868"},
+        {"Permission.List", "\u6743\u9650\u5217\u8868"},
+        {"Code.Base", "\u4EE3\u7801\u5E93"},
+        {"KeyStore.U.R.L.", "KeyStore URL:"},
+        {"KeyStore.Password.U.R.L.", "KeyStore \u53E3\u4EE4 URL:"},
 
 
         // javax.security.auth.PrivateCredentialPermission
-        {"invalid null input(s)", "\u65e0\u6548\u7a7a\u8f93\u5165"},
-        {"actions can only be 'read'", "\u52a8\u4f5c\u53ea\u80fd\u88ab\u2018\u8bfb\u53d6'"},
-        {"permission name [name] syntax invalid: ",
-                "\u6743\u9650\u540d\u79f0 [{0}]\u8bed\u6cd5\u65e0\u6548\uff1a "},
-        {"Credential Class not followed by a Principal Class and Name",
-                "\u8ba4\u8bc1\u7b49\u7ea7\u540e\u672a\u52a0\u4e0aPrincipal \u7c7b\u522b\u53ca\u540d\u79f0"},
-        {"Principal Class not followed by a Principal Name",
-                "Principal \u7c7b\u522b\u540e\u9762\u6ca1\u52a0\u4e0aPrincipal \u540d\u79f0"},
-        {"Principal Name must be surrounded by quotes",
-                "Principal \u540d\u79f0\u5fc5\u987b\u653e\u5728\u5f15\u53f7\u5185"},
-        {"Principal Name missing end quote",
-                "Principal \u540d\u79f0\u7f3a\u5c11\u4e0b\u5f15\u53f7"},
-        {"PrivateCredentialPermission Principal Class can not be a wildcard (*) value if Principal Name is not a wildcard (*) value",
-                "\u5982\u679c Principal \u540d\u79f0\u4e0d\u662f\u4e00\u4e2a\u901a\u914d\u7b26 (*) \u503c\uff0c\u90a3\u4e48 PrivateCredentialPermission Principal \u7c7b\u522b\u5c31\u4e0d\u4f1a\u662f\u4e00\u4e2a\u901a\u914d\u7b26 (*) \u503c"},
-        {"CredOwner:\n\tPrincipal Class = class\n\tPrincipal Name = name",
-                "CredOwner:\n\tPrincipal \u7c7b\u522b = {0}\n\tPrincipal \u540d\u79f0 = {1}"},
+        {"invalid.null.input.s.", "\u65E0\u6548\u7684\u7A7A\u8F93\u5165"},
+        {"actions.can.only.be.read.", "\u64CD\u4F5C\u53EA\u80FD\u4E3A '\u8BFB\u53D6'"},
+        {"permission.name.name.syntax.invalid.",
+                "\u6743\u9650\u540D\u79F0 [{0}] \u8BED\u6CD5\u65E0\u6548: "},
+        {"Credential.Class.not.followed.by.a.Principal.Class.and.Name",
+                "\u8EAB\u4EFD\u8BC1\u660E\u7C7B\u540E\u9762\u672A\u8DDF\u968F\u4E3B\u7528\u6237\u7C7B\u53CA\u540D\u79F0"},
+        {"Principal.Class.not.followed.by.a.Principal.Name",
+                "\u4E3B\u7528\u6237\u7C7B\u540E\u9762\u672A\u8DDF\u968F\u4E3B\u7528\u6237\u540D\u79F0"},
+        {"Principal.Name.must.be.surrounded.by.quotes",
+                "\u4E3B\u7528\u6237\u540D\u79F0\u5FC5\u987B\u653E\u5728\u5F15\u53F7\u5185"},
+        {"Principal.Name.missing.end.quote",
+                "\u4E3B\u7528\u6237\u540D\u79F0\u7F3A\u5C11\u53F3\u5F15\u53F7"},
+        {"PrivateCredentialPermission.Principal.Class.can.not.be.a.wildcard.value.if.Principal.Name.is.not.a.wildcard.value",
+                "\u5982\u679C\u4E3B\u7528\u6237\u540D\u79F0\u4E0D\u662F\u901A\u914D\u7B26 (*) \u503C, \u90A3\u4E48 PrivateCredentialPermission \u4E3B\u7528\u6237\u7C7B\u4E0D\u80FD\u662F\u901A\u914D\u7B26 (*) \u503C"},
+        {"CredOwner.Principal.Class.class.Principal.Name.name",
+                "CredOwner:\n\t\u4E3B\u7528\u6237\u7C7B = {0}\n\t\u4E3B\u7528\u6237\u540D\u79F0 = {1}"},
 
         // javax.security.auth.x500
-        {"provided null name", "\u6240\u4f9b\u540d\u79f0\u65e0\u6548"},
-        {"provided null keyword map", "\u63d0\u4f9b\u4e86\u7a7a\u5173\u952e\u5b57\u6620\u5c04"},
-        {"provided null OID map", "\u63d0\u4f9b\u4e86\u7a7a OID \u6620\u5c04"},
+        {"provided.null.name", "\u63D0\u4F9B\u7684\u540D\u79F0\u4E3A\u7A7A\u503C"},
+        {"provided.null.keyword.map", "\u63D0\u4F9B\u7684\u5173\u952E\u5B57\u6620\u5C04\u4E3A\u7A7A\u503C"},
+        {"provided.null.OID.map", "\u63D0\u4F9B\u7684 OID \u6620\u5C04\u4E3A\u7A7A\u503C"},
 
         // javax.security.auth.Subject
-        {"invalid null AccessControlContext provided",
-                "\u63d0\u4f9b\u65e0\u6548\u7684\u7a7a AccessControlContext"},
-        {"invalid null action provided", "\u63d0\u4f9b\u4e86\u65e0\u6548\u7684\u7a7a\u52a8\u4f5c"},
-        {"invalid null Class provided", "\u63d0\u4f9b\u4e86\u65e0\u6548\u7684\u7a7a\u7c7b\u522b"},
-        {"Subject:\n", "\u4e3b\u9898\uff1a\n"},
-        {"\tPrincipal: ", "\tPrincipal: "},
-        {"\tPublic Credential: ", "\t\u516c\u7528\u8ba4\u8bc1 "},
-        {"\tPrivate Credentials inaccessible\n",
-                "\t\u65e0\u6cd5\u8bbf\u95ee\u79c1\u4eba\u8ba4\u8bc1\n"},
-        {"\tPrivate Credential: ", "\t\u79c1\u4eba\u8ba4\u8bc1 "},
-        {"\tPrivate Credential inaccessible\n",
-                "\t\u65e0\u6cd5\u8bbf\u95ee\u79c1\u4eba\u8ba4\u8bc1\n"},
-        {"Subject is read-only", "\u4e3b\u9898\u4e3a\u53ea\u8bfb"},
-        {"attempting to add an object which is not an instance of java.security.Principal to a Subject's Principal Set",
-                "\u8bd5\u56fe\u5c06\u4e00\u4e2a\u975e java.security.Principal \u5b9e\u4f8b\u7684\u5bf9\u8c61\u6dfb\u52a0\u81f3\u4e3b\u9898\u7684 Principal \u96c6\u4e2d"},
-        {"attempting to add an object which is not an instance of class",
-                "\u8bd5\u56fe\u6dfb\u52a0\u4e00\u4e2a\u975e {0} \u5b9e\u4f8b\u7684\u5bf9\u8c61"},
+        {"invalid.null.AccessControlContext.provided",
+                "\u63D0\u4F9B\u4E86\u65E0\u6548\u7684\u7A7A AccessControlContext"},
+        {"invalid.null.action.provided", "\u63D0\u4F9B\u4E86\u65E0\u6548\u7684\u7A7A\u64CD\u4F5C"},
+        {"invalid.null.Class.provided", "\u63D0\u4F9B\u4E86\u65E0\u6548\u7684\u7A7A\u7C7B"},
+        {"Subject.", "\u4E3B\u9898: \n"},
+        {".Principal.", "\t\u4E3B\u7528\u6237: "},
+        {".Public.Credential.", "\t\u516C\u5171\u8EAB\u4EFD\u8BC1\u660E: "},
+        {".Private.Credentials.inaccessible.",
+                "\t\u65E0\u6CD5\u8BBF\u95EE\u4E13\u7528\u8EAB\u4EFD\u8BC1\u660E\n"},
+        {".Private.Credential.", "\t\u4E13\u7528\u8EAB\u4EFD\u8BC1\u660E: "},
+        {".Private.Credential.inaccessible.",
+                "\t\u65E0\u6CD5\u8BBF\u95EE\u4E13\u7528\u8EAB\u4EFD\u8BC1\u660E\n"},
+        {"Subject.is.read.only", "\u4E3B\u9898\u4E3A\u53EA\u8BFB"},
+        {"attempting.to.add.an.object.which.is.not.an.instance.of.java.security.Principal.to.a.Subject.s.Principal.Set",
+                "\u6B63\u5728\u5C1D\u8BD5\u5C06\u4E00\u4E2A\u975E java.security.Principal \u5B9E\u4F8B\u7684\u5BF9\u8C61\u6DFB\u52A0\u5230\u4E3B\u9898\u7684\u4E3B\u7528\u6237\u96C6\u4E2D"},
+        {"attempting.to.add.an.object.which.is.not.an.instance.of.class",
+                "\u6B63\u5728\u5C1D\u8BD5\u6DFB\u52A0\u4E00\u4E2A\u975E{0}\u5B9E\u4F8B\u7684\u5BF9\u8C61"},
 
         // javax.security.auth.login.AppConfigurationEntry
-        {"LoginModuleControlFlag: ", "LoginModuleControlFlag: "},
+        {"LoginModuleControlFlag.", "LoginModuleControlFlag: "},
 
         // javax.security.auth.login.LoginContext
-        {"Invalid null input: name", "\u65e0\u6548\u7a7a\u8f93\u5165\uff1a\u540d\u79f0"},
-        {"No LoginModules configured for name",
-         "\u6ca1\u6709\u4e3a {0} \u914d\u7f6eLoginModules"},
-        {"invalid null Subject provided", "\u63d0\u4f9b\u4e86\u65e0\u6548\u7a7a\u4e3b\u9898"},
-        {"invalid null CallbackHandler provided",
-                "\u63d0\u4f9b\u4e86\u65e0\u6548\u7684\u7a7a CallbackHandler"},
-        {"null subject - logout called before login",
-                "\u65e0\u6548\u4e3b\u9898 - \u5728\u767b\u5f55\u4e4b\u524d\u5373\u88ab\u8c03\u7528\u6ce8\u9500"},
-        {"unable to instantiate LoginModule, module, because it does not provide a no-argument constructor",
-                "\u65e0\u6cd5\u4f8b\u793a LoginModule\uff0c {0}\uff0c\u56e0\u4e3a\u5b83\u5e76\u672a\u63d0\u4f9b\u4e00\u4e2a\u4e0d\u542b\u53c2\u6570\u7684\u6784\u9020\u7a0b\u5e8f"},
-        {"unable to instantiate LoginModule",
-                "\u65e0\u6cd5\u4f8b\u793a LoginModule"},
-        {"unable to instantiate LoginModule: ",
-                "\u65e0\u6cd5\u5b9e\u4f8b\u5316 LoginModule: "},
-        {"unable to find LoginModule class: ",
-                "\u65e0\u6cd5\u627e\u5230 LoginModule \u7c7b\u522b\uff1a "},
-        {"unable to access LoginModule: ",
-                "\u65e0\u6cd5\u8bbf\u95ee LoginModule: "},
-        {"Login Failure: all modules ignored",
-                "\u767b\u5f55\u5931\u8d25\uff1a\u5ffd\u7565\u6240\u6709\u6a21\u5757"},
+        {"Invalid.null.input.name", "\u65E0\u6548\u7A7A\u8F93\u5165: \u540D\u79F0"},
+        {"No.LoginModules.configured.for.name",
+         "\u6CA1\u6709\u4E3A{0}\u914D\u7F6E LoginModules"},
+        {"invalid.null.Subject.provided", "\u63D0\u4F9B\u4E86\u65E0\u6548\u7684\u7A7A\u4E3B\u9898"},
+        {"invalid.null.CallbackHandler.provided",
+                "\u63D0\u4F9B\u4E86\u65E0\u6548\u7684\u7A7A CallbackHandler"},
+        {"null.subject.logout.called.before.login",
+                "\u7A7A\u4E3B\u9898 - \u5728\u767B\u5F55\u4E4B\u524D\u8C03\u7528\u4E86\u6CE8\u9500"},
+        {"unable.to.instantiate.LoginModule.module.because.it.does.not.provide.a.no.argument.constructor",
+                "\u65E0\u6CD5\u5B9E\u4F8B\u5316 LoginModule, {0}, \u56E0\u4E3A\u5B83\u672A\u63D0\u4F9B\u4E00\u4E2A\u65E0\u53C2\u6570\u6784\u9020\u5668"},
+        {"unable.to.instantiate.LoginModule",
+                "\u65E0\u6CD5\u5B9E\u4F8B\u5316 LoginModule"},
+        {"unable.to.instantiate.LoginModule.",
+                "\u65E0\u6CD5\u5B9E\u4F8B\u5316 LoginModule: "},
+        {"unable.to.find.LoginModule.class.",
+                "\u65E0\u6CD5\u627E\u5230 LoginModule \u7C7B: "},
+        {"unable.to.access.LoginModule.",
+                "\u65E0\u6CD5\u8BBF\u95EE LoginModule: "},
+        {"Login.Failure.all.modules.ignored",
+                "\u767B\u5F55\u5931\u8D25: \u5FFD\u7565\u6240\u6709\u6A21\u5757"},
 
         // sun.security.provider.PolicyFile
 
-        {"java.security.policy: error parsing policy:\n\tmessage",
-                "java.security.policy: \u89e3\u6790\u9519\u8bef {0}\uff1a\n\t{1}"},
-        {"java.security.policy: error adding Permission, perm:\n\tmessage",
-                "java.security.policy: \u6dfb\u52a0\u6743\u9650\u9519\u8bef {0}\uff1a\n\t{1}"},
-        {"java.security.policy: error adding Entry:\n\tmessage",
-                "java.security.policy: \u6dfb\u52a0\u9879\u76ee\u9519\u8bef\uff1a\n\t{0}"},
-        {"alias name not provided (pe.name)", "\u672a\u63d0\u4f9b\u522b\u540d ({0})"},
-        {"unable to perform substitution on alias, suffix",
-                "\u4e0d\u80fd\u5728\u522b\u540d\u4e0a\u6267\u884c\u66ff\u4ee3\uff0c {0}"},
-        {"substitution value, prefix, unsupported",
-                "\u66ff\u4ee3\u503c {0} \u4e0d\u53d7\u652f\u6301"},
-        {"(", "("},
-        {")", ")"},
-        {"type can't be null","\u4e0d\u80fd\u4e3a\u65e0\u6548\u7c7b\u578b"},
+        {"java.security.policy.error.parsing.policy.message",
+                "java.security.policy: \u5BF9{0}\u8FDB\u884C\u8BED\u6CD5\u5206\u6790\u65F6\u51FA\u9519:\n\t{1}"},
+        {"java.security.policy.error.adding.Permission.perm.message",
+                "java.security.policy: \u6DFB\u52A0\u6743\u9650{0}\u65F6\u51FA\u9519:\n\t{1}"},
+        {"java.security.policy.error.adding.Entry.message",
+                "java.security.policy: \u6DFB\u52A0\u6761\u76EE\u65F6\u51FA\u9519:\n\t{0}"},
+        {"alias.name.not.provided.pe.name.", "\u672A\u63D0\u4F9B\u522B\u540D ({0})"},
+        {"unable.to.perform.substitution.on.alias.suffix",
+                "\u65E0\u6CD5\u5728\u522B\u540D {0} \u4E0A\u6267\u884C\u66FF\u4EE3"},
+        {"substitution.value.prefix.unsupported",
+                "\u66FF\u4EE3\u503C{0}\u4E0D\u53D7\u652F\u6301"},
+        {"LPARAM", "("},
+        {"RPARAM", ")"},
+        {"type.can.t.be.null","\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A\u503C"},
 
         // sun.security.provider.PolicyParser
-        {"keystorePasswordURL can not be specified without also specifying keystore",
-                "\u4e0d\u6307\u5b9a keystore \u65f6\u65e0\u6cd5\u6307\u5b9a keystorePasswordURL"},
-        {"expected keystore type", "\u9884\u671f\u7684 keystore \u7c7b\u578b"},
-        {"expected keystore provider", "\u9884\u671f\u7684 keystore \u63d0\u4f9b\u8005"},
-        {"multiple Codebase expressions",
-                "\u591a\u79cd Codebase \u8868\u8fbe\u5f0f"},
-        {"multiple SignedBy expressions","\u591a\u79cd SignedBy \u8868\u8fbe\u5f0f"},
-        {"SignedBy has empty alias","SignedBy \u6709\u7a7a\u522b\u540d"},
-        {"can not specify Principal with a wildcard class without a wildcard name",
-                "\u6ca1\u6709\u901a\u914d\u7b26\u540d\u79f0\uff0c\u65e0\u6cd5\u7528\u901a\u914d\u7b26\u7c7b\u522b\u6307\u5b9aPrincipal"},
-        {"expected codeBase or SignedBy or Principal",
-                "\u9884\u671f\u7684 codeBase \u6216 SignedBy \u6216 Principal"},
-        {"expected permission entry", "\u9884\u671f\u7684\u6743\u9650\u9879\u76ee"},
-        {"number ", "\u53f7\u7801"},
-        {"expected [expect], read [end of file]",
-                "\u9884\u671f\u7684 [{0}], \u8bfb\u53d6 [end of file]"},
-        {"expected [;], read [end of file]",
-                "\u9884\u671f\u7684 [;], \u8bfb\u53d6[end of file]"},
-        {"line number: msg", "\u5217 {0}\uff1a {1}"},
-        {"line number: expected [expect], found [actual]",
-                "\u884c\u53f7 {0}\uff1a\u9884\u671f\u7684 [{1}]\uff0c\u627e\u5230 [{2}]"},
-        {"null principalClass or principalName",
-                "\u65e0\u6548 principalClass \u6216 principalName"},
+        {"keystorePasswordURL.can.not.be.specified.without.also.specifying.keystore",
+                "\u4E0D\u6307\u5B9A\u5BC6\u94A5\u5E93\u65F6\u65E0\u6CD5\u6307\u5B9A keystorePasswordURL"},
+        {"expected.keystore.type", "\u5E94\u4E3A\u5BC6\u94A5\u5E93\u7C7B\u578B"},
+        {"expected.keystore.provider", "\u5E94\u4E3A\u5BC6\u94A5\u5E93\u63D0\u4F9B\u65B9"},
+        {"multiple.Codebase.expressions",
+                "\u591A\u4E2A\u4EE3\u7801\u5E93\u8868\u8FBE\u5F0F"},
+        {"multiple.SignedBy.expressions","\u591A\u4E2A SignedBy \u8868\u8FBE\u5F0F"},
+        {"SignedBy.has.empty.alias","SignedBy \u6709\u7A7A\u522B\u540D"},
+        {"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name",
+                "\u6CA1\u6709\u901A\u914D\u7B26\u540D\u79F0, \u65E0\u6CD5\u4F7F\u7528\u901A\u914D\u7B26\u7C7B\u6307\u5B9A\u4E3B\u7528\u6237"},
+        {"expected.codeBase.or.SignedBy.or.Principal",
+                "\u5E94\u4E3A codeBase, SignedBy \u6216\u4E3B\u7528\u6237"},
+        {"expected.permission.entry", "\u5E94\u4E3A\u6743\u9650\u6761\u76EE"},
+        {"number.", "\u7F16\u53F7 "},
+        {"expected.expect.read.end.of.file.",
+                "\u5E94\u4E3A [{0}], \u8BFB\u53D6\u7684\u662F [\u6587\u4EF6\u7ED3\u5C3E]"},
+        {"expected.read.end.of.file.",
+                "\u5E94\u4E3A [;], \u8BFB\u53D6\u7684\u662F [\u6587\u4EF6\u7ED3\u5C3E]"},
+        {"line.number.msg", "\u5217{0}: {1}"},
+        {"line.number.expected.expect.found.actual.",
+                "\u884C\u53F7 {0}: \u5E94\u4E3A [{1}], \u627E\u5230 [{2}]"},
+        {"null.principalClass.or.principalName",
+                "principalClass \u6216 principalName \u4E3A\u7A7A\u503C"},
 
         // sun.security.pkcs11.SunPKCS11
-        {"PKCS11 Token [providerName] Password: ",
-                "PKCS11 Token [{0}] \u5bc6\u7801: "},
+        {"PKCS11.Token.providerName.Password.",
+                "PKCS11 \u6807\u8BB0 [{0}] \u53E3\u4EE4: "},
 
         /* --- DEPRECATED --- */
         // javax.security.auth.Policy
-        {"unable to instantiate Subject-based policy",
-                "\u65e0\u6cd5\u5b9e\u4f8b\u5316\u57fa\u4e8e\u4e3b\u9898\u7684\u7b56\u7565"}
+        {"unable.to.instantiate.Subject.based.policy",
+                "\u65E0\u6CD5\u5B9E\u4F8B\u5316\u57FA\u4E8E\u4E3B\u9898\u7684\u7B56\u7565"}
     };
 
 
@@ -648,3 +670,4 @@
         return contents;
     }
 }
+
--- a/jdk/src/share/classes/sun/security/util/Resources_zh_TW.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/util/Resources_zh_TW.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2010, 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
@@ -35,605 +35,627 @@
     private static final Object[][] contents = {
 
         // shared (from jarsigner)
-        {" ", " "},
-        {"  ", "  "},
-        {"      ", "      "},
-        {", ", ", "},
+        {"SPACE", " "},
+        {"2SPACE", "  "},
+        {"6SPACE", "      "},
+        {"COMMA", ", "},
         // shared (from keytool)
-        {"\n", "\n"},
-        {"*******************************************",
+        {"NEWLINE", "\n"},
+        {"STAR",
                 "*******************************************"},
-        {"*******************************************\n\n",
+        {"STARNN",
                 "*******************************************\n\n"},
 
-        // keytool
-        {"keytool error: ", "keytool \u932f\u8aa4\uff1a "},
-        {"Illegal option:  ", "\u975e\u6cd5\u9078\u9805\uff1a  "},
-        {"Try keytool -help","\u5617\u8a66 keytool -help"},
-        {"Command option <flag> needs an argument.", "\u6307\u4ee4\u9078\u9805 {0} \u9700\u8981\u5f15\u6578\u3002"},
-        {"Warning:  Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified <command> value.",
-"\u8b66\u544a\ufe30PKCS12 \u91d1\u9470\u5132\u5b58\u5eab\u4e0d\u652f\u63f4\u4e0d\u540c\u7684\u5132\u5b58\u5eab\u548c\u91d1\u9470\u5bc6\u78bc\u3002\u5ffd\u7565\u4f7f\u7528\u8005\u6307\u5b9a\u7684 {0} \u503c\u3002"},
-        {"-keystore must be NONE if -storetype is {0}",
-                "\u5982\u679c -storetype \u70ba {0}\uff0c\u5247 -keystore \u5fc5\u9808\u70ba NONE"},
-        {"Too may retries, program terminated",
-"\u91cd\u8a66\u6b21\u6578\u592a\u591a\uff0c\u7a0b\u5f0f\u5df2\u7d42\u6b62"},
-        {"-storepasswd and -keypasswd commands not supported if -storetype is {0}",
-                "\u5982\u679c -storetype \u70ba {0}\uff0c\u5247\u4e0d\u652f\u63f4 -storepasswd \u548c -keypasswd \u6307\u4ee4"},
-        {"-keypasswd commands not supported if -storetype is PKCS12",
-                "\u5982\u679c -storetype \u70ba PKCS12\uff0c\u5247 -keypasswd \u6307\u4ee4\u4e0d\u53d7\u652f\u63f4"},
-        {"-keypass and -new can not be specified if -storetype is {0}",
-                "\u5982\u679c -storetype \u70ba {0}\uff0c\u5247\u4e0d\u80fd\u6307\u5b9a -keypass \u548c -new"},
-        {"if -protected is specified, then -storepass, -keypass, and -new must not be specified",
-                "\u5982\u679c\u6307\u5b9a -protected\uff0c\u5247\u4e0d\u80fd\u6307\u5b9a -storepass\u3001-keypass \u548c -new"},
-        {"if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified",
-                "\u5982\u679c\u6307\u5b9a -srcprotected\uff0c\u5247\u4e0d\u80fd\u6307\u5b9a -srcstorepass \u548c -srckeypass"},
-        {"if keystore is not password protected, then -storepass, -keypass, and -new must not be specified",
-                "\u5982\u679c\u91d1\u9470\u5eab\u4e0d\u53d7\u5bc6\u78bc\u4fdd\u8b77\uff0c\u5247\u4e0d\u80fd\u6307\u5b9a -storepass\u3001-keypass \u548c -new"},
-        {"if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified",
-                "\u5982\u679c\u4f86\u6e90\u91d1\u9470\u5eab\u4e0d\u53d7\u5bc6\u78bc\u4fdd\u8b77\uff0c\u5247\u4e0d\u80fd\u6307\u5b9a -srcstorepass \u548c -srckeypass"},
-        {"Validity must be greater than zero",
-                "\u6709\u6548\u6027\u5fc5\u9808\u6bd4\u96f6\u9084\u5927"},
-        {"provName not a provider", "{0} \u4e0d\u662f\u4e00\u500b\u63d0\u4f9b\u8005"},
-        {"Usage error: no command provided", "\u7528\u6cd5\u932f\u8aa4\uff1a\u672a\u63d0\u4f9b\u6307\u4ee4"},
-        {"Usage error, <arg> is not a legal command", "\u7528\u6cd5\u932f\u8aa4\uff0c{0} \u4e0d\u662f\u5408\u6cd5\u6307\u4ee4"},
-        {"Source keystore file exists, but is empty: ", "\u4f86\u6e90\u91d1\u9470\u5132\u5b58\u5eab\u6a94\u6848\u5b58\u5728\uff0c\u4f46\u70ba\u7a7a\uff1a"},
-        {"Please specify -srckeystore", "\u8acb\u6307\u5b9a -srckeystore"},
-        {"Must not specify both -v and -rfc with 'list' command",
-                "\u4e0d\u5f97\u4ee5\u300c\u6e05\u55ae\u300d\u6307\u4ee4\u6307\u5b9a -v \u53ca -rfc"},
-        {"Key password must be at least 6 characters",
-                "\u95dc\u9375\u5bc6\u78bc\u5fc5\u9808\u81f3\u5c11\u70ba 6 \u500b\u5b57\u5143"},
-        {"New password must be at least 6 characters",
-                "\u65b0\u7684\u5bc6\u78bc\u5fc5\u9808\u81f3\u5c11\u70ba 6 \u500b\u5b57\u5143"},
-        {"Keystore file exists, but is empty: ",
-                "Keystore \u6a94\u6848\u5b58\u5728\uff0c\u4f46\u70ba\u7a7a\u767d\uff1a "},
-        {"Keystore file does not exist: ",
-                "Keystore \u6a94\u6848\u4e0d\u5b58\u5728\uff1a "},
-        {"Must specify destination alias", "\u5fc5\u9808\u6307\u5b9a\u76ee\u7684\u5730\u5225\u540d"},
-        {"Must specify alias", "\u5fc5\u9808\u6307\u5b9a\u5225\u540d"},
-        {"Keystore password must be at least 6 characters",
-                "Keystore \u5bc6\u78bc\u5fc5\u9808\u81f3\u5c11\u70ba 6 \u500b\u5b57\u5143"},
-        {"Enter keystore password:  ", "\u8f38\u5165 keystore \u5bc6\u78bc\uff1a  "},
-        {"Enter source keystore password:  ", "\u8acb\u8f38\u5165\u4f86\u6e90\u91d1\u9470\u5132\u5b58\u5eab\u5bc6\u78bc\uff1a"},
-        {"Enter destination keystore password:  ", "\u8acb\u8f38\u5165\u76ee\u6a19\u91d1\u9470\u5132\u5b58\u5eab\u5bc6\u78bc\uff1a"},
-        {"Keystore password is too short - must be at least 6 characters",
-         "Keystore \u5bc6\u78bc\u592a\u77ed - \u5fc5\u9808\u81f3\u5c11\u70ba 6 \u500b\u5b57\u5143"},
-        {"Unknown Entry Type", "\u4e0d\u660e\u7684\u9805\u76ee\u985e\u578b"},
-        {"Too many failures. Alias not changed", "\u592a\u591a\u932f\u8aa4\u3002\u672a\u8b8a\u66f4\u5225\u540d"},
-        {"Entry for alias <alias> successfully imported.",
-"\u5df2\u6210\u529f\u532f\u5165\u5225\u540d {0} \u7684\u9805\u76ee\u3002"},
-        {"Entry for alias <alias> not imported.", "\u672a\u532f\u5165\u5225\u540d {0} \u7684\u9805\u76ee\u3002"},
-        {"Problem importing entry for alias <alias>: <exception>.\nEntry for alias <alias> not imported.",
-"\u532f\u5165\u5225\u540d {0} \u7684\u9805\u76ee\u6642\u51fa\u73fe\u554f\u984c\uff1a{1}\u3002\n\u672a\u532f\u5165\u5225\u540d {0} \u7684\u9805\u76ee\u3002"},
-        {"Import command completed:  <ok> entries successfully imported, <fail> entries failed or cancelled",
-"\u5df2\u5b8c\u6210\u532f\u5165\u6307\u4ee4\uff1a\u6210\u529f\u532f\u5165 {0} \u500b\u9805\u76ee\uff0c{1} \u500b\u9805\u76ee\u5931\u6557\u6216\u5df2\u53d6\u6d88"},
-        {"Warning: Overwriting existing alias <alias> in destination keystore",
-"\u8b66\u544a\uff1a\u6b63\u5728\u8986\u5beb\u76ee\u6a19\u91d1\u9470\u5132\u5b58\u5eab\u4e2d\u7684\u73fe\u6709\u5225\u540d {0}"},
-        {"Existing entry alias <alias> exists, overwrite? [no]:  ",
-"\u73fe\u6709\u9805\u76ee\u5225\u540d {0} \u5b58\u5728\uff0c\u662f\u5426\u8986\u5beb\uff1f[\u5426]\uff1a  "},
-        {"Too many failures - try later", "\u592a\u591a\u932f\u8aa4 - \u8acb\u7a0d\u5f8c\u518d\u8a66"},
-        {"Certification request stored in file <filename>",
-                "\u8a8d\u8b49\u8981\u6c42\u5132\u5b58\u5728\u6a94\u6848 <{0}>"},
-        {"Submit this to your CA", "\u5c07\u6b64\u63d0\u9001\u81f3\u60a8\u7684 CA"},
-        {"if alias not specified, destalias, srckeypass, and destkeypass must not be specified",
-"\u5982\u679c\u672a\u6307\u5b9a\u5225\u540d\uff0c\u5247\u4e0d\u80fd\u6307\u5b9a destalias\u3001srckeypass \u53ca destkeypass"},
-        {"Certificate stored in file <filename>",
-                "\u8a8d\u8b49\u5132\u5b58\u5728\u6a94\u6848 <{0}>"},
-        {"Certificate reply was installed in keystore",
-                "\u8a8d\u8b49\u56de\u8986\u5df2\u5b89\u88dd\u5728 keystore \u4e2d"},
-        {"Certificate reply was not installed in keystore",
-                "\u8a8d\u8b49\u56de\u8986\u672a\u5b89\u88dd\u5728 keystore \u4e2d"},
-        {"Certificate was added to keystore",
-                "\u8a8d\u8b49\u5df2\u65b0\u589e\u81f3 keystore \u4e2d"},
-        {"Certificate was not added to keystore",
-                "\u8a8d\u8b49\u672a\u65b0\u589e\u81f3 keystore \u4e2d"},
-        {"[Storing ksfname]", "[\u5132\u5b58 {0}]"},
-        {"alias has no public key (certificate)",
-                "{0} \u6c92\u6709\u516c\u958b\u91d1\u9470\uff08\u8a8d\u8b49\uff09"},
-        {"Cannot derive signature algorithm",
-                "\u7121\u6cd5\u53d6\u5f97\u7c3d\u540d\u6f14\u7b97\u6cd5"},
-        {"Alias <alias> does not exist",
-                "\u5225\u540d <{0}> \u4e0d\u5b58\u5728"},
-        {"Alias <alias> has no certificate",
-                "\u5225\u540d <{0}> \u6c92\u6709\u8a8d\u8b49"},
-        {"Key pair not generated, alias <alias> already exists",
-                "\u6c92\u6709\u5efa\u7acb\u9375\u503c\u5c0d\uff0c\u5225\u540d <{0}> \u5df2\u7d93\u5b58\u5728"},
-        {"Cannot derive signature algorithm",
-                "\u7121\u6cd5\u53d6\u5f97\u7c3d\u540d\u6f14\u7b97\u6cd5"},
-        {"Generating keysize bit keyAlgName key pair and self-signed certificate (sigAlgName) with a validity of validality days\n\tfor: x500Name",
-"\u91dd\u5c0d {4} \u7522\u751f\u6709\u6548\u671f\u70ba {3} \u5929\u7684 {0} \u4f4d\u5143 {1} \u91d1\u9470\u5c0d\u4ee5\u53ca\u81ea\u6211\u7c3d\u7f72\u6191\u8b49 ({2})\n\t"},
-        {"Enter key password for <alias>", "\u8f38\u5165 <{0}> \u7684\u4e3b\u5bc6\u78bc"},
-        {"\t(RETURN if same as keystore password):  ",
-                "\t\uff08RETURN \u5982\u679c\u548c keystore \u5bc6\u78bc\u76f8\u540c\uff09\uff1a  "},
-        {"Key password is too short - must be at least 6 characters",
-                "\u4e3b\u5bc6\u78bc\u592a\u77ed - \u5fc5\u9808\u81f3\u5c11\u70ba 6 \u500b\u5b57\u5143"},
-        {"Too many failures - key not added to keystore",
-                "\u592a\u591a\u932f\u8aa4 - \u9375\u503c\u672a\u88ab\u65b0\u589e\u81f3 keystore \u4e2d"},
-        {"Destination alias <dest> already exists",
-                "\u76ee\u7684\u5730\u5225\u540d <{0}> \u5df2\u7d93\u5b58\u5728"},
-        {"Password is too short - must be at least 6 characters",
-                "\u5bc6\u78bc\u592a\u77ed - \u5fc5\u9808\u81f3\u5c11\u70ba 6 \u500b\u5b57\u5143"},
-        {"Too many failures. Key entry not cloned",
-                "\u592a\u591a\u932f\u8aa4\u3002 \u9375\u503c\u8f38\u5165\u672a\u88ab\u8907\u88fd"},
-        {"key password for <alias>", "<{0}> \u7684\u4e3b\u5bc6\u78bc"},
-        {"Keystore entry for <id.getName()> already exists",
-                "<{0}> \u7684 Keystore \u8f38\u5165\u5df2\u7d93\u5b58\u5728"},
-        {"Creating keystore entry for <id.getName()> ...",
-                "\u5efa\u7acb <{0}> \u7684 keystore \u8f38\u5165..."},
-        {"No entries from identity database added",
-                "\u5f9e\u65b0\u589e\u8fa8\u8b58\u8cc7\u6599\u5eab\u4e2d\uff0c\u6c92\u6709\u8f38\u5165"},
-        {"Alias name: alias", "\u5225\u540d\u540d\u7a31\uff1a {0}"},
-        {"Creation date: keyStore.getCreationDate(alias)",
-                "\u5efa\u7acb\u65e5\u671f\uff1a {0,date}"},
-        {"alias, keyStore.getCreationDate(alias), ",
+        // keytool: Help part
+        {".OPTION.", " [OPTION]..."},
+        {"Options.", "\u9078\u9805:"},
+        {"Use.keytool.help.for.all.available.commands",
+                 "\u4F7F\u7528 \"keytool -help\" \u53D6\u5F97\u6240\u6709\u53EF\u7528\u7684\u547D\u4EE4"},
+        {"Key.and.Certificate.Management.Tool",
+                 "\u91D1\u9470\u8207\u6191\u8B49\u7BA1\u7406\u5DE5\u5177"},
+        {"Commands.", "\u547D\u4EE4:"},
+        {"Use.keytool.command.name.help.for.usage.of.command.name",
+                "\u4F7F\u7528 \"keytool -command_name -help\" \u53D6\u5F97 command_name \u7684\u7528\u6CD5"},
+        // keytool: help: commands
+        {"Generates.a.certificate.request",
+                "\u7522\u751F\u6191\u8B49\u8981\u6C42"}, //-certreq
+        {"Changes.an.entry.s.alias",
+                "\u8B8A\u66F4\u9805\u76EE\u7684\u5225\u540D"}, //-changealias
+        {"Deletes.an.entry",
+                "\u522A\u9664\u9805\u76EE"}, //-delete
+        {"Exports.certificate",
+                "\u532F\u51FA\u6191\u8B49"}, //-exportcert
+        {"Generates.a.key.pair",
+                "\u7522\u751F\u91D1\u9470\u7D44"}, //-genkeypair
+        {"Generates.a.secret.key",
+                "\u7522\u751F\u79D8\u5BC6\u91D1\u9470"}, //-genseckey
+        {"Generates.certificate.from.a.certificate.request",
+                "\u5F9E\u6191\u8B49\u8981\u6C42\u7522\u751F\u6191\u8B49"}, //-gencert
+        {"Generates.CRL", "\u7522\u751F CRL"}, //-gencrl
+        {"Imports.entries.from.a.JDK.1.1.x.style.identity.database",
+                "\u5F9E JDK 1.1.x-style \u8B58\u5225\u8CC7\u6599\u5EAB\u532F\u5165\u9805\u76EE"}, //-identitydb
+        {"Imports.a.certificate.or.a.certificate.chain",
+                "\u532F\u5165\u6191\u8B49\u6216\u6191\u8B49\u93C8"}, //-importcert
+        {"Imports.one.or.all.entries.from.another.keystore",
+                "\u5F9E\u5176\u4ED6\u91D1\u9470\u5132\u5B58\u5EAB\u532F\u5165\u4E00\u500B\u6216\u5168\u90E8\u9805\u76EE"}, //-importkeystore
+        {"Clones.a.key.entry",
+                "\u8907\u88FD\u91D1\u9470\u9805\u76EE"}, //-keyclone
+        {"Changes.the.key.password.of.an.entry",
+                "\u8B8A\u66F4\u9805\u76EE\u7684\u91D1\u9470\u5BC6\u78BC"}, //-keypasswd
+        {"Lists.entries.in.a.keystore",
+                "\u5217\u793A\u91D1\u9470\u5132\u5B58\u5EAB\u4E2D\u7684\u9805\u76EE"}, //-list
+        {"Prints.the.content.of.a.certificate",
+                "\u5217\u5370\u6191\u8B49\u7684\u5167\u5BB9"}, //-printcert
+        {"Prints.the.content.of.a.certificate.request",
+                "\u5217\u5370\u6191\u8B49\u8981\u6C42\u7684\u5167\u5BB9"}, //-printcertreq
+        {"Prints.the.content.of.a.CRL.file",
+                "\u5217\u5370 CRL \u6A94\u6848\u7684\u5167\u5BB9"}, //-printcrl
+        {"Generates.a.self.signed.certificate",
+                "\u7522\u751F\u81EA\u884C\u7C3D\u7F72\u7684\u6191\u8B49"}, //-selfcert
+        {"Changes.the.store.password.of.a.keystore",
+                "\u8B8A\u66F4\u91D1\u9470\u5132\u5B58\u5EAB\u7684\u5132\u5B58\u5BC6\u78BC"}, //-storepasswd
+        // keytool: help: options
+        {"alias.name.of.the.entry.to.process",
+                "\u8981\u8655\u7406\u9805\u76EE\u7684\u5225\u540D\u540D\u7A31"}, //-alias
+        {"destination.alias",
+                "\u76EE\u7684\u5730\u5225\u540D"}, //-destalias
+        {"destination.key.password",
+                "\u76EE\u7684\u5730\u91D1\u9470\u5BC6\u78BC"}, //-destkeypass
+        {"destination.keystore.name",
+                "\u76EE\u7684\u5730\u91D1\u9470\u5132\u5B58\u5EAB\u540D\u7A31"}, //-destkeystore
+        {"destination.keystore.password.protected",
+                "\u76EE\u7684\u5730\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC\u4FDD\u8B77"}, //-destprotected
+        {"destination.keystore.provider.name",
+                "\u76EE\u7684\u5730\u91D1\u9470\u5132\u5B58\u5EAB\u63D0\u4F9B\u8005\u540D\u7A31"}, //-destprovidername
+        {"destination.keystore.password",
+                "\u76EE\u7684\u5730\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC"}, //-deststorepass
+        {"destination.keystore.type",
+                "\u76EE\u7684\u5730\u91D1\u9470\u5132\u5B58\u5EAB\u985E\u578B"}, //-deststoretype
+        {"distinguished.name",
+                "\u8FA8\u5225\u540D\u7A31"}, //-dname
+        {"X.509.extension",
+                "X.509 \u64F4\u5145\u5957\u4EF6"}, //-ext
+        {"output.file.name",
+                "\u8F38\u51FA\u6A94\u6848\u540D\u7A31"}, //-file and -outfile
+        {"input.file.name",
+                "\u8F38\u5165\u6A94\u6848\u540D\u7A31"}, //-file and -infile
+        {"key.algorithm.name",
+                "\u91D1\u9470\u6F14\u7B97\u6CD5\u540D\u7A31"}, //-keyalg
+        {"key.password",
+                "\u91D1\u9470\u5BC6\u78BC"}, //-keypass
+        {"key.bit.size",
+                "\u91D1\u9470\u4F4D\u5143\u5927\u5C0F"}, //-keysize
+        {"keystore.name",
+                "\u91D1\u9470\u5132\u5B58\u5EAB\u540D\u7A31"}, //-keystore
+        {"new.password",
+                "\u65B0\u5BC6\u78BC"}, //-new
+        {"do.not.prompt",
+                "\u4E0D\u8981\u63D0\u793A"}, //-noprompt
+        {"password.through.protected.mechanism",
+                "\u7D93\u7531\u4FDD\u8B77\u6A5F\u5236\u7684\u5BC6\u78BC"}, //-protected
+        {"provider.argument",
+                "\u63D0\u4F9B\u8005\u5F15\u6578"}, //-providerarg
+        {"provider.class.name",
+                "\u63D0\u4F9B\u8005\u985E\u5225\u540D\u7A31"}, //-providerclass
+        {"provider.name",
+                "\u63D0\u4F9B\u8005\u540D\u7A31"}, //-providername
+        {"provider.classpath",
+                "\u63D0\u4F9B\u8005\u985E\u5225\u8DEF\u5F91"}, //-providerpath
+        {"output.in.RFC.style",
+                "\u4EE5 RFC \u6A23\u5F0F\u8F38\u51FA"}, //-rfc
+        {"signature.algorithm.name",
+                "\u7C3D\u7AE0\u6F14\u7B97\u6CD5\u540D\u7A31"}, //-sigalg
+        {"source.alias",
+                "\u4F86\u6E90\u5225\u540D"}, //-srcalias
+        {"source.key.password",
+                "\u4F86\u6E90\u91D1\u9470\u5BC6\u78BC"}, //-srckeypass
+        {"source.keystore.name",
+                "\u4F86\u6E90\u91D1\u9470\u5132\u5B58\u5EAB\u540D\u7A31"}, //-srckeystore
+        {"source.keystore.password.protected",
+                "\u4F86\u6E90\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC\u4FDD\u8B77"}, //-srcprotected
+        {"source.keystore.provider.name",
+                "\u4F86\u6E90\u91D1\u9470\u5132\u5B58\u5EAB\u63D0\u4F9B\u8005\u540D\u7A31"}, //-srcprovidername
+        {"source.keystore.password",
+                "\u4F86\u6E90\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC"}, //-srcstorepass
+        {"source.keystore.type",
+                "\u4F86\u6E90\u91D1\u9470\u5132\u5B58\u5EAB\u985E\u578B"}, //-srcstoretype
+        {"SSL.server.host.and.port",
+                "SSL \u4F3A\u670D\u5668\u4E3B\u6A5F\u8207\u9023\u63A5\u57E0"}, //-sslserver
+        {"signed.jar.file",
+                "\u7C3D\u7F72\u7684 jar \u6A94\u6848"}, //=jarfile
+        {"certificate.validity.start.date.time",
+                "\u6191\u8B49\u6709\u6548\u6027\u958B\u59CB\u65E5\u671F/\u6642\u9593"}, //-startdate
+        {"keystore.password",
+                "\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC"}, //-storepass
+        {"keystore.type",
+                "\u91D1\u9470\u5132\u5B58\u5EAB\u985E\u578B"}, //-storetype
+        {"trust.certificates.from.cacerts",
+                "\u4F86\u81EA cacerts \u7684\u4FE1\u4EFB\u6191\u8B49"}, //-trustcacerts
+        {"verbose.output",
+                "\u8A73\u7D30\u8CC7\u8A0A\u8F38\u51FA"}, //-v
+        {"validity.number.of.days",
+                "\u6709\u6548\u6027\u65E5\u6578"}, //-validity
+        {"Serial.ID.of.cert.to.revoke",
+                 "\u8981\u64A4\u92B7\u6191\u8B49\u7684\u5E8F\u5217 ID"}, //-id
+        // keytool: Running part
+        {"keytool.error.", "\u91D1\u9470\u5DE5\u5177\u932F\u8AA4: "},
+        {"Illegal.option.", "\u7121\u6548\u7684\u9078\u9805:"},
+        {"Illegal.value.", "\u7121\u6548\u503C: "},
+        {"Unknown.password.type.", "\u4E0D\u660E\u7684\u5BC6\u78BC\u985E\u578B: "},
+        {"Cannot.find.environment.variable.",
+                "\u627E\u4E0D\u5230\u74B0\u5883\u8B8A\u6578: "},
+        {"Cannot.find.file.", "\u627E\u4E0D\u5230\u6A94\u6848: "},
+        {"Command.option.flag.needs.an.argument.", "\u547D\u4EE4\u9078\u9805 {0} \u9700\u8981\u5F15\u6578\u3002"},
+        {"Warning.Different.store.and.key.passwords.not.supported.for.PKCS12.KeyStores.Ignoring.user.specified.command.value.",
+                "\u8B66\u544A: PKCS12 \u91D1\u9470\u5132\u5B58\u5EAB\u4E0D\u652F\u63F4\u4E0D\u540C\u7684\u5132\u5B58\u5EAB\u548C\u91D1\u9470\u5BC6\u78BC\u3002\u5FFD\u7565\u4F7F\u7528\u8005\u6307\u5B9A\u7684 {0} \u503C\u3002"},
+        {".keystore.must.be.NONE.if.storetype.is.{0}",
+                "\u5982\u679C -storetype \u70BA {0}\uFF0C\u5247 -keystore \u5FC5\u9808\u70BA NONE"},
+        {"Too.many.retries.program.terminated",
+                 "\u91CD\u8A66\u6B21\u6578\u592A\u591A\uFF0C\u7A0B\u5F0F\u5DF2\u7D42\u6B62"},
+        {".storepasswd.and.keypasswd.commands.not.supported.if.storetype.is.{0}",
+                "\u5982\u679C -storetype \u70BA {0}\uFF0C\u5247\u4E0D\u652F\u63F4 -storepasswd \u548C -keypasswd \u547D\u4EE4"},
+        {".keypasswd.commands.not.supported.if.storetype.is.PKCS12",
+                "\u5982\u679C -storetype \u70BA PKCS12\uFF0C\u5247\u4E0D\u652F\u63F4 -keypasswd \u547D\u4EE4"},
+        {".keypass.and.new.can.not.be.specified.if.storetype.is.{0}",
+                "\u5982\u679C -storetype \u70BA {0}\uFF0C\u5247\u4E0D\u80FD\u6307\u5B9A -keypass \u548C -new"},
+        {"if.protected.is.specified.then.storepass.keypass.and.new.must.not.be.specified",
+                "\u5982\u679C\u6307\u5B9A -protected\uFF0C\u5247\u4E0D\u80FD\u6307\u5B9A -storepass\u3001-keypass \u548C -new"},
+        {"if.srcprotected.is.specified.then.srcstorepass.and.srckeypass.must.not.be.specified",
+                "\u5982\u679C\u6307\u5B9A -srcprotected\uFF0C\u5247\u4E0D\u80FD\u6307\u5B9A -srcstorepass \u548C -srckeypass"},
+        {"if.keystore.is.not.password.protected.then.storepass.keypass.and.new.must.not.be.specified",
+                "\u5982\u679C\u91D1\u9470\u5132\u5B58\u5EAB\u4E0D\u53D7\u5BC6\u78BC\u4FDD\u8B77\uFF0C\u5247\u4E0D\u80FD\u6307\u5B9A -storepass\u3001-keypass \u548C -new"},
+        {"if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified",
+                "\u5982\u679C\u4F86\u6E90\u91D1\u9470\u5132\u5B58\u5EAB\u4E0D\u53D7\u5BC6\u78BC\u4FDD\u8B77\uFF0C\u5247\u4E0D\u80FD\u6307\u5B9A -srcstorepass \u548C -srckeypass"},
+        {"Illegal.startdate.value", "\u7121\u6548\u7684 startdate \u503C"},
+        {"Validity.must.be.greater.than.zero",
+                "\u6709\u6548\u6027\u5FC5\u9808\u5927\u65BC\u96F6"},
+        {"provName.not.a.provider", "{0} \u4E0D\u662F\u4E00\u500B\u63D0\u4F9B\u8005"},
+        {"Usage.error.no.command.provided", "\u7528\u6CD5\u932F\u8AA4: \u672A\u63D0\u4F9B\u547D\u4EE4"},
+        {"Source.keystore.file.exists.but.is.empty.", "\u4F86\u6E90\u91D1\u9470\u5132\u5B58\u5EAB\u6A94\u6848\u5B58\u5728\uFF0C\u4F46\u70BA\u7A7A: "},
+        {"Please.specify.srckeystore", "\u8ACB\u6307\u5B9A -srckeystore"},
+        {"Must.not.specify.both.v.and.rfc.with.list.command",
+                " 'list' \u547D\u4EE4\u4E0D\u80FD\u540C\u6642\u6307\u5B9A -v \u53CA -rfc"},
+        {"Key.password.must.be.at.least.6.characters",
+                "\u91D1\u9470\u5BC6\u78BC\u5FC5\u9808\u81F3\u5C11\u70BA 6 \u500B\u5B57\u5143"},
+        {"New.password.must.be.at.least.6.characters",
+                "\u65B0\u7684\u5BC6\u78BC\u5FC5\u9808\u81F3\u5C11\u70BA 6 \u500B\u5B57\u5143"},
+        {"Keystore.file.exists.but.is.empty.",
+                "\u91D1\u9470\u5132\u5B58\u5EAB\u6A94\u6848\u5B58\u5728\uFF0C\u4F46\u70BA\u7A7A\u767D: "},
+        {"Keystore.file.does.not.exist.",
+                "\u91D1\u9470\u5132\u5B58\u5EAB\u6A94\u6848\u4E0D\u5B58\u5728: "},
+        {"Must.specify.destination.alias", "\u5FC5\u9808\u6307\u5B9A\u76EE\u7684\u5730\u5225\u540D"},
+        {"Must.specify.alias", "\u5FC5\u9808\u6307\u5B9A\u5225\u540D"},
+        {"Keystore.password.must.be.at.least.6.characters",
+                "\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC\u5FC5\u9808\u81F3\u5C11\u70BA 6 \u500B\u5B57\u5143"},
+        {"Enter.keystore.password.", "\u8F38\u5165\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC:  "},
+        {"Enter.source.keystore.password.", "\u8ACB\u8F38\u5165\u4F86\u6E90\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC: "},
+        {"Enter.destination.keystore.password.", "\u8ACB\u8F38\u5165\u76EE\u7684\u5730\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC: "},
+        {"Keystore.password.is.too.short.must.be.at.least.6.characters",
+         "\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC\u592A\u77ED - \u5FC5\u9808\u81F3\u5C11\u70BA 6 \u500B\u5B57\u5143"},
+        {"Unknown.Entry.Type", "\u4E0D\u660E\u7684\u9805\u76EE\u985E\u578B"},
+        {"Too.many.failures.Alias.not.changed", "\u592A\u591A\u932F\u8AA4\u3002\u672A\u8B8A\u66F4\u5225\u540D"},
+        {"Entry.for.alias.alias.successfully.imported.",
+                 "\u5DF2\u6210\u529F\u532F\u5165\u5225\u540D {0} \u7684\u9805\u76EE\u3002"},
+        {"Entry.for.alias.alias.not.imported.", "\u672A\u532F\u5165\u5225\u540D {0} \u7684\u9805\u76EE\u3002"},
+        {"Problem.importing.entry.for.alias.alias.exception.Entry.for.alias.alias.not.imported.",
+                 "\u532F\u5165\u5225\u540D {0} \u7684\u9805\u76EE\u6642\u51FA\u73FE\u554F\u984C: {1}\u3002\n\u672A\u532F\u5165\u5225\u540D {0} \u7684\u9805\u76EE\u3002"},
+        {"Import.command.completed.ok.entries.successfully.imported.fail.entries.failed.or.cancelled",
+                 "\u5DF2\u5B8C\u6210\u532F\u5165\u547D\u4EE4: \u6210\u529F\u532F\u5165 {0} \u500B\u9805\u76EE\uFF0C{1} \u500B\u9805\u76EE\u5931\u6557\u6216\u5DF2\u53D6\u6D88"},
+        {"Warning.Overwriting.existing.alias.alias.in.destination.keystore",
+                 "\u8B66\u544A: \u6B63\u5728\u8986\u5BEB\u76EE\u7684\u5730\u91D1\u9470\u5132\u5B58\u5EAB\u4E2D\u7684\u73FE\u6709\u5225\u540D {0}"},
+        {"Existing.entry.alias.alias.exists.overwrite.no.",
+                 "\u73FE\u6709\u9805\u76EE\u5225\u540D {0} \u5B58\u5728\uFF0C\u662F\u5426\u8986\u5BEB\uFF1F[\u5426]:  "},
+        {"Too.many.failures.try.later", "\u592A\u591A\u932F\u8AA4 - \u8ACB\u7A0D\u5F8C\u518D\u8A66"},
+        {"Certification.request.stored.in.file.filename.",
+                "\u8A8D\u8B49\u8981\u6C42\u5132\u5B58\u5728\u6A94\u6848 <{0}>"},
+        {"Submit.this.to.your.CA", "\u5C07\u6B64\u9001\u51FA\u81F3\u60A8\u7684 CA"},
+        {"if.alias.not.specified.destalias.srckeypass.and.destkeypass.must.not.be.specified",
+            "\u5982\u679C\u672A\u6307\u5B9A\u5225\u540D\uFF0C\u5247\u4E0D\u80FD\u6307\u5B9A destalias\u3001srckeypass \u53CA destkeypass"},
+        {"Certificate.stored.in.file.filename.",
+                "\u6191\u8B49\u5132\u5B58\u5728\u6A94\u6848 <{0}>"},
+        {"Certificate.reply.was.installed.in.keystore",
+                "\u6191\u8B49\u56DE\u8986\u5DF2\u5B89\u88DD\u5728\u91D1\u9470\u5132\u5B58\u5EAB\u4E2D"},
+        {"Certificate.reply.was.not.installed.in.keystore",
+                "\u6191\u8B49\u56DE\u8986\u672A\u5B89\u88DD\u5728\u91D1\u9470\u5132\u5B58\u5EAB\u4E2D"},
+        {"Certificate.was.added.to.keystore",
+                "\u6191\u8B49\u5DF2\u65B0\u589E\u81F3\u91D1\u9470\u5132\u5B58\u5EAB\u4E2D"},
+        {"Certificate.was.not.added.to.keystore",
+                "\u6191\u8B49\u672A\u65B0\u589E\u81F3\u91D1\u9470\u5132\u5B58\u5EAB\u4E2D"},
+        {".Storing.ksfname.", "[\u5132\u5B58 {0}]"},
+        {"alias.has.no.public.key.certificate.",
+                "{0} \u6C92\u6709\u516C\u958B\u91D1\u9470 (\u6191\u8B49)"},
+        {"Cannot.derive.signature.algorithm",
+                "\u7121\u6CD5\u53D6\u5F97\u7C3D\u7AE0\u6F14\u7B97\u6CD5"},
+        {"Alias.alias.does.not.exist",
+                "\u5225\u540D <{0}> \u4E0D\u5B58\u5728"},
+        {"Alias.alias.has.no.certificate",
+                "\u5225\u540D <{0}> \u6C92\u6709\u6191\u8B49"},
+        {"Key.pair.not.generated.alias.alias.already.exists",
+                "\u6C92\u6709\u5EFA\u7ACB\u91D1\u9470\u7D44\uFF0C\u5225\u540D <{0}> \u5DF2\u7D93\u5B58\u5728"},
+        {"Generating.keysize.bit.keyAlgName.key.pair.and.self.signed.certificate.sigAlgName.with.a.validity.of.validality.days.for",
+                "\u91DD\u5C0D {4} \u7522\u751F\u6709\u6548\u671F {3} \u5929\u7684 {0} \u4F4D\u5143 {1} \u91D1\u9470\u7D44\u4EE5\u53CA\u81EA\u6211\u7C3D\u7F72\u6191\u8B49 ({2})\n\t"},
+        {"Enter.key.password.for.alias.", "\u8F38\u5165 <{0}> \u7684\u91D1\u9470\u5BC6\u78BC"},
+        {".RETURN.if.same.as.keystore.password.",
+                "\t(RETURN \u5982\u679C\u548C\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC\u76F8\u540C):  "},
+        {"Key.password.is.too.short.must.be.at.least.6.characters",
+                "\u91D1\u9470\u5BC6\u78BC\u592A\u77ED - \u5FC5\u9808\u81F3\u5C11\u70BA 6 \u500B\u5B57\u5143"},
+        {"Too.many.failures.key.not.added.to.keystore",
+                "\u592A\u591A\u932F\u8AA4 - \u91D1\u9470\u672A\u65B0\u589E\u81F3\u91D1\u9470\u5132\u5B58\u5EAB"},
+        {"Destination.alias.dest.already.exists",
+                "\u76EE\u7684\u5730\u5225\u540D <{0}> \u5DF2\u7D93\u5B58\u5728"},
+        {"Password.is.too.short.must.be.at.least.6.characters",
+                "\u5BC6\u78BC\u592A\u77ED - \u5FC5\u9808\u81F3\u5C11\u70BA 6 \u500B\u5B57\u5143"},
+        {"Too.many.failures.Key.entry.not.cloned",
+                "\u592A\u591A\u932F\u8AA4\u3002\u672A\u8907\u88FD\u91D1\u9470\u9805\u76EE"},
+        {"key.password.for.alias.", "<{0}> \u7684\u91D1\u9470\u5BC6\u78BC"},
+        {"Keystore.entry.for.id.getName.already.exists",
+                "<{0}> \u7684\u91D1\u9470\u5132\u5B58\u5EAB\u9805\u76EE\u5DF2\u7D93\u5B58\u5728"},
+        {"Creating.keystore.entry.for.id.getName.",
+                "\u5EFA\u7ACB <{0}> \u7684\u91D1\u9470\u5132\u5B58\u5EAB\u9805\u76EE..."},
+        {"No.entries.from.identity.database.added",
+                "\u6C92\u6709\u65B0\u589E\u4F86\u81EA\u8B58\u5225\u8CC7\u6599\u5EAB\u7684\u9805\u76EE"},
+        {"Alias.name.alias", "\u5225\u540D\u540D\u7A31: {0}"},
+        {"Creation.date.keyStore.getCreationDate.alias.",
+                "\u5EFA\u7ACB\u65E5\u671F: {0,date}"},
+        {"alias.keyStore.getCreationDate.alias.",
                 "{0}, {1,date}, "},
-        {"alias, ", "{0}, "},
-        {"Entry type: <type>", "\u9805\u76ee\u985e\u578b\uff1a{0}"},
-        {"Certificate chain length: ", "\u8a8d\u8b49\u93c8\u9577\u5ea6\uff1a "},
-        {"Certificate[(i + 1)]:", "\u8a8d\u8b49 [{0,number,integer}]:"},
-        {"Certificate fingerprint (MD5): ", "\u8a8d\u8b49\u6307\u7d0b (MD5)\uff1a "},
-        {"Entry type: trustedCertEntry\n", "\u8f38\u5165\u985e\u578b\uff1a trustedCertEntry\n"},
-        {"trustedCertEntry,", "trustedCertEntry,"},
-        {"Keystore type: ", "Keystore \u985e\u578b\uff1a "},
-        {"Keystore provider: ", "Keystore \u63d0\u4f9b\u8005\uff1a "},
-        {"Your keystore contains keyStore.size() entry",
-                "\u60a8\u7684 keystore \u5305\u542b {0,number,integer} \u8f38\u5165"},
-        {"Your keystore contains keyStore.size() entries",
-                "\u60a8\u7684 keystore \u5305\u542b {0,number,integer} \u8f38\u5165"},
-        {"Failed to parse input", "\u7121\u6cd5\u8a9e\u6cd5\u5206\u6790\u8f38\u5165"},
-        {"Empty input", "\u7a7a\u8f38\u5165"},
-        {"Not X.509 certificate", "\u975e X.509 \u8a8d\u8b49"},
-        {"Cannot derive signature algorithm",
-                "\u7121\u6cd5\u53d6\u5f97\u7c3d\u540d\u6f14\u7b97\u6cd5"},
-        {"alias has no public key", "{0} \u7121\u516c\u958b\u91d1\u9470"},
-        {"alias has no X.509 certificate", "{0} \u7121 X.509 \u8a8d\u8b49"},
-        {"New certificate (self-signed):", "\u65b0\u8a8d\u8b49\uff08\u81ea\u6211\u7c3d\u7f72\uff09\uff1a"},
-        {"Reply has no certificates", "\u56de\u8986\u4e0d\u542b\u8a8d\u8b49"},
-        {"Certificate not imported, alias <alias> already exists",
-                "\u8a8d\u8b49\u672a\u8f38\u5165\uff0c\u5225\u540d <{0}> \u5df2\u7d93\u5b58\u5728"},
-        {"Input not an X.509 certificate", "\u6240\u8f38\u5165\u7684\u4e0d\u662f\u4e00\u500b X.509 \u8a8d\u8b49"},
-        {"Certificate already exists in keystore under alias <trustalias>",
-                "\u5728 <{0}> \u7684\u5225\u540d\u4e4b\u4e0b\uff0c\u8a8d\u8b49\u5df2\u7d93\u5b58\u5728 keystore \u4e2d"},
-        {"Do you still want to add it? [no]:  ",
-                "\u60a8\u4ecd\u7136\u60f3\u8981\u5c07\u4e4b\u65b0\u589e\u55ce\uff1f [\u5426]\uff1a  "},
-        {"Certificate already exists in system-wide CA keystore under alias <trustalias>",
-                "\u5728 <{0}> \u7684\u5225\u540d\u4e4b\u4e0b\uff0c\u8a8d\u8b49\u5df2\u7d93\u5b58\u5728\u65bc CA keystore \u6574\u500b\u7cfb\u7d71\u4e4b\u4e2d"},
-        {"Do you still want to add it to your own keystore? [no]:  ",
-                "\u60a8\u4ecd\u7136\u60f3\u8981\u5c07\u4e4b\u65b0\u589e\u81f3\u81ea\u5df1\u7684 keystore \u55ce\uff1f [\u5426]\uff1a  "},
-        {"Trust this certificate? [no]:  ", "\u4fe1\u4efb\u9019\u500b\u8a8d\u8b49\uff1f [\u5426]\uff1a  "},
-        {"YES", "\u662f"},
-        {"New prompt: ", "\u65b0 {0}\uff1a "},
-        {"Passwords must differ", "\u5fc5\u9808\u662f\u4e0d\u540c\u7684\u5bc6\u78bc"},
-        {"Re-enter new prompt: ", "\u91cd\u65b0\u8f38\u5165\u65b0 {0}\uff1a "},
-        {"Re-enter new password: ", "\u91cd\u65b0\u8f38\u5165\u65b0\u5bc6\u78bc: "},
-        {"They don't match. Try again", "\u5b83\u5011\u4e0d\u76f8\u7b26\u3002\u8acb\u91cd\u8a66"},
-        {"Enter prompt alias name:  ", "\u8f38\u5165 {0} \u5225\u540d\u540d\u7a31\uff1a  "},
-        {"Enter new alias name\t(RETURN to cancel import for this entry):  ",
-"\u8acb\u8f38\u5165\u65b0\u7684\u5225\u540d\t(RETURN \u4ee5\u53d6\u6d88\u532f\u5165\u6b64\u9805\u76ee\u7684\u5225\u540d)\uff1a  "},
-        {"Enter alias name:  ", "\u8f38\u5165\u5225\u540d\u540d\u7a31\uff1a  "},
-        {"\t(RETURN if same as for <otherAlias>)",
-                "\t\uff08RETURN \u5982\u679c\u548c <{0}> \u7684\u76f8\u540c\uff09"},
-        {"*PATTERN* printX509Cert",
-                "\u6240\u6709\u8005\uff1a{0}\n\u6838\u767c\u8005\uff1a{1}\n\u5e8f\u865f\uff1a{2}\n\u81ea\u4ee5\u4e0b\u65e5\u671f\u958b\u59cb\u751f\u6548\uff1a{3}\uff0c\u76f4\u5230\uff1a{4}\n\u6191\u8b49\u6307\u7d0b\uff1a\n\tMD5\uff1a{5}\n\tSHA1\uff1a{6}\n\t\u7c3d\u540d\u6f14\u7b97\u6cd5\u540d\u7a31\uff1a{7}\n\t\u7248\u672c\uff1a{8}"},
-        {"What is your first and last name?",
-                "\u60a8\u7684\u540d\u5b57\u8207\u59d3\u6c0f\u70ba\u4f55\uff1f"},
-        {"What is the name of your organizational unit?",
-                "\u60a8\u7684\u7de8\u5236\u55ae\u4f4d\u540d\u7a31\u70ba\u4f55\uff1f"},
-        {"What is the name of your organization?",
-                "\u60a8\u7684\u7d44\u7e54\u540d\u7a31\u70ba\u4f55\uff1f"},
-        {"What is the name of your City or Locality?",
-                "\u60a8\u6240\u5728\u7684\u57ce\u5e02\u6216\u5730\u5340\u540d\u7a31\u70ba\u4f55\uff1f"},
-        {"What is the name of your State or Province?",
-                "\u60a8\u6240\u5728\u7684\u5dde\u53ca\u7701\u4efd\u540d\u7a31\u70ba\u4f55\uff1f"},
-        {"What is the two-letter country code for this unit?",
-                "\u8a72\u55ae\u4f4d\u7684\u4e8c\u5b57\u570b\u78bc\u70ba\u4f55"},
-        {"Is <name> correct?", "{0} \u6b63\u78ba\u55ce\uff1f"},
+        {"alias.", "{0}, "},
+        {"Entry.type.type.", "\u9805\u76EE\u985E\u578B: {0}"},
+        {"Certificate.chain.length.", "\u6191\u8B49\u93C8\u9577\u5EA6: "},
+        {"Certificate.i.1.", "\u6191\u8B49 [{0,number,integer}]:"},
+        {"Certificate.fingerprint.SHA1.", "\u6191\u8B49\u6307\u7D0B (SHA1): "},
+        {"Entry.type.trustedCertEntry.", "\u8F38\u5165\u985E\u578B: trustedCertEntry\n"},
+        {"trustedCertEntry.", "trustedCertEntry,"},
+        {"Keystore.type.", "\u91D1\u9470\u5132\u5B58\u5EAB\u985E\u578B: "},
+        {"Keystore.provider.", "\u91D1\u9470\u5132\u5B58\u5EAB\u63D0\u4F9B\u8005: "},
+        {"Your.keystore.contains.keyStore.size.entry",
+                "\u60A8\u7684\u91D1\u9470\u5132\u5B58\u5EAB\u5305\u542B {0,number,integer} \u9805\u76EE"},
+        {"Your.keystore.contains.keyStore.size.entries",
+                "\u60A8\u7684\u91D1\u9470\u5132\u5B58\u5EAB\u5305\u542B {0,number,integer} \u9805\u76EE"},
+        {"Failed.to.parse.input", "\u7121\u6CD5\u5256\u6790\u8F38\u5165"},
+        {"Empty.input", "\u7A7A\u8F38\u5165"},
+        {"Not.X.509.certificate", "\u975E X.509 \u6191\u8B49"},
+        {"alias.has.no.public.key", "{0} \u7121\u516C\u958B\u91D1\u9470"},
+        {"alias.has.no.X.509.certificate", "{0} \u7121 X.509 \u6191\u8B49"},
+        {"New.certificate.self.signed.", "\u65B0\u6191\u8B49 (\u81EA\u6211\u7C3D\u7F72): "},
+        {"Reply.has.no.certificates", "\u56DE\u8986\u4E0D\u542B\u6191\u8B49"},
+        {"Certificate.not.imported.alias.alias.already.exists",
+                "\u6191\u8B49\u672A\u8F38\u5165\uFF0C\u5225\u540D <{0}> \u5DF2\u7D93\u5B58\u5728"},
+        {"Input.not.an.X.509.certificate", "\u8F38\u5165\u7684\u4E0D\u662F X.509 \u6191\u8B49"},
+        {"Certificate.already.exists.in.keystore.under.alias.trustalias.",
+                "\u91D1\u9470\u5132\u5B58\u5EAB\u4E2D\u7684 <{0}> \u5225\u540D\u4E4B\u4E0B\uFF0C\u6191\u8B49\u5DF2\u7D93\u5B58\u5728"},
+        {"Do.you.still.want.to.add.it.no.",
+                "\u60A8\u4ECD\u7136\u60F3\u8981\u5C07\u4E4B\u65B0\u589E\u55CE\uFF1F [\u5426]:  "},
+        {"Certificate.already.exists.in.system.wide.CA.keystore.under.alias.trustalias.",
+                "\u6574\u500B\u7CFB\u7D71 CA \u91D1\u9470\u5132\u5B58\u5EAB\u4E2D\u7684 <{0}> \u5225\u540D\u4E4B\u4E0B\uFF0C\u6191\u8B49\u5DF2\u7D93\u5B58\u5728"},
+        {"Do.you.still.want.to.add.it.to.your.own.keystore.no.",
+                "\u60A8\u4ECD\u7136\u60F3\u8981\u5C07\u4E4B\u65B0\u589E\u81F3\u81EA\u5DF1\u7684\u91D1\u9470\u5132\u5B58\u5EAB\u55CE\uFF1F [\u5426]:  "},
+        {"Trust.this.certificate.no.", "\u4FE1\u4EFB\u9019\u500B\u6191\u8B49\uFF1F [\u5426]:  "},
+        {"YES", "\u662F"},
+        {"New.prompt.", "\u65B0 {0}: "},
+        {"Passwords.must.differ", "\u5FC5\u9808\u662F\u4E0D\u540C\u7684\u5BC6\u78BC"},
+        {"Re.enter.new.prompt.", "\u91CD\u65B0\u8F38\u5165\u65B0 {0}: "},
+        {"Re.enter.new.password.", "\u91CD\u65B0\u8F38\u5165\u65B0\u5BC6\u78BC: "},
+        {"They.don.t.match.Try.again", "\u5B83\u5011\u4E0D\u76F8\u7B26\u3002\u8ACB\u91CD\u8A66"},
+        {"Enter.prompt.alias.name.", "\u8F38\u5165 {0} \u5225\u540D\u540D\u7A31:  "},
+        {"Enter.new.alias.name.RETURN.to.cancel.import.for.this.entry.",
+                 "\u8ACB\u8F38\u5165\u65B0\u7684\u5225\u540D\u540D\u7A31\t(RETURN \u4EE5\u53D6\u6D88\u532F\u5165\u6B64\u9805\u76EE):"},
+        {"Enter.alias.name.", "\u8F38\u5165\u5225\u540D\u540D\u7A31:  "},
+        {".RETURN.if.same.as.for.otherAlias.",
+                "\t(RETURN \u5982\u679C\u548C <{0}> \u7684\u76F8\u540C)"},
+        {".PATTERN.printX509Cert",
+                "\u64C1\u6709\u8005: {0}\n\u767C\u51FA\u8005: {1}\n\u5E8F\u865F: {2}\n\u6709\u6548\u671F\u81EA: {3} \u5230: {4}\n\u6191\u8B49\u6307\u7D0B:\n\t MD5:  {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t \u7C3D\u7AE0\u6F14\u7B97\u6CD5\u540D\u7A31: {8}\n\t \u7248\u672C: {9}"},
+        {"What.is.your.first.and.last.name.",
+                "\u60A8\u7684\u540D\u5B57\u8207\u59D3\u6C0F\u70BA\u4F55\uFF1F"},
+        {"What.is.the.name.of.your.organizational.unit.",
+                "\u60A8\u7684\u7D44\u7E54\u55AE\u4F4D\u540D\u7A31\u70BA\u4F55\uFF1F"},
+        {"What.is.the.name.of.your.organization.",
+                "\u60A8\u7684\u7D44\u7E54\u540D\u7A31\u70BA\u4F55\uFF1F"},
+        {"What.is.the.name.of.your.City.or.Locality.",
+                "\u60A8\u6240\u5728\u7684\u57CE\u5E02\u6216\u5730\u5340\u540D\u7A31\u70BA\u4F55\uFF1F"},
+        {"What.is.the.name.of.your.State.or.Province.",
+                "\u60A8\u6240\u5728\u7684\u5DDE\u53CA\u7701\u4EFD\u540D\u7A31\u70BA\u4F55\uFF1F"},
+        {"What.is.the.two.letter.country.code.for.this.unit.",
+                "\u6B64\u55AE\u4F4D\u7684\u5169\u500B\u5B57\u6BCD\u570B\u5225\u4EE3\u78BC\u70BA\u4F55\uFF1F"},
+        {"Is.name.correct.", "{0} \u6B63\u78BA\u55CE\uFF1F"},
         {"no", "\u5426"},
-        {"yes", "\u662f"},
+        {"yes", "\u662F"},
         {"y", "y"},
-        {"  [defaultValue]:  ", "  [{0}]\uff1a  "},
-        {"Alias <alias> has no key",
-                "\u5225\u540d <{0}> \u6c92\u6709\u91d1\u9470"},
-        {"Alias <alias> references an entry type that is not a private key entry.  The -keyclone command only supports cloning of private key entries",
-"\u5225\u540d <{0}> \u6240\u53c3\u7167\u7684\u9805\u76ee\u4e0d\u662f\u79c1\u5bc6\u91d1\u9470\u985e\u578b\u3002-keyclone \u6307\u4ee4\u50c5\u652f\u63f4\u79c1\u5bc6\u91d1\u9470\u9805\u76ee\u7684\u8907\u88fd"},
+        {".defaultValue.", "  [{0}]:  "},
+        {"Alias.alias.has.no.key",
+                "\u5225\u540D <{0}> \u6C92\u6709\u91D1\u9470"},
+        {"Alias.alias.references.an.entry.type.that.is.not.a.private.key.entry.The.keyclone.command.only.supports.cloning.of.private.key",
+                 "\u5225\u540D <{0}> \u6240\u53C3\u7167\u7684\u9805\u76EE\u4E0D\u662F\u79C1\u5BC6\u91D1\u9470\u985E\u578B\u3002-keyclone \u547D\u4EE4\u50C5\u652F\u63F4\u79C1\u5BC6\u91D1\u9470\u9805\u76EE\u7684\u8907\u88FD"},
 
-        {"*****************  WARNING WARNING WARNING  *****************",
-            "***************** \u8b66\u544a \u8b66\u544a \u8b66\u544a  *****************"},
+        {".WARNING.WARNING.WARNING.",
+            "*****************  WARNING WARNING WARNING  *****************"},
+        {"Signer.d.", "\u7C3D\u7F72\u8005 #%d:"},
+        {"Timestamp.", "\u6642\u6233:"},
+        {"Signature.", "\u7C3D\u7AE0:"},
+        {"CRLs.", "CRL:"},
+        {"Certificate.owner.", "\u6191\u8B49\u64C1\u6709\u8005: "},
+        {"Not.a.signed.jar.file", "\u4E0D\u662F\u7C3D\u7F72\u7684 jar \u6A94\u6848"},
+        {"No.certificate.from.the.SSL.server",
+                "\u6C92\u6709\u4F86\u81EA SSL \u4F3A\u670D\u5668\u7684\u6191\u8B49"},
 
         // Translators of the following 5 pairs, ATTENTION:
         // the next 5 string pairs are meant to be combined into 2 paragraphs,
         // 1+3+4 and 2+3+5. make sure your translation also does.
-        {"* The integrity of the information stored in your keystore  *",
-            "* \u8cc7\u6599\u7684\u5b8c\u6574\u6027\u5df2\u5132\u5b58\u5728\u60a8\u7684 keystore \u4e2d  *"},
-        {"* The integrity of the information stored in the srckeystore*",
-"* \u5b8c\u6574\u7684\u8cc7\u8a0a\u5132\u5b58\u5728 srckeystore \u4e2d *"},
-        {"* has NOT been verified!  In order to verify its integrity, *",
-            "* \u5c1a\u672a\u88ab\u9a57\u8b49\uff01  \u70ba\u4e86\u9a57\u8b49\u5176\u5b8c\u6574\u6027\uff0c *"},
-        {"* you must provide your keystore password.                  *",
-            "* \u60a8\u5fc5\u9808\u63d0\u4f9b\u60a8 keystore \u7684\u5bc6\u78bc\u3002                  *"},
-        {"* you must provide the srckeystore password.                *",
-            "* \u60a8\u5fc5\u9808\u63d0\u4f9b srckeystore \u5bc6\u78bc\u3002                *"},
+        {".The.integrity.of.the.information.stored.in.your.keystore.",
+            "* \u8CC7\u8A0A\u7684\u5B8C\u6574\u6027\u5DF2\u5132\u5B58\u5728\u60A8\u7684\u91D1\u9470\u5132\u5B58\u5EAB\u4E2D  *"},
+        {".The.integrity.of.the.information.stored.in.the.srckeystore.",
+            "* \u8CC7\u8A0A\u7684\u5B8C\u6574\u6027\u5DF2\u5132\u5B58\u5728 srckeystore \u4E2D *"},
+        {".has.NOT.been.verified.In.order.to.verify.its.integrity.",
+            "* \u5C1A\u672A\u88AB\u9A57\u8B49\uFF01\u70BA\u4E86\u9A57\u8B49\u5176\u5B8C\u6574\u6027\uFF0C*"},
+        {".you.must.provide.your.keystore.password.",
+            "* \u60A8\u5FC5\u9808\u63D0\u4F9B\u60A8\u91D1\u9470\u5132\u5B58\u5EAB\u7684\u5BC6\u78BC\u3002                 *"},
+        {".you.must.provide.the.srckeystore.password.",
+            "* \u60A8\u5FC5\u9808\u63D0\u4F9B srckeystore \u5BC6\u78BC\u3002               *"},
 
 
-        {"Certificate reply does not contain public key for <alias>",
-                "\u8a8d\u8b49\u56de\u8986\u4e26\u672a\u5305\u542b <{0}> \u7684\u516c\u958b\u91d1\u9470"},
-        {"Incomplete certificate chain in reply",
-                "\u56de\u8986\u6642\u7684\u8a8d\u8b49\u9375\u4e0d\u5b8c\u6574"},
-        {"Certificate chain in reply does not verify: ",
-                "\u56de\u8986\u6642\u7684\u8a8d\u8b49\u93c8\u672a\u9a57\u8b49\uff1a "},
-        {"Top-level certificate in reply:\n",
-                "\u56de\u8986\u6642\u7684\u6700\u9ad8\u7d1a\u8a8d\u8b49\uff1a\n"},
-        {"... is not trusted. ", "... \u662f\u4e0d\u88ab\u4fe1\u4efb\u7684\u3002 "},
-        {"Install reply anyway? [no]:  ", "\u9084\u662f\u8981\u5b89\u88dd\u56de\u8986\uff1f [\u5426]\uff1a  "},
+        {"Certificate.reply.does.not.contain.public.key.for.alias.",
+                "\u6191\u8B49\u56DE\u8986\u4E26\u672A\u5305\u542B <{0}> \u7684\u516C\u958B\u91D1\u9470"},
+        {"Incomplete.certificate.chain.in.reply",
+                "\u56DE\u8986\u6642\u7684\u6191\u8B49\u93C8\u4E0D\u5B8C\u6574"},
+        {"Certificate.chain.in.reply.does.not.verify.",
+                "\u56DE\u8986\u6642\u7684\u6191\u8B49\u93C8\u672A\u9A57\u8B49: "},
+        {"Top.level.certificate.in.reply.",
+                "\u56DE\u8986\u6642\u7684\u6700\u9AD8\u7D1A\u6191\u8B49:\\n"},
+        {".is.not.trusted.", "... \u662F\u4E0D\u88AB\u4FE1\u4EFB\u7684\u3002"},
+        {"Install.reply.anyway.no.", "\u9084\u662F\u8981\u5B89\u88DD\u56DE\u8986\uFF1F [\u5426]:  "},
         {"NO", "\u5426"},
-        {"Public keys in reply and keystore don't match",
-                "\u56de\u8986\u6642\u7684\u516c\u958b\u91d1\u9470\u8207 keystore \u4e0d\u7b26"},
-        {"Certificate reply and certificate in keystore are identical",
-                "\u8a8d\u8b49\u56de\u8986\u8207 keystore \u4e2d\u7684\u8a8d\u8b49\u662f\u76f8\u540c\u7684"},
-        {"Failed to establish chain from reply",
-                "\u7121\u6cd5\u5f9e\u56de\u8986\u4e2d\u5c07\u9375\u5efa\u7acb\u8d77\u4f86"},
+        {"Public.keys.in.reply.and.keystore.don.t.match",
+                "\u56DE\u8986\u6642\u7684\u516C\u958B\u91D1\u9470\u8207\u91D1\u9470\u5132\u5B58\u5EAB\u4E0D\u7B26"},
+        {"Certificate.reply.and.certificate.in.keystore.are.identical",
+                "\u6191\u8B49\u56DE\u8986\u8207\u91D1\u9470\u5132\u5B58\u5EAB\u4E2D\u7684\u6191\u8B49\u662F\u76F8\u540C\u7684"},
+        {"Failed.to.establish.chain.from.reply",
+                "\u7121\u6CD5\u5F9E\u56DE\u8986\u4E2D\u5C07\u93C8\u5EFA\u7ACB\u8D77\u4F86"},
         {"n", "n"},
-        {"Wrong answer, try again", "\u932f\u8aa4\u7684\u7b54\u6848\uff0c\u8acb\u518d\u8a66\u4e00\u6b21"},
-        {"Secret key not generated, alias <alias> already exists",
-                "\u672a\u7522\u751f\u79d8\u5bc6\u91d1\u9470\uff0c\u5225\u540d <{0}> \u5df2\u5b58\u5728"},
-        {"Please provide -keysize for secret key generation",
-"\u8acb\u63d0\u4f9b -keysize \u4ee5\u7522\u751f\u79d8\u5bc6\u91d1\u9470"},
-        {"keytool usage:\n", "keytool \u7528\u6cd5\uff1a\n"},
-
-        {"Extensions: ", "\u5ef6\u4f38\uff1a "},
-
-        {"-certreq     [-v] [-protected]",
-                "-certreq     [-v] [-protected]"},
-        {"\t     [-alias <alias>] [-sigalg <sigalg>]",
-                "\t     [-alias <\u5225\u540d>] [-sigalg <\u7c3d\u7ae0\u6f14\u7b97\u6cd5>]"},
-        {"\t     [-file <csr_file>] [-keypass <keypass>]",
-                "\t     [-file <\u6191\u8b49\u7c3d\u7ae0\u8981\u6c42\u6a94\u6848>] [-keypass <\u4e3b\u5bc6\u78bc>]"},
-        {"\t     [-keystore <keystore>] [-storepass <storepass>]",
-                "\t     [-keystore <\u91d1\u9470\u5132\u5b58\u5eab>] [-storepass <\u5132\u5b58\u5eab\u5bc6\u78bc>]"},
-        {"\t     [-storetype <storetype>] [-providername <name>]",
-                "\t[-storetype <\u5132\u5b58\u5eab\u985e\u578b>] [-providername <\u540d\u7a31>]"},
-        {"\t     [-providerclass <provider_class_name> [-providerarg <arg>]] ...",
-                "\t[-providerclass <\u63d0\u4f9b\u8005\u985e\u5225\u540d\u7a31> [-providerarg <\u5f15\u6578>]] ..."},
-        {"\t     [-providerpath <pathlist>]",
-"\t[-providerpath <\u8def\u5f91\u6e05\u55ae>]"},
-        {"-delete      [-v] [-protected] -alias <alias>",
-                "-delete      [-v] [-protected] -alias <\u5225\u540d>"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-export      [-v] [-rfc] [-protected]",
-        //       "-export      [-v] [-rfc] [-protected]"},
-        {"-exportcert  [-v] [-rfc] [-protected]",
-                "-exportcert [-v] [-rfc] [-protected]"},
-        {"\t     [-alias <alias>] [-file <cert_file>]",
-                "\t     [-alias <\u5225\u540d>] [-file <\u8a8d\u8b49\u6a94\u6848>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-genkey      [-v] [-protected]",
-        //        "-genkey      [-v] [-protected]"},
-        {"-genkeypair  [-v] [-protected]",
-                "-genkeypair [-v] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <\u5225\u540d>]"},
-        {"\t     [-keyalg <keyalg>] [-keysize <keysize>]",
-                "\t     [-keyalg <\u91d1\u9470\u6f14\u7b97\u6cd5>] [-keysize <\u91d1\u9470\u5927\u5c0f>]"},
-        {"\t     [-sigalg <sigalg>] [-dname <dname>]",
-                "\t     [-sigalg <\u7c3d\u7ae0\u6f14\u7b97\u6cd5>] [-dname <\u7db2\u57df\u540d\u7a31>]"},
-        {"\t     [-validity <valDays>] [-keypass <keypass>]",
-                "\t     [-validity <\u6709\u6548\u5929\u6578>] [-keypass <\u4e3b\u5bc6\u78bc>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-genseckey   [-v] [-protected]",
-                "-genseckey [-v] [-protected]"},
-        /** rest is same as -certreq starting from -keystore **/
+        {"Wrong.answer.try.again", "\u932F\u8AA4\u7684\u7B54\u6848\uFF0C\u8ACB\u518D\u8A66\u4E00\u6B21"},
+        {"Secret.key.not.generated.alias.alias.already.exists",
+                "\u672A\u7522\u751F\u79D8\u5BC6\u91D1\u9470\uFF0C\u5225\u540D <{0}> \u5DF2\u5B58\u5728"},
+        {"Please.provide.keysize.for.secret.key.generation",
+                "\u8ACB\u63D0\u4F9B -keysize \u4EE5\u7522\u751F\u79D8\u5BC6\u91D1\u9470"},
 
-        {"-help", "-help"},
-        //{"-identitydb  [-v] [-protected]",
-        //      "-identitydb  [-v] [-protected]"},
-        //{"\t     [-file <idb_file>]", "\t     [-file <\u8fa8\u8b58\u8cc7\u6599\u5eab\u6a94\u6848>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        //{"-import      [-v] [-noprompt] [-trustcacerts] [-protected]",
-        //       "-import      [-v] [-noprompt] [-trustcacerts] [-protected]"},
-        {"-importcert  [-v] [-noprompt] [-trustcacerts] [-protected]",
-                "-importcert [-v] [-noprompt] [-trustcacerts] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <\u5225\u540d>]"},
-        {"\t     [-alias <alias>] [-keypass <keypass>]",
-"\t[-alias <\u5225\u540d>] [-keypass <\u4e3b\u5bc6\u78bc>]"},
-        {"\t     [-file <cert_file>] [-keypass <keypass>]",
-                "\t     [-file <\u8a8d\u8b49\u6a94\u6848>] [-keypass <\u4e3b\u5bc6\u78bc>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-importkeystore [-v] ",
-"-importkeystore [-v]"},
-        {"\t     [-srckeystore <srckeystore>] [-destkeystore <destkeystore>]",
-"\t[-srckeystore <\u4f86\u6e90\u91d1\u9470\u5132\u5b58\u5eab>] [-destkeystore <\u76ee\u6a19\u91d1\u9470\u5132\u5b58\u5eab>]"},
-        {"\t     [-srcstoretype <srcstoretype>] [-deststoretype <deststoretype>]",
-"\t[-srcstoretype <\u4f86\u6e90\u5132\u5b58\u5eab\u985e\u578b>] [-deststoretype <\u76ee\u6a19\u5132\u5b58\u5eab\u985e\u578b>]"},
-        {"\t     [-srcprotected] [-destprotected]",
-"\t[-srcprotected] [-destprotected]"},
-        {"\t     [-srcstorepass <srcstorepass>] [-deststorepass <deststorepass>]",
-"\t[-srcstorepass <\u4f86\u6e90\u5132\u5b58\u5eab\u5bc6\u78bc>] [-deststorepass <\u76ee\u6a19\u5132\u5b58\u5eab\u5bc6\u78bc>]"},
-        {"\t     [-srcprovidername <srcprovidername>]\n\t     [-destprovidername <destprovidername>]",  //\u884c\u592a\u9577\uff0c\u8acb\u5206\u70ba 2 \u884c
-"\t[-srcprovidername <\u4f86\u6e90\u63d0\u4f9b\u8005\u540d\u7a31>]\n\t[-destprovidername <\u76ee\u6a19\u63d0\u4f9b\u8005\u540d\u7a31>]"},
-        {"\t     [-srcalias <srcalias> [-destalias <destalias>]",
-"\t[-srcalias <\u4f86\u6e90\u5225\u540d> [-destalias <\u76ee\u6a19\u5225\u540d>]"},
-        {"\t       [-srckeypass <srckeypass>] [-destkeypass <destkeypass>]]",
-"\t[-srckeypass <\u4f86\u6e90\u4e3b\u5bc6\u78bc>] [-destkeypass <\u76ee\u6a19\u4e3b\u5bc6\u78bc>]]"},
-        {"\t     [-noprompt]", "\t[-noprompt]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-changealias [-v] [-protected] -alias <alias> -destalias <destalias>",
-"-changealias [-v] [-protected] -alias <\u5225\u540d> -destalias <\u76ee\u6a19\u5225\u540d>"},
-        {"\t     [-keypass <keypass>]", "\t     [-keypass <\u4e3b\u5bc6\u78bc>]"},
-
-        //{"-keyclone    [-v] [-protected]",
-        //      "-keyclone    [-v] [-protected]"},
-        //{"\t     [-alias <alias>] -dest <dest_alias>",
-        //      "\t     [-alias <\u5225\u540d>] -dest <\u76ee\u6a19\u5225\u540d>"},
-        //{"\t     [-keypass <keypass>] [-new <new_keypass>]",
-        //      "\t     [-keypass <\u4e3b\u5bc6\u78bc>] [-new <\u65b0\u4e3b\u5bc6\u78bc>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-keypasswd   [-v] [-alias <alias>]",
-                "-keypasswd   [-v] [-alias <\u5225\u540d>]"},
-        {"\t     [-keypass <old_keypass>] [-new <new_keypass>]",
-                "\t     [-keypass <\u820a\u4e3b\u5bc6\u78bc>] [-new <\u65b0\u4e3b\u5bc6\u78bc>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-list        [-v | -rfc] [-protected]",
-                "-list        [-v | -rfc] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <\u5225\u540d>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-printcert   [-v] [-file <cert_file>]",
-                "-printcert   [-v] [-file <\u8a8d\u8b49\u6a94\u6848>]"},
-
-        //{"-selfcert    [-v] [-protected]",
-        //      "-selfcert    [-v] [-protected]"},
-        {"\t     [-alias <alias>]", "\t     [-alias <\u5225\u540d>]"},
-        //{"\t     [-dname <dname>] [-validity <valDays>]",
-        //      "\t     [-dname <\u7db2\u57df\u540d\u7a31>] [-validity <\u6709\u6548\u5929\u6578>]"},
-        //{"\t     [-keypass <keypass>] [-sigalg <sigalg>]",
-        //      "\t     [-keypass <\u4e3b\u5bc6\u78bc>] [-sigalg <\u7c3d\u7ae0\u6f14\u7b97\u6cd5>]"},
-        /** rest is same as -certreq starting from -keystore **/
-
-        {"-storepasswd [-v] [-new <new_storepass>]",
-                "-storepasswd [-v] [-new <\u65b0\u5132\u5b58\u5eab\u5bc6\u78bc>]"},
-        /** rest is same as -certreq starting from -keystore **/
+        {"Extensions.", "\u64F4\u5145\u5957\u4EF6: "},
+        {".Empty.value.", "(\u7A7A\u767D\u503C)"},
+        {"Extension.Request.", "\u64F4\u5145\u5957\u4EF6\u8981\u6C42:"},
+        {"PKCS.10.Certificate.Request.Version.1.0.Subject.s.Public.Key.s.format.s.key.",
+                "PKCS #10 \u6191\u8B49\u8981\u6C42 (\u7248\u672C 1.0)\n\u4E3B\u9AD4: %s\n\u516C\u7528\u91D1\u9470: %s \u683C\u5F0F %s \u91D1\u9470\n"},
+        {"Unknown.keyUsage.type.", "\u4E0D\u660E\u7684 keyUsage \u985E\u578B: "},
+        {"Unknown.extendedkeyUsage.type.", "\u4E0D\u660E\u7684 extendedkeyUsage \u985E\u578B: "},
+        {"Unknown.AccessDescription.type.", "\u4E0D\u660E\u7684 AccessDescription \u985E\u578B: "},
+        {"Unrecognized.GeneralName.type.", "\u7121\u6CD5\u8FA8\u8B58\u7684 GeneralName \u985E\u578B: "},
+        {"This.extension.cannot.be.marked.as.critical.",
+                 "\u6B64\u64F4\u5145\u5957\u4EF6\u7121\u6CD5\u6A19\u793A\u70BA\u95DC\u9375\u3002"},
+        {"Odd.number.of.hex.digits.found.", "\u627E\u5230\u5341\u516D\u9032\u4F4D\u6578\u5B57\u7684\u5947\u6578: "},
+        {"Unknown.extension.type.", "\u4E0D\u660E\u7684\u64F4\u5145\u5957\u4EF6\u985E\u578B: "},
+        {"command.{0}.is.ambiguous.", "\u547D\u4EE4 {0} \u4E0D\u660E\u78BA:"},
 
         // policytool
-        {"Warning: A public key for alias 'signers[i]' does not exist.  Make sure a KeyStore is properly configured.",
-                "\u8b66\u544a\ufe30\u5225\u540d {0} \u7684\u516c\u958b\u91d1\u9470\u4e0d\u5b58\u5728\u3002\u8acb\u78ba\u5b9a\u91d1\u9470\u5132\u5b58\u5eab\u914d\u7f6e\u6b63\u78ba\u3002"},
-        {"Warning: Class not found: class", "\u8b66\u544a\ufe30\u627e\u4e0d\u5230\u985e\u5225 {0}"},
-        {"Warning: Invalid argument(s) for constructor: arg",
-                "\u8b66\u544a\ufe30\u7121\u6548\u7684\u5efa\u69cb\u5b50\u5f15\u6578\uff1a{0}"},
-        {"Illegal Principal Type: type", "\u975e\u6cd5\u7684\u4e3b\u9ad4\u985e\u578b\ufe30{0}"},
-        {"Illegal option: option", "\u975e\u6cd5\u7684\u9078\u9805\uff1a{0}"},
-        {"Usage: policytool [options]", "\u7528\u6cd5\uff1a policytool [\u9078\u9805]"},
-        {"  [-file <file>]    policy file location",
-                "  [-file <file>]    \u898f\u5247\u6a94\u6848\u4f4d\u7f6e"},
-        {"New", "\u65b0\u589e"},
-        {"Open", "\u958b\u555f"},
-        {"Save", "\u5132\u5b58"},
-        {"Save As", "\u53e6\u5b58\u65b0\u6a94"},
-        {"View Warning Log", "\u6aa2\u8996\u8b66\u544a\u8a18\u9304"},
-        {"Exit", "\u96e2\u958b"},
-        {"Add Policy Entry", "\u65b0\u589e\u898f\u5247\u9805\u76ee"},
-        {"Edit Policy Entry", "\u7de8\u8f2f\u898f\u5247\u9805\u76ee"},
-        {"Remove Policy Entry", "\u79fb\u9664\u898f\u5247\u9805\u76ee"},
-        {"Edit", "\u7de8\u8f2f"},
-        {"Retain", "\u4fdd\u7559"},
+        {"Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured.",
+                "\u8B66\u544A: \u5225\u540D {0} \u7684\u516C\u958B\u91D1\u9470\u4E0D\u5B58\u5728\u3002\u8ACB\u78BA\u5B9A\u91D1\u9470\u5132\u5B58\u5EAB\u914D\u7F6E\u6B63\u78BA\u3002"},
+        {"Warning.Class.not.found.class", "\u8B66\u544A: \u627E\u4E0D\u5230\u985E\u5225 {0}"},
+        {"Warning.Invalid.argument.s.for.constructor.arg",
+                "\u8B66\u544A: \u7121\u6548\u7684\u5EFA\u69CB\u5B50\u5F15\u6578: {0}"},
+        {"Illegal.Principal.Type.type", "\u7121\u6548\u7684 Principal \u985E\u578B: {0}"},
+        {"Illegal.option.option", "\u7121\u6548\u7684\u9078\u9805: {0}"},
+        {"Usage.policytool.options.", "\u7528\u6CD5: policytool [options]"},
+        {".file.file.policy.file.location",
+                "  [-file <file>]    \u539F\u5247\u6A94\u6848\u4F4D\u7F6E"},
+        {"New", "\u65B0\u589E"},
+        {"Open", "\u958B\u555F"},
+        {"Save", "\u5132\u5B58"},
+        {"Save.As", "\u53E6\u5B58\u65B0\u6A94"},
+        {"View.Warning.Log", "\u6AA2\u8996\u8B66\u544A\u8A18\u9304"},
+        {"Exit", "\u7D50\u675F"},
+        {"Add.Policy.Entry", "\u65B0\u589E\u539F\u5247\u9805\u76EE"},
+        {"Edit.Policy.Entry", "\u7DE8\u8F2F\u539F\u5247\u9805\u76EE"},
+        {"Remove.Policy.Entry", "\u79FB\u9664\u539F\u5247\u9805\u76EE"},
+        {"Edit", "\u7DE8\u8F2F"},
+        {"Retain", "\u4FDD\u7559"},
 
-        {"Warning: File name may include escaped backslash characters. " +
-                        "It is not necessary to escape backslash characters " +
-                        "(the tool escapes characters as necessary when writing " +
-                        "the policy contents to the persistent store).\n\n" +
-                        "Click on Retain to retain the entered name, or click on " +
-                        "Edit to edit the name.",
-            "Warning: File name may include escaped backslash characters. " +
-                        "It is not necessary to escape backslash characters " +
-                        "(the tool escapes characters as necessary when writing " +
-                        "the policy contents to the persistent store).\n\n" +
-                        "Click on Retain to retain the entered name, or click on " +
-                        "Edit to edit the name."},
+        {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
+            "\u8B66\u544A: \u6A94\u6848\u540D\u7A31\u5305\u542B\u9041\u96E2\u53CD\u659C\u7DDA\u5B57\u5143\u3002\u4E0D\u9700\u8981\u9041\u96E2\u53CD\u659C\u7DDA\u5B57\u5143 (\u64B0\u5BEB\u539F\u5247\u5167\u5BB9\u81F3\u6C38\u4E45\u5B58\u653E\u5340\u6642\u9700\u8981\u5DE5\u5177\u9041\u96E2\u5B57\u5143)\u3002\n\n\u6309\u4E00\u4E0B\u300C\u4FDD\u7559\u300D\u4EE5\u4FDD\u7559\u8F38\u5165\u7684\u540D\u7A31\uFF0C\u6216\u6309\u4E00\u4E0B\u300C\u7DE8\u8F2F\u300D\u4EE5\u7DE8\u8F2F\u540D\u7A31\u3002"},
 
-        {"Add Public Key Alias", "\u65b0\u589e\u516c\u958b\u91d1\u9470\u5225\u540d"},
-        {"Remove Public Key Alias", "\u79fb\u9664\u516c\u958b\u91d1\u9470\u5225\u540d"},
-        {"File", "\u6a94\u6848"},
-        {"KeyStore", "\u91d1\u9470\u5132\u5b58\u5eab"},
-        {"Policy File:", "\u898f\u5247\u6a94\u6848\uff1a"},
-        {"Could not open policy file: policyFile: e.toString()",
-                "\u7121\u6cd5\u958b\u555f\u7b56\u7565\u6a94\u6848\uff1a{0}\uff1a{1}"},
-        {"Policy Tool", "\u898f\u5247\u5de5\u5177"},
-        {"Errors have occurred while opening the policy configuration.  View the Warning Log for more information.",
-                "\u958b\u555f\u898f\u5247\u8a18\u7f6e\u6642\u767c\u751f\u932f\u8aa4\u3002 \u8acb\u6aa2\u8996\u8b66\u544a\u8a18\u9304\u4ee5\u53d6\u5f97\u66f4\u591a\u7684\u8cc7\u8a0a"},
-        {"Error", "\u932f\u8aa4"},
-        {"OK", "\u78ba\u8a8d"},
-        {"Status", "\u72c0\u614b"},
-        {"Warning", "\u8b66\u544a"},
-        {"Permission:                                                       ",
-                "\u8a31\u53ef\uff1a                                                       "},
-        {"Principal Type:", "Principal \u985e\u578b\uff1a"},
-        {"Principal Name:", "Principal \u540d\u7a31\uff1a"},
-        {"Target Name:                                                    ",
-                "\u76ee\u6a19\u540d\u7a31\uff1a                                                    "},
-        {"Actions:                                                             ",
-                "\u52d5\u4f5c\uff1a                                                             "},
-        {"OK to overwrite existing file filename?",
-                "\u78ba\u8a8d\u8986\u5beb\u73fe\u5b58\u7684\u6a94\u6848 {0}\uff1f"},
-        {"Cancel", "\u53d6\u6d88"},
-        {"CodeBase:", "CodeBase:"},
-        {"SignedBy:", "SignedBy:"},
-        {"Add Principal", "\u65b0\u589e Principal"},
-        {"Edit Principal", "\u7de8\u8f2f Principal"},
-        {"Remove Principal", "\u79fb\u9664 Principal"},
-        {"Principals:", "Principals\uff1a"},
-        {"  Add Permission", "  \u65b0\u589e\u8a31\u53ef\u6b0a"},
-        {"  Edit Permission", "  \u7de8\u8f2f\u8a31\u53ef\u6b0a"},
-        {"Remove Permission", "\u79fb\u9664\u8a31\u53ef\u6b0a"},
-        {"Done", "\u5b8c\u6210"},
-        {"KeyStore URL:", "\u91d1\u9470\u5132\u5b58\u5eab URL\uff1a"},
-        {"KeyStore Type:", "\u91d1\u9470\u5132\u5b58\u5eab\u985e\u578b\ufe30"},
-        {"KeyStore Provider:", "\u91d1\u9470\u5132\u5b58\u5eab\u63d0\u4f9b\u8005\ufe30"},
-        {"KeyStore Password URL:", "\u91d1\u9470\u5132\u5b58\u5eab\u5bc6\u78bc URL\uff1a"},
-        {"Principals", "Principals"},
-        {"  Edit Principal:", "  \u7de8\u8f2f Principal\uff1a"},
-        {"  Add New Principal:", "  \u52a0\u5165\u65b0 Principal\uff1a"},
-        {"Permissions", "\u8a31\u53ef\u6b0a"},
-        {"  Edit Permission:", "  \u7de8\u8f2f\u8a31\u53ef\u6b0a"},
-        {"  Add New Permission:", "  \u52a0\u5165\u65b0\u7684\u8a31\u53ef\u6b0a"},
-        {"Signed By:", "\u7c3d\u7f72\u4eba\uff1a"},
-        {"Cannot Specify Principal with a Wildcard Class without a Wildcard Name",
-            "\u6c92\u6709\u901a\u914d\u7b26\u865f\u540d\u7a31\uff0c\u7121\u6cd5\u6307\u5b9a\u542b\u6709\u901a\u914d\u7b26\u865f\u985e\u5225\u7684 Principal"},
-        {"Cannot Specify Principal without a Name",
-            "\u6c92\u6709\u540d\u7a31\uff0c\u7121\u6cd5\u6307\u5b9a Principal"},
-        {"Permission and Target Name must have a value",
-                "\u8a31\u53ef\u6b0a\u53ca\u76ee\u6a19\u5fc5\u9808\u6709\u4e00\u500b\u503c\u3002"},
-        {"Remove this Policy Entry?", "\u79fb\u9664\u9019\u500b\u898f\u5247\u9805\u76ee\uff1f"},
-        {"Overwrite File", "\u8986\u5beb\u6a94\u6848"},
-        {"Policy successfully written to filename",
-                "\u898f\u5247\u6210\u529f\u5beb\u81f3 {0}"},
-        {"null filename", "\u7121\u6548\u7684\u6a94\u540d"},
-        {"Save changes?", "\u5132\u5b58\u8b8a\u66f4\uff1f"},
-        {"Yes", "\u662f"},
+        {"Add.Public.Key.Alias", "\u65B0\u589E\u516C\u958B\u91D1\u9470\u5225\u540D"},
+        {"Remove.Public.Key.Alias", "\u79FB\u9664\u516C\u958B\u91D1\u9470\u5225\u540D"},
+        {"File", "\u6A94\u6848"},
+        {"KeyStore", "\u91D1\u9470\u5132\u5B58\u5EAB"},
+        {"Policy.File.", "\u539F\u5247\u6A94\u6848: "},
+        {"Could.not.open.policy.file.policyFile.e.toString.",
+                "\u7121\u6CD5\u958B\u555F\u539F\u5247\u6A94\u6848: {0}: {1}"},
+        {"Policy.Tool", "\u539F\u5247\u5DE5\u5177"},
+        {"Errors.have.occurred.while.opening.the.policy.configuration.View.the.Warning.Log.for.more.information.",
+                "\u958B\u555F\u539F\u5247\u8A18\u7F6E\u6642\u767C\u751F\u932F\u8AA4\u3002\u8ACB\u6AA2\u8996\u8B66\u544A\u8A18\u9304\u4EE5\u53D6\u5F97\u66F4\u591A\u7684\u8CC7\u8A0A"},
+        {"Error", "\u932F\u8AA4"},
+        {"OK", "\u78BA\u5B9A"},
+        {"Status", "\u72C0\u614B"},
+        {"Warning", "\u8B66\u544A"},
+        {"Permission.",
+                "\u6B0A\u9650:                                                       "},
+        {"Principal.Type.", "Principal \u985E\u578B: "},
+        {"Principal.Name.", "Principal \u540D\u7A31: "},
+        {"Target.Name.",
+                "\u76EE\u6A19\u540D\u7A31:                                                    "},
+        {"Actions.",
+                "\u52D5\u4F5C:                                                             "},
+        {"OK.to.overwrite.existing.file.filename.",
+                "\u78BA\u8A8D\u8986\u5BEB\u73FE\u5B58\u7684\u6A94\u6848 {0}\uFF1F"},
+        {"Cancel", "\u53D6\u6D88"},
+        {"CodeBase.", "CodeBase:"},
+        {"SignedBy.", "SignedBy:"},
+        {"Add.Principal", "\u65B0\u589E Principal"},
+        {"Edit.Principal", "\u7DE8\u8F2F Principal"},
+        {"Remove.Principal", "\u79FB\u9664 Principal"},
+        {"Principals.", "Principal:"},
+        {".Add.Permission", "  \u65B0\u589E\u6B0A\u9650"},
+        {".Edit.Permission", "  \u7DE8\u8F2F\u6B0A\u9650"},
+        {"Remove.Permission", "\u79FB\u9664\u6B0A\u9650"},
+        {"Done", "\u5B8C\u6210"},
+        {"KeyStore.URL.", "\u91D1\u9470\u5132\u5B58\u5EAB URL: "},
+        {"KeyStore.Type.", "\u91D1\u9470\u5132\u5B58\u5EAB\u985E\u578B:"},
+        {"KeyStore.Provider.", "\u91D1\u9470\u5132\u5B58\u5EAB\u63D0\u4F9B\u8005:"},
+        {"KeyStore.Password.URL.", "\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC URL: "},
+        {"Principals", "Principal"},
+        {".Edit.Principal.", "  \u7DE8\u8F2F Principal: "},
+        {".Add.New.Principal.", "  \u65B0\u589E Principal: "},
+        {"Permissions", "\u6B0A\u9650"},
+        {".Edit.Permission.", "  \u7DE8\u8F2F\u6B0A\u9650:"},
+        {".Add.New.Permission.", "  \u65B0\u589E\u6B0A\u9650:"},
+        {"Signed.By.", "\u7C3D\u7F72\u4EBA: "},
+        {"Cannot.Specify.Principal.with.a.Wildcard.Class.without.a.Wildcard.Name",
+            "\u6C92\u6709\u842C\u7528\u5B57\u5143\u540D\u7A31\uFF0C\u7121\u6CD5\u6307\u5B9A\u542B\u6709\u842C\u7528\u5B57\u5143\u985E\u5225\u7684 Principal"},
+        {"Cannot.Specify.Principal.without.a.Name",
+            "\u6C92\u6709\u540D\u7A31\uFF0C\u7121\u6CD5\u6307\u5B9A Principal"},
+        {"Permission.and.Target.Name.must.have.a.value",
+                "\u6B0A\u9650\u53CA\u76EE\u6A19\u540D\u7A31\u5FC5\u9808\u6709\u4E00\u500B\u503C\u3002"},
+        {"Remove.this.Policy.Entry.", "\u79FB\u9664\u9019\u500B\u539F\u5247\u9805\u76EE\uFF1F"},
+        {"Overwrite.File", "\u8986\u5BEB\u6A94\u6848"},
+        {"Policy.successfully.written.to.filename",
+                "\u539F\u5247\u6210\u529F\u5BEB\u5165\u81F3 {0}"},
+        {"null.filename", "\u7A7A\u503C\u6A94\u540D"},
+        {"Save.changes.", "\u5132\u5B58\u8B8A\u66F4\uFF1F"},
+        {"Yes", "\u662F"},
         {"No", "\u5426"},
-        {"Policy Entry", "\u898f\u5247\u9805\u76ee"},
-        {"Save Changes", "\u5132\u5b58\u8b8a\u66f4"},
-        {"No Policy Entry selected", "\u6c92\u6709\u9078\u53d6\u898f\u5247\u9805\u76ee"},
-        {"Unable to open KeyStore: ex.toString()",
-                "\u7121\u6cd5\u958b\u555f\u91d1\u9470\u5132\u5b58\u5eab\uff1a{0}"},
-        {"No principal selected", "\u672a\u9078\u53d6 Principal"},
-        {"No permission selected", "\u6c92\u6709\u9078\u53d6\u8a31\u53ef\u6b0a"},
-        {"name", "\u540d\u7a31"},
-        {"configuration type", "\u914d\u7f6e\u985e\u578b"},
-        {"environment variable name", "\u74b0\u5883\u8b8a\u6578\u540d\u7a31"},
-        {"library name", "\u7a0b\u5f0f\u5eab\u540d\u7a31"},
-        {"package name", "\u5957\u88dd\u8edf\u9ad4\u540d\u7a31"},
-        {"policy type", "\u7b56\u7565\u985e\u578b"},
-        {"property name", "\u5c6c\u6027\u540d\u7a31"},
-        {"provider name", "\u63d0\u4f9b\u8005\u540d\u7a31"},
-        {"Principal List", "\u4e3b\u9ad4\u6e05\u55ae"},
-        {"Permission List", "\u6b0a\u9650\u6e05\u55ae"},
-        {"Code Base", "\u4ee3\u78bc\u57fa\u6e96"},
-        {"KeyStore U R L:", "\u91d1\u9470\u5132\u5b58\u5eab U R L\uff1a"},
-        {"KeyStore Password U R L:", "\u91d1\u9470\u5132\u5b58\u5eab\u5bc6\u78bc U R L\uff1a"},
+        {"Policy.Entry", "\u539F\u5247\u9805\u76EE"},
+        {"Save.Changes", "\u5132\u5B58\u8B8A\u66F4"},
+        {"No.Policy.Entry.selected", "\u6C92\u6709\u9078\u53D6\u539F\u5247\u9805\u76EE"},
+        {"Unable.to.open.KeyStore.ex.toString.",
+                "\u7121\u6CD5\u958B\u555F\u91D1\u9470\u5132\u5B58\u5EAB: {0}"},
+        {"No.principal.selected", "\u672A\u9078\u53D6 Principal"},
+        {"No.permission.selected", "\u6C92\u6709\u9078\u53D6\u6B0A\u9650"},
+        {"name", "\u540D\u7A31"},
+        {"configuration.type", "\u7D44\u614B\u985E\u578B"},
+        {"environment.variable.name", "\u74B0\u5883\u8B8A\u6578\u540D\u7A31"},
+        {"library.name", "\u7A0B\u5F0F\u5EAB\u540D\u7A31"},
+        {"package.name", "\u5957\u88DD\u7A0B\u5F0F\u540D\u7A31"},
+        {"policy.type", "\u539F\u5247\u985E\u578B"},
+        {"property.name", "\u5C6C\u6027\u540D\u7A31"},
+        {"Principal.List", "Principal \u6E05\u55AE"},
+        {"Permission.List", "\u6B0A\u9650\u6E05\u55AE"},
+        {"Code.Base", "\u4EE3\u78BC\u57FA\u6E96"},
+        {"KeyStore.U.R.L.", "\u91D1\u9470\u5132\u5B58\u5EAB URL:"},
+        {"KeyStore.Password.U.R.L.", "\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC URL:"},
 
 
         // javax.security.auth.PrivateCredentialPermission
-        {"invalid null input(s)", "\u7121\u6548\u7a7a\u8f38\u5165"},
-        {"actions can only be 'read'", "\u52d5\u4f5c\u53ea\u80fd\u88ab\u8b80\u53d6'"},
-        {"permission name [name] syntax invalid: ",
-                "\u8a31\u53ef\u6b0a\u540d\u7a31 [{0}] \u662f\u7121\u6548\u7684\u8a9e\u6cd5\uff1a "},
-        {"Credential Class not followed by a Principal Class and Name",
-                "\u8a8d\u8b49\u7b49\u7d1a\u672a\u63a5\u5728 Principal \u985e\u5225\u53ca\u540d\u7a31\u4e4b\u5f8c"},
-        {"Principal Class not followed by a Principal Name",
-                "Principal \u985e\u5225\u672a\u63a5\u5728 Principal \u540d\u7a31\u4e4b\u5f8c"},
-        {"Principal Name must be surrounded by quotes",
-                "Principal \u540d\u7a31\u5fc5\u9808\u4ee5\u5f15\u865f\u5708\u4f4f"},
-        {"Principal Name missing end quote",
-                "Principal \u540d\u7a31\u7f3a\u5c11\u4e0b\u5f15\u865f"},
-        {"PrivateCredentialPermission Principal Class can not be a wildcard (*) value if Principal Name is not a wildcard (*) value",
-                "\u5982\u679c Principal \u540d\u7a31\u4e0d\u662f\u4e00\u500b\u901a\u914d\u7b26\u865f (*) \u503c\uff0c\u90a3\u9ebc PrivateCredentialPermission Principal \u985e\u5225\u5c31\u4e0d\u6703\u662f\u4e00\u500b\u901a\u914d\u7b26\u865f (*) \u503c"},
-        {"CredOwner:\n\tPrincipal Class = class\n\tPrincipal Name = name",
-                "CredOwner:\n\tPrincipal \u985e\u5225 = {0}\n\tPrincipal \u540d\u7a31 = {1}"},
+        {"invalid.null.input.s.", "\u7121\u6548\u7A7A\u503C\u8F38\u5165"},
+        {"actions.can.only.be.read.", "\u52D5\u4F5C\u53EA\u80FD\u88AB\u300C\u8B80\u53D6\u300D"},
+        {"permission.name.name.syntax.invalid.",
+                "\u6B0A\u9650\u540D\u7A31 [{0}] \u662F\u7121\u6548\u7684\u8A9E\u6CD5: "},
+        {"Credential.Class.not.followed.by.a.Principal.Class.and.Name",
+                "Credential \u985E\u5225\u5F8C\u9762\u4E0D\u662F Principal \u985E\u5225\u53CA\u540D\u7A31"},
+        {"Principal.Class.not.followed.by.a.Principal.Name",
+                "Principal \u985E\u5225\u5F8C\u9762\u4E0D\u662F Principal \u540D\u7A31"},
+        {"Principal.Name.must.be.surrounded.by.quotes",
+                "Principal \u540D\u7A31\u5FC5\u9808\u4EE5\u5F15\u865F\u5708\u4F4F"},
+        {"Principal.Name.missing.end.quote",
+                "Principal \u540D\u7A31\u7F3A\u5C11\u4E0B\u5F15\u865F"},
+        {"PrivateCredentialPermission.Principal.Class.can.not.be.a.wildcard.value.if.Principal.Name.is.not.a.wildcard.value",
+                "\u5982\u679C Principal \u540D\u7A31\u4E0D\u662F\u4E00\u500B\u842C\u7528\u5B57\u5143 (*) \u503C\uFF0C\u90A3\u9EBC PrivateCredentialPermission Principal \u985E\u5225\u5C31\u4E0D\u80FD\u662F\u842C\u7528\u5B57\u5143 (*) \u503C"},
+        {"CredOwner.Principal.Class.class.Principal.Name.name",
+                "CredOwner:\n\tPrincipal \u985E\u5225 = {0}\n\tPrincipal \u540D\u7A31 = {1}"},
 
         // javax.security.auth.x500
-        {"provided null name", "\u63d0\u4f9b\u7a7a\u540d"},
-        {"provided null keyword map", "\u63d0\u4f9b\u7a7a\u7684\u95dc\u9375\u5b57\u5c0d\u6620"},
-        {"provided null OID map", "\u63d0\u4f9b\u7a7a\u7684 OID \u5c0d\u6620"},
+        {"provided.null.name", "\u63D0\u4F9B\u7A7A\u503C\u540D\u7A31"},
+        {"provided.null.keyword.map", "\u63D0\u4F9B\u7A7A\u503C\u95DC\u9375\u5B57\u5C0D\u6620"},
+        {"provided.null.OID.map", "\u63D0\u4F9B\u7A7A\u503C OID \u5C0D\u6620"},
 
         // javax.security.auth.Subject
-        {"invalid null AccessControlContext provided",
-                "\u63d0\u4f9b\u7121\u6548\u7684\u7a7a AccessControlContext"},
-        {"invalid null action provided", "\u63d0\u4f9b\u7121\u6548\u7684\u7a7a\u52d5\u4f5c"},
-        {"invalid null Class provided", "\u63d0\u4f9b\u7121\u6548\u7684\u7a7a\u985e\u5225"},
-        {"Subject:\n", "\u4e3b\u984c\uff1a\n"},
-        {"\tPrincipal: ", "\tPrincipal: "},
-        {"\tPublic Credential: ", "\t\u516c\u7528\u8a8d\u8b49 "},
-        {"\tPrivate Credentials inaccessible\n",
-                "\t\u79c1\u4eba\u8a8d\u8b49\u7121\u6cd5\u9032\u5165\n"},
-        {"\tPrivate Credential: ", "\t\u79c1\u4eba\u6388\u6b0a "},
-        {"\tPrivate Credential inaccessible\n",
-                "\t\u79c1\u4eba\u8a8d\u8b49\u7121\u6cd5\u9032\u5165\n"},
-        {"Subject is read-only", "\u4e3b\u984c\u70ba\u552f\u8b80"},
-        {"attempting to add an object which is not an instance of java.security.Principal to a Subject's Principal Set",
-                "\u8a66\u5716\u65b0\u589e\u4e00\u500b\u975e java.security.Principal \u6848\u4f8b\u7684\u7269\u4ef6\u81f3\u4e3b\u984c\u7684 Principal \u7fa4\u4e2d"},
-        {"attempting to add an object which is not an instance of class",
-                "\u8a66\u5716\u65b0\u589e\u4e00\u500b\u975e {0} \u6848\u4f8b\u7684\u7269\u4ef6"},
+        {"invalid.null.AccessControlContext.provided",
+                "\u63D0\u4F9B\u7121\u6548\u7684\u7A7A\u503C AccessControlContext"},
+        {"invalid.null.action.provided", "\u63D0\u4F9B\u7121\u6548\u7684\u7A7A\u503C\u52D5\u4F5C"},
+        {"invalid.null.Class.provided", "\u63D0\u4F9B\u7121\u6548\u7684\u7A7A\u503C\u985E\u5225"},
+        {"Subject.", "\u4E3B\u984C:\n"},
+        {".Principal.", "\tPrincipal: "},
+        {".Public.Credential.", "\t\u516C\u7528\u8B49\u660E\u8CC7\u6599: "},
+        {".Private.Credentials.inaccessible.",
+                "\t\u79C1\u4EBA\u8B49\u660E\u8CC7\u6599\u7121\u6CD5\u5B58\u53D6\n"},
+        {".Private.Credential.", "\t\u79C1\u4EBA\u8B49\u660E\u8CC7\u6599: "},
+        {".Private.Credential.inaccessible.",
+                "\t\u79C1\u4EBA\u8B49\u660E\u8CC7\u6599\u7121\u6CD5\u5B58\u53D6\n"},
+        {"Subject.is.read.only", "\u4E3B\u984C\u70BA\u552F\u8B80"},
+        {"attempting.to.add.an.object.which.is.not.an.instance.of.java.security.Principal.to.a.Subject.s.Principal.Set",
+                "\u8A66\u5716\u65B0\u589E\u4E00\u500B\u975E java.security.Principal \u57F7\u884C\u8655\u7406\u7684\u7269\u4EF6\u81F3\u4E3B\u984C\u7684 Principal \u7FA4\u4E2D"},
+        {"attempting.to.add.an.object.which.is.not.an.instance.of.class",
+                "\u8A66\u5716\u65B0\u589E\u4E00\u500B\u975E {0} \u57F7\u884C\u8655\u7406\u7684\u7269\u4EF6"},
 
         // javax.security.auth.login.AppConfigurationEntry
-        {"LoginModuleControlFlag: ", "LoginModuleControlFlag: "},
+        {"LoginModuleControlFlag.", "LoginModuleControlFlag: "},
 
         // javax.security.auth.login.LoginContext
-        {"Invalid null input: name", "\u7121\u6548\u7a7a\u8f38\u5165\uff1a \u540d\u7a31"},
-        {"No LoginModules configured for name",
-         "\u7121\u91dd\u5c0d {0} \u914d\u7f6e\u7684 LoginModules"},
-        {"invalid null Subject provided", "\u63d0\u4f9b\u7121\u6548\u7a7a\u4e3b\u984c"},
-        {"invalid null CallbackHandler provided",
-                "\u63d0\u4f9b\u7121\u6548\u7a7a CallbackHandler"},
-        {"null subject - logout called before login",
-                "\u7a7a\u4e3b\u984c - \u5728\u767b\u5165\u4e4b\u524d\u5373\u547c\u53eb\u767b\u51fa"},
-        {"unable to instantiate LoginModule, module, because it does not provide a no-argument constructor",
-                "\u7121\u6cd5\u5be6\u5217\u5316 LoginModule\uff0c{0}\uff0c\u56e0\u70ba\u5b83\u4e26\u672a\u63d0\u4f9b\u4e00\u500b\u975e\u5f15\u6578\u7684\u69cb\u9020\u51fd\u6578"},
-        {"unable to instantiate LoginModule",
-                "\u7121\u6cd5\u5be6\u4f8b\u5316 LoginModule"},
-        {"unable to instantiate LoginModule: ",
-                "\u7121\u6cd5\u5275\u8a2d LoginModule\uff1a"},
-        {"unable to find LoginModule class: ",
-                "\u7121\u6cd5\u627e\u5230 LoginModule \u985e\u5225\uff1a "},
-        {"unable to access LoginModule: ",
-                "\u7121\u6cd5\u5b58\u53d6 LoginModule: "},
-        {"Login Failure: all modules ignored",
-                "\u767b\u5165\u5931\u6557\uff1a \u5ffd\u7565\u6240\u6709\u6a21\u7d44"},
+        {"Invalid.null.input.name", "\u7121\u6548\u7A7A\u503C\u8F38\u5165: \u540D\u7A31"},
+        {"No.LoginModules.configured.for.name",
+         "\u7121\u91DD\u5C0D {0} \u914D\u7F6E\u7684 LoginModules"},
+        {"invalid.null.Subject.provided", "\u63D0\u4F9B\u7121\u6548\u7A7A\u503C\u4E3B\u984C"},
+        {"invalid.null.CallbackHandler.provided",
+                "\u63D0\u4F9B\u7121\u6548\u7A7A\u503C CallbackHandler"},
+        {"null.subject.logout.called.before.login",
+                "\u7A7A\u503C\u4E3B\u984C - \u5728\u767B\u5165\u4E4B\u524D\u5373\u547C\u53EB\u767B\u51FA"},
+        {"unable.to.instantiate.LoginModule.module.because.it.does.not.provide.a.no.argument.constructor",
+                "\u7121\u6CD5\u5275\u8A2D LoginModule\uFF0C{0}\uFF0C\u56E0\u70BA\u5B83\u4E26\u672A\u63D0\u4F9B\u975E\u5F15\u6578\u7684\u5EFA\u69CB\u5B50"},
+        {"unable.to.instantiate.LoginModule",
+                "\u7121\u6CD5\u5EFA\u7ACB LoginModule"},
+        {"unable.to.instantiate.LoginModule.",
+                "\u7121\u6CD5\u5EFA\u7ACB LoginModule: "},
+        {"unable.to.find.LoginModule.class.",
+                "\u627E\u4E0D\u5230 LoginModule \u985E\u5225: "},
+        {"unable.to.access.LoginModule.",
+                "\u7121\u6CD5\u5B58\u53D6 LoginModule: "},
+        {"Login.Failure.all.modules.ignored",
+                "\u767B\u5165\u5931\u6557: \u5FFD\u7565\u6240\u6709\u6A21\u7D44"},
 
         // sun.security.provider.PolicyFile
 
-        {"java.security.policy: error parsing policy:\n\tmessage",
-                "java.security.policy: \u89e3\u6790\u932f\u8aa4 {0}\uff1a\n\t{1}"},
-        {"java.security.policy: error adding Permission, perm:\n\tmessage",
-                "java.security.policy: \u65b0\u589e\u8a31\u53ef\u6b0a\u932f\u8aa4 {0}\uff1a\n\t{1}"},
-        {"java.security.policy: error adding Entry:\n\tmessage",
-                "java.security.policy: \u65b0\u589e\u9805\u76ee\u932f\u8aa4\uff1a\n\t{0}"},
-        {"alias name not provided (pe.name)", "\u5225\u540d\u540d\u7a31 ({0}) \u672a\u63d0\u4f9b"},
-        {"unable to perform substitution on alias, suffix",
-                "\u7121\u6cd5\u5c0d\u5225\u540d\u57f7\u884c\u66ff\u63db\uff0c{0}"},
-        {"substitution value, prefix, unsupported",
-                "\u4e0d\u652f\u63f4\u7684\u66ff\u63db\u503c\uff0c{0}"},
-        {"(", "("},
-        {")", ")"},
-        {"type can't be null","\u4e0d\u80fd\u70ba\u7a7a\u8f38\u5165"},
+        {"java.security.policy.error.parsing.policy.message",
+                "java.security.policy: \u5256\u6790\u932F\u8AA4 {0}: \n\t{1}"},
+        {"java.security.policy.error.adding.Permission.perm.message",
+                "java.security.policy: \u65B0\u589E\u6B0A\u9650\u932F\u8AA4 {0}: \n\t{1}"},
+        {"java.security.policy.error.adding.Entry.message",
+                "java.security.policy: \u65B0\u589E\u9805\u76EE\u932F\u8AA4: \n\t{0}"},
+        {"alias.name.not.provided.pe.name.", "\u672A\u63D0\u4F9B\u5225\u540D\u540D\u7A31 ({0})"},
+        {"unable.to.perform.substitution.on.alias.suffix",
+                "\u7121\u6CD5\u5C0D\u5225\u540D\u57F7\u884C\u66FF\u63DB\uFF0C{0}"},
+        {"substitution.value.prefix.unsupported",
+                "\u4E0D\u652F\u63F4\u7684\u66FF\u63DB\u503C\uFF0C{0}"},
+        {"LPARAM", "("},
+        {"RPARAM", ")"},
+        {"type.can.t.be.null","\u8F38\u5165\u4E0D\u80FD\u70BA\u7A7A\u503C"},
 
         // sun.security.provider.PolicyParser
-        {"keystorePasswordURL can not be specified without also specifying keystore",
-                "\u6307\u5b9a keystorePasswordURL \u9700\u8981\u540c\u6642\u6307\u5b9a keystore"},
-        {"expected keystore type", "\u9810\u671f\u7684 keystore \u985e\u578b"},
-        {"expected keystore provider", "\u9810\u671f\u7684 keystore \u63d0\u4f9b\u8005"},
-        {"multiple Codebase expressions",
-                "\u591a\u52d5 Codebase \u8868\u793a\u5f0f"},
-        {"multiple SignedBy expressions","\u591a\u91cd SignedBy \u8868\u793a\u5f0f"},
-        {"SignedBy has empty alias","SignedBy \u6709\u7a7a\u5225\u540d"},
-        {"can not specify Principal with a wildcard class without a wildcard name",
-                "\u6c92\u6709\u901a\u914d\u7b26\u865f\u540d\u7a31\uff0c\u7121\u6cd5\u6307\u5b9a\u542b\u6709\u901a\u914d\u7b26\u865f\u985e\u5225\u7684 Principal"},
-        {"expected codeBase or SignedBy or Principal",
-                "\u9810\u671f\u7684 codeBase \u6216 SignedBy \u6216 Principal"},
-        {"expected permission entry", "\u9810\u671f\u7684\u8a31\u53ef\u6b0a\u9805\u76ee"},
-        {"number ", "\u865f\u78bc "},
-        {"expected [expect], read [end of file]",
-                "\u9810\u671f\u7684 [{0}], \u8b80\u53d6 [end of file]"},
-        {"expected [;], read [end of file]",
-                "\u9810\u671f\u7684 [;], \u8b80\u53d6 [end of file]"},
-        {"line number: msg", "\u884c {0}\uff1a {1}"},
-        {"line number: expected [expect], found [actual]",
-                "\u884c {0}\uff1a \u9810\u671f\u7684 [{1}]\uff0c\u767c\u73fe [{2}]"},
-        {"null principalClass or principalName",
-                "\u7a7a principalClass \u6216 principalName"},
+        {"keystorePasswordURL.can.not.be.specified.without.also.specifying.keystore",
+                "\u6307\u5B9A keystorePasswordURL \u9700\u8981\u540C\u6642\u6307\u5B9A\u91D1\u9470\u5132\u5B58\u5EAB"},
+        {"expected.keystore.type", "\u9810\u671F\u7684\u91D1\u9470\u5132\u5B58\u5EAB\u985E\u578B"},
+        {"expected.keystore.provider", "\u9810\u671F\u7684\u91D1\u9470\u5132\u5B58\u5EAB\u63D0\u4F9B\u8005"},
+        {"multiple.Codebase.expressions",
+                "\u591A\u91CD Codebase \u8868\u793A\u5F0F"},
+        {"multiple.SignedBy.expressions","\u591A\u91CD SignedBy \u8868\u793A\u5F0F"},
+        {"SignedBy.has.empty.alias","SignedBy \u6709\u7A7A\u5225\u540D"},
+        {"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name",
+                "\u6C92\u6709\u842C\u7528\u5B57\u5143\u540D\u7A31\uFF0C\u7121\u6CD5\u6307\u5B9A\u542B\u6709\u842C\u7528\u5B57\u5143\u985E\u5225\u7684 Principal"},
+        {"expected.codeBase.or.SignedBy.or.Principal",
+                "\u9810\u671F\u7684 codeBase \u6216 SignedBy \u6216 Principal"},
+        {"expected.permission.entry", "\u9810\u671F\u7684\u6B0A\u9650\u9805\u76EE"},
+        {"number.", "\u865F\u78BC "},
+        {"expected.expect.read.end.of.file.",
+                "\u9810\u671F\u7684 [{0}], \u8B80\u53D6 [end of file]"},
+        {"expected.read.end.of.file.",
+                "\u9810\u671F\u7684 [;], \u8B80\u53D6 [end of file]"},
+        {"line.number.msg", "\u884C {0}: {1}"},
+        {"line.number.expected.expect.found.actual.",
+                "\u884C {0}: \u9810\u671F\u7684 [{1}]\uFF0C\u767C\u73FE [{2}]"},
+        {"null.principalClass.or.principalName",
+                "\u7A7A\u503C principalClass \u6216 principalName"},
 
         // sun.security.pkcs11.SunPKCS11
-        {"PKCS11 Token [providerName] Password: ",
-                "PKCS11 \u8a18\u865f [{0}] \u5bc6\u78bc\uff1a "},
+        {"PKCS11.Token.providerName.Password.",
+                "PKCS11 \u8A18\u865F [{0}] \u5BC6\u78BC: "},
 
         /* --- DEPRECATED --- */
         // javax.security.auth.Policy
-        {"unable to instantiate Subject-based policy",
-                "\u7121\u6cd5\u5275\u8a2d\u57fa\u65bc\u4e3b\u9ad4\u7684\u7b56\u7565"}
+        {"unable.to.instantiate.Subject.based.policy",
+                "\u7121\u6CD5\u5EFA\u7ACB\u4E3B\u984C\u5F0F\u7684\u539F\u5247"}
     };
 
 
@@ -648,3 +670,4 @@
         return contents;
     }
 }
+
--- a/jdk/src/share/classes/sun/security/validator/SimpleValidator.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/security/validator/SimpleValidator.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -156,8 +156,8 @@
 
             // check certificate algorithm
             try {
-                // Algorithm checker don't care about the unresolved critical
-                // extensions.
+                // Algorithm checker does not care about the unresolved
+                // critical extensions.
                 defaultAlgChecker.check(cert, Collections.<String>emptySet());
                 if (appAlgChecker != null) {
                     appAlgChecker.check(cert, Collections.<String>emptySet());
--- a/jdk/src/share/classes/sun/swing/AccumulativeRunnable.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/swing/AccumulativeRunnable.java	Wed Jul 05 17:35:13 2017 +0200
@@ -120,6 +120,7 @@
      * {@code Runnable} for execution.
      * @param args the arguments to accumulate
      */
+    @SafeVarargs
     public final synchronized void add(T... args) {
         boolean isSubmitted = true;
         if (arguments == null) {
--- a/jdk/src/share/classes/sun/swing/WindowsPlacesBar.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/swing/WindowsPlacesBar.java	Wed Jul 05 17:35:13 2017 +0200
@@ -120,6 +120,7 @@
                 buttons[i].setForeground(fgColor);
             }
             buttons[i].setMargin(new Insets(3, 2, 1, 2));
+            buttons[i].setFocusPainted(false);
             buttons[i].setIconTextGap(0);
             buttons[i].setHorizontalTextPosition(JToggleButton.CENTER);
             buttons[i].setVerticalTextPosition(JToggleButton.BOTTOM);
--- a/jdk/src/share/classes/sun/tools/attach/HotSpotAttachProvider.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/tools/attach/HotSpotAttachProvider.java	Wed Jul 05 17:35:13 2017 +0200
@@ -138,7 +138,6 @@
      */
     void testAttachable(String id) throws AttachNotSupportedException {
         MonitoredVm mvm = null;
-        boolean isKernelVM = false;
         try {
             VmIdentifier vmid = new VmIdentifier(id);
             MonitoredHost host = MonitoredHost.getMonitoredHost(vmid);
@@ -148,7 +147,6 @@
                 // it's attachable; so return false
                 return;
             }
-            isKernelVM = MonitoredVmUtil.isKernelVM(mvm);
         } catch (Throwable t) {
             if (t instanceof ThreadDeath) {
                 ThreadDeath td = (ThreadDeath)t;
@@ -163,11 +161,8 @@
         }
 
         // we're sure it's not attachable; throw exception
-        if (isKernelVM) {
-            throw new AttachNotSupportedException("Kernel VM does not support the attach mechanism");
-        } else {
-            throw new AttachNotSupportedException("The VM does not support the attach mechanism");
-        }
+        throw new AttachNotSupportedException(
+                  "The VM does not support the attach mechanism");
     }
 
 
--- a/jdk/src/share/classes/sun/tools/jar/Main.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/tools/jar/Main.java	Wed Jul 05 17:35:13 2017 +0200
@@ -27,6 +27,7 @@
 
 import java.io.*;
 import java.nio.file.Path;
+import java.nio.file.Files;
 import java.util.*;
 import java.util.zip.*;
 import java.util.jar.*;
@@ -1017,17 +1018,17 @@
         Path jarPath = jarFile.toPath();
         Path tmpPath = createTempFileInSameDirectoryAs(jarFile).toPath();
         try {
-            if (update(jarPath.newInputStream(),
-                       tmpPath.newOutputStream(),
+            if (update(Files.newInputStream(jarPath),
+                       Files.newOutputStream(tmpPath),
                        null, index)) {
                 try {
-                    tmpPath.moveTo(jarPath, REPLACE_EXISTING);
+                    Files.move(tmpPath, jarPath, REPLACE_EXISTING);
                 } catch (IOException e) {
                     throw new IOException(getMsg("error.write.file"), e);
                 }
             }
         } finally {
-            tmpPath.deleteIfExists();
+            Files.deleteIfExists(tmpPath);
         }
     }
 
--- a/jdk/src/share/classes/sun/tools/jar/resources/jar_de.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_de.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2006, 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
@@ -23,69 +23,25 @@
 # questions.
 #
 
-error.cant.open=\
-     \u00d6ffnen nicht m\u00f6glich: {0} 
-error.illegal.option=\
-        Unzul\u00e4ssige Option: {0}
-error.bad.option=\
-        Eine der Optionen -{ctxu} muss angegeben werden.
-error.bad.cflag=\
-        Flag 'c' erfordert Angabe von Manifest oder Eingabedateien!
-error.bad.uflag=\
-        Flag 'u' erfordert Angabe von Manifest, Flag 'e' oder Eingabedateien!
-error.bad.eflag=\
-	Flag 'e' und Manifest mit dem Attribut 'Main-Class' k\u00f6nnen nicht zusammen angegeben\n\
-	 werden.
-error.nosuch.fileordir=\
-        {0} : Datei oder Verzeichnis existiert nicht.
-error.write.file=\
-        Fehler beim Schreiben in vorhandener JAR-Datei.
-error.create.dir=\
-        {0} : Verzeichnis konnte nicht erstellt werden.
-error.incorrect.length=\
-        Falsche L\u00e4nge bei der Verarbeitung von: {0}
-out.added.manifest=\
-        Manifest wurde hinzugef\u00fcgt.
-out.update.manifest=\
-        Manifest wurde aktualisiert.
-out.ignore.entry=\
-        Eintrag {0} wird ignoriert.
-out.adding=\
-        Hinzuf\u00fcgen von: {0}
-out.deflated=\
-        \ \(komprimiert {0} %)
-out.stored=\
-        \ \(gespeichert 0 %)
-out.create=\
-        \ \ \ \ \ erstellt: {0}
-out.extracted=\
-        \ \ \ extrahiert: {0}
-out.inflated=\
-        dekomprimiert: {0}
-out.size=\
-        \ \(ein = {0}) (aus = {1})
+error.cant.open=\u00D6ffnen nicht m\u00F6glich: {0} 
+error.illegal.option=Ung\u00FCltige Option: {0}
+error.bad.option=Eine der Optionen -{ctxu} muss angegeben werden.
+error.bad.cflag=Kennzeichen "c" erfordert Angabe von Manifest oder Eingabedateien.
+error.bad.uflag=Kennzeichen "u" erfordert Angabe von Manifest, Kennzeichen "e" oder Eingabedateien.
+error.bad.eflag=Kennzeichen "e" und Manifest mit dem Attribut "Main-Class" k\u00F6nnen nicht zusammen angegeben\nwerden.
+error.nosuch.fileordir={0}: Datei oder Verzeichnis nicht vorhanden
+error.write.file=Fehler beim Schreiben in vorhandener JAR-Datei
+error.create.dir={0}: Verzeichnis konnte nicht erstellt werden
+error.incorrect.length=Falsche L\u00E4nge bei der Verarbeitung: {0}
+out.added.manifest=Manifest wurde hinzugef\u00FCgt
+out.update.manifest=Manifest wurde aktualisiert
+out.ignore.entry=Eintrag {0} wird ignoriert
+out.adding={0} wird hinzugef\u00FCgt
+out.deflated=({0} % verkleinert)
+out.stored=(0 % gespeichert)
+out.create=\ \ erstellt: {0}
+out.extracted=extrahiert: {0}
+out.inflated=\ \\vergr\u00F6\u00DFert: {0}
+out.size=(ein = {0}) (aus = {1})
 
-usage=\
-Syntax: jar {ctxui}[vfm0Me] [jar-Datei] [Manifest-Datei] [Einstiegspunkt] [-C Verzeichnis] Dateien ...\n\
-Optionen:\n\
-\ \   -c  Neues Archiv erstellen\n\
-\ \   -t  Inhaltsverzeichnis f\u00fcr Archiv auflisten\n\
-\ \   -x  Genannte (oder alle) Dateien aus Archiv extrahieren\n\
-\ \   -u  Vorhandenes Archiv aktualisieren\n\
-\ \   -v  Ausf\u00fchrliche Ausgabe f\u00fcr Standardausgabe erzeugen\n\
-\ \   -f  Namen der Archivdatei angeben\n\
-\ \   -m  Manifest-Information von angegebener Manifest-Datei einschlie\u00dfen\n\
-\ \   -e  Geben Sie einen Anwendungs-Einstiegspunkt f\u00fcr die \n\
-\ \       in einer ausf\u00fchrbaren jar-Datei geb\u00fcndelte eigenst\u00e4ndige Anwendung an.\n\
-\ \   -0  Nur speichern (keine ZIP-Komprimierung)\n\
-\ \   -M  Keine Manifest-Datei f\u00fcr die Eintr\u00e4ge erstellen\n\
-\ \   -i  Index-Information f\u00fcr angegebene jar-Dateien erstellen\n\
-\ \   -C  Zum angegebenen Verzeichnis wechseln und folgende Datei einschlie\u00dfen\n\
-Falls eine Datei ein Verzeichnis ist, wird es rekursiv verarbeitet.\n\
-Der Name der Manifest-Datei, der Name der Archivdatei und der Name des Einstiegspunkts werden \n\
-in derselben Reihenfolge wie die Flags 'm', 'f' und 'e' angegeben.\n\n\
-Beispiel 1: So archivieren Sie zwei Klassendateien in ein Archiv mit Namen classes.jar: \n\
-\ \      jar cvf classes.jar Foo.class Bar.class \n\
-Beispiel 2: Verwenden der vorhandenen Manifest-Datei 'mymanifest' und archivieren\n\
-\ \          aller Dateien im Verzeichnis foo/ in 'classes.jar': \n\
-\ \      jar cvfm classes.jar mymanifest -C foo/ .\n
+usage=Verwendung: jar-Dateien {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] ...\nOptionen:\n\ \   -c  Neues Archiv erstellen\n\ \   -t  Inhaltsverzeichnis f\u00FCr Archiv auflisten\n\ \   -x  Genannte (oder alle) Dateien aus Archiv extrahieren\n\ \   -u  Vorhandenes Archiv aktualisieren\n\ \   -v  Verbose-Ausgabe f\u00FCr Standardausgabe generieren\n\ \   -f  Namen der Archivdatei angeben\n\ \   -m  Manifest-Informationen von angegebener Manifest-Datei einschlie\u00DFen\n\ \   -e  Anwendungs-Einstiegspunkt f\u00FCr die \n\ \       in einer ausf\u00FChrbaren JAR-Datei geb\u00FCndelte Standalone-Anwendung angeben\n\ \   -0  Nur speichern (keine ZIP-Komprimierung)\n\ \   -M  Keine Manifest-Datei f\u00FCr die Eintr\u00E4ge erstellen\n\ \   -i  Indexinformationen f\u00FCr angegebenen JAR-Dateien erstellen\n\ \   -C  zum angegebenen Verzeichnis wechseln und folgende Datei einschlie\u00DFen\nFalls eine Datei ein Verzeichnis ist, wird dieses rekursiv verarbeitet.\nDer Name der Manifest-Datei, der Name der Archivdatei und der Name des Einstiegspunkts werden\nin derselben Reihenfolge wie die Kennzeichen "m", "f" und "e" angegeben.\n\nBeispiel 1: Archivieren Sie zwei Klassendateien in ein Archiv mit Namen "classes.jar": \n\ \      jar cvf classes.jar Foo.class Bar.class \nBeispiel 2: Verwenden Sie die vorhandenen Manifest-Datei "mymanifest", und archivieren Sie\n\ \          alle Dateien im Verzeichnis foo/ in "classes.jar": \n\ \      jar cvfm classes.jar mymanifest -C foo/ .\n
--- a/jdk/src/share/classes/sun/tools/jar/resources/jar_es.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_es.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2006, 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
@@ -23,69 +23,25 @@
 # questions.
 #
 
-error.cant.open=\
-     no es posible abrir: {0} 
-error.illegal.option=\
-        Opci\u00f3n no permitida: {0}
-error.bad.option=\
-        Se debe especificar una de las opciones -{ctxu}.
-error.bad.cflag=\
-        La marca 'c' necesita la especificaci\u00f3n de archivos de manifiesto o de entrada.
-error.bad.uflag=\
-        La marca 'u' necesita la especificaci\u00f3n de archivos de manifiesto, de entrada o marca 'e'.
-error.bad.eflag=\
-	la marca 'e' y el manifiesto con el atributo 'Main-Class' no pueden especificarse \n\
-	 a la vez.
-error.nosuch.fileordir=\
-        {0} : no existe tal archivo o directorio.
-error.write.file=\
-        Error al escribir un archivo jar existente
-error.create.dir=\
-        {0} : no fue posible crear el directorio
-error.incorrect.length=\
-        longitud incorrecta al procesar: {0}
-out.added.manifest=\
-        manifest agregado
-out.update.manifest=\
-        manifest actualizado
-out.ignore.entry=\
-        ignorando entrada {0}
-out.adding=\
-        agregando: {0}
-out.deflated=\
-        \ \(desinflado {0}%)
-out.stored=\
-        \ \(almacenado 0%)
-out.create=\
-        \ \ creado: {0}
-out.extracted=\
-        extra\u00eddo: {0}
-out.inflated=\
-        \ inflado: {0}
-out.size=\
-        \ \(entrada = {0}) (salida = {1})
+error.cant.open=no se puede abrir: {0} 
+error.illegal.option=Opci\u00F3n no permitida: {0}
+error.bad.option=Se debe especificar una de las opciones -{ctxu}.
+error.bad.cflag=El indicador 'c' necesita la especificaci\u00F3n de archivos de manifiesto o de entrada.
+error.bad.uflag=El indicador 'u' necesita la especificaci\u00F3n de archivos de manifiesto, de entrada o indicador 'e'.
+error.bad.eflag=El indicador 'e' y el manifiesto con el atributo 'Main-Class' no pueden especificarse \na la vez.
+error.nosuch.fileordir={0} : no existe tal archivo o directorio
+error.write.file=Error al escribir un archivo jar existente
+error.create.dir={0} : no se ha podido crear el directorio
+error.incorrect.length=longitud incorrecta al procesar: {0}
+out.added.manifest=manifiesto agregado
+out.update.manifest=manifiesto actualizado
+out.ignore.entry=ignorando entrada {0}
+out.adding=agregando: {0}
+out.deflated=(desinflado {0}%)
+out.stored=(almacenado 0%)
+out.create=\ \ creado: {0}
+out.extracted=extra\u00EDdo: {0}
+out.inflated=\ \\inflado: {0}
+out.size=(entrada = {0}) (salida = {1})
 
-usage=\
-Uso: jar {ctxui}[vfm0Me] [archivo-jar] [archivo-manifiesto] [punto-entrada] [-C dir] archivos...\n\
-Opciones:\n\
-\ \   -c  crear archivo de almacenamiento\n\
-\ \   -t  crear la tabla de contenido del archivo de almacenamiento\n\
-\ \   -x  extraer el archivo mencionado (o todos) del archivo de almacenamiento\n\
-\ \   -u  actualizar archivo de almacenamiento existente\n\
-\ \   -v  generar salida detallada de los datos de salida est\u00e1ndar\n\
-\ \   -f  especificar nombre del archivo de almacenamiento\n\
-\ \   -m  incluir informaci\u00f3n de un archivo de manifiesto especificado\n\
-\ \   -e  especificar punto de entrada de la aplicaci\u00f3n para aplicaci\u00f3n aut\u00f3noma \n\
-\ \       que se incluye dentro de un archivo jar ejecutable\n\
-\ \   -0  s\u00f3lo almacenar; no utilizar compresi\u00f3n ZIP\n\
-\ \   -M  no crear un archivo de manifiesto para las entradas\n\
-\ \   -i  generar informaci\u00f3n de \u00edndice para los archivos jar especificados\n\
-\ \   -C  cambiar al directorio especificado e incluir el archivo siguiente\n\
-Si alg\u00fan archivo coincide tambi\u00e9n con un directorio, ambos se procesar\u00e1n.\n\
-El nombre del archivo de manifiesto, el nombre del archivo de almacenamiento y el nombre del punto de entrada se\n\
-especifican en el mismo orden que las marcas 'm', 'f' y 'e'.\n\n\
-Ejemplo 1: para archivar dos archivos de clases en un archivo de almacenamiento llamado classes.jar: \n\
-\ \      jar cvf classes.jar Foo.class Bar.class \n\
-Ejemplo 2: utilice un archivo de manifiesto ya creado, 'mymanifest', y archive todos los\n\
-\ \          archivos del directorio foo/ en 'classes.jar': \n\
-\ \      jar cvfm classes.jar mymanifest -C foo/ .\n
+usage=Sintaxis: jar {ctxui}[vfm0Me] [archive-jar] [archive-manifiesto] [punto-entrada] [-C dir] archivos...\nOpciones:\n\ \   -c  crear nuevo archivo\n\ \   -t  crear la tabla de contenido del archivo\n\ \   -x extraer el archive mencionado (o todos) del archivo\n\ \   -u  actualizar archive existente\n\ \   -v  generar salida detallada de los datos de salida est\u00E1ndar\n\ \   -f  especificar nombre de archive de almacenamiento\n\ \   -m  incluir informaci\u00F3n de manifiesto del archive de manifiesto especificado\n\ \   -e  especificar punto de entrada de la aplicaci\u00F3n para la aplicaci\u00F3n aut\u00F3noma \n\ \       que se incluye dentro de un archive jar ejecutable\n\ \   -0  s\u00F3lo almacenar; no utilizar compresi\u00F3n ZIP\n\ \   -M  no crear un archive de manifiesto para las entradas\n\ \   -i  generar informaci\u00F3n de \u00EDndice para los archives jar especificados\n\ \   -C  cambiar al directorio especificado e incluir el archivo siguiente\nSi alg\u00FAn archivo es un directorio, se procesar\u00E1 de forma recurrente.\nEl nombre del archivo de manifiesto, el nombre del archivo de almacenamiento y el nombre del punto de entrada se\nespecifican en el mismo orden que los indicadores 'm', 'f' y 'e'.\n\nEjemplo 1: para archivar archivos de dos clases en un archivo llamado classes.jar: \n\ \      jar cvf classes.jar Foo.class Bar.class \nEjemplo 2: utilice un archivo de manifiesto existente 'mymanifest' y archive todos los\n\ \          archivos del directorio foo/ en 'classes.jar': \n\ \      jar cvfm classes.jar mymanifest -C foo/ .\n
--- a/jdk/src/share/classes/sun/tools/jar/resources/jar_fr.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_fr.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2006, 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
@@ -23,69 +23,25 @@
 # questions.
 #
 
-error.cant.open=\
-     impossible d''ouvrir : {0} 
-error.illegal.option=\
-        Option incorrecte : {0}
-error.bad.option=\
-        Une des options -{ctxu} doit \u00eatre sp\u00e9cifi\u00e9e.
-error.bad.cflag=\
-        L'indicateur c requiert la sp\u00e9cification d'un fichier manifeste ou d'un fichier d'entr\u00e9e.
-error.bad.uflag=\
-        L'indicateur u requiert la sp\u00e9cification d'un fichier manifeste, d'un fichier d'entr\u00e9e ou d'un indicateur e.
-error.bad.eflag=\
-	L'indicateur e et le fichier manifeste portant l'attribut Main-Class ne peuvent pas \u00eatre sp\u00e9cifi\u00e9s \n\
-	 ensemble !
-error.nosuch.fileordir=\
-        {0} : fichier ou r\u00e9pertoire introuvable
-error.write.file=\
-        Erreur lors de l'\u00e9criture d'un fichier jar existant
-error.create.dir=\
-        {0} : impossible de cr\u00e9er le r\u00e9pertoire
-error.incorrect.length=\
-        Longueur incorrecte lors du traitement de : {0}
-out.added.manifest=\
-        manifest ajout\u00e9
-out.update.manifest=\
-        manifest mis \u00e0 jour
-out.ignore.entry=\
-        entr\u00e9e {0} ignor\u00e9e
-out.adding=\
-        ajout : {0}
-out.deflated=\
-        \ \({0}% compress\u00e9s)
-out.stored=\
-        \ \(0% stock\u00e9)
-out.create=\
-        \ \ \ \ \ \ \ cr\u00e9\u00e9e: {0}
-out.extracted=\
-        \ \ \ \ extraite: {0}
-out.inflated=\
-        d\u00e9compress\u00e9e: {0}
-out.size=\
-        \ \(entr\u00e9e = {0}) (sortie = {1})
+error.cant.open=impossible d''ouvrir : {0} 
+error.illegal.option=Option non admise : {0}
+error.bad.option=Une des options -{ctxu} doit \u00EAtre sp\u00E9cifi\u00E9e.
+error.bad.cflag=L'indicateur c requiert la sp\u00E9cification d'un fichier manifeste ou d'un fichier d'entr\u00E9e.
+error.bad.uflag=L'indicateur u requiert la sp\u00E9cification d'un fichier manifeste, d'un fichier d'entr\u00E9e ou d'un indicateur e.
+error.bad.eflag=L'indicateur e et le fichier manifeste portant l'attribut Main-Class ne peuvent pas \u00EAtre sp\u00E9cifi\u00E9s \nensemble.
+error.nosuch.fileordir={0} : fichier ou r\u00E9pertoire introuvable
+error.write.file=Erreur lors de l'\u00E9criture d'un fichier JAR existant
+error.create.dir={0} : impossible de cr\u00E9er le r\u00E9pertoire
+error.incorrect.length=longueur incorrecte lors du traitement de : {0}
+out.added.manifest=manifeste ajout\u00E9
+out.update.manifest=manifeste mis \u00E0 jour
+out.ignore.entry=entr\u00E9e {0} ignor\u00E9e
+out.adding=ajout : {0}
+out.deflated=(compression : {0} %)
+out.stored=(stockage : 0 %)
+out.create=\ \ cr\u00E9\u00E9 : {0}
+out.extracted=extrait : {0}
+out.inflated=\ \\d\u00E9compress\u00E9 : {0}
+out.size=(entr\u00E9e = {0}) (sortie = {1})
 
-usage=\
-Utilisation : jar {ctxui}[vfm0Me] [fichier-jar] [fichier-manifeste] [point-entr\u00e9e] [-C r\u00e9p] fichiers...\n\
-Options :\n\
-\ \   -c  cr\u00e9e une nouvelle archive\n\
-\ \   -t  affiche la table des mati\u00e8res de l'archive\n\
-\ \   -x  extrait les fichiers nomm\u00e9s (ou tous les fichiers) de l'archive\n\
-\ \   -u  met \u00e0 jour l'archive existante\n\
-\ \   -v  g\u00e9n\u00e8re une version d\u00e9taill\u00e9e d'une sortie standard\n\
-\ \   -f  sp\u00e9cifie le nom du fichier archive\n\
-\ \   -m  inclut les informations de manifeste \u00e0 partir du fichier de manifeste sp\u00e9cifi\u00e9\n\
-\ \   -e  sp\u00e9cifie le point d'entr\u00e9e d'une application en mode autonome \n\
-\ \       int\u00e9gr\u00e9e \u00e0 un fichier JAR ex\u00e9cutable\n\
-\ \   -0  stockage uniquement, pas de compression ZIP\n\
-\ \   -M  ne cr\u00e9e pas de fichier manifeste pour les entr\u00e9es\n\
-\ \   -i  g\u00e9n\u00e8re les informations d'index des fichiers jar sp\u00e9cifi\u00e9s\n\
-\ \   -C  passe au r\u00e9pertoire sp\u00e9cifi\u00e9 et inclut le fichier suivant\n\
-Si l'un des fichiers est un r\u00e9pertoire, celui-ci est trait\u00e9 r\u00e9cursivement.\n\
-Les noms du fichier manifeste, du fichier archive et du point d'entr\u00e9e sont\n\
-sp\u00e9cifi\u00e9s dans le m\u00eame ordre que celui des indicateurs m, f et e.\n\n\
-Exemple 1 : pour archiver deux fichiers de classe dans une archive intitul\u00e9e classes.jar : \n\
-\ \      jar cvf classes.jar Foo.class Bar.class \n\
-Exemple 2 : pour utiliser un fichier manifeste existant 'monmanifeste', puis archiver tous les\n\
-\ \          fichiers du r\u00e9pertoire foo/ dans 'classes.jar' : \n\
-\ \      jar cvfm classes.jar monmanifeste -C foo/ .\n
+usage=Syntaxe : jar {ctxui}[vfm0Me] [fichier-jar] [fichier-manifeste] [point-entr\u00E9e] [-C r\u00E9p] fichiers...\nOptions :\n\ \   -c  cr\u00E9e une archive\n\ \   -t  affiche la table des mati\u00E8res de l'archive\n\ \   -x  extrait les fichiers nomm\u00E9s (ou tous les fichiers) de l'archive\n\ \   -u  met \u00E0 jour l'archive existante\n\ \   -v  g\u00E9n\u00E8re une version d\u00E9taill\u00E9e d'une sortie standard\n\ \   -f  sp\u00E9cifie le nom du fichier archive\n\ \   -m  inclut les informations de manifeste \u00E0 partir du fichier de manifeste sp\u00E9cifi\u00E9\n\ \   -e  sp\u00E9cifie le point d'entr\u00E9e d'une application en mode autonome \n\ \       int\u00E9gr\u00E9e \u00E0 un fichier JAR ex\u00E9cutable\n\ \   -0  stockage uniquement, pas de compression ZIP\n\ \   -M  ne cr\u00E9e pas de fichier manifeste pour les entr\u00E9es\n\ \   -i  g\u00E9n\u00E8re les informations d'index des fichiers JAR sp\u00E9cifi\u00E9s\n\ \   -C  passe au r\u00E9pertoire sp\u00E9cifi\u00E9 et inclut le fichier suivant\nSi l'un des fichiers est un r\u00E9pertoire, celui-ci est trait\u00E9 r\u00E9cursivement.\nLes noms du fichier manifeste, du fichier archive et du point d'entr\u00E9e sont\nsp\u00E9cifi\u00E9s dans le m\u00EAme ordre que celui des indicateurs m, f et e.\n\nExemple 1 : pour archiver deux fichiers de classe dans une archive intitul\u00E9e classes.jar : \n\ \      jar cvf classes.jar Foo.class Bar.class \nExemple 2 : pour utiliser un fichier manifeste existant 'monmanifeste', puis archiver tous les\n\ \          fichiers du r\u00E9pertoire foo/ dans 'classes.jar' : \n\ \      jar cvfm classes.jar monmanifeste -C foo/ .\n
--- a/jdk/src/share/classes/sun/tools/jar/resources/jar_it.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_it.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2006, 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
@@ -23,69 +23,25 @@
 # questions.
 #
 
-error.cant.open=\
-     impossibile aprire: {0} 
-error.illegal.option=\
-        Opzione non valida: {0}
-error.bad.option=\
-        \u00c8 necessario specificare una delle opzioni -{ctxu}.
-error.bad.cflag=\
-        Per il flag 'c' \u00e8 necessario specificare file manifesto o di input.
-error.bad.uflag=\
-        Per il flag 'u' \u00e8 necessario specificare il flag 'e' oppure file manifesto o di input.
-error.bad.eflag=\
-	Il flag 'e' e il manifesto con l'attributo 'Main-Class' non possono essere specificati\n\
-	 insieme.
-error.nosuch.fileordir=\
-        {0} : impossibile trovare il file o la directory
-error.write.file=\
-        Errore durante la scrittura del file jar esistente
-error.create.dir=\
-        {0} : impossibile creare la directory
-error.incorrect.length=\
-        lunghezza non valida durante l''elaborazione: {0}
-out.added.manifest=\
-        aggiunto manifesto
-out.update.manifest=\
-        aggiornato manifesto
-out.ignore.entry=\
-        la voce {0} sar\u00e0 ignorata
-out.adding=\
-        aggiunta in corso di: {0}
-out.deflated=\
-        \ \(compresso {0}%)
-out.stored=\
-        \ \(archiviato 0%)
-out.create=\
-        \ \ \ \ \ creato: {0}
-out.extracted=\
-        \ \ \ estratto: {0}
-out.inflated=\
-        decompresso: {0}
-out.size=\
-        \ \(in = {0}) (out = {1})
+error.cant.open=impossibile aprire: {0} 
+error.illegal.option=Opzione non valida: {0}
+error.bad.option=\u00C8 necessario specificare una delle opzioni -{ctxu}.
+error.bad.cflag=Per il flag 'c' \u00E8 necessario specificare file manifest o di input.
+error.bad.uflag=Per il flag 'u' \u00E8 necessario specificare il flag 'e' oppure file manifest o di input.
+error.bad.eflag=Il flag 'e' e il manifest con l'attributo 'Main-Class' non possono essere specificati\ninsieme.
+error.nosuch.fileordir={0} : file o directory inesistente
+error.write.file=Errore durante la scrittura del file jar esistente
+error.create.dir={0} : impossibile creare la directory
+error.incorrect.length=lunghezza non valida durante l''elaborazione: {0}
+out.added.manifest=aggiunto manifest
+out.update.manifest=aggiornato manifest
+out.ignore.entry=la voce {0} sar\u00E0 ignorata
+out.adding=aggiunta in corso di: {0}
+out.deflated=(compresso {0}%)
+out.stored=(memorizzato 0%)
+out.create=\ \ \ \ \ creato: {0}
+out.extracted=estratto: {0}
+out.inflated=\ \\decompresso: {0}
+out.size=(in = {0}) (out = {1})
 
-usage=\
-Utilizzo: jar {ctxui}[vfm0Me] [file-jar] [file-manifesto] [punto di ingresso] [-C dir] file ...\n\
-Opzioni:\n\
-\ \   -c  crea un nuovo archivio\n\
-\ \   -t  visualizza l'indice dell'archivio\n\
-\ \   -x  estrae i file con nome (o tutti i file) dall'archivio\n\
-\ \   -u  aggiorna l'archivio esistente\n\
-\ \   -v  genera output commentato dall'output standard\n\
-\ \   -f  specifica il nome file dell'archivio\n\
-\ \   -m  include informazioni manifesto dal file manifesto specificato\n\
-\ \   -e  specifica il punto di ingresso per l'applicazione stand-alone \n\
-\ \       inclusa nel file jar eseguibile\n\
-\ \   -0  solo memorizzazione; senza compressione ZIP\n\
-\ \   -M  consente di non creare un file manifesto per le voci\n\
-\ \   -i  genera informazioni sull'indice per i file jar specificati\n\
-\ \   -C  imposta la directory specificata e include il file seguente\n\
-Se un file \u00e8 una directory, verr\u00e0 elaborato in modo ricorsivo.\n\
-Il nome del file manifesto, del file di archivio e del punto di ingresso devono\n\
-essere specificati nello stesso ordine dei flag 'm', 'f' ed 'e'.\n\n\
-Esempio 1: archiviazione di due file di classe in un archivio con il nome classes.jar: \n\
-\ \      jar cvf classes.jar Foo.class Bar.class \n\
-Esempio 2: utilizzo del file manifesto esistente 'mymanifest' e archiviazione di tutti i\n\
-\ \          file della directory foo/ in 'classes.jar': \n\
-\ \      jar cvfm classes.jar mymanifest -C foo/ .\n
+usage=Utilizzo: jar {ctxui}[vfm0Me] [file-jar] [file-manifest] [punto di ingresso] [-C dir] file ...\nOpzioni:\n\ \   -c  crea un nuovo archivio\n\ \   -t  visualizza l'indice dell'archivio\n\ \   -x  estrae i file con nome (o tutti i file) dall'archivio\n\ \   -u  aggiorna l'archivio esistente\n\ \   -v  genera output commentato dall'output standard\n\ \   -f  specifica il nome file dell'archivio\n\ \   -m  include informazioni manifest dal file manifest specificato\n\ \   -e  specifica il punto di ingresso per l'applicazione stand-alone \n\ \       inclusa nel file jar eseguibile\n\ \   -0  solo memorizzazione; senza compressione ZIP\n\ \   -M  consente di non creare un file manifest per le voci\n\ \   -i  genera informazioni sull'indice per i file jar specificati\n\ \   -C  imposta la directory specificata e include il file seguente\nSe un file \u00E8 una directory, verr\u00E0 elaborato in modo ricorsivo.\nIl nome del file manifest, del file di archivio e del punto di ingresso devono\nessere specificati nello stesso ordine dei flag 'm', 'f' ed 'e'.\n\nEsempio 1: archiviazione di due file di classe in un archivio con il nome classes.jar: \n\ \      jar cvf classes.jar Foo.class Bar.class \nEsempio 2: utilizzo del file manifest esistente 'mymanifest' e archiviazione di tutti i\n\ \          file della directory foo/ in 'classes.jar': \n\ \      jar cvfm classes.jar mymanifest -C foo/.\n
--- a/jdk/src/share/classes/sun/tools/jar/resources/jar_ja.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_ja.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -23,67 +23,25 @@
 # questions.
 #
 
-error.cant.open=\
-     {0} \u3092\u958b\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002 
-error.illegal.option=\
-        \u4e0d\u6b63\u306a\u30aa\u30d7\u30b7\u30e7\u30f3: {0}
-error.bad.option=\
-        \u30aa\u30d7\u30b7\u30e7\u30f3 -{ctxu} \u306e\u3046\u3061\u306e 1 \u3064\u3092\u6307\u5b9a\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-error.bad.cflag=\
-        \u30d5\u30e9\u30b0 'c' \u3067\u306f\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u304b\u5165\u529b\u30d5\u30a1\u30a4\u30eb\u306e\u6307\u5b9a\u304c\u5fc5\u8981\u3067\u3059\u3002
-error.bad.uflag=\
-        \u30d5\u30e9\u30b0 'u' \u3067\u306f\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u304b 'e' \u30d5\u30e9\u30b0\u3001\u307e\u305f\u306f\u5165\u529b\u30d5\u30a1\u30a4\u30eb\u306e\u6307\u5b9a\u304c\u5fc5\u8981\u3067\u3059\u3002
-error.bad.eflag='e' \u30d5\u30e9\u30b0\u3068 'Main-Class' \u5c5e\u6027\u3092\u6301\u3064\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u306f\u540c\u6642\u306b\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002
-error.nosuch.fileordir=\
-        {0} \u3068\u3044\u3046\u30d5\u30a1\u30a4\u30eb\u307e\u305f\u306f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-error.write.file=\
-        \u65e2\u5b58 jar \u30d5\u30a1\u30a4\u30eb\u306e\u66f8\u304d\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
-error.create.dir=\
-        \u30c7\u30a3\u30ec\u30af\u30c8\u30ea {0} \u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
-error.incorrect.length=\
-        {0} \u306e\u51e6\u7406\u4e2d\u306b\u4e0d\u6b63\u306a\u9577\u3055\u304c\u3042\u308a\u307e\u3057\u305f\u3002
-out.added.manifest=\
-        \u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u304c\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002
-out.update.manifest=\
-        \u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u304c\u66f4\u65b0\u3055\u308c\u307e\u3057\u305f\u3002
-out.ignore.entry=\
-        \u30a8\u30f3\u30c8\u30ea {0} \u3092\u7121\u8996\u3057\u307e\u3059\u3002
-out.adding=\
-        {0} \u3092\u8ffd\u52a0\u4e2d\u3067\u3059\u3002
-out.deflated=\
-        ({0}% \u53ce\u7e2e\u3055\u308c\u307e\u3057\u305f)
-out.stored=\
-        (0% \u683c\u7d0d\u3055\u308c\u307e\u3057\u305f)
-out.create=\
-        \ \ {0} \u304c\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f\u3002
-out.extracted=\
-        {0} \u304c\u62bd\u51fa\u3055\u308c\u307e\u3057\u305f\u3002
-out.inflated=\
-        \ \{0} \u304c\u5c55\u958b\u3055\u308c\u307e\u3057\u305f\u3002
-out.size=\
-        (\u5165 = {0}) (\u51fa = {1})
+error.cant.open={0}\u3092\u958B\u304F\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 
+error.illegal.option=\u4E0D\u6B63\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: {0}
+error.bad.option=\u30AA\u30D7\u30B7\u30E7\u30F3-{ctxu}\u306E\u3046\u3061\u306E1\u3064\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+error.bad.cflag=\u30D5\u30E9\u30B0'c'\u3067\u306F\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u307E\u305F\u306F\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u306E\u6307\u5B9A\u304C\u5FC5\u8981\u3067\u3059\u3002
+error.bad.uflag=\u30D5\u30E9\u30B0'u'\u3067\u306F\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u304B'e'\u30D5\u30E9\u30B0\u3001\u307E\u305F\u306F\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u306E\u6307\u5B9A\u304C\u5FC5\u8981\u3067\u3059\u3002
+error.bad.eflag='e'\u30D5\u30E9\u30B0\u3068'Main-Class'\u5C5E\u6027\u3092\u6301\u3064\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u306F\u540C\u6642\u306B\n\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002
+error.nosuch.fileordir={0}\u3068\u3044\u3046\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306F\u3042\u308A\u307E\u305B\u3093
+error.write.file=\u65E2\u5B58jar\u30D5\u30A1\u30A4\u30EB\u306E\u66F8\u8FBC\u307F\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
+error.create.dir=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
+error.incorrect.length={0}\u306E\u51E6\u7406\u4E2D\u306B\u4E0D\u6B63\u306A\u9577\u3055\u304C\u3042\u308A\u307E\u3057\u305F
+out.added.manifest=\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u304C\u8FFD\u52A0\u3055\u308C\u307E\u3057\u305F
+out.update.manifest=\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u304C\u66F4\u65B0\u3055\u308C\u307E\u3057\u305F
+out.ignore.entry=\u30A8\u30F3\u30C8\u30EA{0}\u3092\u7121\u8996\u3057\u307E\u3059
+out.adding={0}\u3092\u8FFD\u52A0\u4E2D\u3067\u3059
+out.deflated=({0}%\u53CE\u7E2E\u3055\u308C\u307E\u3057\u305F)
+out.stored=(0%\u683C\u7D0D\u3055\u308C\u307E\u3057\u305F)
+out.create=\ \ {0}\u304C\u4F5C\u6210\u3055\u308C\u307E\u3057\u305F
+out.extracted={0}\u304C\u62BD\u51FA\u3055\u308C\u307E\u3057\u305F
+out.inflated=\ \\{0}\u304C\u5C55\u958B\u3055\u308C\u307E\u3057\u305F
+out.size=(\u5165={0})(\u51FA={1})
 
-usage=\
-\u4f7f\u3044\u65b9: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\n\
-\u30aa\u30d7\u30b7\u30e7\u30f3:\n\
-\ \   -c  \u30a2\u30fc\u30ab\u30a4\u30d6\u3092\u65b0\u898f\u4f5c\u6210\u3059\u308b\n\
-\ \   -t  \u30a2\u30fc\u30ab\u30a4\u30d6\u306e\u5185\u5bb9\u3092\u4e00\u89a7\u8868\u793a\u3059\u308b\n\
-\ \   -x  \u6307\u5b9a\u306e (\u307e\u305f\u306f\u3059\u3079\u3066\u306e) \u30d5\u30a1\u30a4\u30eb\u3092\u30a2\u30fc\u30ab\u30a4\u30d6\u304b\u3089\u62bd\u51fa\u3059\u308b\n\
-\ \   -u  \u65e2\u5b58\u30a2\u30fc\u30ab\u30a4\u30d6\u3092\u66f4\u65b0\u3059\u308b\n\
-\ \   -v  \u6a19\u6e96\u51fa\u529b\u306b\u8a73\u7d30\u306a\u51fa\u529b\u3092\u751f\u6210\u3059\u308b\n\
-\ \   -f  \u30a2\u30fc\u30ab\u30a4\u30d6\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u6307\u5b9a\u3059\u308b\n\
-\ \   -m  \u6307\u5b9a\u306e\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u60c5\u5831\u3092\u53d6\u308a\u8fbc\u3080\n\
-\ \   -e  \u5b9f\u884c\u53ef\u80fd jar \u30d5\u30a1\u30a4\u30eb\u306b\u30d0\u30f3\u30c9\u30eb\u3055\u308c\u305f\u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30f3\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\n\
-\ \       \u30a8\u30f3\u30c8\u30ea\u30dd\u30a4\u30f3\u30c8\u3092\u6307\u5b9a\u3059\u308b\n\
-\ \   -0  \u683c\u7d0d\u306e\u307f\u3002ZIP \u5727\u7e2e\u3092\u4f7f\u7528\u3057\u306a\u3044\n\
-\ \   -M  \u30a8\u30f3\u30c8\u30ea\u306e\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u306a\u3044\n\
-\ \   -i  \u6307\u5b9a\u306e jar \u30d5\u30a1\u30a4\u30eb\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u60c5\u5831\u3092\u751f\u6210\u3059\u308b\n\
-\ \   -C  \u6307\u5b9a\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u5909\u66f4\u3057\u3001\u4ee5\u4e0b\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u308a\u8fbc\u3080\n\
-\u30d5\u30a1\u30a4\u30eb\u304c\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u5834\u5408\u306f\u518d\u5e30\u7684\u306b\u51e6\u7406\u3055\u308c\u307e\u3059\u3002\n\
-\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u540d\u3001\u30a2\u30fc\u30ab\u30a4\u30d6\u30d5\u30a1\u30a4\u30eb\u540d\u304a\u3088\u3073\u30a8\u30f3\u30c8\u30ea\u30dd\u30a4\u30f3\u30c8\u540d\u306f\u3001\n\
-\u30d5\u30e9\u30b0 'm'\u3001'f'\u3001'e' \u306e\u6307\u5b9a\u3068\u540c\u3058\u9806\u756a\u3067\u6307\u5b9a\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\n\n\
-\u4f8b 1: 2 \u3064\u306e\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u30a2\u30fc\u30ab\u30a4\u30d6 classes.jar \u306b\u4fdd\u5b58\u3059\u308b:\n\
-\ \      jar cvf classes.jar Foo.class Bar.class \n\
-\u4f8b 2: \u65e2\u5b58\u306e\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb 'mymanifest' \u3092\u4f7f\u7528\u3057\u3001foo/ \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\n\
-\ \     \u5168\u30d5\u30a1\u30a4\u30eb\u3092 'classes.jar' \u306b\u30a2\u30fc\u30ab\u30a4\u30d6\u3059\u308b:\n\
-\ \      jar cvfm classes.jar mymanifest -C foo/ .\n
+usage=\u4F7F\u7528\u65B9\u6CD5: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\n\u30AA\u30D7\u30B7\u30E7\u30F3:\n\\  -c \u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u65B0\u898F\u4F5C\u6210\u3059\u308B\n\\  -t \u30A2\u30FC\u30AB\u30A4\u30D6\u306E\u5185\u5BB9\u3092\u4E00\u89A7\u8868\u793A\u3059\u308B\n\\  -x \u6307\u5B9A\u306E(\u307E\u305F\u306F\u3059\u3079\u3066\u306E)\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u304B\u3089\u62BD\u51FA\u3059\u308B\n\\  -u \u65E2\u5B58\u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u66F4\u65B0\u3059\u308B\n\\  -v \u6A19\u6E96\u51FA\u529B\u306B\u8A73\u7D30\u306A\u51FA\u529B\u3092\u751F\u6210\u3059\u308B\n\\  -f \u30A2\u30FC\u30AB\u30A4\u30D6\u30FB\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u6307\u5B9A\u3059\u308B\n\\  -m \u6307\u5B9A\u306E\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u60C5\u5831\u3092\u53D6\u308A\u8FBC\u3080\n\\  -e \u5B9F\u884C\u53EF\u80FDjar\u30D5\u30A1\u30A4\u30EB\u306B\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u305F\u30B9\u30BF\u30F3\u30C9\u30A2\u30ED\u30F3\u30FB\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\n\\     \u30A8\u30F3\u30C8\u30EA\u30FB\u30DD\u30A4\u30F3\u30C8\u3092\u6307\u5B9A\u3059\u308B\n\\  -0 \u683C\u7D0D\u306E\u307F\u3002ZIP\u5727\u7E2E\u3092\u4F7F\u7528\u3057\u306A\u3044\n\\  -M \u30A8\u30F3\u30C8\u30EA\u306E\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u4F5C\u6210\u3057\u306A\u3044\n\\  -i \u6307\u5B9A\u306Ejar\u30D5\u30A1\u30A4\u30EB\u306E\u7D22\u5F15\u60C5\u5831\u3092\u751F\u6210\u3059\u308B\n\\  -C \u6307\u5B9A\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u5909\u66F4\u3057\u3001\u4EE5\u4E0B\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u53D6\u308A\u8FBC\u3080\n\u30D5\u30A1\u30A4\u30EB\u304C\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u5834\u5408\u306F\u518D\u5E30\u7684\u306B\u51E6\u7406\u3055\u308C\u307E\u3059\u3002\n\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB\u540D\u3001\u30A2\u30FC\u30AB\u30A4\u30D6\u30FB\u30D5\u30A1\u30A4\u30EB\u540D\u304A\u3088\u3073\u30A8\u30F3\u30C8\u30EA\u30FB\u30DD\u30A4\u30F3\u30C8\u540D\u306F\u3001\n\u30D5\u30E9\u30B0'm'\u3001'f'\u3001'e'\u306E\u6307\u5B9A\u3068\u540C\u3058\u9806\u756A\u3067\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n\n\u4F8B1: 2\u3064\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30FC\u30AB\u30A4\u30D6classes.jar\u306B\u4FDD\u5B58\u3059\u308B:\n\\    jar cvf classes.jar Foo.class Bar.class\n\u4F8B2: \u65E2\u5B58\u306E\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB'mymanifest'\u3092\u4F7F\u7528\u3057\u3001foo/\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\n\\   \u5168\u30D5\u30A1\u30A4\u30EB\u3092'classes.jar'\u306B\u30A2\u30FC\u30AB\u30A4\u30D6\u3059\u308B:\n\\    jar cvfm classes.jar mymanifest -C foo/ \n
--- a/jdk/src/share/classes/sun/tools/jar/resources/jar_ko.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_ko.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2006, 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
@@ -23,69 +23,25 @@
 # questions.
 #
 
-error.cant.open=\
-     {0}\uc744(\ub97c) \uc5f4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. 
-error.illegal.option=\
-        {0} \uc635\uc158\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
-error.bad.option=\
-        \uc635\uc158 -{ctxu} \uc911 \ud558\ub098\uac00 \uc9c0\uc815\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.
-error.bad.cflag=\
-        'c' \ud50c\ub798\uadf8\ub97c \uc9c0\uc815\ud558\ub824\uba74 manifest \ub610\ub294 \uc785\ub825 \ud30c\uc77c\uc774 \ud544\uc694\ud569\ub2c8\ub2e4!
-error.bad.uflag=\
-        'u' \ud50c\ub798\uadf8\ub97c \uc9c0\uc815\ud558\ub824\uba74 manifest, 'e' \ud50c\ub798\uadf8 \ub610\ub294 \uc785\ub825 \ud30c\uc77c\uc774 \ud544\uc694\ud569\ub2c8\ub2e4!
-error.bad.eflag=\
-	'\uae30\ubcf8 \ud074\ub798\uc2a4' \uc18d\uc131\uc744 \ud3ec\ud568\ud55c 'e' \ud50c\ub798\uadf8 \ubc0f manifest\ub97c \ud568\uaed8 \uc9c0\uc815\ud560 \uc218\n\
-	 \uc5c6\uc2b5\ub2c8\ub2e4.
-error.nosuch.fileordir=\
-        {0} : \uc9c0\uc815\ud55c \ud30c\uc77c \ub610\ub294 \ub514\ub809\ud1a0\ub9ac\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
-error.write.file=\
-        \uae30\uc874\uc758 jar \ud30c\uc77c\uc5d0 \uc4f0\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd
-error.create.dir=\
-        {0} : \ub514\ub809\ud1a0\ub9ac\ub97c \ub9cc\ub4e4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
-error.incorrect.length=\
-        {0} \ucc98\ub9ac \uc911 \uae38\uc774\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
-out.added.manifest=\
-        \ucd94\uac00\ub41c manifest
-out.update.manifest=\
-        \uc5c5\ub370\uc774\ud2b8\ub41c manifest
-out.ignore.entry=\
-        \uc785\ub825 \ud56d\ubaa9 {0} \ubb34\uc2dc \uc911
-out.adding=\
-        \ucd94\uac00 \uc911: {0}
-out.deflated=\
-        ({0}%\uac00 \uac10\uc18c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.)
-out.stored=\
-        (0%\uac00 \uc800\uc7a5\ub418\uc5c8\uc2b5\ub2c8\ub2e4.)
-out.create=\
-        \ \ {0}\uc774(\uac00) \uc791\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
-out.extracted=\
-        {0}\uc774(\uac00) \ucd94\ucd9c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
-out.inflated=\
-        \ \{0}\uc774(\uac00) \uc99d\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
-out.size=\
-        (\ub0b4\ubd80 = {0}) (\uc678\ubd80= {1})
+error.cant.open=\uC5F4 \uC218 \uC5C6\uC74C: {0} 
+error.illegal.option=\uC798\uBABB\uB41C \uC635\uC158: {0}
+error.bad.option=\uC635\uC158 -{ctxu} \uC911 \uD558\uB098\uB97C \uC9C0\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.
+error.bad.cflag='c' \uD50C\uB798\uADF8\uB97C \uC0AC\uC6A9\uD558\uB824\uBA74 Manifest \uB610\uB294 \uC785\uB825 \uD30C\uC77C\uC744 \uC9C0\uC815\uD574\uC57C \uD569\uB2C8\uB2E4!
+error.bad.uflag='u' \uD50C\uB798\uADF8\uB97C \uC0AC\uC6A9\uD558\uB824\uBA74 Manifest, 'e' \uD50C\uB798\uADF8 \uB610\uB294 \uC785\uB825 \uD30C\uC77C\uC744 \uC9C0\uC815\uD574\uC57C \uD569\uB2C8\uB2E4!
+error.bad.eflag='e' \uD50C\uB798\uADF8 \uBC0F Manifest\uB97C 'Main-Class' \uC18D\uC131\uACFC \uD568\uAED8 \uC9C0\uC815\uD560 \uC218\n\uC5C6\uC2B5\uB2C8\uB2E4!
+error.nosuch.fileordir={0}: \uD574\uB2F9 \uD30C\uC77C \uB610\uB294 \uB514\uB809\uD1A0\uB9AC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.
+error.write.file=\uAE30\uC874 jar \uD30C\uC77C\uC5D0 \uC4F0\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
+error.create.dir={0}: \uB514\uB809\uD1A0\uB9AC\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+error.incorrect.length=\uCC98\uB9AC \uC911 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC740 \uAE38\uC774\uAC00 \uBC1C\uACAC\uB428: {0}
+out.added.manifest=Manifest\uB97C \uCD94\uAC00\uD568
+out.update.manifest=Manifest\uB97C \uAC31\uC2E0\uD568
+out.ignore.entry={0} \uD56D\uBAA9\uC744 \uBB34\uC2DC\uD558\uB294 \uC911
+out.adding=\uCD94\uAC00\uD558\uB294 \uC911: {0}
+out.deflated=({0}%\uB97C \uAC10\uC18C\uD568)
+out.stored=(0%\uB97C \uC800\uC7A5\uD568)
+out.create=\ \ \uC0DD\uC131\uB428: {0}
+out.extracted=\uCD94\uCD9C\uB428: {0}
+out.inflated=\ \\\uC99D\uAC00\uB428: {0}
+out.size=(\uC785\uB825 = {0}) (\uCD9C\uB825 = {1})
 
-usage=\
-\uc0ac\uc6a9\ubc95: jar {ctxui}[vfm0Me] [jar \ud30c\uc77c] [manifest \ud30c\uc77c] [\uc2dc\uc791 \uc9c0\uc810] [-C \ub514\ub809\ud1a0\ub9ac] \ud30c\uc77c ...\n\
-\uc635\uc158:\n\
-\ \   -c  \uc0c8 \uc544\uce74\uc774\ube0c \ub9cc\ub4e4\uae30\n\
-\ \   -t  \uc544\uce74\uc774\ube0c\uc5d0 \ub300\ud55c \ub0b4\uc6a9 \ubaa9\ub85d \ud14c\uc774\ube14\n\
-\ \   -x  \uba85\uba85\ub41c(\ub610\ub294 \ubaa8\ub4e0) \ud30c\uc77c\uc744 \uc544\uce74\uc774\ube0c\uc5d0\uc11c \ucd94\ucd9c\n\
-\ \   -u  \uae30\uc874 \uc544\uce74\uc774\ube0c \uc5c5\ub370\uc774\ud2b8\n\
-\ \   -v  \ud45c\uc900 \ucd9c\ub825\uc5d0 \uc138\ubd80 \uc815\ubcf4 \ud45c\uc2dc \ucd9c\ub825 \uc0dd\uc131\n\
-\ \   -f  \uc544\uce74\uc774\ube0c \ud30c\uc77c \uc774\ub984 \uc9c0\uc815\n\
-\ \   -m  \uc9c0\uc815\ud55c \ub9e4\ub2c8\ud398\uc2a4\ud2b8 \ud30c\uc77c\ub85c\ubd80\ud130 \ub9e4\ub2c8\ud398\uc2a4\ud2b8 \uc815\ubcf4 \ud3ec\ud568\n\
-\ \   -e  jar \uc2e4\ud589 \ud30c\uc77c\uc5d0 \ubc88\ub4e4\ub85c \uc81c\uacf5\ub41c \ub3c5\ub9bd \uc2e4\ud589\ud615 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc758 \n\
-\ \       \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8 \uc2dc\uc791 \uc9c0\uc810 \uc9c0\uc815\n\
-\ \   -0  \uc800\uc7a5 \uc804\uc6a9, ZIP \uc555\ucd95 \uc0ac\uc6a9 \uc548 \ud568\n\
-\ \   -M  \ud56d\ubaa9\uc5d0 \ub300\ud574 \ub9e4\ub2c8\ud398\uc2a4\ud2b8 \ud30c\uc77c\uc744 \ub9cc\ub4e4\uc9c0 \uc54a\uc74c\n\
-\ \   -i  \uc9c0\uc815\ud55c jar \ud30c\uc77c\uc5d0 \ub300\ud55c \uc0c9\uc778 \uc815\ubcf4 \uc0dd\uc131\n\
-\ \   -C  \uc9c0\uc815\ud55c \ub514\ub809\ud1a0\ub9ac\ub85c \ubcc0\uacbd\ud558\uace0 \ub2e4\uc74c \ud30c\uc77c \ud3ec\ud568\n\
-\uc5b4\ub5a4 \ud30c\uc77c\uc774 \ub514\ub809\ud1a0\ub9ac\uba74 \uc7ac\uadc0\uc801\uc73c\ub85c \ucc98\ub9ac\ub429\ub2c8\ub2e4.\n\
-\ub9e4\ub2c8\ud398\uc2a4\ud2b8 \ud30c\uc77c \uc774\ub984, \uc544\uce74\uc774\ube0c \ud30c\uc77c \uc774\ub984 \ubc0f \uc2dc\uc791 \uc9c0\uc810 \uc774\ub984\uc740\n\
-'m', 'f' \ubc0f 'e' \ud50c\ub798\uadf8\uc640 \ub3d9\uc77c\ud55c \uc21c\uc11c\ub85c \uc9c0\uc815\ub429\ub2c8\ub2e4.\n\n\
-\uc608 1: classes.jar\ub77c\ub294 \uc544\uce74\uc774\ube0c\uc5d0 \ub450 \ud074\ub798\uc2a4 \ud30c\uc77c\uc744 \uc544\uce74\uc774\ube0c\ud558\ub294 \ubc29\ubc95: \n\
-\ \      jar cvf classes.jar Foo.class Bar.class \n\
-\uc608 2: \uae30\uc874\uc758 \ub9e4\ub2c8\ud398\uc2a4\ud2b8 \ud30c\uc77c 'mymanifest'\ub97c \uc0ac\uc6a9\ud558\uc5ec\n\
-\ \          foo/ \ub514\ub809\ud1a0\ub9ac\uc758 \ubaa8\ub4e0 \ud30c\uc77c\uc744 'classes.jar'\ub85c \uc544\uce74\uc774\ube0c\ud558\ub294 \ubc29\ubc95: \n\
-\ \      jar cvfm classes.jar mymanifest -C foo/ .\n
+usage=\uC0AC\uC6A9\uBC95: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\n\uC635\uC158:\n\ \   -c  \uC0C8 \uC544\uCE74\uC774\uBE0C\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4.\n\ \   -t  \uC544\uCE74\uC774\uBE0C\uC5D0 \uB300\uD55C \uBAA9\uCC28\uB97C \uB098\uC5F4\uD569\uB2C8\uB2E4.\n\ \   -x  \uBA85\uBA85\uB41C(\uB610\uB294 \uBAA8\uB4E0) \uD30C\uC77C\uC744 \uC544\uCE74\uC774\uBE0C\uC5D0\uC11C \uCD94\uCD9C\uD569\uB2C8\uB2E4.\n\ \   -u  \uAE30\uC874 \uC544\uCE74\uC774\uBE0C\uB97C \uAC31\uC2E0\uD569\uB2C8\uB2E4.\n\ \   -v  \uD45C\uC900 \uCD9C\uB825\uC5D0 \uC0C1\uC138 \uC815\uBCF4 \uCD9C\uB825\uC744 \uC0DD\uC131\uD569\uB2C8\uB2E4.\n\ \   -f  \uC544\uCE74\uC774\uBE0C \uD30C\uC77C \uC774\uB984\uC744 \uC9C0\uC815\uD569\uB2C8\uB2E4.\n\ \   -m  \uC9C0\uC815\uB41C Manifest \uD30C\uC77C\uC758 Manifest \uC815\uBCF4\uB97C \uD3EC\uD568\uD569\uB2C8\uB2E4.\n\ \   -e  jar \uC2E4\uD589 \uD30C\uC77C\uC5D0 \uBC88\uB4E4\uB85C \uC81C\uACF5\uB41C \uB3C5\uB9BD\uD615 \uC751\uC6A9 \uD504\uB85C\uADF8\uB7A8\uC758 \n\ \       \uC751\uC6A9 \uD504\uB85C\uADF8\uB7A8 \uC2DC\uC791 \uC9C0\uC810\uC744 \uC9C0\uC815\uD569\uB2C8\uB2E4.\n\ \   -0  \uC800\uC7A5 \uC804\uC6A9: ZIP \uC555\uCD95\uC744 \uC0AC\uC6A9\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\n\ \   -M  \uD56D\uBAA9\uC5D0 \uB300\uD574 Manifest \uD30C\uC77C\uC744 \uC0DD\uC131\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\n\ \   -i  \uC9C0\uC815\uB41C jar \uD30C\uC77C\uC5D0 \uB300\uD55C \uC778\uB371\uC2A4 \uC815\uBCF4\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4.\n\ \   -C  \uC9C0\uC815\uB41C \uB514\uB809\uD1A0\uB9AC\uB85C \uBCC0\uACBD\uD558\uACE0 \uB2E4\uC74C \uD30C\uC77C\uC744 \uD3EC\uD568\uD569\uB2C8\uB2E4.\n\uD2B9\uC815 \uD30C\uC77C\uC774 \uB514\uB809\uD1A0\uB9AC\uC77C \uACBD\uC6B0 \uC21C\uD658\uC801\uC73C\uB85C \uCC98\uB9AC\uB429\uB2C8\uB2E4.\nManifest \uD30C\uC77C \uC774\uB984, \uC544\uCE74\uC774\uBE0C \uD30C\uC77C \uC774\uB984 \uBC0F \uC2DC\uC791 \uC9C0\uC810 \uC774\uB984\uC740\n'm', 'f' \uBC0F 'e' \uD50C\uB798\uADF8\uC640 \uB3D9\uC77C\uD55C \uC21C\uC11C\uB85C \uC9C0\uC815\uB429\uB2C8\uB2E4.\n\n\uC608 1: classes.jar\uB77C\uB294 \uC544\uCE74\uC774\uBE0C\uC5D0 \uB450 \uD074\uB798\uC2A4 \uD30C\uC77C\uC744 \uC544\uCE74\uC774\uBE0C\uD558\uB294 \uBC29\uBC95: \n\ \      jar cvf classes.jar Foo.class Bar.class \n\uC608 2: \uAE30\uC874 Manifest \uD30C\uC77C 'mymanifest'\uB97C \uC0AC\uC6A9\uD558\uC5EC\n\ \          foo/ \uB514\uB809\uD1A0\uB9AC\uC758 \uBAA8\uB4E0 \uD30C\uC77C\uC744 'classes.jar'\uB85C \uC544\uCE74\uC774\uBE0C\uD558\uB294 \uBC29\uBC95: \n\ \      jar cvfm classes.jar mymanifest -C foo/ .\n
--- a/jdk/src/share/classes/sun/tools/jar/resources/jar_pt_BR.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_pt_BR.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2006, 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
@@ -23,25 +23,25 @@
 # questions.
 #
 
-error.cant.open=n\u00e3o \u00e9 poss\u00edvel abrir: {0} 
-error.illegal.option=Op\u00e7\u00e3o ilegal: {0}
-error.bad.option=Uma das op\u00e7\u00f5es -{ctxu} deve ser especificada.
-error.bad.cflag=sinalizador 'c' requer que os arquivos de manifesto ou entrada sejam especificados!
-error.bad.uflag=sinalizador 'u' requer os arquivos de manifesto, o sinalizador 'e' ou os arquivos de entrada sejam especificados!
-error.bad.eflag=sinalizador 'e' manifesto com o atributo 'Main-Class' n\u00e3o podem ser especificados \njuntos!
-error.nosuch.fileordir={0} : n\u00e3o h\u00e1 tal arquivo ou diret\u00f3rio
+error.cant.open=n\u00E3o \u00E9 poss\u00EDvel abrir: {0} 
+error.illegal.option=Op\u00E7\u00E3o inv\u00E1lida: {0}
+error.bad.option=Uma das op\u00E7\u00F5es -{ctxu} deve ser especificada.
+error.bad.cflag=flag 'c' requer que os arquivos de manifesto ou entrada sejam especificados!
+error.bad.uflag=o flag 'u' requer que arquivos de manifesto, o flag 'e' ou arquivos de entrada sejam especificados!
+error.bad.eflag=o flag 'e' e manifesto com o atributo 'Main-Class' n\u00E3o podem ser especificados \njuntos!
+error.nosuch.fileordir={0} : n\u00E3o h\u00E1 tal arquivo ou diret\u00F3rio
 error.write.file=Erro ao gravar o arquivo jar existente
-error.create.dir={0} : n\u00e3o foi poss\u00edvel gravar o diret\u00f3rio
-error.incorrect.length=largura incorreta durante processamento: {0}
+error.create.dir={0} : n\u00E3o foi poss\u00EDvel criar o diret\u00F3rio
+error.incorrect.length=largura incorreta durante o processamento: {0}
 out.added.manifest=manifesto adicionado
 out.update.manifest=manifesto atualizado
 out.ignore.entry=ignorando entrada {0}
 out.adding=adicionando: {0}
 out.deflated=(vazio {0}%)
 out.stored=(armazenado 0%)
-out.create=\ \ criando: {0}
-out.extracted=extra\u00eddo: {0}
-out.inflated=\ \cheio: {0}
-out.size=(dento = {0}) (fora= {1})
+out.create=\ \ criado: {0}
+out.extracted=extra\u00EDdo: {0}
+out.inflated=\ \\cheio: {0}
+out.size=(dentro = {0}) (fora= {1})
 
-usage=Uso: arquivos jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] ...\nOp\u00e7\u00f5es:\n\ \   -c  cria novo arquivo de armazenamento\n\ \   -t  lista o sum\u00e1rio do arquivo de armazenamento\n\ \   -x  extrai arquivos nomeados (ou todos) do arquivo de armazenamento\n\ \   -u  atualizar o arquivo de armazenamento existente\n\ \   -v  gera sa\u00edda detalhada na sa\u00edda padr\u00e3o\n\ \   -f  especifica o nome do arquivo do arquivo de armazenamento\n\ \   -m  inclui as informa\u00e7\u00f5es do manifesto do arquivo de manifesto especificado\n\ \   -e  especifica o ponto de entrada do aplicativo para aplicativo independente \n\ \       empacotando em um arquivo jar execut\u00e1vel\n\ \   -0  armazena somente; n\u00e3o usa compacta\u00e7\u00e3o ZIP\n\ \   -M  n\u00e3o cria um arquivo de manifesto para as entradas\n\ \   -i  gera informa\u00e7\u00f5es de \u00edndice para os arquivos especificados\n\ \   -C  altera para o diret\u00f3rio e inclui o arquivo seguinte\nSe nenhum arquivo for um diret\u00f3rio, ent\u00e3o \u00e9 processado repetidamente.\nO nome do arquivo de manifesto, o nome do arquivo de armazenamento e o nome do ponto de entrada s\u00e3o\nespecificados na mesma ordem dos sinalizadores  'm', 'f' e 'e'.\n\nExemplo 1: para arquivar dois arquivos de classe em um arquivo de armazenamento denominado classes.jar: \n\ \      jar cvf classes.jar Foo.class Bar.class \nExemplo 2: use um arquivo de manifesto existente 'mymanifest' e arquive todos os\n\ \          arquivos no diret\u00f3rio foo/ na 'classes.jar': \n\ \      jar cvfm classes.jar mymanifest -C foo/ .\n
+usage=Uso: arquivos jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] ...\nOp\u00E7\u00F5es:\n\ \   -c  cria novo arquivo compactado\n\ \   -t  lista o sum\u00E1rio do arquivo compactado\n\ \   -x  extrai arquivos com o nome (ou todos) do arquivo compactado\n\ \   -u  atualizar o arquivo compactado existente\n\ \   -v  gera sa\u00EDda detalhada na sa\u00EDda padr\u00E3o\n\ \   -f  especifica o nome do arquivo do arquivo compactado\n\ \   -m  inclui as informa\u00E7\u00F5es do manifesto do arquivo de manifesto especificado\n\ \   -e  especifica o ponto de entrada da aplica\u00E7\u00E3o para aplica\u00E7\u00E3o independente \n\ \       empacotando em um arquivo jar execut\u00E1vel\n\ \   -0  armazena somente; n\u00E3o usa compacta\u00E7\u00E3o ZIP\n\ \   -M  n\u00E3o cria um arquivo de manifesto para as entradas\n\ \   -i  gera informa\u00E7\u00F5es de \u00EDndice para os arquivos especificados\n\ \   -C  altera para o diret\u00F3rio e inclui o arquivo seguinte\nSe nenhum arquivo for um diret\u00F3rio, ent\u00E3o ser\u00E1 processado repetidamente.\nO nome do arquivo de manifesto, o nome do arquivo compactado e o nome do ponto de entrada s\u00E3o\nespecificados na mesma ordem dos flags  'm', 'f' e 'e'.\n\nExemplo 1: para arquivar dois arquivos de classe em um arquivo compactado com o nome classes.jar: \n\ \      jar cvf classes.jar Foo.class Bar.class \nExemplo 2: use um arquivo de manifesto existente 'mymanifest' e arquive todos os\n\ \          arquivos no diret\u00F3rio foo/ na 'classes.jar': \n\ \      jar cvfm classes.jar mymanifest -C foo/ .\n
--- a/jdk/src/share/classes/sun/tools/jar/resources/jar_sv.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_sv.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2006, 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
@@ -23,69 +23,25 @@
 # questions.
 #
 
-error.cant.open=\
-     kan inte \u00f6ppna: {0} 
-error.illegal.option=\
-        Ogiltigt alternativ: {0}
-error.bad.option=\
-        Ett av alternativen -{ctxu} m\u00e5ste anges.
-error.bad.cflag=\
-        f\u00f6r c-flaggan m\u00e5ste manifest- eller indatafiler anges.
-error.bad.uflag=\
-        f\u00f6r u-flaggan m\u00e5ste manifest-, e-flagg- eller indatafiler anges.
-error.bad.eflag=\
-	e-flaggan och manifest med attributet Main-Class kan inte anges \n\
-	 tillsammans.
-error.nosuch.fileordir=\
-        {0} : Det finns ingen s\u00e5dan fil eller katalog.
-error.write.file=\
-        Det uppstod ett fel vid skrivning till befintlig jar-fil.
-error.create.dir=\
-        {0} : Det gick inte att skapa n\u00e5gon katalog.
-error.incorrect.length=\
-        ogiltig l\u00e4ngd vid bearbetning: {0}
-out.added.manifest=\
-        extra manifestfil
-out.update.manifest=\
-        uppdaterad manifestfil
-out.ignore.entry=\
-        ignorerar posten {0}
-out.adding=\
-        l\u00e4gger till: {0}
-out.deflated=\
-        \ \({0}% komprimerat)
-out.stored=\
-        \ \(0% lagrat)
-out.create=\
-        \ \ \ \ skapad: {0}
-out.extracted=\
-        extraherat: {0}
-out.inflated=\
-        expanderat: {0}
-out.size=\
-        \ \(in = {0}) (ut = {1})
+error.cant.open=kan inte \u00F6ppna: {0} 
+error.illegal.option=Otill\u00E5tet alternativ: {0}
+error.bad.option=Ett av alternativen -{ctxu} m\u00E5ste anges.
+error.bad.cflag=f\u00F6r c-flaggan m\u00E5ste manifest- eller indatafiler anges.
+error.bad.uflag=f\u00F6r u-flaggan m\u00E5ste manifest-, e-flagg- eller indatafiler anges.
+error.bad.eflag=e-flaggan och manifest med attributet Main-Class kan inte anges \ntillsammans.
+error.nosuch.fileordir={0} : det finns ingen s\u00E5dan fil eller katalog
+error.write.file=Det uppstod ett fel vid skrivning till befintlig jar-fil.
+error.create.dir={0} : kunde inte skapa n\u00E5gon katalog
+error.incorrect.length=ogiltig l\u00E4ngd vid bearbetning: {0}
+out.added.manifest=tillagt manifestfil
+out.update.manifest=uppdaterat manifest
+out.ignore.entry=ignorerar posten {0}
+out.adding=l\u00E4gger till: {0}
+out.deflated=({0}% packat)
+out.stored=(0% lagrat)
+out.create=\ \ skapad: {0}
+out.extracted=extraherat: {0}
+out.inflated=\\uppackat: {0}
+out.size=(in = {0}) (ut = {1})
 
-usage=\
-Anv\u00e4ndning: jar-filer {ctxui}[vfm0Me] [jar-fil] [manifestfil] [startpunkt] [-C-katalog] files ...\n\
-Alternativ:\n\
-\ \   -c  skapa nytt arkiv\n\
-\ \   -t  lista inneh\u00e5llsf\u00f6rteckning f\u00f6r arkiv\n\
-\ \   -x  extrahera specifika (eller alla) filer fr\u00e5n arkiv\n\
-\ \   -u  uppdatera befintligt arkiv\n\
-\ \   -v  generera ytterligare text f\u00f6r standardtext\n\
-\ \   -f  ange arkivfilens namn\n\
-\ \   -m  ta med manifestinformation fr\u00e5n angiven manifestfil\n\
-\ \   -e  ange programstartpunkt f\u00f6r frist\u00e5ende program \n\
-\ \       som medf\u00f6ljer i en k\u00f6rbar jar-fil\n\
-\ \   -0  lagra endast (ingen zip-komprimering)\n\
-\ \   -M  skapa inte n\u00e5gon manifestfil f\u00f6r posterna\n\
-\ \   -i  generera indexinformation f\u00f6r de angivna jar-filerna\n\
-\ \   -C  \u00e4ndra till den angivna katalogen och ta med f\u00f6ljande fil\n\
-Om en fil \u00e4r en katalog bearbetas den rekursivt.\n\
-Namnen p\u00e5 manifestfilen, arkivfilen och startpunkten anges i samma\n\
-ordning som m-, f- och e-flaggorna.\n\n\
-Exempel 1: S\u00e5 h\u00e4r arkiverar du tv\u00e5 klassfiler i ett arkiv vid namn classes.jar: \n\
-\ \      jar cvf classes.jar Foo.class Bar.class \n\
-Exempel 2: Anv\u00e4nd en befintlig manifestfil (mymanifest) och arkivera alla\n\
-\ \          filer fr\u00e5n katalogen foo/ i classes.jar: \n\
-\ \      jar cvfm classes.jar mymanifest -C foo/ .\n
+usage=Syntax: jar-filer {ctxui}[vfm0Me] [jar-fil] [manifestfil] [startpunkt] [-C-katalog] ...\nAlternativ:\n\ \   -c  skapa nytt arkiv\n\ \   -t  lista inneh\u00E5llsf\u00F6rteckning f\u00F6r arkiv\n\ \   -x  extrahera namngivna (eller alla) filer fr\u00E5n arkiv\n\ \   -u  uppdatera befintligt arkiv\n\ \   -v  generera utf\u00F6rliga utdata vid standardutmatning\n\ \   -f  ange arkivfilens namn\n\ \   -m  inkludera manifestinformation fr\u00E5n angivet manifest\n\ \   -e  ange programstartpunkt f\u00F6r frist\u00E5ende applikation \n\ \       som medf\u00F6ljer i en jar-programfil\n\ \   -0  endast lagra  (ingen zip-komprimering)\n\ \   -M  skapa inte n\u00E5gon manifestfil f\u00F6r posterna\n\ \   -i  generera indexinformation f\u00F6r de angivna jar-filerna\n\ \   -C  \u00E4ndra till den angivna katalogen och inkludera f\u00F6ljande fil\nOm en fil \u00E4r en katalog bearbetas den rekursivt.\nNamnen p\u00E5 manifestfilen, arkivfilen och startpunkten anges i samma\nordning som m-, f- och e-flaggorna.\n\nExempel 1: S\u00E5 h\u00E4r arkiverar du tv\u00E5 klassfiler i ett arkiv med namnet classes.jar: \n\ \      jar cvf classes.jar Foo.class Bar.class \nExempel 2: Anv\u00E4nd en befintlig manifestfil (mymanifest) och arkivera alla\n\ \          filer fr\u00E5n katalogen foo/ i classes.jar: \n\ \      jar cvfm classes.jar mymanifest -C foo/ .\n
--- a/jdk/src/share/classes/sun/tools/jar/resources/jar_zh_CN.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_zh_CN.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -23,69 +23,25 @@
 # questions.
 #
 
-error.cant.open=\
-     \u4e0d\u80fd\u6253\u5f00\uff1a{0} 
-error.illegal.option=\
-        \u975e\u6cd5\u9009\u9879\uff1a{0}
-error.bad.option=\
-        \u5fc5\u987b\u6307\u5b9a {ctxu} \u4e2d\u7684\u4efb\u4e00\u9009\u9879\u3002
-error.bad.cflag=\
-'c' \u6807\u5fd7\u8981\u6c42\u6307\u5b9a\u6e05\u5355\u6216\u8f93\u5165\u6587\u4ef6\uff01
-error.bad.uflag=\
-'u' \u6807\u5fd7\u8981\u6c42\u6307\u5b9a\u6e05\u5355\u3001'e' \u6807\u5fd7\u6216\u8f93\u5165\u6587\u4ef6\uff01
-error.bad.eflag=\
-	\u4e0d\u80fd\u540c\u65f6\u6307\u5b9a 'e' \u6807\u5fd7\u548c\u5177\u6709 'Main-Class' \u5c5e\u6027\u7684\n\
-	 \u6e05\u5355\uff01
-error.nosuch.fileordir=\
-        \u6ca1\u6709\u8fd9\u4e2a\u6587\u4ef6\u6216\u76ee\u5f55\uff1a{0}
-error.write.file=\
-        \u5199\u5b58\u5728\u7684jar\u6587\u4ef6\u65f6\u9519\u8bef
-error.create.dir=\
-        \u4e0d\u80fd\u521b\u5efa\u76ee\u5f55\uff1a{0}
-error.incorrect.length=\
-        \u5904\u7406\u65f6\u9047\u5230\u4e0d\u6b63\u786e\u7684\u957f\u5ea6\uff1a{0}
-out.added.manifest=\
-        \u6807\u660e\u6e05\u5355(manifest)
-out.update.manifest=\
-        \u66f4\u65b0\u6e05\u5355(manifest)
-out.ignore.entry=\
-        \u5ffd\u7565\u9879 {0}
-out.adding=\
-        \u589e\u52a0\uff1a{0}
-out.deflated=\
-        (\u538b\u7f29\u4e86 {0}%)
-out.stored=\
-        (\u5b58\u50a8\u4e86 0%)
-out.create=\
-        \ \ \u521b\u5efa\uff1a{0}
-out.extracted=\
-        \u5c55\u5f00\uff1a{0}
-out.inflated=\
-        \ \ \u89e3\u538b {0}
-out.size=\
-        (\u8bfb\u5165= {0}) (\u5199\u51fa= {1})
+error.cant.open=\u65E0\u6CD5\u6253\u5F00: {0} 
+error.illegal.option=\u975E\u6CD5\u9009\u9879: {0}
+error.bad.option=\u5FC5\u987B\u6307\u5B9A {ctxu} \u4E2D\u7684\u4EFB\u4E00\u9009\u9879\u3002
+error.bad.cflag='c' \u6807\u8BB0\u8981\u6C42\u6307\u5B9A\u6E05\u5355\u6216\u8F93\u5165\u6587\u4EF6!
+error.bad.uflag='u' \u6807\u8BB0\u8981\u6C42\u6307\u5B9A\u6E05\u5355, 'e' \u6807\u8BB0\u6216\u8F93\u5165\u6587\u4EF6!
+error.bad.eflag=\u4E0D\u80FD\u540C\u65F6\u6307\u5B9A 'e' \u6807\u8BB0\u548C\u5177\u6709 'Main-Class' \u5C5E\u6027\u7684\n\u6E05\u5355!
+error.nosuch.fileordir={0}: \u6CA1\u6709\u8FD9\u4E2A\u6587\u4EF6\u6216\u76EE\u5F55
+error.write.file=\u5199\u5165\u73B0\u6709\u7684 jar \u6587\u4EF6\u65F6\u51FA\u9519
+error.create.dir={0}: \u65E0\u6CD5\u521B\u5EFA\u76EE\u5F55
+error.incorrect.length=\u5904\u7406\u65F6\u9047\u5230\u4E0D\u6B63\u786E\u7684\u957F\u5EA6: {0}
+out.added.manifest=\u5DF2\u6DFB\u52A0\u6E05\u5355
+out.update.manifest=\u5DF2\u66F4\u65B0\u6E05\u5355
+out.ignore.entry=\u6B63\u5728\u5FFD\u7565\u6761\u76EE{0}
+out.adding=\u6B63\u5728\u6DFB\u52A0: {0}
+out.deflated=(\u538B\u7F29\u4E86 {0}%)
+out.stored=(\u5B58\u50A8\u4E86 0%)
+out.create=\ \ \u5DF2\u521B\u5EFA: {0}
+out.extracted=\u5DF2\u63D0\u53D6: {0}
+out.inflated=\ \ \u5DF2\u89E3\u538B: {0}
+out.size=(\u8F93\u5165 = {0}) (\u8F93\u51FA = {1})
 
-usage=\
-\u7528\u6cd5: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\n\
-\u9009\u9879\u5305\u62ec\uff1a\n\
-\ \   -c  \u521b\u5efa\u65b0\u7684\u5f52\u6863\u6587\u4ef6\n\
-\ \   -t  \u5217\u51fa\u5f52\u6863\u76ee\u5f55\n\
-\ \   -x  \u89e3\u538b\u7f29\u5df2\u5f52\u6863\u7684\u6307\u5b9a\uff08\u6216\u6240\u6709\uff09\u6587\u4ef6\n\
-\ \   -u  \u66f4\u65b0\u73b0\u6709\u7684\u5f52\u6863\u6587\u4ef6\n\
-\ \   -v  \u5728\u6807\u51c6\u8f93\u51fa\u4e2d\u751f\u6210\u8be6\u7ec6\u8f93\u51fa\n\
-\ \   -f  \u6307\u5b9a\u5f52\u6863\u6587\u4ef6\u540d\n\
-\ \   -m  \u5305\u542b\u6307\u5b9a\u6e05\u5355\u6587\u4ef6\u4e2d\u7684\u6e05\u5355\u4fe1\u606f\n\
-\ \   -e  \u4e3a\u6346\u7ed1\u5230\u53ef\u6267\u884c jar \u6587\u4ef6\u7684\u72ec\u7acb\u5e94\u7528\u7a0b\u5e8f\n\
-\ \       \u6307\u5b9a\u5e94\u7528\u7a0b\u5e8f\u5165\u53e3\u70b9\n\
-\ \   -0  \u4ec5\u5b58\u50a8\uff1b\u4e0d\u4f7f\u7528\u4efb\u4f55 ZIP \u538b\u7f29\n\
-\ \   -M  \u4e0d\u521b\u5efa\u6761\u76ee\u7684\u6e05\u5355\u6587\u4ef6\n\
-\ \   -i  \u4e3a\u6307\u5b9a\u7684 jar \u6587\u4ef6\u751f\u6210\u7d22\u5f15\u4fe1\u606f\n\
-\ \   -C  \u66f4\u6539\u4e3a\u6307\u5b9a\u7684\u76ee\u5f55\u5e76\u5305\u542b\u5176\u4e2d\u7684\u6587\u4ef6\n\
-\u5982\u679c\u6709\u4efb\u4f55\u76ee\u5f55\u6587\u4ef6\uff0c\u5219\u5bf9\u5176\u8fdb\u884c\u9012\u5f52\u5904\u7406\u3002\n\
-\u6e05\u5355\u6587\u4ef6\u540d\u3001\u5f52\u6863\u6587\u4ef6\u540d\u548c\u5165\u53e3\u70b9\u540d\u7684\u6307\u5b9a\u987a\u5e8f\n\
-\u4e0e "m"\u3001"f" \u548c "e" \u6807\u5fd7\u7684\u6307\u5b9a\u987a\u5e8f\u76f8\u540c\u3002\n\n\
-\u793a\u4f8b 1\uff1a\u5c06\u4e24\u4e2a\u7c7b\u6587\u4ef6\u5f52\u6863\u5230\u4e00\u4e2a\u540d\u4e3a classes.jar \u7684\u5f52\u6863\u6587\u4ef6\u4e2d\uff1a\n\
-\ \      jar cvf classes.jar Foo.class Bar.class \n\
-\u793a\u4f8b 2\uff1a\u4f7f\u7528\u73b0\u6709\u7684\u6e05\u5355\u6587\u4ef6 "mymanifest" \u5e76\n\
-\ \          \u5c06 foo/ \u76ee\u5f55\u4e2d\u7684\u6240\u6709\u6587\u4ef6\u5f52\u6863\u5230 "classes.jar" \u4e2d\uff1a\n\
-\ \      jar cvfm classes.jar mymanifest -C foo/ .\n
+usage=\u7528\u6CD5: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\n\u9009\u9879\u5305\u62EC: \n\ \   -c  \u521B\u5EFA\u65B0\u7684\u5F52\u6863\u6587\u4EF6\n\ \   -t  \u5217\u51FA\u5F52\u6863\u76EE\u5F55\n\ \   -x  \u4ECE\u6863\u6848\u4E2D\u63D0\u53D6\u6307\u5B9A\u7684 (\u6216\u6240\u6709) \u6587\u4EF6\n\ \   -u  \u66F4\u65B0\u73B0\u6709\u7684\u5F52\u6863\u6587\u4EF6\n\ \   -v  \u5728\u6807\u51C6\u8F93\u51FA\u4E2D\u751F\u6210\u8BE6\u7EC6\u8F93\u51FA\n\ \   -f  \u6307\u5B9A\u5F52\u6863\u6587\u4EF6\u540D\n\ \   -m  \u5305\u542B\u6307\u5B9A\u6E05\u5355\u6587\u4EF6\u4E2D\u7684\u6E05\u5355\u4FE1\u606F\n\ \   -e  \u4E3A\u6346\u7ED1\u5230\u53EF\u6267\u884C jar \u6587\u4EF6\u7684\u72EC\u7ACB\u5E94\u7528\u7A0B\u5E8F\n\ \       \u6307\u5B9A\u5E94\u7528\u7A0B\u5E8F\u5165\u53E3\u70B9\n\ \   -0  \u4EC5\u5B58\u50A8; \u4E0D\u4F7F\u7528\u60C5\u51B5\u4EFB\u4F55 ZIP \u538B\u7F29\n\ \   -M  \u4E0D\u521B\u5EFA\u6761\u76EE\u7684\u6E05\u5355\u6587\u4EF6\n\ \   -i  \u4E3A\u6307\u5B9A\u7684 jar \u6587\u4EF6\u751F\u6210\u7D22\u5F15\u4FE1\u606F\n\ \   -C  \u66F4\u6539\u4E3A\u6307\u5B9A\u7684\u76EE\u5F55\u5E76\u5305\u542B\u5176\u4E2D\u7684\u6587\u4EF6\n\u5982\u679C\u6709\u4EFB\u4F55\u76EE\u5F55\u6587\u4EF6, \u5219\u5BF9\u5176\u8FDB\u884C\u9012\u5F52\u5904\u7406\u3002\n\u6E05\u5355\u6587\u4EF6\u540D, \u5F52\u6863\u6587\u4EF6\u540D\u548C\u5165\u53E3\u70B9\u540D\u79F0\u7684\u6307\u5B9A\u987A\u5E8F\n\u4E0E 'm', 'f' \u548C 'e' \u6807\u8BB0\u7684\u6307\u5B9A\u987A\u5E8F\u76F8\u540C\u3002\n\n\u793A\u4F8B 1: \u5C06\u4E24\u4E2A\u7C7B\u6587\u4EF6\u5F52\u6863\u5230\u4E00\u4E2A\u540D\u4E3A classes.jar \u7684\u5F52\u6863\u6587\u4EF6\u4E2D: \n\ \      jar cvf classes.jar Foo.class Bar.class \n\u793A\u4F8B 2: \u4F7F\u7528\u73B0\u6709\u7684\u6E05\u5355\u6587\u4EF6 'mymanifest' \u5E76\n\ \          \u5C06 foo/ \u76EE\u5F55\u4E2D\u7684\u6240\u6709\u6587\u4EF6\u5F52\u6863\u5230 'classes.jar' \u4E2D: \n\ \      jar cvfm classes.jar mymanifest -C foo/\u3002\n
--- a/jdk/src/share/classes/sun/tools/jar/resources/jar_zh_TW.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/tools/jar/resources/jar_zh_TW.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2006, 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
@@ -23,69 +23,25 @@
 # questions.
 #
 
-error.cant.open=\
-     \u7121\u6cd5\u958b\u555f\ufe30{0} 
-error.illegal.option=\
-        \u975e\u6cd5\u7684\u9078\u9805\ufe30{0}
-error.bad.option=\
-        \u5176\u4e2d\u4e00\u500b\u9078\u9805 -{ctxu} \u5fc5\u9808\u52a0\u4ee5\u6307\u5b9a\u3002
-error.bad.cflag=\
-'c' \u65d7\u6a19\u8981\u6c42\u6307\u5b9a\u6e05\u55ae\u6a94\u6848\u6216\u8f38\u5165\u6a94\u6848\ufe57
-error.bad.uflag=\
-'u' \u65d7\u6a19\u8981\u6c42\u6307\u5b9a\u6e05\u55ae\u6a94\u6848\u3001'e' \u65d7\u6a19\u6a94\u6848\u6216\u8f38\u5165\u6a94\u6848\ufe57
-error.bad.eflag=\
-	\u7121\u6cd5\u540c\u6642\u6307\u5b9a 'e' \u65d7\u6a19\u548c\u5177\u6709 'Main-Class' \u5c6c\u6027\u7684\n\
-	\u6e05\u55ae\uff01
-error.nosuch.fileordir=\
-        {0}\ufe30\u6c92\u6709\u9019\u985e\u6a94\u6848\u6216\u76ee\u9304
-error.write.file=\
-        \u5beb\u5165\u73fe\u6709\u7684 jar \u6a94\u6848\u6642\u767c\u751f\u932f\u8aa4
-error.create.dir=\
-        {0}\ufe30\u7121\u6cd5\u5efa\u7acb\u76ee\u9304
-error.incorrect.length=\
-        \u8655\u7406\ufe30{0} \u6642\u9577\u5ea6\u4e0d\u6b63\u78ba
-out.added.manifest=\
-        \u65b0\u589e manifest
-out.update.manifest=\
-        \u66f4\u65b0 manifest
-out.ignore.entry=\
-        \u5ffd\u7565\u9805\u76ee {0}
-out.adding=\
-        \u65b0\u589e\ufe30{0}
-out.deflated=\
-        (\u58d3\u7e2e {0}%)
-out.stored=\
-        (\u5132\u5b58 0%)
-out.create=\
-        \u5efa\u7acb\ufe30{0}
-out.extracted=\
-        \u64f7\u53d6\ufe30{0}
-out.inflated=\
-        \u64f4\u5c55\ufe30{0}
-out.size=\
-        \ (\u8b80={0})(\u5beb={1})
+error.cant.open=\u7121\u6CD5\u958B\u555F: {0} 
+error.illegal.option=\u7121\u6548\u7684\u9078\u9805: {0}
+error.bad.option=\u5176\u4E2D\u4E00\u500B\u9078\u9805 -{ctxu} \u5FC5\u9808\u52A0\u4EE5\u6307\u5B9A\u3002
+error.bad.cflag='c' \u65D7\u6A19\u8981\u6C42\u6307\u5B9A\u8CC7\u8A0A\u6E05\u55AE\u6216\u8F38\u5165\u6A94\u6848\uFF01
+error.bad.uflag='u' \u65D7\u6A19\u8981\u6C42\u6307\u5B9A\u8CC7\u8A0A\u6E05\u55AE\u3001'e' \u65D7\u6A19\u6216\u8F38\u5165\u6A94\u6848\uFF01
+error.bad.eflag=\u7121\u6CD5\u540C\u6642\u6307\u5B9A 'e' \u65D7\u6A19\u548C\u5177\u6709 'Main-Class' \u5C6C\u6027\u7684\n\u8CC7\u8A0A\u6E05\u55AE\uFF01
+error.nosuch.fileordir={0} : \u6C92\u6709\u9019\u985E\u6A94\u6848\u6216\u76EE\u9304
+error.write.file=\u5BEB\u5165\u73FE\u6709\u7684 jar \u6A94\u6848\u6642\u767C\u751F\u932F\u8AA4
+error.create.dir={0} : \u7121\u6CD5\u5EFA\u7ACB\u76EE\u9304
+error.incorrect.length=\u8655\u7406 {0} \u6642\u9577\u5EA6\u4E0D\u6B63\u78BA
+out.added.manifest=\u5DF2\u65B0\u589E\u8CC7\u8A0A\u6E05\u55AE
+out.update.manifest=\u5DF2\u66F4\u65B0\u8CC7\u8A0A\u6E05\u55AE
+out.ignore.entry=\u5FFD\u7565\u9805\u76EE {0}
+out.adding=\u65B0\u589E: {0}
+out.deflated=(\u58D3\u7E2E {0}%)
+out.stored=(\u5132\u5B58 0%)
+out.create=\ \ \u5EFA\u7ACB: {0}
+out.extracted=\u64F7\u53D6: {0}
+out.inflated=\ \\\u64F4\u5C55: {0}
+out.size=\ (\u8B80={0})(\u5BEB={1})
 
-usage=\
-\u7528\u6cd5\uff1ajar {ctxui}[vfm0Me] [jar \u6a94\u6848] [\u6e05\u55ae\u6a94\u6848] [\u9032\u5165\u9ede] [-C \u76ee\u9304] \u6a94\u6848 ...\n\
-\u9078\u9805\uff1a\n\
-\ \   -c  \u5efa\u7acb\u65b0\u7684\u6b78\u6a94\n\
-\ \   -t  \u5217\u51fa\u6b78\u6a94\u7684\u76ee\u9304\n\
-\ \   -x  \u5f9e\u6b78\u6a94\u4e2d\u64f7\u53d6\u5df2\u547d\u540d\u7684 (\u6216\u6240\u6709) \u6a94\u6848\n\
-\ \   -u  \u66f4\u65b0\u73fe\u6709\u6b78\u6a94\n\
-\ \   -v  \u5728\u6a19\u6e96\u8f38\u51fa\u4e2d\u7522\u751f\u8a73\u7d30\u8f38\u51fa\n\
-\ \   -f  \u6307\u5b9a\u6b78\u6a94\u6a94\u6848\u540d\u7a31\n\
-\ \   -m  \u5305\u542b\u6307\u5b9a\u6e05\u55ae\u6a94\u6848\u4e2d\u7684\u6e05\u55ae\u8cc7\u8a0a\n\
-\ \   -e  \u70ba\u7368\u7acb\u61c9\u7528\u7a0b\u5f0f\u6307\u5b9a\u61c9\u7528\u7a0b\u5f0f\u9032\u5165\u9ede\n\
-\ \       \u5df2\u96a8\u9644\u65bc\u53ef\u57f7\u884c jar \u6a94\u6848\u4e2d\n\
-\ \   -0  \u50c5\u5132\u5b58\uff1b\u4e0d\u4f7f\u7528 ZIP \u58d3\u7e2e\u65b9\u5f0f\n\
-\ \   -M  \u4e0d\u70ba\u9805\u76ee\u5efa\u7acb\u6e05\u55ae\u6a94\u6848\n\
-\ \   -i  \u70ba\u6307\u5b9a\u7684 jar \u6a94\u6848\u7522\u751f\u7d22\u5f15\u8cc7\u8a0a\n\
-\ \   -C  \u8b8a\u66f4\u81f3\u6307\u5b9a\u76ee\u9304\u4e26\u5305\u542b\u5f8c\u9762\u6240\u5217\u7684\u6a94\u6848\n\
-\u5982\u679c\u6709\u4efb\u4f55\u6a94\u6848\u662f\u76ee\u9304\uff0c\u5247\u6703\u5c0d\u5176\u9032\u884c\u905e\u8ff4\u8655\u7406\u3002\n\
-\u6e05\u55ae\u6a94\u6848\u540d\u7a31\u3001\u6b78\u6a94\u6a94\u6848\u540d\u7a31\u548c\u9032\u5165\u9ede\u540d\u7a31\n\
-\u7684\u6307\u5b9a\u9806\u5e8f\u8207\u6307\u5b9a 'm' \u65d7\u6a19\u3001'f' \u65d7\u6a19\u548c 'e' \u65d7\u6a19\u7684\u9806\u5e8f\u76f8\u540c\u3002\n\n\
-\u7bc4\u4f8b 1\uff1a\u5c07\u5169\u500b\u985e\u5225\u6a94\u6848\u6b78\u6a94\u81f3\u540d\u70ba classes.jar \u7684\u6b78\u6a94\u4e2d\uff1a\n\
-\ \      jar cvf classes.jar Foo.class Bar.class\n\
-\u7bc4\u4f8b 2\uff1a\u4f7f\u7528\u73fe\u6709\u6e05\u55ae\u6a94\u6848 'mymanifest' \u4e26\u5c07\n\
-\ \          foo/ \u76ee\u9304\u4e2d\u7684\u6240\u6709\u6a94\u6848\u6b78\u6a94\u81f3 'classes.jar' \u4e2d\uff1a\n\
-\ \      jar cvfm classes.jar mymanifest -C foo/ .\n
+usage=\u7528\u6CD5: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] \u6A94\u6848 ...\n\u9078\u9805:\n\ \   -c  \u5EFA\u7ACB\u65B0\u7684\u6B78\u6A94\n\ \   -t  \u5217\u51FA\u6B78\u6A94\u7684\u76EE\u9304\n\ \   -x  \u5F9E\u6B78\u6A94\u4E2D\u64F7\u53D6\u5DF2\u547D\u540D\u7684 (\u6216\u6240\u6709) \u6A94\u6848\n\ \   -u  \u66F4\u65B0\u73FE\u6709\u6B78\u6A94\n\ \   -v  \u5728\u6A19\u6E96\u8F38\u51FA\u4E2D\u7522\u751F\u8A73\u7D30\u8F38\u51FA\n\ \   -f  \u6307\u5B9A\u6B78\u6A94\u6A94\u6848\u540D\u7A31\n\ \   -m  \u5305\u542B\u6307\u5B9A\u8CC7\u8A0A\u6E05\u55AE\u4E2D\u7684\u8CC7\u8A0A\u6E05\u55AE\u8CC7\u8A0A\n\ \   -e  \u70BA\u7368\u7ACB\u61C9\u7528\u7A0B\u5F0F\u6307\u5B9A\u61C9\u7528\u7A0B\u5F0F\u9032\u5165\u9EDE\n\ \       \u5DF2\u96A8\u9644\u65BC\u53EF\u57F7\u884C jar \u6A94\u6848\u4E2D\n\ \   -0  \u50C5\u5132\u5B58; \u4E0D\u4F7F\u7528 ZIP \u58D3\u7E2E\u65B9\u5F0F\n\ \   -M  \u4E0D\u70BA\u9805\u76EE\u5EFA\u7ACB\u8CC7\u8A0A\u6E05\u55AE\u6A94\u6848\n\ \   -i  \u70BA\u6307\u5B9A\u7684 jar \u6A94\u6848\u7522\u751F\u7D22\u5F15\u8CC7\u8A0A\n\ \   -C  \u8B8A\u66F4\u81F3\u6307\u5B9A\u76EE\u9304\u4E26\u5305\u542B\u5F8C\u9762\u6240\u5217\u7684\u6A94\u6848\n\u5982\u679C\u6709\u4EFB\u4F55\u6A94\u6848\u662F\u76EE\u9304\uFF0C\u5247\u6703\u5C0D\u5176\u9032\u884C\u905E\u8FF4\u8655\u7406\u3002\n\u6E05\u55AE\u6A94\u6848\u540D\u7A31\u3001\u6B78\u6A94\u6A94\u6848\u540D\u7A31\u548C\u9032\u5165\u9EDE\u540D\u7A31\n\u7684\u6307\u5B9A\u9806\u5E8F\u8207\u6307\u5B9A 'm' \u65D7\u6A19\u3001'f' \u65D7\u6A19\u548C 'e' \u65D7\u6A19\u7684\u9806\u5E8F\u76F8\u540C\u3002\n\n\u7BC4\u4F8B 1: \u5C07\u5169\u500B\u985E\u5225\u6A94\u6848\u6B78\u6A94\u81F3\u540D\u70BA classes.jar \u7684\u6B78\u6A94\u4E2D: \n\ \      jar cvf classes.jar Foo.class Bar.class\n\u7BC4\u4F8B 2: \u4F7F\u7528\u73FE\u6709\u8CC7\u8A0A\u6E05\u55AE\u6A94\u6848 'mymanifest' \u4E26\u5C07\n\ \          foo/ \u76EE\u9304\u4E2D\u7684\u6240\u6709\u6A94\u6848\u6B78\u6A94\u81F3 'classes.jar' \u4E2D: \n\ \      jar cvfm classes.jar mymanifest -C foo/ .\n
--- a/jdk/src/share/classes/sun/tools/javac/resources/javac_ja.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/tools/javac/resources/javac_ja.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1996, 1999, 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
@@ -23,612 +23,292 @@
 # questions.
 #
 
-javac.err.internal=\
-	\u5185\u90e8\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
-javac.err.eof.in.comment=\
-	\u30b3\u30e1\u30f3\u30c8\u304c\u5165\u529b\u306e\u6700\u5f8c\u3067\u7d42\u4e86\u3057\u3066\u3044\u307e\u305b\u3093\u3002
-javac.err.eof.in.string=\
-	\u6587\u5b57\u5217\u304c\u5165\u529b\u306e\u6700\u5f8c\u3067\u7d42\u4e86\u3057\u3066\u3044\u307e\u305b\u3093\u3002
-javac.err.newline.in.string=\
-	\u6587\u5b57\u5217\u304c\u884c\u306e\u6700\u5f8c\u3067\u7d42\u4e86\u3057\u3066\u3044\u307e\u305b\u3093\u3002
-javac.err.invalid.char.constant=\
-	\u7121\u52b9\u306a\u6587\u5b57\u5b9a\u6570\u3067\u3059\u3002
-javac.err.unbalanced.paren=\
-	\u62ec\u5f27\u304c\u91e3\u308a\u5408\u3063\u3066\u3044\u307e\u305b\u3093\u3002
-javac.err.invalid.escape.char=\
-	\u30a8\u30b9\u30b1\u30fc\u30d7\u6587\u5b57\u304c\u7121\u52b9\u3067\u3059\u3002
-javac.err.invalid.hex.number=\
-	16 \u9032\u6570\u5b57\u306f\u5c11\u306a\u304f\u3068\u3082 1 \u6841\u306e 16 \u9032\u6570\u3092\u542b\u307e\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.invalid.octal.number=\
-	8 \u9032\u6570\u5b57\u5185\u306b\u7121\u52b9\u306a\u6587\u5b57\u304c\u3042\u308a\u307e\u3059\u3002
-javac.err.invalid.number=\
-	\u6570\u5b57\u5185\u306b\u7121\u52b9\u306a\u6587\u5b57\u304c\u3042\u308a\u307e\u3059\u3002
-javac.err.funny.char=\
-	\u5165\u529b\u5185\u306b\u7121\u52b9\u306a\u6587\u5b57\u304c\u3042\u308a\u307e\u3059\u3002
-javac.err.float.format=\
-	\u6d6e\u52d5\u5c0f\u6570\u70b9\u306e\u5f62\u5f0f\u304c\u7121\u52b9\u3067\u3059\u3002
-javac.err.overflow.int.oct=\
-	\u6574\u6570\u30ea\u30c6\u30e9\u30eb\u304c\u7bc4\u56f2\u5916\u3067\u3059\u30028 \u9032\u6574\u6570\u30ea\u30c6\u30e9\u30eb\u306f 00 \u304b\u3089 037777777777 \
-	\u306e\u7bc4\u56f2\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.overflow.int.dec=\
-	\u6574\u6570\u30ea\u30c6\u30e9\u30eb\u304c\u7bc4\u56f2\u5916\u3067\u3059\u300210 \u9032\u6574\u6570\u30ea\u30c6\u30e9\u30eb\u306f -2147483648 \u304b\u3089 \
-	2147483647 \u306e\u7bc4\u56f2\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.overflow.int.hex=\
-	\u6574\u6570\u30ea\u30c6\u30e9\u30eb\u304c\u7bc4\u56f2\u5916\u3067\u3059\u300216 \u9032\u6574\u6570\u30ea\u30c6\u30e9\u30eb\u306f 0x0 \u304b\u3089 0xffffffff \
-	\u306e\u7bc4\u56f2\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.overflow.long.oct=\
-	\u6574\u6570\u30ea\u30c6\u30e9\u30eb\u304c\u7bc4\u56f2\u5916\u3067\u3059\u30028 \u9032\u30ed\u30f3\u30b0\u30ea\u30c6\u30e9\u30eb\u306f 00L \u304b\u3089 \
-	01777777777777777777777L \u306e\u7bc4\u56f2\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.overflow.long.dec=\
-	\u6574\u6570\u30ea\u30c6\u30e9\u30eb\u304c\u7bc4\u56f2\u5916\u3067\u3059\u300210 \u9032\u30ed\u30f3\u30b0\u30ea\u30c6\u30e9\u30eb\u306f -9223372036854775808L \
-	\u304b\u3089 9223372036854775807L \u306e\u7bc4\u56f2\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.overflow.long.hex=\
-	\u6574\u6570\u30ea\u30c6\u30e9\u30eb\u304c\u7bc4\u56f2\u5916\u3067\u3059\u300216 \u9032\u30ed\u30f3\u30b0\u30ea\u30c6\u30e9\u30eb\u306f 0x0L \u304b\u3089 \
-	0xffffffffffffffffL \u306e\u7bc4\u56f2\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.overflow.float=\
-	\u6570\u5024\u304c\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u3057\u307e\u3057\u305f: \u6d6e\u52d5\u30ea\u30c6\u30e9\u30eb\u304c\u5927\u304d\u904e\u304e\u307e\u3059\u3002
-javac.err.overflow.double=\
-	\u6570\u5024\u304c\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u3057\u307e\u3057\u305f: \u500d\u7cbe\u5ea6\u30ea\u30c6\u30e9\u30eb\u304c\u5927\u304d\u904e\u304e\u307e\u3059\u3002
-javac.err.underflow.float=\
-	\u6570\u5024\u304c\u30a2\u30f3\u30c0\u30fc\u30d5\u30ed\u30fc\u3057\u307e\u3057\u305f: \u6d6e\u52d5\u30ea\u30c6\u30e9\u30eb\u304c\u5c0f\u3055\u904e\u304e\u307e\u3059\u3002
-javac.err.underflow.double=\
-	\u6570\u5024\u304c\u30a2\u30f3\u30c0\u30fc\u30d5\u30ed\u30fc\u3057\u307e\u3057\u305f: \u500d\u7cbe\u5ea6\u30ea\u30c6\u30e9\u30eb\u304c\u5c0f\u3055\u904e\u304e\u307e\u3059\u3002
-javac.err.token.expected=\
-	''{0}'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002
-javac.err.statement.expected=\
-	\u6587\u304c\u3042\u308a\u307e\u305b\u3093\u3002
-javac.err.type.expected=\
-	\u578b\u304c\u3042\u308a\u307e\u305b\u3093\u3002
-javac.err.identifier.expected=\
-	\u8b58\u5225\u5b50\u304c\u3042\u308a\u307e\u305b\u3093\u3002
-javac.err.class.expected=\
-	\u30ad\u30fc\u30ef\u30fc\u30c9 ''class'' \u307e\u305f\u306f ''interface'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002
-javac.err.toplevel.expected=\
-	\u30af\u30e9\u30b9\u307e\u305f\u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u5ba3\u8a00\u304c\u3042\u308a\u307e\u305b\u3093\u3002
-javac.err.missing.term=\
-	\u9805\u304c\u3042\u308a\u307e\u305b\u3093\u3002
-javac.err.assign.in.conditionalexpr=\
-	\u4ee3\u5165\u5f0f\u306f\u6761\u4ef6\u5f0f (\u3064\u307e\u308a\u3001? : \u5f0f) \u306e 3 \u756a\u76ee\u306e\u90e8\u5206\u5f0f\u3068\u3057\u3066\u306f\u4f7f\u7528 \
-	\u3067\u304d\u307e\u305b\u3093\u3002 \
-	\u3053\u306e\u4ee3\u5165\u5f0f\u3092\u62ec\u5f27\u3067\u56f2\u3093\u3067\u5165\u529b\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002
-javac.err.else.without.if=\
-	''else'' \u3078\u306e ''if'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002
-javac.err.catch.without.try=\
-	''catch'' \u3078\u306e ''try'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002
-javac.err.finally.without.try=\
-	''finally'' \u3078\u306e ''try'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002
-javac.err.try.without.catch.finally=\
-	''try'' \u3078\u306e ''catch'' \u307e\u305f\u306f ''finally'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002
-javac.err.case.without.switch=\
-	switch \u6587\u306e\u5916\u306b ''case'' \u304c\u3042\u308a\u307e\u3059\u3002
-javac.err.default.without.switch=\
-	switch \u6587\u306e\u5916\u306b ''default'' \u304c\u3042\u308a\u307e\u3059\u3002
-javac.err.io.exception=\
-	{0} \u3067\u5165\u51fa\u529b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
-javac.err.io.exception.package=\
-	\u30d1\u30c3\u30b1\u30fc\u30b8 {0} \u306e\u6709\u7121\u3092\u78ba\u8a8d\u4e2d\u306b\u5165\u51fa\u529b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
-javac.err.malformed.attribute=\
-	{0} \u3092\u542b\u3080\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306b\u66f8\u5f0f\u304c\u4e0d\u6b63\u306a\u5c5e\u6027 ''{1}'' \u304c\u3042\u308a\u307e\u3059\u3002
-javac.err.array.index.required=\
-	\u914d\u5217\u306e\u6dfb\u3048\u5b57\u304c\u5fc5\u8981\u3067\u3059\u3002
-javac.err.not.array=\
-	[] \u306f\u914d\u5217\u306b\u306e\u307f\u9069\u7528\u3067\u304d\u307e\u3059\u3002{0} \u306b\u306f\u9069\u7528\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.array.dim.in.decl=\
-	\u5ba3\u8a00\u4e2d\u3067\u306f\u914d\u5217\u306e\u6b21\u5143\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.array.dim.in.type=\
-	\u578b\u8868\u73fe\u4e2d\u3067\u306f\u914d\u5217\u306e\u6b21\u5143\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.invalid.array.expr=\
-	\u914d\u5217\u5b9a\u6570\u306f\u521d\u671f\u5316\u5b50\u3067\u306e\u307f\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002
-javac.err.invalid.array.init=\
-	{0} \u578b\u3078\u306e\u521d\u671f\u5316\u5b50\u304c\u7121\u52b9\u3067\u3059\u3002
-javac.err.invalid.lhs.assignment=\
-	\u4ee3\u5165\u306e\u5de6\u8fba\u304c\u7121\u52b9\u3067\u3059\u3002
-javac.err.invalid.args=\
-	{0} \u3078\u306e\u5f15\u6570\u304c\u7121\u52b9\u3067\u3059\u3002
-javac.err.invalid.cast=\
-	{0} \u304b\u3089 {1} \u3078\u306e\u30ad\u30e3\u30b9\u30c8\u304c\u7121\u52b9\u3067\u3059\u3002
-javac.err.invalid.instanceof=\
-	{0} \u306f {1} \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306b\u306f\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.invalid.type.expr=\
-	\u578b\u5f0f\u304c\u7121\u52b9\u3067\u3059\u3002
-javac.err.anonymous.extends=\
-	\u540d\u524d\u306e\u306a\u3044\u30af\u30e9\u30b9\u304c ''extends'' \u7bc0\u307e\u305f\u306f ''implements'' \u7bc0\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.invalid.field.reference=\
-	{1} \u304b\u3089\u30d5\u30a3\u30fc\u30eb\u30c9 {0} \u3092\u53c2\u7167\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002
-javac.err.no.such.field=\
-	{1} \u306b\u306f\u5909\u6570 {0} \u306f\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-javac.err.no.field.access=\
-	{1} \u5185\u306e\u5909\u6570 {0} \u306f {2} \u304b\u3089\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.no.type.access=\
-	{1} \u5185\u306e\u5185\u90e8\u578b {0} \u306f {2} \u304b\u3089\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.cant.access.member.type=\
-	\u30e1\u30f3\u30d0\u30fc {0} \u3092\u6301\u3064\u578b {1} \u306f {2} \u304b\u3089\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.inner.class.expected=\
-	\u5185\u90e8\u30af\u30e9\u30b9 {0} \u304c {1} \u306b\u3042\u308a\u307e\u305b\u3093\u3002
-javac.err.no.static.field.access=\
-	{1} \u5185\u306e static \u3067\u306a\u3044\u5909\u6570 {0} \u3092 static \u53c2\u7167\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.inner.static.ref=\
-	\u5185\u90e8\u30af\u30e9\u30b9 {0} \u3092 static \u53c2\u7167\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.ambig.field=\
-	{0} \u3078\u306e\u53c2\u7167\u304c\u3042\u3044\u307e\u3044\u3067\u3059\u3002{1} \u3068 {2} \u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002
-javac.err.invalid.field=\
-	{1} \u5185\u306e\u30e1\u30bd\u30c3\u30c9 {0} \u3092\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3068\u3057\u3066\u53c2\u7167\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002
-javac.err.assign.to.final=\
-	final \u5909\u6570 {0} \u306b\u5024\u3092\u4ee3\u5165\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.assign.to.blank.final=\
-	\u30d6\u30e9\u30f3\u30af final \u5909\u6570 {0} \u306b 2 \u56de\u4ee5\u4e0a\u5024\u3092\u4ee3\u5165\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.qualified.static.final.assign=\
-	static \u30d6\u30e9\u30f3\u30af final \u3078\u306e\u4ee3\u5165\u306b\u4f7f\u7528\u3059\u308b\u5909\u6570\u306f\u5358\u7d14\u540d\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093 (\u30c9\u30c3\u30c8 ''.'' \u304c\u4ed8\u3044\u3066\u306f\u3044\u3051\u307e\u305b\u3093)\u3002
-javac.err.bad.qualified.final.assign=\
-	\u30d6\u30e9\u30f3\u30af final \u3078\u306e\u4ee3\u5165\u306b\u4f7f\u7528\u3059\u308b\u5909\u6570\u306f\u5358\u7d14\u306a\u540d\u524d\u3001\u307e\u305f\u306f ''this'' \u3067\u4fee\u98fe\u3055\u308c\u305f\u5358\u7d14\u306a\u540d\u524d\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093: ''{0}'' \u307e\u305f\u306f ''this.{0}''
-javac.err.assign.to.blank.final.in.loop=\
-	\u30d6\u30e9\u30f3\u30af final \u5909\u6570 {0} \u306b\u30eb\u30fc\u30d7\u4e2d\u3067\u4ee3\u5165\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002\u521d\u671f\u5316\u306f\u5fc5\u305a 1 \u56de\u9650\u308a\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.assign.to.uplevel=\
-	\u5909\u6570 {0} \u306b\u7570\u306a\u308b\u30e1\u30bd\u30c3\u30c9\u304b\u3089\u4ee3\u5165\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002\u30af\u30e9\u30b9\u5b9a\u7fa9\u3092\u56f2\u3080\u30d6\u30ed\u30c3\u30af\u304b\u3089\u306f\u3001\u5185\u5074\u306e\u30af\u30e9\u30b9\u3067\u306f\u30d6\u30ed\u30c3\u30af\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u5909\u6570\u306e\u3046\u3061\u5c40\u6240\u7684\u306a final \u5909\u6570\u3060\u3051\u304c\u6709\u52b9\u3067\u3059\u3002
-javac.err.invalid.uplevel=\
-	\u5909\u6570 {0} \u306b\u7570\u306a\u308b\u30e1\u30bd\u30c3\u30c9\u4e2d\u304b\u3089\u53c2\u7167\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002\u30af\u30e9\u30b9\u5b9a\u7fa9\u3092\u56f2\u3080\u30d6\u30ed\u30c3\u30af\u304b\u3089\u306f\u3001\u5185\u5074\u306e\u30af\u30e9\u30b9\u3067\u306f\u30d6\u30ed\u30c3\u30af\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u5909\u6570\u306e\u3046\u3061\u5c40\u6240\u7684\u306a final \u5909\u6570\u3060\u3051\u304c\u6709\u52b9\u3067\u3059\u3002
-javac.err.undef.var=\
-	{0} \u306f\u672a\u5b9a\u7fa9\u306e\u5909\u6570\u3067\u3059\u3002
-javac.err.undef.var.super=\
-	{0} \u306f\u672a\u5b9a\u7fa9\u306e\u5909\u6570\u3067\u3059\u3002\u30ad\u30fc\u30ef\u30fc\u30c9 "super" \u306f\u3001\u30e1\u30f3\u30d0\u30fc\u306e\u30a2\u30af\u30bb\u30b9\u307e\u305f\u306f\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306e\u547c\u3073\u51fa\u3057\u306b\u306e\u307f\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002
-javac.err.undef.var.or.package=\
-	{0} \u306f\u672a\u5b9a\u7fa9\u306e\u5909\u6570\u307e\u305f\u306f\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u3067\u3059\u3002
-javac.err.undef.class.or.package=\
-	{0} \u306f\u672a\u5b9a\u7fa9\u306e\u30af\u30e9\u30b9\u307e\u305f\u306f\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u3067\u3059\u3002
-javac.err.undef.var.class.or.package=\
-	{0} \u306f\u672a\u5b9a\u7fa9\u306e\u5909\u6570\u3001\u30af\u30e9\u30b9\u3001\u307e\u305f\u306f\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u3067\u3059\u3002
-javac.err.undef.class=\
-	{0} \u306f\u672a\u5b9a\u7fa9\u306e\u30af\u30e9\u30b9\u540d\u3067\u3059\u3002
-javac.err.undef.var.or.class=\
-	{0} \u306f\u672a\u5b9a\u7fa9\u306e\u5909\u6570\u307e\u305f\u306f\u30af\u30e9\u30b9\u540d\u3067\u3059\u3002
-javac.err.var.not.initialized=\
-	\u5909\u6570 {0} \u306f\u521d\u671f\u5316\u3055\u308c\u3066\u3044\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
-javac.err.final.var.not.initialized=\
-	\u30d6\u30e9\u30f3\u30af final \u5909\u6570 ''{0}'' \u306f\u521d\u671f\u5316\u3055\u308c\u3066\u3044\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u30d6\u30e9\u30f3\u30af final \u5909\u6570\u306b\u306f\u521d\u671f\u5316\u5b50\u307e\u305f\u306f\u5404\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3067\u5024\u304c\u4ee3\u5165\u3055\u308c\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.access.inst.before.super=\
-	\u30b9\u30fc\u30d1\u30fc\u30af\u30e9\u30b9\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u304c\u547c\u3073\u51fa\u3055\u308c\u308b\u524d\u306b {0} \u3092\u53c2\u7167\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.ambig.class=\
-	{0} \u304a\u3088\u3073 {1} \u306e\u30af\u30e9\u30b9\u5b9a\u7fa9\u304c\u3042\u3044\u307e\u3044\u3067\u3059\u3002
-javac.err.invalid.arg=\
-	{0} \u3078\u306e\u5f15\u6570\u304c\u7121\u52b9\u3067\u3059\u3002
-javac.err.invalid.arg.type=\
-	{1} \u306b\u5bfe\u3059\u308b\u5f15\u6570\u306e\u578b {0} \u304c\u7121\u52b9\u3067\u3059\u3002
-javac.err.invalid.length=\
-	\u578b {0} \u306b ''length'' \u3092\u9069\u7528\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u304c\u3001\u3053\u308c\u306f\u914d\u5217\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-javac.err.invalid.constr.invoke=\
-	\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u4ee5\u5916\u304b\u3089\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.constr.invoke.not.first=\
-	\u30e1\u30bd\u30c3\u30c9\u5185\u3067\u306f\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3092\u6700\u521d\u306b\u547c\u3073\u51fa\u3055\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.invalid.method.invoke=\
-	{0} \u306e\u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.undef.meth=\
-	\u30e1\u30bd\u30c3\u30c9 {0} \u306f {1} \u3067\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
-javac.err.no.meth.access=\
-	{1} \u306e\u30e1\u30bd\u30c3\u30c9 {0} \u306f {2} \u304b\u3089\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002
+javac.err.internal=\u5185\u90E8\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
+javac.err.eof.in.comment=\u30B3\u30E1\u30F3\u30C8\u304C\u5165\u529B\u306E\u6700\u5F8C\u3067\u7D42\u4E86\u3057\u3066\u3044\u307E\u305B\u3093\u3002
+javac.err.eof.in.string=\u6587\u5B57\u5217\u304C\u5165\u529B\u306E\u6700\u5F8C\u3067\u7D42\u4E86\u3057\u3066\u3044\u307E\u305B\u3093\u3002
+javac.err.newline.in.string=\u6587\u5B57\u5217\u304C\u884C\u306E\u6700\u5F8C\u3067\u7D42\u4E86\u3057\u3066\u3044\u307E\u305B\u3093\u3002
+javac.err.invalid.char.constant=\u7121\u52B9\u306A\u6587\u5B57\u5B9A\u6570\u3067\u3059\u3002
+javac.err.unbalanced.paren=\u30AB\u30C3\u30B3\u304C\u4E00\u81F4\u3057\u3066\u3044\u307E\u305B\u3093\u3002
+javac.err.invalid.escape.char=\u30A8\u30B9\u30B1\u30FC\u30D7\u6587\u5B57\u304C\u7121\u52B9\u3067\u3059\u3002
+javac.err.invalid.hex.number=16\u9032\u6570\u5B57\u306F\u5C11\u306A\u304F\u3068\u30821\u6841\u306E16\u9032\u6570\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.invalid.octal.number=8\u9032\u6570\u5B57\u5185\u306B\u7121\u52B9\u306A\u6587\u5B57\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.invalid.number=\u6570\u5B57\u5185\u306B\u7121\u52B9\u306A\u6587\u5B57\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.funny.char=\u5165\u529B\u5185\u306B\u7121\u52B9\u306A\u6587\u5B57\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.float.format=\u6D6E\u52D5\u5C0F\u6570\u70B9\u306E\u5F62\u5F0F\u304C\u7121\u52B9\u3067\u3059\u3002
+javac.err.overflow.int.oct=\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u304C\u7BC4\u56F2\u5916\u3067\u3059\u30028\u9032\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u306F00\u304B\u3089037777777777\u306E\u7BC4\u56F2\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.overflow.int.dec=\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u304C\u7BC4\u56F2\u5916\u3067\u3059\u300210\u9032\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u306F -2147483648\u304B\u30892147483647\u306E\u7BC4\u56F2\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.overflow.int.hex=\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u304C\u7BC4\u56F2\u5916\u3067\u3059\u300216\u9032\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u306F0x0\u304B\u30890xffffffff\u306E\u7BC4\u56F2\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.overflow.long.oct=\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u304C\u7BC4\u56F2\u5916\u3067\u3059\u30028\u9032\u30ED\u30F3\u30B0\u30FB\u30EA\u30C6\u30E9\u30EB\u306F00L\u304B\u308901777777777777777777777L\u306E\u7BC4\u56F2\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.overflow.long.dec=\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u304C\u7BC4\u56F2\u5916\u3067\u3059\u300210\u9032\u30ED\u30F3\u30B0\u30FB\u30EA\u30C6\u30E9\u30EB\u306F -9223372036854775808L\u304B\u30899223372036854775807L\u306E\u7BC4\u56F2\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.overflow.long.hex=\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u304C\u7BC4\u56F2\u5916\u3067\u3059\u300216\u9032\u30ED\u30F3\u30B0\u30FB\u30EA\u30C6\u30E9\u30EB\u306F0x0L\u304B\u30890xffffffffffffffffL\u306E\u7BC4\u56F2\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.overflow.float=\u6570\u5024\u304C\u30AA\u30FC\u30D0\u30FC\u30D5\u30ED\u30FC\u3057\u307E\u3057\u305F: \u6D6E\u52D5\u30EA\u30C6\u30E9\u30EB\u304C\u5927\u304D\u3059\u304E\u307E\u3059\u3002
+javac.err.overflow.double=\u6570\u5024\u304C\u30AA\u30FC\u30D0\u30FC\u30D5\u30ED\u30FC\u3057\u307E\u3057\u305F: \u500D\u7CBE\u5EA6\u30EA\u30C6\u30E9\u30EB\u304C\u5927\u304D\u3059\u304E\u307E\u3059\u3002
+javac.err.underflow.float=\u6570\u5024\u304C\u30A2\u30F3\u30C0\u30FC\u30D5\u30ED\u30FC\u3057\u307E\u3057\u305F: \u6D6E\u52D5\u30EA\u30C6\u30E9\u30EB\u304C\u5C0F\u3055\u3059\u304E\u307E\u3059\u3002
+javac.err.underflow.double=\u6570\u5024\u304C\u30A2\u30F3\u30C0\u30FC\u30D5\u30ED\u30FC\u3057\u307E\u3057\u305F: \u500D\u7CBE\u5EA6\u30EA\u30C6\u30E9\u30EB\u304C\u5C0F\u3055\u3059\u304E\u307E\u3059\u3002
+javac.err.token.expected=''{0}''\u304C\u3042\u308A\u307E\u305B\u3093\u3002
+javac.err.statement.expected=\u6587\u304C\u3042\u308A\u307E\u305B\u3093\u3002
+javac.err.type.expected=\u578B\u304C\u3042\u308A\u307E\u305B\u3093\u3002
+javac.err.identifier.expected=\u8B58\u5225\u5B50\u304C\u3042\u308A\u307E\u305B\u3093\u3002
+javac.err.class.expected=\u30AD\u30FC\u30EF\u30FC\u30C9''class''\u307E\u305F\u306F''interface''\u304C\u3042\u308A\u307E\u305B\u3093\u3002
+javac.err.toplevel.expected=\u30AF\u30E9\u30B9\u307E\u305F\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u5BA3\u8A00\u304C\u3042\u308A\u307E\u305B\u3093\u3002
+javac.err.missing.term=\u9805\u304C\u3042\u308A\u307E\u305B\u3093\u3002
+javac.err.assign.in.conditionalexpr=\u4EE3\u5165\u5F0F\u306F\u6761\u4EF6\u5F0F(\u3064\u307E\u308A\u3001? : \u5F0F)\u306E3\u756A\u76EE\u306E\u90E8\u5206\u5F0F\u3068\u3057\u3066\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u3053\u306E\u4EE3\u5165\u5F0F\u3092\u30AB\u30C3\u30B3\u3067\u56F2\u3093\u3067\u5165\u529B\u3057\u3066\u307F\u3066\u304F\u3060\u3055\u3044\u3002
+javac.err.else.without.if=''else''\u3078\u306E''if''\u304C\u3042\u308A\u307E\u305B\u3093\u3002
+javac.err.catch.without.try=''catch''\u3078\u306E''try''\u304C\u3042\u308A\u307E\u305B\u3093\u3002
+javac.err.finally.without.try=''finally''\u3078\u306E''try''\u304C\u3042\u308A\u307E\u305B\u3093\u3002
+javac.err.try.without.catch.finally=''try''\u3078\u306E''catch''\u307E\u305F\u306F''finally''\u304C\u3042\u308A\u307E\u305B\u3093\u3002
+javac.err.case.without.switch=switch\u6587\u306E\u5916\u306B''case''\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.default.without.switch=switch\u6587\u306E\u5916\u306B''default''\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.io.exception={0}\u3067\u5165\u51FA\u529B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
+javac.err.io.exception.package=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306E\u6709\u7121\u3092\u78BA\u8A8D\u4E2D\u306B\u5165\u51FA\u529B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
+javac.err.malformed.attribute={0}\u3092\u542B\u3080\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306B\u66F8\u5F0F\u304C\u4E0D\u6B63\u306A\u5C5E\u6027''{1}''\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.array.index.required=\u914D\u5217\u306E\u6DFB\u3048\u5B57\u304C\u5FC5\u8981\u3067\u3059\u3002
+javac.err.not.array=[]\u306F\u914D\u5217\u306B\u306E\u307F\u9069\u7528\u3067\u304D\u307E\u3059\u3002{0}\u306B\u306F\u9069\u7528\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.array.dim.in.decl=\u5BA3\u8A00\u4E2D\u3067\u306F\u914D\u5217\u306E\u6B21\u5143\u3092\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.array.dim.in.type=\u578B\u8868\u73FE\u4E2D\u3067\u306F\u914D\u5217\u306E\u6B21\u5143\u3092\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.invalid.array.expr=\u914D\u5217\u5B9A\u6570\u306F\u521D\u671F\u5316\u5B50\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002
+javac.err.invalid.array.init={0}\u578B\u3078\u306E\u521D\u671F\u5316\u5B50\u304C\u7121\u52B9\u3067\u3059\u3002
+javac.err.invalid.lhs.assignment=\u4EE3\u5165\u306E\u5DE6\u8FBA\u304C\u7121\u52B9\u3067\u3059\u3002
+javac.err.invalid.args={0}\u3078\u306E\u5F15\u6570\u304C\u7121\u52B9\u3067\u3059\u3002
+javac.err.invalid.cast={0}\u304B\u3089{1}\u3078\u306E\u30AD\u30E3\u30B9\u30C8\u304C\u7121\u52B9\u3067\u3059\u3002
+javac.err.invalid.instanceof={0}\u306F{1}\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u306B\u306F\u306A\u308A\u307E\u305B\u3093\u3002
+javac.err.invalid.type.expr=\u578B\u5F0F\u304C\u7121\u52B9\u3067\u3059\u3002
+javac.err.anonymous.extends=\u540D\u524D\u306E\u306A\u3044\u30AF\u30E9\u30B9\u304C''extends''\u7BC0\u307E\u305F\u306F''implements''\u7BC0\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.invalid.field.reference={1}\u304B\u3089\u30D5\u30A3\u30FC\u30EB\u30C9{0}\u3092\u53C2\u7167\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F\u3002
+javac.err.no.such.field={1}\u306B\u306F\u5909\u6570{0}\u306F\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+javac.err.no.field.access={1}\u5185\u306E\u5909\u6570{0}\u306F{2}\u304B\u3089\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.no.type.access={1}\u5185\u306E\u5185\u90E8\u578B{0}\u306F{2}\u304B\u3089\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.cant.access.member.type=\u30E1\u30F3\u30D0\u30FC{0}\u3092\u6301\u3064\u578B{1}\u306F{2}\u304B\u3089\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.inner.class.expected=\u5185\u90E8\u30AF\u30E9\u30B9{0}\u304C{1}\u306B\u3042\u308A\u307E\u305B\u3093\u3002
+javac.err.no.static.field.access={1}\u5185\u306Estatic\u3067\u306A\u3044\u5909\u6570{0}\u3092static\u53C2\u7167\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.inner.static.ref=\u5185\u90E8\u30AF\u30E9\u30B9{0}\u3092static\u53C2\u7167\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.ambig.field={0}\u3078\u306E\u53C2\u7167\u304C\u3042\u3044\u307E\u3044\u3067\u3059\u3002{1}\u3068{2}\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059\u3002
+javac.err.invalid.field={1}\u5185\u306E\u30E1\u30BD\u30C3\u30C9{0}\u3092\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u5909\u6570\u3068\u3057\u3066\u53C2\u7167\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F\u3002
+javac.err.assign.to.final=final\u5909\u6570{0}\u306B\u5024\u3092\u4EE3\u5165\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+javac.err.assign.to.blank.final=\u30D6\u30E9\u30F3\u30AFfinal\u5909\u6570{0}\u306B2\u56DE\u4EE5\u4E0A\u5024\u3092\u4EE3\u5165\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.qualified.static.final.assign=static\u30D6\u30E9\u30F3\u30AFfinal\u3078\u306E\u4EE3\u5165\u306B\u4F7F\u7528\u3059\u308B\u5909\u6570\u306F\u5358\u7D14\u540D\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059(\u30C9\u30C3\u30C8''.''\u3092\u4ED8\u3051\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093)\u3002
+javac.err.bad.qualified.final.assign=\u30D6\u30E9\u30F3\u30AFfinal\u3078\u306E\u4EE3\u5165\u306B\u4F7F\u7528\u3059\u308B\u5909\u6570\u306F\u5358\u7D14\u306A\u540D\u524D\u3001\u307E\u305F\u306F''this''\u3067\u4FEE\u98FE\u3055\u308C\u305F\u5358\u7D14\u306A\u540D\u524D\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059: ''{0}''\u307E\u305F\u306F''this.{0}''
+javac.err.assign.to.blank.final.in.loop=\u30D6\u30E9\u30F3\u30AFfinal\u5909\u6570{0}\u306B\u30EB\u30FC\u30D7\u4E2D\u3067\u4EE3\u5165\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F\u3002\u521D\u671F\u5316\u306F\u5FC5\u305A1\u56DE\u9650\u308A\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.assign.to.uplevel=\u5909\u6570{0}\u306B\u7570\u306A\u308B\u30E1\u30BD\u30C3\u30C9\u304B\u3089\u4EE3\u5165\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F\u3002\u30AF\u30E9\u30B9\u5B9A\u7FA9\u3092\u56F2\u3080\u30D6\u30ED\u30C3\u30AF\u304B\u3089\u306F\u3001\u5185\u5074\u306E\u30AF\u30E9\u30B9\u3067\u306F\u30D6\u30ED\u30C3\u30AF\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308B\u5909\u6570\u306E\u3046\u3061\u5C40\u6240\u7684\u306Afinal\u5909\u6570\u306E\u307F\u304C\u6709\u52B9\u3067\u3059\u3002
+javac.err.invalid.uplevel=final\u3067\u306A\u3044\u5909\u6570{0}\u306B\u7570\u306A\u308B\u30E1\u30BD\u30C3\u30C9\u4E2D\u304B\u3089\u53C2\u7167\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F\u3002\u30AF\u30E9\u30B9\u5B9A\u7FA9\u3092\u56F2\u3080\u30D6\u30ED\u30C3\u30AF\u304B\u3089\u306F\u3001\u5185\u5074\u306E\u30AF\u30E9\u30B9\u3067\u306F\u30D6\u30ED\u30C3\u30AF\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308B\u5909\u6570\u306E\u3046\u3061\u5C40\u6240\u7684\u306Afinal\u5909\u6570\u306E\u307F\u304C\u6709\u52B9\u3067\u3059\u3002
+javac.err.undef.var={0}\u306F\u672A\u5B9A\u7FA9\u306E\u5909\u6570\u3067\u3059
+javac.err.undef.var.super={0}\u306F\u672A\u5B9A\u7FA9\u306E\u5909\u6570\u3067\u3059\u3002\u30AD\u30FC\u30EF\u30FC\u30C9"super"\u306F\u3001\u30E1\u30F3\u30D0\u30FC\u306E\u30A2\u30AF\u30BB\u30B9\u307E\u305F\u306F\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u547C\u51FA\u3057\u306B\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002
+javac.err.undef.var.or.package={0}\u306F\u672A\u5B9A\u7FA9\u306E\u5909\u6570\u307E\u305F\u306F\u30D1\u30C3\u30B1\u30FC\u30B8\u540D\u3067\u3059
+javac.err.undef.class.or.package={0}\u306F\u672A\u5B9A\u7FA9\u306E\u30AF\u30E9\u30B9\u307E\u305F\u306F\u30D1\u30C3\u30B1\u30FC\u30B8\u540D\u3067\u3059
+javac.err.undef.var.class.or.package={0}\u306F\u672A\u5B9A\u7FA9\u306E\u5909\u6570\u3001\u30AF\u30E9\u30B9\u307E\u305F\u306F\u30D1\u30C3\u30B1\u30FC\u30B8\u540D\u3067\u3059
+javac.err.undef.class={0}\u306F\u672A\u5B9A\u7FA9\u306E\u30AF\u30E9\u30B9\u540D\u3067\u3059
+javac.err.undef.var.or.class={0}\u306F\u672A\u5B9A\u7FA9\u306E\u5909\u6570\u307E\u305F\u306F\u30AF\u30E9\u30B9\u540D\u3067\u3059
+javac.err.var.not.initialized=\u5909\u6570{0}\u306F\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.final.var.not.initialized=\u30D6\u30E9\u30F3\u30AFfinal\u5909\u6570''{0}''\u306F\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u30D6\u30E9\u30F3\u30AFfinal\u5909\u6570\u306B\u306F\u521D\u671F\u5316\u5B50\u307E\u305F\u306F\u5404\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u3067\u5024\u304C\u4EE3\u5165\u3055\u308C\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.access.inst.before.super=\u30B9\u30FC\u30D1\u30FC\u30AF\u30E9\u30B9\u306E\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u304C\u547C\u3073\u51FA\u3055\u308C\u308B\u524D\u306B{0}\u3092\u53C2\u7167\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.ambig.class={0}\u304A\u3088\u3073{1}\u306E\u30AF\u30E9\u30B9\u5B9A\u7FA9\u304C\u3042\u3044\u307E\u3044\u3067\u3059
+javac.err.invalid.arg={0}\u3078\u306E\u5F15\u6570\u304C\u7121\u52B9\u3067\u3059\u3002
+javac.err.invalid.arg.type={1}\u306B\u5BFE\u3059\u308B\u5F15\u6570\u306E\u578B{0}\u304C\u7121\u52B9\u3067\u3059\u3002
+javac.err.invalid.length=\u578B{0}\u306B''length''\u3092\u9069\u7528\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F\u304C\u3001\u3053\u308C\u306F\u914D\u5217\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
+javac.err.invalid.constr.invoke=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u4EE5\u5916\u304B\u3089\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u3092\u547C\u3073\u51FA\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.constr.invoke.not.first=\u30E1\u30BD\u30C3\u30C9\u5185\u3067\u306F\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u3092\u6700\u521D\u306B\u547C\u3073\u51FA\u3059\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.invalid.method.invoke={0}\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u547C\u3073\u51FA\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.undef.meth=\u30E1\u30BD\u30C3\u30C9{0}\u306F{1}\u3067\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
+javac.err.no.meth.access={1}\u306E\u30E1\u30BD\u30C3\u30C9{0}\u306F{2}\u304B\u3089\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3002
 #warning:
-javac.err.no.override.access=\
-	\u6ce8: {1} \u306e\u30e1\u30bd\u30c3\u30c9 {0} \u306f {2} \u306e\u5bfe\u5fdc\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u7570\u306a\u308b\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u5bfe\u3057\u3066\u306f private \u3067\u3042\u308b\u305f\u3081\u3001\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.no.static.meth.access=\
-	{1} \u306e\u30e1\u30bd\u30c3\u30c9 {0} \u306b static \u53c2\u7167\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.invalid.protected.method.use=\
-	{1} \u306e protected \u30e1\u30bd\u30c3\u30c9 {0} \u306b\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002{2} \u306f\u73fe\u5728\u306e\u30af\u30e9\u30b9\u306e\u30b5\u30d6\u30af\u30e9\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-javac.err.invalid.protected.field.use=\
-	{1} \u306e protected \u30d5\u30a3\u30fc\u30eb\u30c9 {0} \u306b\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002{2} \u306f\u73fe\u5728\u306e\u30af\u30e9\u30b9\u306e\u30b5\u30d6\u30af\u30e9\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-javac.err.invalid.protected.type.use=\
-	{1} \u306e protected \u5185\u90e8\u578b {0} \u306b\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002{2} \u306f\u73fe\u5728\u306e\u30af\u30e9\u30b9\u306e\u30b5\u30d6\u30af\u30e9\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-javac.err.invalid.protected.constructor.use=\
-	{0} \u306e protected \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306b\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u751f\u6210\u306f\u3001\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u30d1\u30c3\u30b1\u30fc\u30b8\u5185\u3067\u306e\u307f\u8a31\u53ef\u3055\u308c\u307e\u3059\u3002
-javac.err.invalid.method=\
-	{1} \u306e\u5909\u6570 {0} \u3092\u30e1\u30bd\u30c3\u30c9\u3068\u3057\u3066\u53c2\u7167\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002
-javac.err.invalid.var=\
-	{1} \u306e\u30e1\u30bd\u30c3\u30c9 {0} \u3092\u5909\u6570\u3068\u3057\u3066\u53c2\u7167\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002
-javac.err.synchronized.null=\
-	null \u306e\u30ea\u30c6\u30e9\u30eb\u306f\u3001synchronized \u69cb\u6587\u3067\u306f\u6b63\u3057\u3044\u5f15\u6570\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+javac.err.no.override.access=\u6CE8\u610F: {1}\u306E\u30E1\u30BD\u30C3\u30C9{0}\u306F{2}\u306E\u5BFE\u5FDC\u3059\u308B\u30E1\u30BD\u30C3\u30C9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\u7570\u306A\u308B\u30D1\u30C3\u30B1\u30FC\u30B8\u306B\u5BFE\u3057\u3066\u306Fprivate\u3067\u3042\u308B\u305F\u3081\u3001\u3053\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.no.static.meth.access={1}\u306E\u30E1\u30BD\u30C3\u30C9{0}\u306Bstatic\u53C2\u7167\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.invalid.protected.method.use={1}\u306Eprotected\u30E1\u30BD\u30C3\u30C9{0}\u306B\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3002{2}\u306F\u73FE\u5728\u306E\u30AF\u30E9\u30B9\u306E\u30B5\u30D6\u30AF\u30E9\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
+javac.err.invalid.protected.field.use={1}\u306Eprotected\u30D5\u30A3\u30FC\u30EB\u30C9{0}\u306B\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3002{2}\u306F\u73FE\u5728\u306E\u30AF\u30E9\u30B9\u306E\u30B5\u30D6\u30AF\u30E9\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
+javac.err.invalid.protected.type.use={1}\u306Eprotected\u5185\u90E8\u578B{0}\u306B\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3002{2}\u306F\u73FE\u5728\u306E\u30AF\u30E9\u30B9\u306E\u30B5\u30D6\u30AF\u30E9\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
+javac.err.invalid.protected.constructor.use={0}\u306Eprotected\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306B\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3002\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u306E\u751F\u6210\u306F\u3001\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308B\u30D1\u30C3\u30B1\u30FC\u30B8\u5185\u3067\u306E\u307F\u8A31\u53EF\u3055\u308C\u307E\u3059\u3002
+javac.err.invalid.method={1}\u306E\u5909\u6570{0}\u3092\u30E1\u30BD\u30C3\u30C9\u3068\u3057\u3066\u53C2\u7167\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F\u3002
+javac.err.invalid.var={1}\u306E\u30E1\u30BD\u30C3\u30C9{0}\u3092\u5909\u6570\u3068\u3057\u3066\u53C2\u7167\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F\u3002
+javac.err.synchronized.null=null\u306E\u30EA\u30C6\u30E9\u30EB\u306F\u3001synchronized\u69CB\u6587\u3067\u306F\u6B63\u3057\u3044\u5F15\u6570\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
 #all messages related to deprecation are warnings:
-javac.err.class.is.deprecated=\
-	\u6ce8: {0} \u306f\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u3002
-javac.err.meth.is.deprecated=\
-	\u6ce8: {1} \u306e\u30e1\u30bd\u30c3\u30c9 {0} \u306f\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u3002
-javac.err.constr.is.deprecated=\
-	\u6ce8: \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf {0} \u306f\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u3002
-javac.err.field.is.deprecated=\
-	\u6ce8: {1} \u306e\u5909\u6570 {0} \u306f\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u3002
-javac.err.note.deprecations=\
-	\u6ce8: \u63a8\u5968\u3055\u308c\u306a\u3044 API \u3092\u4f7f\u7528\u307e\u305f\u306f\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u3066\u3044\u308b\u30d5\u30a1\u30a4\u30eb\u304c {0} \u500b\u3042\u308a\u307e\u3059\u3002\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u4ed6\u306e\u65b9\u6cd5\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-javac.err.note.1deprecation=\
-	\u6ce8: {0} \u306f\u63a8\u5968\u3055\u308c\u306a\u3044 API \u3092\u4f7f\u7528\u307e\u305f\u306f\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u3066\u3044\u307e\u3059\u3002\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u4ed6\u306e\u65b9\u6cd5\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-javac.err.note.deprecations.silent=\
-	\u6ce8: \u63a8\u5968\u3055\u308c\u306a\u3044 API \u3092\u4f7f\u7528\u307e\u305f\u306f\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u3066\u3044\u308b\u30d5\u30a1\u30a4\u30eb\u304c {0} \u500b\u3042\u308a\u307e\u3059\u3002\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001"javac -deprecation" \u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-javac.err.note.1deprecation.silent=\
-	\u6ce8: {0} \u306f\u63a8\u5968\u3055\u308c\u306a\u3044 API \u3092\u4f7f\u7528\u307e\u305f\u306f\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u3066\u3044\u307e\u3059\u3002\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001"javac -deprecation" \u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-javac.err.invalid.array.dim=\
-	\u914d\u5217\u306e\u5927\u304d\u3055\u304c\u7121\u52b9\u3067\u3059\u3002
-javac.err.ambig.constr=\
-	\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf {0}, {1} \u306f\u3042\u3044\u307e\u3044\u3067\u3059\u3002
-javac.err.explicit.cast.needed=\
-	\u3053\u306e\u578b\u306f {0} \u306b\u306f\u4e0d\u9069\u5408\u3067\u3059\u3002{1} \u304b\u3089 {2} \u3078\u306e\u5909\u63db\u306b\u306f\u660e\u793a\u7684\u306a\u30ad\u30e3\u30b9\u30c8\u304c\u5fc5\u8981\u3067\u3059\u3002
-javac.err.incompatible.type=\
-	\u3053\u306e\u578b\u306f {0} \u306b\u306f\u4e0d\u9069\u5408\u3067\u3059\u3002{1} \u304b\u3089 {2} \u306b\u306f\u5909\u63db\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.invalid.term=\
-	\u7121\u52b9\u306a\u9805\u3067\u3059\u3002
-javac.err.abstract.class=\
-	{0} \u306f abstract \u30af\u30e9\u30b9\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\u3053\u306e\u30af\u30e9\u30b9\u3067\u306f\u3001{2} \u304b\u3089\u6d3e\u751f\u3059\u308b {1} \u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u305b\u3093\u3002
-javac.err.abstract.class.cannot.override=\
-	{0} \u306f abstract \u3068\u3057\u3066\u5ba3\u8a00\u3055\u308c\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\u30b9\u30fc\u30d1\u30fc\u30af\u30e9\u30b9 {2} \u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u5bfe\u3057\u3066 private \u3067\u3042\u308b abstract \u30e1\u30bd\u30c3\u30c9 {1} \u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u305a\u3001\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.new.intf=\
-	{0} \u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u3059\u3002\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.invoke.abstract=\
-	{1} \u306e\u30e1\u30bd\u30c3\u30c9 {0} \u306f abstract \u3067\u3042\u308a\u3001\u76f4\u63a5\u547c\u3073\u51fa\u3059\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.unmatched.meth=\
-	{0} \u306b\u9069\u5408\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u304c {1} \u306b\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-javac.err.unmatched.constr=\
-	{0} \u306b\u9069\u5408\u3059\u308b\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u304c {1} \u306b\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-javac.err.wrong.number.args=\
-	{0} \u306e\u5f15\u6570\u306e\u6570\u304c\u4e0d\u6b63\u3067\u3059\u3002
-javac.err.forward.ref=\
-	{1} \u3067\u306f {0} \u306b\u524d\u65b9\u53c2\u7167\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.array.dim.missing=\
-	\u914d\u5217\u306e\u5927\u304d\u3055\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-javac.err.new.abstract=\
-	{0} \u306f abstract \u30af\u30e9\u30b9\u3067\u3059\u3002\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.label.not.found=\
-	{0} \u306e\u30e9\u30d9\u30eb\u5b9a\u7fa9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
-javac.err.invalid.break=\
-	''break'' \u306f\u30eb\u30fc\u30d7\u5185\u304b switch \u6587\u5185\u306b\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.invalid.continue=\
-	''continue'' \u306f\u30eb\u30fc\u30d7\u5185\u306b\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.branch.to.uplevel=\
-	''break'' \u6587\u304a\u3088\u3073 ''continue'' \u6587\u306f\u540c\u4e00\u30e1\u30bd\u30c3\u30c9\u5185\u306b\u306e\u307f\u5206\u5c90\u3067\u304d\u307e\u3059\u3002
-javac.err.invalid.decl=\
-	\u7121\u52b9\u306a\u5ba3\u8a00\u3067\u3059\u3002
-javac.err.return.with.value=\
-	\u30e1\u30bd\u30c3\u30c9 {0} \u3067\u5024\u4ed8\u304d\u306e ''return'' \u3092\u5b9f\u884c\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002
-javac.err.return.without.value=\
-	\u30e1\u30bd\u30c3\u30c9 {0} \u3067\u5024\u306a\u3057\u306e ''return'' \u3092\u5b9f\u884c\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002
-javac.err.return.inside.static.initializer=\
-	static \u521d\u671f\u5316\u5b50\u306e\u4e2d\u306b ''return'' \u304c\u3042\u308a\u307e\u3059\u3002
-javac.err.invalid.label=\
-	\u7121\u52b9\u306a\u30e9\u30d9\u30eb\u3067\u3059\u3002
-javac.err.return.required.at.end=\
-	\u30e1\u30bd\u30c3\u30c9 {0} \u306e\u7d42\u308f\u308a\u306b return \u304c\u5fc5\u8981\u3067\u3059\u3002
-javac.err.duplicate.label=\
-	case \u30e9\u30d9\u30eb {0} \u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002
-javac.err.switch.overflow=\
-	case \u30e9\u30d9\u30eb {0} \u306f\u578b {1} \u306e switch \u6587\u306e\u7bc4\u56f2\u3092\u8d8a\u3048\u3066\u3044\u307e\u3059\u3002
-javac.err.nested.duplicate.label=\
-	\u6587\u306b\u306f\u3001\u305d\u308c\u3092\u56f2\u3080\u6587\u3068\u540c\u3058\u8b58\u5225\u5b50 {0} \u3067\u30e9\u30d9\u30eb\u3092\u4ed8\u3051\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.declaration.with.label=\
-	\u5ba3\u8a00\u306b\u306f\u30e9\u30d9\u30eb {0} \u3092\u4ed8\u3051\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.const.expr.required=\
-	\u5b9a\u6570\u5f0f\u304c\u5fc5\u8981\u3067\u3059\u3002
-javac.err.duplicate.default=\
-	''default'' \u30e9\u30d9\u30eb\u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002
-javac.err.not.supported=\
-	''{0}'' \u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-javac.err.return.with.value.constr=\
-	\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf {0} \u3067\u5024\u4ed8\u304d\u306e ''return'' \u3092\u5b9f\u884c\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002
-javac.err.package.repeated=\
-	\u30d1\u30c3\u30b1\u30fc\u30b8\u5ba3\u8a00\u306f 1 \u56de\u3057\u304b\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.class.multidef=\
-	\u30af\u30e9\u30b9 {0} \u306f\u3059\u3067\u306b {1} \u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002
-javac.err.class.multidef.import=\
-	\u30af\u30e9\u30b9\u540d {0} \u306f\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u305f\u30af\u30e9\u30b9 {1} \u3068\u7af6\u5408\u3057\u307e\u3059\u3002
-javac.err.intf.constructor=\
-	\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.constr.modifier=\
-	\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf {0} \u3092 native\u3001abstract\u3001static\u3001synchronized\u3001\u307e\u305f\u306f final \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.intf.initializer=\
-	\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f static \u521d\u671f\u5316\u5b50\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.intf.modifier.method=\
-	\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306e\u30e1\u30bd\u30c3\u30c9 {0} \u3092 native\u3001static\u3001synchronized\u3001final\u3001private\u3001\u307e\u305f\u306f protected \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.intf.modifier.field=\
-	\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306e\u30d5\u30a3\u30fc\u30eb\u30c9 {0} \u3092 private \u307e\u305f\u306f protected \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.transient.meth=\
-	\u30e1\u30bd\u30c3\u30c9 {0} \u3092 transient \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002transient \u306f\u5909\u6570\u306b\u306e\u307f\u9069\u7528\u3055\u308c\u307e\u3059\u3002
-javac.err.volatile.meth=\
-	\u30e1\u30bd\u30c3\u30c9 {0} \u3092 volatile \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002volatile \u306f\u5909\u6570\u306b\u306e\u307f\u9069\u7528\u3055\u308c\u307e\u3059\u3002
-javac.err.abstract.private.modifier=\
-	abstract \u30e1\u30bd\u30c3\u30c9 {0} \u3092 private \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.abstract.static.modifier=\
-	abstract \u30e1\u30bd\u30c3\u30c9 {0} \u3092 static \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.abstract.final.modifier=\
-	abstract \u30e1\u30bd\u30c3\u30c9 {0} \u3092 final \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.abstract.native.modifier=\
-	abstract \u30e1\u30bd\u30c3\u30c9 {0} \u3092 native \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.abstract.synchronized.modifier=\
-	abstract \u30e1\u30bd\u30c3\u30c9 {0} \u3092 synchronized \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.invalid.meth.body=\
-	{0} \u306f abstract \u30e1\u30bd\u30c3\u30c9\u304b native \u30e1\u30bd\u30c3\u30c9\u306a\u306e\u3067\u3001\u672c\u4f53\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.var.modifier=\
-	\u5909\u6570 {0} \u3092 synchronized\u3001abstract\u3001\u307e\u305f\u306f native \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.var.floatmodifier=\
-	\u5909\u6570 {0} \u3092 strict \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.inner.modifier=\
-	\u5185\u90e8\u30af\u30e9\u30b9 {0} \u3092 volatile\u3001transient\u3001native\u3001\u307e\u305f\u306f synchronized \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.transient.modifier=\
-	transient \u5909\u6570 {0} \u3092\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u30e1\u30f3\u30d0\u30fc\u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.volatile.modifier=\
-	volatile \u5909\u6570 {0} \u3092 final \u307e\u305f\u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u30e1\u30f3\u30d0\u30fc\u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.initializer.needed=\
-	final \u5909\u6570 {0} \u306f\u521d\u671f\u5316\u3055\u308c\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.meth.multidef=\
-	\u30e1\u30bd\u30c3\u30c9\u5ba3\u8a00 {0} \u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002
-javac.err.meth.redef.rettype=\
-	\u540c\u3058\u5f15\u6570\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u7570\u306a\u308b\u623b\u308a\u5024\u306e\u578b\u3067\u518d\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002{0} \u306f\u4ee5\u524d {1} \u3068\u5ba3\u8a00\u3055\u308c\u3066\u3044\u307e\u3057\u305f\u3002
-javac.err.var.multidef=\
-	\u5909\u6570\u5ba3\u8a00\u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002{0} \u306f\u4ee5\u524d {1} \u3068\u5ba3\u8a00\u3055\u308c\u3066\u3044\u307e\u3057\u305f\u3002
-javac.err.inner.class.multidef=\
-	\u5185\u90e8\u30af\u30e9\u30b9\u5ba3\u8a00\u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002{0} \u306f\u3053\u306e\u30b9\u30b3\u30fc\u30d7\u3067\u3059\u3067\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002
-javac.err.intf.super.class=\
-	{0} \u306e\u30b9\u30fc\u30d1\u30fc\u30af\u30e9\u30b9 {1} \u3092\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.cant.access.class=\
-	{0} \u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002\u30af\u30e9\u30b9\u307e\u305f\u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f\u3001\u540c\u3058\u30d1\u30c3\u30b1\u30fc\u30b8\u307e\u305f\u306f\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u306a\u30e1\u30f3\u30d0\u30fc\u30af\u30e9\u30b9\u3067\u306f public \u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.unqualified.name.required=\
-	\u4fee\u98fe\u3055\u308c\u305f new \u5f0f\u306b\u304a\u3051\u308b\u578b\u540d\u306f\u3001\u4fee\u98fe\u3055\u308c\u3066\u3044\u306a\u3044\u8b58\u5225\u5b50\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.repeated.modifier=\
-	\u4fee\u98fe\u5b50\u304c\u7e70\u308a\u8fd4\u3055\u308c\u3066\u3044\u307e\u3059\u3002
-javac.err.inconsistent.modifier=\
-	\u30e1\u30f3\u30d0\u30fc\u5ba3\u8a00\u306b\u4e00\u8cab\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002public\u3001private\u3001protected \u306e\u3046\u3061\u306e 1 \u3064\u3057\u304b\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.super.is.final=\
-	\u30d5\u30a1\u30a4\u30ca\u30eb\u30af\u30e9\u30b9 {0} \u304b\u3089\u30b5\u30d6\u30af\u30e9\u30b9\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.super.is.intf=\
-	\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 {0} \u304b\u3089\u30b5\u30d6\u30af\u30e9\u30b9\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.cyclic.super=\
-	\u30af\u30e9\u30b9\u7d99\u627f\u304c\u30eb\u30fc\u30d7\u3057\u3066\u3044\u307e\u3059\u3002
-javac.err.super.is.inner=\
-	\u30af\u30e9\u30b9\u7d99\u627f\u304c\u30eb\u30fc\u30d7\u3057\u3066\u3044\u307e\u3059\u3002\u30b5\u30d6\u30af\u30e9\u30b9\u306f\u30b9\u30fc\u30d1\u30fc\u30af\u30e9\u30b9\u3092\u56f2\u3080\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.cyclic.intf=\
-	\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u7d99\u627f\u304c\u30eb\u30fc\u30d7\u3057\u3066\u3044\u307e\u3059\u3002
-javac.err.cyclic.scoping=\
-	\u30af\u30e9\u30b9\u7d99\u627f\u307e\u305f\u306f\u30b9\u30b3\u30fc\u30d7\u304c\u30eb\u30fc\u30d7\u3057\u3066\u3044\u307e\u3059\u3002
-javac.err.not.intf=\
-	{0} \u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.final.intf=\
-	\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 {0} \u3092\u30d5\u30a1\u30a4\u30ca\u30eb\u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.intf.impl.intf=\
-	\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f implements \u7bc0\u3092\u542b\u3080\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002extends \u7bc0\u306b\u3088\u308a\u4ed6\u306e\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3092\u62e1\u5f35\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u3059\u3002
-javac.err.multiple.inherit=\
-	\u591a\u91cd\u7d99\u627f\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-javac.err.intf.repeated=\
-	\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 {0} \u304c\u7e70\u308a\u8fd4\u3055\u308c\u3066\u3044\u307e\u3059\u3002
-javac.err.class.format=\
-	{0} \u306e\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb {1} \u306e\u5f62\u5f0f\u304c\u7121\u52b9\u3067\u3059\u3002
-javac.err.truncated.class=\
-	\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb {0} \u306e\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u4e88\u671f\u3057\u306a\u3044\u30d5\u30a1\u30a4\u30eb\u306e\u7d42\u308f\u308a\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002
-javac.err.no.meth.body=\
-	\u30e1\u30bd\u30c3\u30c9 {0} \u306b\u306f\u672c\u4f53\u304c\u5fc5\u8981\u3067\u3059\u3002\u3042\u308b\u3044\u306f abstract \u3068\u3057\u3066\u5ba3\u8a00\u3057\u307e\u3059\u3002
-javac.err.no.constructor.body=\
-	\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf {0} \u306b\u306f\u30e1\u30bd\u30c3\u30c9\u672c\u4f53\u304c\u5fc5\u8981\u3067\u3059\u3002
-javac.err.bad.constructor.modifier=\
-	\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306f strictfp \u3067\u4fee\u98fe\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.void.inst.var=\
-	\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570 {0} \u3092 void \u578b\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.invalid.method.decl=\
-	\u7121\u52b9\u306a\u30e1\u30bd\u30c3\u30c9\u5ba3\u8a00\u3067\u3059\u3002\u623b\u308a\u5024\u306e\u578b\u304c\u5fc5\u8981\u3067\u3059\u3002
-javac.err.invalid.method.decl.name=\
-	\u7121\u52b9\u306a\u30e1\u30bd\u30c3\u30c9\u5ba3\u8a00\u3067\u3059\u3002\u30e1\u30bd\u30c3\u30c9\u540d\u304c\u5fc5\u8981\u3067\u3059\u3002
-javac.err.invalid.method.decl.qual=\
-	\u4fee\u98fe\u3055\u308c\u305f\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u540d\u304c\u7121\u52b9\u3067\u3059\u3002
-javac.err.super.not.found=\
-	{1} \u306e\u30b9\u30fc\u30d1\u30fc\u30af\u30e9\u30b9 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
-javac.err.intf.not.found=\
-	{1} \u306e\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
-javac.err.final.abstract=\
-        \u30af\u30e9\u30b9 {0} \u3092 abstract \u3068 final \u306e\u4e21\u65b9\u306b\u5ba3\u8a00\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.void.array=\
-	void \u306e\u914d\u5217\u306e\u578b\u304c\u7121\u52b9\u3067\u3059\u3002
-javac.err.void.argument=\
-	\u5f15\u6570 {0} \u3092 void \u578b\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.invalid.expr=\
-	\u7121\u52b9\u306a\u5f0f\u6587\u3067\u3059\u3002
-javac.err.catch.not.reached=\
-	\u3053\u306e catch \u7bc0\u306b\u5236\u5fa1\u304c\u79fb\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-javac.err.stat.not.reached=\
-	\u3053\u306e\u6587\u306b\u5236\u5fa1\u304c\u79fb\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-javac.err.init.no.normal.completion=\
-	\u521d\u671f\u5316\u5b50\u306f\u6b63\u5e38\u306b\u5b8c\u4e86\u3067\u304d\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.arithmetic.exception=\
-	\u6f14\u7b97\u4e0a\u306e\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
+javac.err.class.is.deprecated=\u6CE8\u610F: {0}\u306F\u63A8\u5968\u3055\u308C\u307E\u305B\u3093\u3002
+javac.err.meth.is.deprecated=\u6CE8\u610F: {1}\u306E\u30E1\u30BD\u30C3\u30C9{0}\u306F\u63A8\u5968\u3055\u308C\u307E\u305B\u3093\u3002
+javac.err.constr.is.deprecated=\u6CE8\u610F: \u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF{0}\u306F\u63A8\u5968\u3055\u308C\u307E\u305B\u3093\u3002
+javac.err.field.is.deprecated=\u6CE8\u610F: {1}\u306E\u5909\u6570{0}\u306F\u63A8\u5968\u3055\u308C\u307E\u305B\u3093\u3002
+javac.err.note.deprecations=\u6CE8\u610F: \u63A8\u5968\u3055\u308C\u306A\u3044API\u3092\u4F7F\u7528\u307E\u305F\u306F\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u3066\u3044\u308B\u30D5\u30A1\u30A4\u30EB\u304C{0}\u500B\u3042\u308A\u307E\u3059\u3002\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u53C2\u7167\u3057\u3066\u4ED6\u306E\u65B9\u6CD5\u3092\u691C\u8A0E\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+javac.err.note.1deprecation=\u6CE8\u610F: {0}\u306F\u63A8\u5968\u3055\u308C\u306A\u3044API\u3092\u4F7F\u7528\u307E\u305F\u306F\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u3066\u3044\u307E\u3059\u3002\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u53C2\u7167\u3057\u3066\u4ED6\u306E\u65B9\u6CD5\u3092\u691C\u8A0E\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+javac.err.note.deprecations.silent=\u6CE8\u610F: \u63A8\u5968\u3055\u308C\u306A\u3044API\u3092\u4F7F\u7528\u307E\u305F\u306F\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u3066\u3044\u308B\u30D5\u30A1\u30A4\u30EB\u304C{0}\u500B\u3042\u308A\u307E\u3059\u3002\u8A73\u7D30\u306F\u3001"-deprecation"\u3092\u6307\u5B9A\u3057\u3066\u518D\u30B3\u30F3\u30D1\u30A4\u30EB\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+javac.err.note.1deprecation.silent=\u6CE8\u610F: {0}\u306F\u63A8\u5968\u3055\u308C\u306A\u3044API\u3092\u4F7F\u7528\u307E\u305F\u306F\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u3066\u3044\u307E\u3059\u3002\u8A73\u7D30\u306F\u3001"-deprecation"\u3092\u6307\u5B9A\u3057\u3066\u518D\u30B3\u30F3\u30D1\u30A4\u30EB\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+javac.err.invalid.array.dim=\u914D\u5217\u306E\u5927\u304D\u3055\u304C\u7121\u52B9\u3067\u3059\u3002
+javac.err.ambig.constr=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF{0},{1}\u306F\u3042\u3044\u307E\u3044\u3067\u3059\u3002
+javac.err.explicit.cast.needed=\u3053\u306E\u578B\u306F{0}\u306B\u306F\u4E0D\u9069\u5408\u3067\u3059\u3002{1}\u304B\u3089{2}\u3078\u306E\u5909\u63DB\u306B\u306F\u660E\u793A\u7684\u306A\u30AD\u30E3\u30B9\u30C8\u304C\u5FC5\u8981\u3067\u3059\u3002
+javac.err.incompatible.type=\u3053\u306E\u578B\u306F{0}\u306B\u306F\u4E0D\u9069\u5408\u3067\u3059\u3002{1}\u304B\u3089{2}\u306B\u306F\u5909\u63DB\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.invalid.term=\u7121\u52B9\u306A\u9805\u3067\u3059\u3002
+javac.err.abstract.class={0}\u306Fabstract\u30AF\u30E9\u30B9\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u3053\u306E\u30AF\u30E9\u30B9\u3067\u306F\u3001{2}\u304B\u3089\u6D3E\u751F\u3059\u308B{1}\u3092\u5B9A\u7FA9\u3057\u3066\u3044\u307E\u305B\u3093\u3002
+javac.err.abstract.class.cannot.override={0}\u306Fabstract\u3068\u3057\u3066\u5BA3\u8A00\u3055\u308C\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u30B9\u30FC\u30D1\u30FC\u30AF\u30E9\u30B9{2}\u306E\u30D1\u30C3\u30B1\u30FC\u30B8\u306B\u5BFE\u3057\u3066private\u3067\u3042\u308Babstract\u30E1\u30BD\u30C3\u30C9{1}\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u305A\u3001\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.new.intf={0}\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u751F\u6210\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.invoke.abstract={1}\u306E\u30E1\u30BD\u30C3\u30C9{0}\u306Fabstract\u3067\u3042\u308A\u3001\u76F4\u63A5\u547C\u3073\u51FA\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.unmatched.meth={0}\u306B\u9069\u5408\u3059\u308B\u30E1\u30BD\u30C3\u30C9\u304C{1}\u306B\u306F\u3042\u308A\u307E\u305B\u3093\u3002
+javac.err.unmatched.constr={0}\u306B\u9069\u5408\u3059\u308B\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u304C{1}\u306B\u306F\u3042\u308A\u307E\u305B\u3093\u3002
+javac.err.wrong.number.args={0}\u306E\u5F15\u6570\u306E\u6570\u304C\u4E0D\u6B63\u3067\u3059\u3002
+javac.err.forward.ref={1}\u3067\u306F{0}\u306B\u524D\u65B9\u53C2\u7167\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.array.dim.missing=\u914D\u5217\u306E\u5927\u304D\u3055\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+javac.err.new.abstract={0}\u306Fabstract\u30AF\u30E9\u30B9\u3067\u3059\u3002\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u751F\u6210\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.label.not.found={0}\u306E\u30E9\u30D9\u30EB\u5B9A\u7FA9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
+javac.err.invalid.break=''break''\u306F\u30EB\u30FC\u30D7\u5185\u304Bswitch\u6587\u5185\u306B\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.invalid.continue=''continue''\u306F\u30EB\u30FC\u30D7\u5185\u306B\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.branch.to.uplevel=''break''\u6587\u304A\u3088\u3073''continue''\u6587\u306F\u540C\u4E00\u30E1\u30BD\u30C3\u30C9\u5185\u306B\u306E\u307F\u5206\u5C90\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.invalid.decl=\u7121\u52B9\u306A\u5BA3\u8A00\u3067\u3059\u3002
+javac.err.return.with.value=\u30E1\u30BD\u30C3\u30C9{0}\u3067\u5024\u4ED8\u304D\u306E''return''\u3092\u5B9F\u884C\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F\u3002
+javac.err.return.without.value=\u30E1\u30BD\u30C3\u30C9{0}\u3067\u5024\u306A\u3057\u306E''return''\u3092\u5B9F\u884C\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F\u3002
+javac.err.return.inside.static.initializer=static\u521D\u671F\u5316\u5B50\u306E\u4E2D\u306B''return''\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.invalid.label=\u7121\u52B9\u306A\u30E9\u30D9\u30EB\u3067\u3059\u3002
+javac.err.return.required.at.end=\u30E1\u30BD\u30C3\u30C9{0}\u306E\u7D42\u308F\u308A\u306Breturn\u304C\u5FC5\u8981\u3067\u3059\u3002
+javac.err.duplicate.label=case\u30E9\u30D9\u30EB{0}\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059
+javac.err.switch.overflow=case\u30E9\u30D9\u30EB{0}\u306F{1}\u306Eswitch\u6587\u306E\u7BC4\u56F2\u3092\u8D85\u3048\u3066\u3044\u307E\u3059
+javac.err.nested.duplicate.label=\u6587\u306B\u306F\u3001\u305D\u308C\u3092\u56F2\u3080\u6587\u3068\u540C\u3058\u8B58\u5225\u5B50{0}\u3067\u30E9\u30D9\u30EB\u3092\u4ED8\u3051\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+javac.err.declaration.with.label=\u5BA3\u8A00\u306B\u306F\u30E9\u30D9\u30EB{0}\u3092\u4ED8\u3051\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+javac.err.const.expr.required=\u5B9A\u6570\u5F0F\u304C\u5FC5\u8981\u3067\u3059\u3002
+javac.err.duplicate.default=''default''\u30E9\u30D9\u30EB\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059\u3002
+javac.err.not.supported=''{0}''\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+javac.err.return.with.value.constr=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF{0}\u3067\u5024\u4ED8\u304D\u306E''return''\u3092\u5B9F\u884C\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F
+javac.err.package.repeated=\u30D1\u30C3\u30B1\u30FC\u30B8\u5BA3\u8A00\u306F1\u56DE\u306E\u307F\u53EF\u80FD\u3067\u3059\u3002
+javac.err.class.multidef=\u30AF\u30E9\u30B9{0}\u306F\u3059\u3067\u306B{1}\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059\u3002
+javac.err.class.multidef.import=\u30AF\u30E9\u30B9\u540D{0}\u306F\u30A4\u30F3\u30DD\u30FC\u30C8\u3055\u308C\u305F\u30AF\u30E9\u30B9{1}\u3068\u7AF6\u5408\u3057\u307E\u3059\u3002
+javac.err.intf.constructor=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306F\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.constr.modifier=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF{0}\u3092native\u3001abstract\u3001static\u3001synchronized\u307E\u305F\u306Ffinal\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+javac.err.intf.initializer=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306Fstatic\u521D\u671F\u5316\u5B50\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.intf.modifier.method=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306E\u30E1\u30BD\u30C3\u30C9{0}\u3092native\u3001static\u3001synchronized\u3001final\u3001private\u307E\u305F\u306Fprotected\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+javac.err.intf.modifier.field=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306E\u30D5\u30A3\u30FC\u30EB\u30C9{0}\u3092private\u307E\u305F\u306Fprotected\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+javac.err.transient.meth=\u30E1\u30BD\u30C3\u30C9{0}\u3092transient\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002transient\u306F\u5909\u6570\u306B\u306E\u307F\u9069\u7528\u3055\u308C\u307E\u3059\u3002
+javac.err.volatile.meth=\u30E1\u30BD\u30C3\u30C9{0}\u3092volatile\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002volatile\u306F\u5909\u6570\u306B\u306E\u307F\u9069\u7528\u3055\u308C\u307E\u3059\u3002
+javac.err.abstract.private.modifier=abstract\u30E1\u30BD\u30C3\u30C9{0}\u3092private\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+javac.err.abstract.static.modifier=abstract\u30E1\u30BD\u30C3\u30C9{0}\u3092static\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+javac.err.abstract.final.modifier=abstract\u30E1\u30BD\u30C3\u30C9{0}\u3092final\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+javac.err.abstract.native.modifier=abstract\u30E1\u30BD\u30C3\u30C9{0}\u3092native\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+javac.err.abstract.synchronized.modifier=abstract\u30E1\u30BD\u30C3\u30C9{0}\u3092synchronized\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+javac.err.invalid.meth.body={0}\u306Fabstract\u30E1\u30BD\u30C3\u30C9\u304Bnative\u30E1\u30BD\u30C3\u30C9\u306A\u306E\u3067\u3001\u672C\u4F53\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+javac.err.var.modifier=\u5909\u6570{0}\u3092synchronized\u3001abstract\u307E\u305F\u306Fnative\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+javac.err.var.floatmodifier=\u5909\u6570{0}\u3092strict\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+javac.err.inner.modifier=\u5185\u90E8\u30AF\u30E9\u30B9{0}\u3092volatile\u3001transient\u3001native\u307E\u305F\u306Fsynchronized\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+javac.err.transient.modifier=transient\u5909\u6570{0}\u3092\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u30FB\u30E1\u30F3\u30D0\u30FC\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+javac.err.volatile.modifier=volatile\u5909\u6570{0}\u3092final\u307E\u305F\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u30FB\u30E1\u30F3\u30D0\u30FC\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+javac.err.initializer.needed=final\u5909\u6570{0}\u306F\u521D\u671F\u5316\u3055\u308C\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+javac.err.meth.multidef=\u30E1\u30BD\u30C3\u30C9\u5BA3\u8A00{0}\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059
+javac.err.meth.redef.rettype=\u540C\u3058\u5F15\u6570\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u7570\u306A\u308B\u623B\u308A\u5024\u306E\u578B\u3067\u518D\u5B9A\u7FA9\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002{0}\u306F\u4EE5\u524D{1}\u3068\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3057\u305F
+javac.err.var.multidef=\u5909\u6570\u5BA3\u8A00\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059\u3002{0}\u306F\u4EE5\u524D{1}\u3068\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3057\u305F
+javac.err.inner.class.multidef=\u5185\u90E8\u30AF\u30E9\u30B9\u5BA3\u8A00\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059\u3002{0}\u306F\u3053\u306E\u30B9\u30B3\u30FC\u30D7\u3067\u3059\u3067\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059\u3002
+javac.err.intf.super.class={0}\u306E\u30B9\u30FC\u30D1\u30FC\u30AF\u30E9\u30B9{1}\u3092\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+javac.err.cant.access.class={0}\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3002\u30AF\u30E9\u30B9\u307E\u305F\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306F\u3001\u540C\u3058\u30D1\u30C3\u30B1\u30FC\u30B8\u307E\u305F\u306F\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u306A\u30E1\u30F3\u30D0\u30FC\u30FB\u30AF\u30E9\u30B9\u3067\u306Fpublic\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.unqualified.name.required=\u4FEE\u98FE\u3055\u308C\u305Fnew\u5F0F\u306B\u304A\u3051\u308B\u578B\u540D\u306F\u3001\u4FEE\u98FE\u3055\u308C\u3066\u3044\u306A\u3044\u8B58\u5225\u5B50\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.repeated.modifier=\u4FEE\u98FE\u5B50\u304C\u7E70\u308A\u8FD4\u3055\u308C\u3066\u3044\u307E\u3059\u3002
+javac.err.inconsistent.modifier=\u30E1\u30F3\u30D0\u30FC\u5BA3\u8A00\u306B\u4E00\u8CAB\u6027\u304C\u3042\u308A\u307E\u305B\u3093\u3002public\u3001private\u307E\u305F\u306Fprotected\u306E\u3046\u3061\u306E1\u3064\u306E\u307F\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002
+javac.err.super.is.final=final\u30AF\u30E9\u30B9{0}\u304B\u3089\u30B5\u30D6\u30AF\u30E9\u30B9\u3092\u751F\u6210\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+javac.err.super.is.intf=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9{0}\u304B\u3089\u30B5\u30D6\u30AF\u30E9\u30B9\u3092\u751F\u6210\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+javac.err.cyclic.super=\u30AF\u30E9\u30B9\u7D99\u627F\u304C\u30EB\u30FC\u30D7\u3057\u3066\u3044\u307E\u3059\u3002
+javac.err.super.is.inner=\u30AF\u30E9\u30B9\u7D99\u627F\u304C\u30EB\u30FC\u30D7\u3057\u3066\u3044\u307E\u3059\u3002\u30B5\u30D6\u30AF\u30E9\u30B9\u306F\u30B9\u30FC\u30D1\u30FC\u30AF\u30E9\u30B9\u3092\u56F2\u3080\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.cyclic.intf=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u7D99\u627F\u304C\u30EB\u30FC\u30D7\u3057\u3066\u3044\u307E\u3059\u3002
+javac.err.cyclic.scoping=\u30AF\u30E9\u30B9\u7D99\u627F\u307E\u305F\u306F\u30B9\u30B3\u30FC\u30D7\u304C\u30EB\u30FC\u30D7\u3057\u3066\u3044\u307E\u3059\u3002
+javac.err.not.intf={0}\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.final.intf=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9{0}\u3092final\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+javac.err.intf.impl.intf=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306Fimplements\u7BC0\u3092\u542B\u3080\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002extends\u7BC0\u306B\u3088\u308A\u4ED6\u306E\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3092\u62E1\u5F35\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u3059\u3002
+javac.err.multiple.inherit=\u591A\u91CD\u7D99\u627F\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
+javac.err.intf.repeated=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9{0}\u304C\u7E70\u308A\u8FD4\u3055\u308C\u3066\u3044\u307E\u3059\u3002
+javac.err.class.format={0}\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB{1}\u306E\u5F62\u5F0F\u304C\u7121\u52B9\u3067\u3059
+javac.err.truncated.class=\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB{0}\u306E\u8AAD\u8FBC\u307F\u4E2D\u306B\u4E88\u671F\u3057\u306A\u3044\u30D5\u30A1\u30A4\u30EB\u306E\u7D42\u308F\u308A\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F\u3002
+javac.err.no.meth.body=\u30E1\u30BD\u30C3\u30C9{0}\u306B\u306F\u672C\u4F53\u304C\u5FC5\u8981\u3067\u3059\u3002\u3042\u308B\u3044\u306Fabstract\u3068\u3057\u3066\u5BA3\u8A00\u3057\u307E\u3059\u3002
+javac.err.no.constructor.body=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF{0}\u306B\u306F\u30E1\u30BD\u30C3\u30C9\u672C\u4F53\u304C\u5FC5\u8981\u3067\u3059\u3002
+javac.err.bad.constructor.modifier=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306Fstrictfp\u3067\u4FEE\u98FE\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.void.inst.var=\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u5909\u6570{0}\u3092void\u578B\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+javac.err.invalid.method.decl=\u7121\u52B9\u306A\u30E1\u30BD\u30C3\u30C9\u5BA3\u8A00\u3067\u3059\u3002\u623B\u308A\u5024\u306E\u578B\u304C\u5FC5\u8981\u3067\u3059\u3002
+javac.err.invalid.method.decl.name=\u7121\u52B9\u306A\u30E1\u30BD\u30C3\u30C9\u5BA3\u8A00\u3067\u3059\u3002\u30E1\u30BD\u30C3\u30C9\u540D\u304C\u5FC5\u8981\u3067\u3059\u3002
+javac.err.invalid.method.decl.qual=\u4FEE\u98FE\u3055\u308C\u305F\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u540D\u304C\u7121\u52B9\u3067\u3059\u3002
+javac.err.super.not.found={1}\u306E\u30B9\u30FC\u30D1\u30FC\u30AF\u30E9\u30B9{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
+javac.err.intf.not.found={1}\u306E\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
+javac.err.final.abstract=\u30AF\u30E9\u30B9{0}\u3092abstract\u3068final\u306E\u4E21\u65B9\u306B\u5BA3\u8A00\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.void.array=void\u306E\u914D\u5217\u306E\u578B\u304C\u7121\u52B9\u3067\u3059\u3002
+javac.err.void.argument=\u5F15\u6570{0}\u3092void\u578B\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+javac.err.invalid.expr=\u7121\u52B9\u306A\u5F0F\u6587\u3067\u3059\u3002
+javac.err.catch.not.reached=\u3053\u306Ecatch\u7BC0\u306B\u5236\u5FA1\u304C\u79FB\u308B\u3053\u3068\u306F\u3042\u308A\u307E\u305B\u3093\u3002
+javac.err.stat.not.reached=\u3053\u306E\u6587\u306B\u5236\u5FA1\u304C\u79FB\u308B\u3053\u3068\u306F\u3042\u308A\u307E\u305B\u3093\u3002
+javac.err.init.no.normal.completion=\u521D\u671F\u5316\u5B50\u306F\u6B63\u5E38\u306B\u5B8C\u4E86\u3067\u304D\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.arithmetic.exception=\u6F14\u7B97\u4E0A\u306E\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
 javac.err.generic={0}
-javac.err.public.class.file=\
-	public \u306a\u30af\u30e9\u30b9 {0} \u306f\u3001\u30d5\u30a1\u30a4\u30eb "{1}" \u3067\u5b9a\u7fa9\u3055\u308c\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.package.class.file=\
-	{0} \u306f {1} \u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001\u3053\u306e\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u5916\u3067\u5229\u7528\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3001\u30d5\u30a1\u30a4\u30eb "{2}" \u3067\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
-javac.err.lose.precision=\
-	\u7cbe\u5ea6\u304c\u843d\u3061\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002{0} \u304b\u3089 {1} \u3078\u306e\u5909\u63db\u306b\u306f\u3001\u660e\u793a\u7684\u306a\u30ad\u30e3\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
-javac.err.duplicate.argument=\
-	\u5909\u6570\u540d ''{0}'' \u304c\u30e1\u30bd\u30c3\u30c9\u5f15\u6570\u3067 2 \u56de\u4ee5\u4e0a\u4f7f\u308f\u308c\u3066\u3044\u307e\u3059\u3002
-javac.err.local.redefined=\
-	\u5909\u6570 ''{0}'' \u306f\u3059\u3067\u306b\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002
-javac.err.local.class.redefined=\
-	\u5c40\u6240\u30af\u30e9\u30b9 ''{0}'' \u306f\u3059\u3067\u306b\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002
-javac.err.inner.redefined=\
-	\u30af\u30e9\u30b9\u540d ''{0}'' \u306f\u3059\u3067\u306b\u3053\u306e\u30b9\u30b3\u30fc\u30d7\u5185\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u5185\u90e8\u30af\u30e9\u30b9\u306f\u305d\u308c\u3092\u56f2\u3080\u30af\u30e9\u30b9\u3068\u540c\u3058\u5358\u7d14\u540d\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.inherited.hides.field=\
-	\u5909\u6570 ''{0}'' \u306f {1} \u3067\u7d99\u627f\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001{2} \u306e\u540c\u540d\u306e\u5909\u6570\u3092\u8986\u3044\u96a0\u3057\u3066\u3044\u307e\u3059\u3002\u660e\u793a\u7684\u306b ''this'' \u3092\u4f7f\u3063\u3066\u76ee\u7684\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-javac.err.inherited.hides.local=\
-	\u5909\u6570 ''{0}'' \u306f {1} \u3067\u7d99\u627f\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001\u540c\u540d\u306e\u5c40\u6240\u5909\u6570\u3092\u8986\u3044\u96a0\u3057\u3066\u3044\u307e\u3059\u3002\u660e\u793a\u7684\u306b ''this'' \u3092\u4f7f\u3063\u3066\u3069\u3061\u3089\u306e\u5909\u6570\u3067\u3042\u308b\u304b\u3092\u6307\u5b9a\u3059\u308b\u304b\u3001\u3042\u308b\u3044\u306f\u5c40\u6240\u5909\u6570\u306e\u540d\u524d\u3092\u5909\u66f4\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-javac.err.inherited.hides.method=\
-	\u30e1\u30bd\u30c3\u30c9 ''{0}'' \u306f {1} \u3067\u7d99\u627f\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001{2} \u306e\u540c\u540d\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u8986\u3044\u96a0\u3057\u3066\u3044\u307e\u3059\u3002\u660e\u793a\u7684\u306b ''this'' \u3092\u4f7f\u3063\u3066\u3069\u3061\u3089\u306e\u30e1\u30bd\u30c3\u30c9\u3067\u3042\u308b\u304b\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-javac.err.inherited.hides.type=\
-	\u578b ''{0}'' \u306f {1} \u3067\u7d99\u627f\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001\u30af\u30e9\u30b9\u5b9a\u7fa9\u3092\u56f2\u3080\u30b9\u30b3\u30fc\u30d7\u306b\u3042\u308b\u540c\u540d\u306e\u578b\u3092\u8986\u3044\u96a0\u3057\u3066\u3044\u307e\u3059\u3002\u660e\u793a\u7684\u306b\u524d\u7f6e\u4fee\u98fe\u5b50\u3092\u4f7f\u3063\u3066\u3069\u3061\u3089\u306e\u578b\u3067\u3042\u308b\u304b\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-javac.err.private.class=\
-	\u578b {0} \u3092 private \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30e1\u30f3\u30d0\u30fc\u306f\u5e38\u306b\u305d\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u5185\u304b\u3089\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u3067\u3059\u3002
-javac.err.static.class=\
-	\u578b {0} \u3092 static \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u3053\u306e\u578b\u306f\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30e1\u30f3\u30d0\u30fc\u306a\u306e\u3067\u3001\u3059\u3067\u306b\u30c8\u30c3\u30d7\u30ec\u30d9\u30eb\u306b\u3042\u308a\u307e\u3059\u3002
-javac.err.protected.class=\
-	\u578b {0} \u3092 protected \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30e1\u30f3\u30d0\u30fc\u306f\u3001public \u3067\u3042\u308b\u304b\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u5c40\u6240\u7684\u3067\u3042\u308b\u304b\u306e\u3069\u3061\u3089\u304b\u3067\u3059\u3002
-javac.err.recursive.constr=\
-	\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306e\u547c\u3073\u51fa\u3057\u304c\u518d\u5e30\u7684\u3067\u3059: {0}
-javac.err.wrong.class=\
-	\u30d5\u30a1\u30a4\u30eb {0} \u306b\u306f {1} \u304c\u542b\u307e\u308c\u308b\u3068\u307f\u306a\u3055\u308c\u3066\u3044\u307e\u3057\u305f\u304c\u3001\u542b\u307e\u308c\u3066\u3044\u305f\u306e\u306f {2} \u3067\u3057\u305f\u3002\u30d5\u30a1\u30a4\u30eb\u3092\u6d88\u53bb\u3059\u308b\u304b\u3001\u30af\u30e9\u30b9\u30d1\u30b9\u306b\u542b\u307e\u308c\u308b\u9069\u5207\u306a\u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u79fb\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-javac.err.wrong.source=\
-	\u30d5\u30a1\u30a4\u30eb {0} \u306b\u306f {1} \u306f\u542b\u307e\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u30af\u30e9\u30b9\u30d1\u30b9\u3092\u5909\u66f4\u3057\u3066\u3001{1} \u304c {2} \u306b\u306a\u3044\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-javac.err.class.not.found=\
-	\u30af\u30e9\u30b9 {0} \u304c {1} \u306b\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
-javac.err.class.not.found.no.context=\u30af\u30e9\u30b9 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
-javac.err.package.not.found=\
-	\u30d1\u30c3\u30b1\u30fc\u30b8 {0} \u304c {1} \u306b\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
-javac.err.package.not.found.strong=\
-	\u30d1\u30c3\u30b1\u30fc\u30b8 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002\u30d1\u30c3\u30b1\u30fc\u30b8 {0} \u304c\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u306b\u306a\u308b\u3088\u3046\u306b\u30af\u30e9\u30b9\u30d1\u30b9\u3092\u8abf\u6574\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-javac.err.class.package.conflict=\
-	\u578b\u3068\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u540c\u3058\u540d\u524d\u3092\u4ed8\u3051\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u30d1\u30c3\u30b1\u30fc\u30b8 {0} \u306f\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u3067\u3059\u304c\u3001\u30af\u30e9\u30b9\u540d\u306b {0} \u3092\u4f7f\u3046\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.package.class.conflict=\
-	\u578b\u3068\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u540c\u3058\u540d\u524d\u3092\u4ed8\u3051\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u30af\u30e9\u30b9 {0} \u306f\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u3067\u3059\u304c\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u306b {0} \u3092\u4f7f\u3046\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.package.class.conflict.strong=\
-	\u540d\u524d {0} \u306f\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u53c2\u7167\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\u578b\u3068\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u306f\u540c\u3058\u540d\u524d\u3092\u4ed8\u3051\u308b\u3053\u3068\u306f\u3067\u304d\u306a\u3044\u305f\u3081\u3001{1} \u3068\u3044\u3046\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u306a\u30af\u30e9\u30b9\u306e\u540d\u524d\u306f\u7121\u52b9\u3067\u3059\u3002\u30af\u30e9\u30b9 {1} \u306e\u540d\u524d\u3092\u5909\u66f4\u3059\u308b\u304b\u3001\u30af\u30e9\u30b9\u30d1\u30b9\u304b\u3089\u524a\u9664\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-javac.err.illegal.mangled.name=\
-	{1} \u306b\u5bfe\u3057\u3066\u540d\u524d {0} \u306f\u4e0d\u6b63\u3067\u3059\u3002
-javac.err.class.and.package=\
-	{0} \u306f\u30af\u30e9\u30b9\u304b\u30d1\u30c3\u30b1\u30fc\u30b8\u304b\u306e\u533a\u5225\u304c\u3064\u304d\u307e\u305b\u3093\u3002
-javac.err.throws.not.throwable=\
-	throws \u7bc0\u306e\u4f8b\u5916 {0} \u306f\u30af\u30e9\u30b9 java.lang.Throwable \u306e\u30b5\u30d6\u30af\u30e9\u30b9\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.throw.not.throwable=\
-	\u4f8b\u5916 {0} \u306f\u30b9\u30ed\u30fc\u3067\u304d\u307e\u305b\u3093\u3002\u4f8b\u5916\u306f\u30af\u30e9\u30b9 java.lang.Throwable \u306e\u30b5\u30d6\u30af\u30e9\u30b9\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.catch.not.throwable=\
-	\u4f8b\u5916 {0} \u306f\u30ad\u30e3\u30c3\u30c1\u3067\u304d\u307e\u305b\u3093\u3002\u4f8b\u5916\u306f\u30af\u30e9\u30b9 java.lang.Throwable \u306e\u30b5\u30d6\u30af\u30e9\u30b9\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.initializer.exception=\
-	\u521d\u671f\u5316\u5b50\u5185\u3067\u306f\u4f8b\u5916 {0} \u3092\u30b9\u30ed\u30fc\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.cant.read=\
-	{0} \u3092\u8aad\u307f\u8fbc\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.cant.write=\
-	{0} \u304c\u66f8\u304d\u8fbc\u3081\u307e\u305b\u3093\u3002
-javac.err.fatal.error=\
-	\u30b3\u30f3\u30d1\u30a4\u30e9\u5185\u90e8\u3067\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002http://java.sun.com/cgi-bin/bugreport.cgi \u3067\u30d0\u30b0\u5831\u544a\u3092\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-javac.err.fatal.exception=\
-	\u30b3\u30f3\u30d1\u30a4\u30e9\u5185\u90e8\u3067\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002http://java.sun.com/cgi-bin/bugreport.cgi \u3067\u30d0\u30b0\u5831\u544a\u3092\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-javac.err.no.inner.classes=\
-	\u5185\u90e8\u30af\u30e9\u30b9\u306e\u30b5\u30dd\u30fc\u30c8\u306f\u4e2d\u6b62\u3055\u308c\u307e\u3057\u305f\u3002
-javac.err.uncaught.exception=\
-	\u4f8b\u5916 {0} \u306f\u30ad\u30e3\u30c3\u30c1\u3055\u308c\u308b\u304b\u3001\u3042\u308b\u3044\u306f\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306e throws \u7bc0\u3067\u5ba3\u8a00\u3055\u308c\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.constructor.exception=\
-	\u4f8b\u5916 {0} \u306f\u30ad\u30e3\u30c3\u30c1\u3055\u308c\u308b\u304b\u3001\u3042\u308b\u3044\u306f\u3053\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306e throws \u7bc0\u3067\u5ba3\u8a00\u3055\u308c\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.def.constructor.exception=\
-	\u30b9\u30fc\u30d1\u30fc\u30af\u30e9\u30b9\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u304c\u4f8b\u5916 {0} \u3092\u30b9\u30ed\u30fc\u3059\u308b\u305f\u3081\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3092\u3053\u306e\u30af\u30e9\u30b9\u7528\u306b\u751f\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002\u3053\u306e\u30af\u30e9\u30b9\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3092\u660e\u793a\u7684\u306b\u5b9a\u7fa9\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-javac.err.catch.not.thrown=\
-	\u4f8b\u5916 {0} \u306f\u5bfe\u5fdc\u3059\u308b try \u6587\u306e\u672c\u4f53\u3067\u30b9\u30ed\u30fc\u3055\u308c\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+javac.err.public.class.file=public\u306A\u30AF\u30E9\u30B9{0}\u306F\u3001\u30D5\u30A1\u30A4\u30EB"{1}"\u3067\u5B9A\u7FA9\u3055\u308C\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.package.class.file={0}\u306F{1}\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u3001\u3053\u306E\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u5916\u3067\u5229\u7528\u3055\u308C\u3066\u3044\u308B\u306E\u3067\u3001\u30D5\u30A1\u30A4\u30EB"{2}"\u3067\u5B9A\u7FA9\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.lose.precision=\u7CBE\u5EA6\u304C\u843D\u3061\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002{0}\u304B\u3089{1}\u3078\u306E\u5909\u63DB\u306B\u306F\u3001\u660E\u793A\u7684\u306A\u30AD\u30E3\u30B9\u30C8\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002
+javac.err.duplicate.argument=\u5909\u6570\u540D''{0}''\u304C\u30E1\u30BD\u30C3\u30C9\u5F15\u6570\u30672\u56DE\u4EE5\u4E0A\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059\u3002
+javac.err.local.redefined=\u5909\u6570''{0}''\u306F\u3059\u3067\u306B\u3053\u306E\u30E1\u30BD\u30C3\u30C9\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059\u3002
+javac.err.local.class.redefined=\u5C40\u6240\u30AF\u30E9\u30B9''{0}''\u306F\u3059\u3067\u306B\u3053\u306E\u30E1\u30BD\u30C3\u30C9\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059\u3002
+javac.err.inner.redefined=\u30AF\u30E9\u30B9\u540D''{0}''\u306F\u3059\u3067\u306B\u3053\u306E\u30B9\u30B3\u30FC\u30D7\u5185\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u5185\u90E8\u30AF\u30E9\u30B9\u306F\u305D\u308C\u3092\u56F2\u3080\u30AF\u30E9\u30B9\u3068\u540C\u3058\u5358\u7D14\u540D\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.inherited.hides.field=\u5909\u6570''{0}''\u306F{1}\u3067\u7D99\u627F\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u3001{2}\u306E\u540C\u540D\u306E\u5909\u6570\u3092\u8986\u3044\u96A0\u3057\u3066\u3044\u307E\u3059\u3002\u660E\u793A\u7684\u306B''this''\u4FEE\u98FE\u5B50\u3092\u4F7F\u7528\u3057\u3066\u76EE\u7684\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+javac.err.inherited.hides.local=\u5909\u6570''{0}''\u306F{1}\u3067\u7D99\u627F\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u3001\u540C\u540D\u306E\u5C40\u6240\u5909\u6570\u3092\u8986\u3044\u96A0\u3057\u3066\u3044\u307E\u3059\u3002\u660E\u793A\u7684\u306B''this''\u4FEE\u98FE\u5B50\u3092\u4F7F\u7528\u3057\u3066\u3069\u3061\u3089\u306E\u5909\u6570\u3067\u3042\u308B\u304B\u3092\u6307\u5B9A\u3059\u308B\u304B\u3001\u3042\u308B\u3044\u306F\u5C40\u6240\u5909\u6570\u306E\u540D\u524D\u3092\u5909\u66F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+javac.err.inherited.hides.method=\u30E1\u30BD\u30C3\u30C9''{0}''\u306F{1}\u3067\u7D99\u627F\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u3001{2}\u306E\u540C\u540D\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u8986\u3044\u96A0\u3057\u3066\u3044\u307E\u3059\u3002\u660E\u793A\u7684\u306B''this''\u4FEE\u98FE\u5B50\u3092\u4F7F\u7528\u3057\u3066\u3069\u3061\u3089\u306E\u30E1\u30BD\u30C3\u30C9\u3067\u3042\u308B\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+javac.err.inherited.hides.type=\u578B''{0}''\u306F{1}\u3067\u7D99\u627F\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u3001\u30AF\u30E9\u30B9\u5B9A\u7FA9\u3092\u56F2\u3080\u30B9\u30B3\u30FC\u30D7\u306B\u3042\u308B\u540C\u540D\u306E\u578B\u3092\u8986\u3044\u96A0\u3057\u3066\u3044\u307E\u3059\u3002\u660E\u793A\u7684\u306B\u524D\u7F6E\u4FEE\u98FE\u5B50\u3092\u4F7F\u7528\u3057\u3066\u3069\u3061\u3089\u306E\u578B\u3067\u3042\u308B\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+javac.err.private.class=\u578B{0}\u3092private\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\u30E1\u30F3\u30D0\u30FC\u306F\u5E38\u306B\u305D\u306E\u30D1\u30C3\u30B1\u30FC\u30B8\u5185\u304B\u3089\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u3067\u3059\u3002
+javac.err.static.class=\u578B{0}\u3092static\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\u3053\u306E\u578B\u306F\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\u30E1\u30F3\u30D0\u30FC\u306A\u306E\u3067\u3001\u3059\u3067\u306B\u30C8\u30C3\u30D7\u30FB\u30EC\u30D9\u30EB\u306B\u3042\u308A\u307E\u3059\u3002
+javac.err.protected.class=\u578B{0}\u3092protected\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\u30E1\u30F3\u30D0\u30FC\u306F\u3001public\u3067\u3042\u308B\u304B\u3001\u30D1\u30C3\u30B1\u30FC\u30B8\u306B\u5C40\u6240\u7684\u3067\u3042\u308B\u304B\u306E\u3069\u3061\u3089\u304B\u3067\u3059\u3002
+javac.err.recursive.constr=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u547C\u51FA\u3057\u304C\u518D\u5E30\u7684\u3067\u3059: {0}\u3002
+javac.err.wrong.class=\u30D5\u30A1\u30A4\u30EB{0}\u306B\u306F{1}\u304C\u542B\u307E\u308C\u308B\u3068\u307F\u306A\u3055\u308C\u3066\u3044\u307E\u3057\u305F\u304C\u3001\u542B\u307E\u308C\u3066\u3044\u305F\u306E\u306F{2}\u3067\u3057\u305F\u3002\u30D5\u30A1\u30A4\u30EB\u3092\u30AF\u30EA\u30A2\u3059\u308B\u304B\u3001\u30AF\u30E9\u30B9\u30D1\u30B9\u306B\u542B\u307E\u308C\u308B\u9069\u5207\u306A\u30B5\u30D6\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u79FB\u52D5\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+javac.err.wrong.source=\u30D5\u30A1\u30A4\u30EB{0}\u306B\u306F{1}\u306F\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u30AF\u30E9\u30B9\u30D1\u30B9\u3092\u5909\u66F4\u3057\u3066\u3001\u30D5\u30A1\u30A4\u30EB\u304C{2}\u306B\u306A\u3044\u3088\u3046\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+javac.err.class.not.found=\u30AF\u30E9\u30B9{0}\u304C{1}\u306B\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
+javac.err.class.not.found.no.context=\u30AF\u30E9\u30B9{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
+javac.err.package.not.found=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u304C{1}\u306B\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
+javac.err.package.not.found.strong=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u304C\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u306B\u306A\u308B\u3088\u3046\u306B\u30AF\u30E9\u30B9\u30D1\u30B9\u3092\u8ABF\u6574\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+javac.err.class.package.conflict=\u578B\u3068\u30D1\u30C3\u30B1\u30FC\u30B8\u306B\u540C\u3058\u540D\u524D\u3092\u4ED8\u3051\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306F\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u3067\u3059\u304C\u3001\u30AF\u30E9\u30B9\u540D\u306B{0}\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.package.class.conflict=\u578B\u3068\u30D1\u30C3\u30B1\u30FC\u30B8\u306B\u540C\u3058\u540D\u524D\u3092\u4ED8\u3051\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\u30AF\u30E9\u30B9{1}\u306F\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u3067\u3059\u304C\u3001\u30D1\u30C3\u30B1\u30FC\u30B8\u540D\u306B{0}\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.package.class.conflict.strong=\u540D\u524D{0}\u306F\u30D1\u30C3\u30B1\u30FC\u30B8\u3092\u53C2\u7167\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u578B\u3068\u30D1\u30C3\u30B1\u30FC\u30B8\u306B\u306F\u540C\u3058\u540D\u524D\u3092\u4ED8\u3051\u308B\u3053\u3068\u306F\u3067\u304D\u306A\u3044\u305F\u3081\u3001{1}\u3068\u3044\u3046\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u306A\u30AF\u30E9\u30B9\u306E\u540D\u524D\u306F\u7121\u52B9\u3067\u3059\u3002\u30AF\u30E9\u30B9{1}\u306E\u540D\u524D\u3092\u5909\u66F4\u3059\u308B\u304B\u3001\u30AF\u30E9\u30B9\u30D1\u30B9\u304B\u3089\u524A\u9664\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+javac.err.illegal.mangled.name={1}\u306B\u5BFE\u3057\u3066\u540D\u524D{0}\u306F\u4E0D\u6B63\u3067\u3059\u3002
+javac.err.class.and.package={0}\u306F\u30AF\u30E9\u30B9\u304B\u30D1\u30C3\u30B1\u30FC\u30B8\u304B\u306E\u533A\u5225\u304C\u3064\u304D\u307E\u305B\u3093\u3002
+javac.err.throws.not.throwable=throws\u7BC0\u306E\u4F8B\u5916{0}\u306F\u30AF\u30E9\u30B9java.lang.Throwable\u306E\u30B5\u30D6\u30AF\u30E9\u30B9\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.throw.not.throwable=\u4F8B\u5916{0}\u306F\u30B9\u30ED\u30FC\u3067\u304D\u307E\u305B\u3093\u3002\u4F8B\u5916\u306F\u30AF\u30E9\u30B9java.lang.Throwable\u306E\u30B5\u30D6\u30AF\u30E9\u30B9\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.catch.not.throwable=\u4F8B\u5916{0}\u306F\u6355\u6349\u3067\u304D\u307E\u305B\u3093\u3002\u4F8B\u5916\u306F\u30AF\u30E9\u30B9java.lang.Throwable\u306E\u30B5\u30D6\u30AF\u30E9\u30B9\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.initializer.exception=\u521D\u671F\u5316\u5B50\u5185\u3067\u306F\u4F8B\u5916{0}\u3092\u30B9\u30ED\u30FC\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.cant.read={0}\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093
+javac.err.cant.write={0}\u304C\u66F8\u304D\u8FBC\u3081\u307E\u305B\u3093
+javac.err.fatal.error=\u30B3\u30F3\u30D1\u30A4\u30E9\u5185\u90E8\u3067\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002http://java.sun.com/cgi-bin/bugreport.cgi\u3067\u30D0\u30B0\u5831\u544A\u3092\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+javac.err.fatal.exception=\u30B3\u30F3\u30D1\u30A4\u30E9\u5185\u90E8\u3067\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002http://java.sun.com/cgi-bin/bugreport.cgi\u3067\u30D0\u30B0\u5831\u544A\u3092\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+javac.err.no.inner.classes=\u5185\u90E8\u30AF\u30E9\u30B9\u306E\u30B5\u30DD\u30FC\u30C8\u306F\u4E2D\u6B62\u3055\u308C\u307E\u3057\u305F\u3002
+javac.err.uncaught.exception=\u4F8B\u5916{0}\u306F\u6355\u6349\u3055\u308C\u308B\u304B\u3001\u3042\u308B\u3044\u306F\u3053\u306E\u30E1\u30BD\u30C3\u30C9\u306Ethrows\u7BC0\u3067\u5BA3\u8A00\u3055\u308C\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.constructor.exception=\u4F8B\u5916{0}\u306F\u6355\u6349\u3055\u308C\u308B\u304B\u3001\u307E\u305F\u306F\u3053\u306E\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306Ethrows\u7BC0\u3067\u5BA3\u8A00\u3055\u308C\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.def.constructor.exception=\u30B9\u30FC\u30D1\u30FC\u30AF\u30E9\u30B9\u306E\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u304C\u4F8B\u5916{0}\u3092\u30B9\u30ED\u30FC\u3059\u308B\u305F\u3081\u3001\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u3092\u3053\u306E\u30AF\u30E9\u30B9\u7528\u306B\u751F\u6210\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3002\u3053\u306E\u30AF\u30E9\u30B9\u306E\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u3092\u660E\u793A\u7684\u306B\u5B9A\u7FA9\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+javac.err.catch.not.thrown=\u4F8B\u5916{0}\u306F\u5BFE\u5FDC\u3059\u308Btry\u6587\u306E\u672C\u4F53\u3067\u30B9\u30ED\u30FC\u3055\u308C\u308B\u3053\u3068\u306F\u3042\u308A\u307E\u305B\u3093\u3002
 #warning:
-javac.err.array.clone.supported=\
-	\u6ce8: \u914d\u5217\u306e\u8907\u88fd\u306f\u78ba\u8a8d\u6e08\u307f\u4f8b\u5916\u3092\u30b9\u30ed\u30fc\u3059\u308b\u3053\u3068\u306f\u306a\u3044\u306e\u3067\u3001catch \u7bc0\u306f\u4e0d\u8981\u3067\u3059\u3002\u4e0d\u8981\u306a catch \u7bc0\u3092\u524a\u9664\u3059\u308b\u304b\u3001\u3042\u308b\u3044\u306f\u4ee5\u524d\u306e\u30b3\u30f3\u30d1\u30a4\u30e9\u3068\u306e\u4e92\u63db\u6027\u3092\u4fdd\u3061\u305f\u3044\u5834\u5408\u306f\u3001\u6b21\u306e\u3088\u3046\u306a\u64ec\u4f3c\u7684\u306a throw \u6587\u3092\u633f\u5165\u3057\u3066\u304f\u3060\u3055\u3044:  if (false) throw new CloneNotSupportedException();
-javac.err.no.outer.arg=\
-	\u5185\u90e8\u30af\u30e9\u30b9\u3092\u56f2\u3080 {0} \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u30b9\u30b3\u30fc\u30d7\u5185\u306b\u3042\u308a\u307e\u305b\u3093\u3002\
-	\u5185\u90e8\u30af\u30e9\u30b9\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3067\u304d\u307e\u305b\u3093\u3002\
-	{1} \u3092\u751f\u6210\u3059\u308b\u5834\u5408\u306b\u306f\u3001"outer. new Inner()" \u307e\u305f\u306f\
-	"outer. super()" \u306e\u3088\u3046\u306b\u660e\u793a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
-javac.err.no.default.outer.arg=\
-	\u5185\u90e8\u30af\u30e9\u30b9\u3092\u56f2\u3080 {0} \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u30b9\u30b3\u30fc\u30d7\u5185\u306b\u3042\u308a\u307e\u305b\u3093\u3002\
-	{1} \u306b\u3064\u3044\u3066\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3092\u751f\u6210\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.no.outer.base=\
-	\u5185\u90e8\u30af\u30e9\u30b9\u3092\u56f2\u3080 {0} \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u30b9\u30b3\u30fc\u30d7\u5185\u306b\u3042\u308a\u307e\u305b\u3093\u3002\
-	{1} \u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u5834\u5408\u306f\u3001"outer.member" \u306a\u3069\u306e\u3088\u3046\u306b\u660e\u793a\u3059\u308b\
-	\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
-javac.err.inner.interface=\
-	\u30e1\u30f3\u30d0\u30fc\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u304b\u30c8\u30c3\u30d7\u30ec\u30d9\u30eb\u30af\u30e9\u30b9\u306b\u306e\u307f\u8a31\u3055\u308c\u3066\u3044\u307e\u3059\u3002
-javac.err.static.inner.class=\
-	\u578b {0} \u3092 static \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002static \u30e1\u30f3\u30d0\u30fc\u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u304b\u30c8\u30c3\u30d7\u30ec\u30d9\u30eb\u30af\u30e9\u30b9\u306b\u306e\u307f\u8a31\u3055\u308c\u3066\u3044\u307e\u3059\u3002
-javac.err.static.inner.field=\
-	\u5909\u6570 {0} \u306f {1} \u3067 static \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002static \u30e1\u30f3\u30d0\u30fc\u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u304b\u30c8\u30c3\u30d7\u30ec\u30d9\u30eb\u30af\u30e9\u30b9\u306b\u306e\u307f\u8a31\u3055\u308c\u3066\u3044\u307e\u3059\u3002
-javac.err.static.inner.method=\
-	\u30e1\u30bd\u30c3\u30c9 {0} \u306f {1} \u3067 static \u3068\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002static \u30e1\u30f3\u30d0\u30fc\u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u304b\u30c8\u30c3\u30d7\u30ec\u30d9\u30eb\u30af\u30e9\u30b9\u306b\u306e\u307f\u8a31\u3055\u308c\u3066\u3044\u307e\u3059\u3002
-javac.err.too.many.errors=\
-	\u30a8\u30e9\u30fc\u6570\u304c\u4e0a\u9650\u3092\u8d85\u3048\u307e\u3057\u305f\u3002(\u5831\u544a\u3059\u308b\u30a8\u30e9\u30fc\u306e\u4e0a\u9650\u306f {0} \u3067\u3059\u3002)
-javac.err.override.static.with.instance=\
-	{1} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u30e1\u30bd\u30c3\u30c9 {0} \u306f\u3001{2} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u540c\u3058 \
-	\u30b7\u30b0\u30cb\u30c1\u30e3\u30fc\u306e static \u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u304d\u307e\u305b\u3093\u3002static \
-	\u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3059\u308b\u306e\u306f\u7121\u52b9\u3067\u3059\u3002
-javac.err.hide.instance.with.static=\
-	{1} \u3067\u5ba3\u8a00\u3055\u308c\u305f static \u30e1\u30bd\u30c3\u30c9 {0} \u306f\u3001{2} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u540c\u3058 \
-	\u30b7\u30b0\u30cb\u30c1\u30e3\u30fc\u306e static \u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u304d\u307e\u305b\u3093\u3002static \
-	\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u30e1\u30bd\u30c3\u30c9\u3092\u8986\u3044\u96a0\u3059\u306e\u306f\u7121\u52b9\u3067\u3059\u3002
-javac.err.override.final.method=\
-	{1} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9 {0} \u306f\u3001{2} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u540c\u3058\u30b7\u30b0\u30cb\u30c1\u30e3\u30fc\u306e \
-	\u30d5\u30a1\u30a4\u30ca\u30eb\u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u304d\u307e\u305b\u3093\u3002\u30d5\u30a1\u30a4\u30ca\u30eb\u30e1\u30bd\u30c3\u30c9\u306f \
-	\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.override.is.deprecated=\
-	{1} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9 {0} \u306f\u63a8\u5968\u3055\u308c\u306a\u3044\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001\
-	{2} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u540c\u3058\u30b7\u30b0\u30cb\u30c1\u30e3\u30fc\u306e\u63a8\u5968\u3055\u308c\u306a\u3044\u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\
-	\u30e9\u30a4\u30c9\u3057\u307e\u3059\u3002
-javac.err.override.more.restrictive=\
-	{1} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9 {0} \u306f\u3001{2} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u540c\u3058\u30b7\u30b0\u30cb\u30c1\u30e3\u30fc\u306e \
-	\u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u304d\u307e\u305b\u3093\u3002\u30a2\u30af\u30bb\u30b9\u4fee\u98fe\u5b50\u306f\u3055\u3089\u306b\u5236\u9650\u3055\u308c\u3066 \
-	\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002
-javac.err.override.different.return=\
-	{1} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9 {0} \u306f\u3001{2} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u540c\u3058\u30b7\u30b0\u30cb\u30c1\u30e3\u30fc\u306e \
-	\u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u304d\u307e\u305b\u3093\u3002\u540c\u3058\u578b\u306e\u623b\u308a\u5024\u3092\u6301\u305f\u306a\u3051\u308c\u3070 \
-	\u306a\u308a\u307e\u305b\u3093\u3002	
-javac.err.override.incompatible.exceptions=\
-	{1} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9 {0} \u306f\u3001{2} \u3067\u5ba3\u8a00\u3055\u308c\u305f\u540c\u3058\u30b7\u30b0\u30cb\u30c1\u30e3\u30fc\u306e \
-	\u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u304d\u307e\u305b\u3093\u3002\u305d\u308c\u3089\u306e throws \u7bc0\u306b\u306f\u4e92\u63db\u6027\u304c \
-	\u3042\u308a\u307e\u305b\u3093\u3002
-javac.err.meet.different.return=\
-	{1} \u304b\u3089\u7d99\u627f\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9 {0} \u306f\u3001{2} \u304b\u3089\u7d99\u627f\u3055\u308c\u305f\u540c\u3058\u30b7\u30b0\u30cb\u30c1\u30e3\u30fc \
-	\u306e\u30e1\u30bd\u30c3\u30c9\u3068\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u540c\u3058\u578b\u306e\u623b\u308a\u5024\u3092\u6301\u305f\u306a\u3051\u308c\u3070 \
-	\u306a\u308a\u307e\u305b\u3093\u3002
-javac.err.nontrivial.meet=\
-	{1} \u3068 {2} \u304b\u3089\u7d99\u627f\u3055\u308c\u305f\u30e1\u30bd\u30c3\u30c9 {0} \u306e\u5b9a\u7fa9\u306f\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u3059\u304c\u3001 \
-	\u305d\u308c\u3089\u306e\u7d44\u307f\u5408\u308f\u305b\u306f\u5f71\u97ff\u304c\u5927\u304d\u3044\u305f\u3081\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u56de\u907f\u65b9\u6cd5\u3068 \
-	\u3057\u3066\u306f\u3001\u3053\u306e\u30af\u30e9\u30b9\u3067\u660e\u793a\u7684\u306b {0} \u3092\u5ba3\u8a00\u3057\u3066\u304f\u3060\u3055\u3044\u3002\
-
-javac.err.method.too.long=\
-	\u3053\u306e\u30b3\u30fc\u30c9\u306f 64K \u30d0\u30a4\u30c8\u3092\u8d85\u3048\u308b\u30b5\u30a4\u30ba\u306e\u30e1\u30bd\u30c3\u30c9\u306e\u751f\u6210\u3092\u5fc5\u8981\u3068 \
-	\u3057\u307e\u3059\u3002Virtual Machine \u306f\u751f\u6210\u3055\u308c\u308b\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u62d2\u5426\u3057\u307e\u3059\u3002
+javac.err.array.clone.supported=\u6CE8\u610F: \u914D\u5217\u306E\u8907\u88FD\u306F\u78BA\u8A8D\u6E08\u4F8B\u5916\u3092\u30B9\u30ED\u30FC\u3059\u308B\u3053\u3068\u306F\u306A\u3044\u306E\u3067\u3001catch\u7BC0\u306F\u4E0D\u8981\u3067\u3059\u3002\u4E0D\u8981\u306Acatch\u7BC0\u3092\u524A\u9664\u3059\u308B\u304B\u3001\u3042\u308B\u3044\u306F\u4EE5\u524D\u306E\u30B3\u30F3\u30D1\u30A4\u30E9\u3068\u306E\u4E92\u63DB\u6027\u3092\u4FDD\u3061\u305F\u3044\u5834\u5408\u306F\u3001\u6B21\u306E\u3088\u3046\u306A\u64EC\u4F3C\u7684\u306Athrow\u6587\u3092\u633F\u5165\u3057\u3066\u304F\u3060\u3055\u3044: if(false)throw new CloneNotSupportedException()\u3002
+javac.err.no.outer.arg=\u5185\u90E8\u30AF\u30E9\u30B9\u3092\u56F2\u3080{0}\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u304C\u30B9\u30B3\u30FC\u30D7\u5185\u306B\u3042\u308A\u307E\u305B\u3093\u3002\u5185\u90E8\u30AF\u30E9\u30B9\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093\u3002{1}\u3092\u751F\u6210\u3059\u308B\u5834\u5408\u306B\u306F\u3001"outer. new Inner()"\u307E\u305F\u306F"outer. super()"\u306E\u3088\u3046\u306B\u660E\u793A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.no.default.outer.arg=\u5185\u90E8\u30AF\u30E9\u30B9\u3092\u56F2\u3080{0}\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u304C\u30B9\u30B3\u30FC\u30D7\u5185\u306B\u3042\u308A\u307E\u305B\u3093\u3002{1}\u306B\u3064\u3044\u3066\u306F\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.no.outer.base=\u5185\u90E8\u30AF\u30E9\u30B9\u3092\u56F2\u3080{0}\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u304C\u30B9\u30B3\u30FC\u30D7\u5185\u306B\u3042\u308A\u307E\u305B\u3093\u3002{1}\u306B\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u5834\u5408\u306F\u3001"outer.member"\u306A\u3069\u306E\u3088\u3046\u306B\u660E\u793A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.inner.interface=\u30E1\u30F3\u30D0\u30FC\u30FB\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304B\u30C8\u30C3\u30D7\u30FB\u30EC\u30D9\u30EB\u30FB\u30AF\u30E9\u30B9\u306B\u306E\u307F\u8A31\u3055\u308C\u3066\u3044\u307E\u3059\u3002
+javac.err.static.inner.class=\u578B{0}\u3092static\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002static\u30E1\u30F3\u30D0\u30FC\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304B\u30C8\u30C3\u30D7\u30FB\u30EC\u30D9\u30EB\u30FB\u30AF\u30E9\u30B9\u306B\u306E\u307F\u8A31\u3055\u308C\u3066\u3044\u307E\u3059\u3002
+javac.err.static.inner.field=\u5909\u6570{0}\u306F{1}\u3067static\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002static\u30E1\u30F3\u30D0\u30FC\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304B\u30C8\u30C3\u30D7\u30FB\u30EC\u30D9\u30EB\u30FB\u30AF\u30E9\u30B9\u306B\u306E\u307F\u8A31\u3055\u308C\u3066\u3044\u307E\u3059\u3002
+javac.err.static.inner.method=\u30E1\u30BD\u30C3\u30C9{0}\u306F{1}\u3067static\u3068\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002static\u30E1\u30F3\u30D0\u30FC\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304B\u30C8\u30C3\u30D7\u30FB\u30EC\u30D9\u30EB\u30FB\u30AF\u30E9\u30B9\u306B\u306E\u307F\u8A31\u3055\u308C\u3066\u3044\u307E\u3059\u3002
+javac.err.too.many.errors=\u30A8\u30E9\u30FC\u6570\u304C\u4E0A\u9650\u3092\u8D85\u3048\u307E\u3057\u305F\u3002(\u5831\u544A\u3059\u308B\u30A8\u30E9\u30FC\u306E\u4E0A\u9650\u306F{0}\u3067\u3059\u3002)
+javac.err.override.static.with.instance={1}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u30FB\u30E1\u30BD\u30C3\u30C9{0}\u306F\u3001{2}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u540C\u3058\u30B7\u30B0\u30CB\u30C1\u30E3\u306Estatic\u30E1\u30BD\u30C3\u30C9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3067\u304D\u307E\u305B\u3093\u3002static\u30E1\u30BD\u30C3\u30C9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\u306E\u306F\u7121\u52B9\u3067\u3059\u3002
+javac.err.hide.instance.with.static={1}\u3067\u5BA3\u8A00\u3055\u308C\u305Fstatic\u30E1\u30BD\u30C3\u30C9{0}\u306F\u3001{2}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u540C\u3058\u30B7\u30B0\u30CB\u30C1\u30E3\u306Estatic\u30E1\u30BD\u30C3\u30C9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3067\u304D\u307E\u305B\u3093\u3002static\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u30FB\u30E1\u30BD\u30C3\u30C9\u3092\u8986\u3044\u96A0\u3059\u306E\u306F\u7121\u52B9\u3067\u3059\u3002
+javac.err.override.final.method={1}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9{0}\u306F\u3001{2}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u540C\u3058\u30B7\u30B0\u30CB\u30C1\u30E3\u306Efinal\u30E1\u30BD\u30C3\u30C9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3067\u304D\u307E\u305B\u3093\u3002final\u30E1\u30BD\u30C3\u30C9\u306F\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.override.is.deprecated={1}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9{0}\u306F\u63A8\u5968\u3055\u308C\u306A\u3044\u3082\u306E\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u304C\u3001{2}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u540C\u3058\u30B7\u30B0\u30CB\u30C1\u30E3\u306E\u63A8\u5968\u3055\u308C\u306A\u3044\u30E1\u30BD\u30C3\u30C9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u3059\u3002
+javac.err.override.more.restrictive={1}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9{0}\u306F\u3001{2}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u540C\u3058\u30B7\u30B0\u30CB\u30C1\u30E3\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3067\u304D\u307E\u305B\u3093\u3002\u30A2\u30AF\u30BB\u30B9\u4FEE\u98FE\u5B50\u306F\u3055\u3089\u306B\u5236\u9650\u3055\u308C\u3066\u4F5C\u6210\u3055\u308C\u307E\u3059\u3002
+javac.err.override.different.return={1}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9{0}\u306F\u3001{2}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u540C\u3058\u30B7\u30B0\u30CB\u30C1\u30E3\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3067\u304D\u307E\u305B\u3093\u3002\u540C\u3058\u578B\u306E\u623B\u308A\u5024\u3092\u6301\u3064\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\t
+javac.err.override.incompatible.exceptions={1}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9{0}\u306F\u3001{2}\u3067\u5BA3\u8A00\u3055\u308C\u305F\u540C\u3058\u30B7\u30B0\u30CB\u30C1\u30E3\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3067\u304D\u307E\u305B\u3093\u3002\u305D\u308C\u3089\u306Ethrows\u7BC0\u306B\u306F\u4E92\u63DB\u6027\u304C\u3042\u308A\u307E\u305B\u3093\u3002
+javac.err.meet.different.return={1}\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9{0}\u306F\u3001{2}\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u540C\u3058\u30B7\u30B0\u30CB\u30C1\u30E3\u306E\u30E1\u30BD\u30C3\u30C9\u3068\u4E92\u63DB\u6027\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u540C\u3058\u578B\u306E\u623B\u308A\u5024\u3092\u6301\u3064\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+javac.err.nontrivial.meet={1}\u3068{2}\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9{0}\u306E\u5B9A\u7FA9\u306F\u4E92\u63DB\u6027\u304C\u3042\u308A\u307E\u3059\u304C\u3001\u305D\u308C\u3089\u306E\u7D44\u5408\u305B\u306F\u5F71\u97FF\u304C\u5927\u304D\u3044\u305F\u3081\u5B9F\u88C5\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u56DE\u907F\u65B9\u6CD5\u3068\u3057\u3066\u306F\u3001\u3053\u306E\u30AF\u30E9\u30B9\u3067\u660E\u793A\u7684\u306B{0}\u3092\u5BA3\u8A00\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+javac.err.method.too.long=\u3053\u306E\u30B3\u30FC\u30C9\u306F64KB\u3092\u8D85\u3048\u308B\u30B5\u30A4\u30BA\u306E\u30E1\u30BD\u30C3\u30C9\u306E\u751F\u6210\u3092\u5FC5\u8981\u3068\u3057\u307E\u3059\u3002Virtual Machine\u306F\u751F\u6210\u3055\u308C\u308B\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u62D2\u5426\u3057\u307E\u3059\u3002
+#
+javac.err.version.too.old=\u30E1\u30B8\u30E3\u30FC\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3''{0}''\u306F\u53E4\u3044\u305F\u3081\u3001\u3053\u306E\u30C4\u30FC\u30EB\u3067\u306F\u8A8D\u8B58\u3067\u304D\u307E\u305B\u3093\u3002
+javac.err.version.too.recent=\u30E1\u30B8\u30E3\u30FC.\u30DE\u30A4\u30CA\u30FC\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3''{0}''\u306F\u65B0\u3057\u3044\u305F\u3081\u3001\u3053\u306E\u30C4\u30FC\u30EB\u3067\u306F\u8A8D\u8B58\u3067\u304D\u307E\u305B\u3093\u3002
 #
-javac.err.version.too.old=\
-	\u30e1\u30b8\u30e3\u30fc\u30d0\u30fc\u30b8\u30e7\u30f3 ''{0}'' \u306f\u53e4\u3044\u305f\u3081\u3001\u3053\u306e\u30c4\u30fc\u30eb\u3067\u306f\u8a8d\u8b58\u3067\u304d\u307e\u305b\u3093\u3002
-javac.err.version.too.recent=\
-	\u30e1\u30b8\u30e3\u30fc.\u30de\u30a4\u30ca\u30fc\u30d0\u30fc\u30b8\u30e7\u30f3 ''{0}'' \u306f\u65b0\u3057\u3044\u305f\u3081\u3001\u3053\u306e\u30c4\u30fc\u30eb\u3067\u306f \
-	\u8a8d\u8b58\u3067\u304d\u307e\u305b\u3093\u3002
-#
-benv.parsed_in=[{0}\u3092 {1} ms \u3067\u51e6\u7406\u3057\u307e\u3057\u305f]
-benv.loaded_in=[{0}\u3092 {1} ms \u3067\u8aad\u307f\u8fbc\u307f\u307e\u3057\u305f]
-benv.failed_to_close_class_path=\u30af\u30e9\u30b9\u30d1\u30b9: {0} \u3092\u9589\u3058\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+benv.parsed_in=[{0}\u3092{1}\u30DF\u30EA\u79D2\u3067\u69CB\u6587\u89E3\u6790\u3057\u307E\u3057\u305F]
+benv.loaded_in=[{0}\u3092{1}\u30DF\u30EA\u79D2\u3067\u8AAD\u307F\u8FBC\u307F\u307E\u3057\u305F]
+benv.failed_to_close_class_path=\u30AF\u30E9\u30B9\u30D1\u30B9: {0}\u3092\u9589\u3058\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
 #
-main.usage=\
-\u4f7f\u3044\u65b9: {0} <options> <source files>\n\
-\n\
-<options> \u306b\u306f\u6b21\u306e\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002\n\
-\ \ -g                     \u3059\u3079\u3066\u306e\u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u3092\u751f\u6210\u3059\u308b\n\
-\ \ -g:none                \u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u3092\u751f\u6210\u3057\u306a\u3044\n\
-\ \ -g:'{'lines,vars,source'}' \u3044\u304f\u3064\u304b\u306e\u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u3060\u3051\u3092\u751f\u6210\u3059\u308b\n\
-\ \ -O                     \u6700\u9069\u5316; \u30c7\u30d0\u30c3\u30b0\u3092\u6291\u5236\u3057\u3001\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u5927\u304d\u304f\u3059\u308b\n\
-\ \ -nowarn                \u8b66\u544a\u3092\u767a\u751f\u3055\u305b\u306a\u3044\n\
-\ \ -verbose               \u30b3\u30f3\u30d1\u30a4\u30e9\u306e\u52d5\u4f5c\u306b\u3064\u3044\u3066\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\u3059\u308b\n\
-\ \ -deprecation           \u63a8\u5968\u3055\u308c\u306a\u3044 API \u304c\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u30bd\u30fc\u30b9\u306e\u4f4d\u7f6e\u3092\u51fa\u529b\u3059\u308b\n\
-\ \ -classpath <path>      \u30e6\u30fc\u30b6\u30fc\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u3042\u308b\u5834\u6240\u3092\u6307\u5b9a\u3059\u308b\n\
-\ \ -sourcepath <path>     \u5165\u529b\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u3042\u308b\u5834\u6240\u3092\u6307\u5b9a\u3059\u308b\n\
-\ \ -bootclasspath <path>  \u30d6\u30fc\u30c8\u30b9\u30c8\u30e9\u30c3\u30d7\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u4f4d\u7f6e\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3059\u308b\n\
-\ \ -extdirs <dirs>        \u62e1\u5f35\u6a5f\u80fd\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305f\u4f4d\u7f6e\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3059\u308b\n\
-\ \ -d <directory>         \u751f\u6210\u3055\u308c\u305f\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u683c\u7d0d\u3059\u308b\u5834\u6240\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3059\u308b\n\
-\ \ -encoding <encoding>   \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u304c\u4f7f\u7528\u3059\u308b\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u6307\u5b9a\u3059\u308b\n\
-\ \ -target <release>      \u7279\u5b9a\u306e VM \u30d0\u30fc\u30b8\u30e7\u30f3\u7528\u306e\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u751f\u6210\u3059\u308b
+main.usage=\u4F7F\u7528\u65B9\u6CD5: {0} <options> <source files>\n\n<options>\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002\n\\ -g             \u3059\u3079\u3066\u306E\u30C7\u30D0\u30C3\u30B0\u60C5\u5831\u3092\u751F\u6210\u3059\u308B\n\\ -g:none          \u30C7\u30D0\u30C3\u30B0\u60C5\u5831\u3092\u751F\u6210\u3057\u306A\u3044\n\\ -g:''{''lines,vars,source''}''\u3044\u304F\u3064\u304B\u306E\u30C7\u30D0\u30C3\u30B0\u60C5\u5831\u306E\u307F\u3092\u751F\u6210\u3059\u308B\n\\ -O             \u6700\u9069\u5316;\u30C7\u30D0\u30C3\u30B0\u3092\u6291\u5236\u3057\u3001\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u5927\u304D\u304F\u3059\u308B\n\\ -nowarn          \u8B66\u544A\u3092\u767A\u751F\u3055\u305B\u306A\u3044\n\\ -verbose         \u30B3\u30F3\u30D1\u30A4\u30E9\u306E\u52D5\u4F5C\u306B\u3064\u3044\u3066\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3059\u308B\n\\ -deprecation       \u63A8\u5968\u3055\u308C\u306A\u3044API\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u30BD\u30FC\u30B9\u306E\u4F4D\u7F6E\u3092\u51FA\u529B\u3059\u308B\n\\ -classpath <path>    \u30E6\u30FC\u30B6\u30FC\u30FB\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u3042\u308B\u5834\u6240\u3092\u6307\u5B9A\u3059\u308B\n\\ -sourcepath <path>   \u5165\u529B\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u3042\u308B\u5834\u6240\u3092\u6307\u5B9A\u3059\u308B\n\\ -bootclasspath <path> \u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u30FB\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u4F4D\u7F6E\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\n\\ -extdirs<dirs>     \u62E1\u5F35\u6A5F\u80FD\u304C\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u305F\u4F4D\u7F6E\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\n\\ -d <directory>      \u751F\u6210\u3055\u308C\u305F\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u683C\u7D0D\u3059\u308B\u5834\u6240\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\n\\ -encoding <encoding>  \u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u304C\u4F7F\u7528\u3059\u308B\u6587\u5B57\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u3092\u6307\u5B9A\u3059\u308B\n\\ -target <release>    \u7279\u5B9A\u306EVM\u30D0\u30FC\u30B8\u30E7\u30F3\u7528\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u751F\u6210\u3059\u308B
+#
+main.unsupported.usage=\ \ -Xdepend     \u518D\u30B3\u30F3\u30D1\u30A4\u30EB\u306E\u305F\u3081\u306E\u3055\u3089\u306B\u65B0\u3057\u3044\u30D5\u30A1\u30A4\u30EB\u3092\u518D\u5E30\u7684\u306B\u691C\u7D22\u3059\u308B\n\\ -Xstdout     \u30E1\u30C3\u30BB\u30FC\u30B8\u3092System.out\u306B\u9001\u308B\n\\ -Xverbosepath  \u30D1\u30B9\u3068\u6A19\u6E96\u62E1\u5F35\u6A5F\u80FD\u306E\u691C\u7D22\u65B9\u6CD5\u3092\u8A18\u8FF0\u3059\u308B\n\\ -J<runtime flag> \u5F15\u6570\u3092Java\u30A4\u30F3\u30BF\u30FC\u30D7\u30EA\u30BF\u306B\u6E21\u3059\n\n-X\u304A\u3088\u3073-J\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u6A19\u6E96\u3067\u306F\u306A\u304F\u3001\u4E88\u544A\u306A\u3057\u306B\u5909\u66F4\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002
 #
-main.unsupported.usage=\
-\ \ -Xdepend         \u518d\u30b3\u30f3\u30d1\u30a4\u30eb\u306e\u305f\u3081\u306e\u3055\u3089\u306b\u65b0\u3057\u3044\u30d5\u30a1\u30a4\u30eb\u3092\u518d\u5e30\u7684\u306b\u691c\u7d22\u3059\u308b\n\
-\ \ -Xstdout         \u30e1\u30c3\u30bb\u30fc\u30b8\u3092 System.out \u306b\u9001\u308b\n\
-\ \ -Xverbosepath    \u30d1\u30b9\u3068\u6a19\u6e96\u62e1\u5f35\u6a5f\u80fd\u306e\u691c\u7d22\u65b9\u6cd5\u3092\u8a18\u8ff0\u3059\u308b\n\
-\ \ -J<runtime flag> \u5f15\u6570\u3092 Java \u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf\u306b\u6e21\u3059\n\
-\n\
--X \u304a\u3088\u3073 -J \u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u6a19\u6e96\u3067\u306f\u306a\u304f\u3001\u4e88\u544a\u306a\u3057\u306b\u5909\u66f4\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
-#
-main.conflicting.options=\u30aa\u30d7\u30b7\u30e7\u30f3 {0} \u3068 {1} \u306f\u540c\u6642\u306b\u306f\u4f7f\u7528\u3057\u307e\u305b\u3093\u3002
-main.option.already.seen={0} \u30aa\u30d7\u30b7\u30e7\u30f3\u306f 1 \u56de\u3057\u304b\u6307\u5b9a\u3057\u307e\u305b\u3093\u3002
-main.option.requires.argument={0} \u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u306f\u5f15\u6570\u304c\u5fc5\u8981\u3067\u3059\u3002
-main.bad.debug.option={0} \u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u5f62\u5f0f\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002\u6307\u5b9a\u3067\u304d\u308b\u306e\u306f lines\u3001vars\u3001source \u3060\u3051\u3067\u3001\u30b3\u30f3\u30de\u3067\u533a\u5207\u308a\u307e\u3059\u3002
-main.no.such.directory=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea {0} \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
-main.no.such.option={0} \u306f\u7121\u52b9\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u307e\u305f\u306f\u5f15\u6570\u3067\u3059\u3002
-main.unknown.release=\u30ea\u30ea\u30fc\u30b9 ''{0}'' \u306f\u3053\u306e\u30b3\u30f3\u30d1\u30a4\u30e9\u3067\u306f\u8a8d\u8b58\u3055\u308c\u307e\u305b\u3093\u3002
-main.wrote=[\u66f8\u304d\u8fbc\u307f {0}]
-main.errors=\u30a8\u30e9\u30fc {0} \u500b
-main.1error=\u30a8\u30e9\u30fc 1 \u500b
-main.warnings=\u8b66\u544a {0} \u500b
-main.1warning=\u8b66\u544a 1 \u500b
-main.done_in=[{0} ms \u3067\u5b8c\u4e86]
-main.no.memory=\
-	\u30b3\u30f3\u30d1\u30a4\u30e9\u306b\u30e1\u30e2\u30ea\u304c\u4e0d\u8db3\u3057\u3066\u3044\u307e\u3059\u3002"-J-mx<number>" \u30b3\u30de\u30f3\u30c9\u884c\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u3063\u3066\u3001\u6700\u5927\u30d2\u30fc\u30d7\u30b5\u30a4\u30ba\u3092\u5897\u3084\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-main.stack.overflow=\
-	\u30b3\u30f3\u30d1\u30a4\u30e9\u306b\u30b9\u30bf\u30c3\u30af\u7a7a\u9593\u304c\u4e0d\u8db3\u3057\u3066\u3044\u307e\u3059\u3002"-J-oss<number>" \u30b3\u30de\u30f3\u30c9\u884c\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u3063\u3066\u3001Java \u30b9\u30bf\u30c3\u30af\u306b\u5272\u308a\u5f53\u3066\u308b\u30e1\u30e2\u30ea\u3092\u5897\u3084\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-main.path.msg=\
-	[\u30bd\u30fc\u30b9\u30af\u30e9\u30b9\u30d1\u30b9\u306f "{0}" \u3067\u3059]\n\
-	[\u30e9\u30a4\u30d6\u30e9\u30ea\u30af\u30e9\u30b9\u30d1\u30b9\u306f  "{1}" \u3067\u3059]
-javac.err.invalid.encoding.char=\
-	\u3053\u306e\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u304c\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u3082\u306e\u3068\u7570\u306a\u3063\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002-encoding \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u6307\u5b9a\u3057\u3066\u30d5\u30a1\u30a4\u30eb\u306e\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u6307\u5b9a\u3059\u308b\u304b\u3001\u3042\u308b\u3044\u306f native2ascii \u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30fc\u3092\u4f7f\u7528\u3057\u3066\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092 ASCII \u6587\u5b57\u3060\u3051\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+main.conflicting.options=\u30AA\u30D7\u30B7\u30E7\u30F3{0}\u3068{1}\u306F\u540C\u6642\u306B\u306F\u4F7F\u7528\u3057\u307E\u305B\u3093\u3002
+main.option.already.seen={0}\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u8907\u6570\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002
+main.option.requires.argument={0}\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u306F\u5F15\u6570\u304C\u5FC5\u8981\u3067\u3059\u3002
+main.bad.debug.option={0}\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5F62\u5F0F\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\u3002\u6307\u5B9A\u3067\u304D\u308B\u306E\u306F"lines"\u3001"vars"\u3001"source"\u306E\u307F\u3067\u3001\u30AB\u30F3\u30DE\u3067\u533A\u5207\u308A\u307E\u3059\u3002
+main.no.such.directory=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u306F\u5B58\u5728\u3057\u307E\u305B\u3093\u3002
+main.no.such.option={0}\u306F\u7121\u52B9\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u307E\u305F\u306F\u5F15\u6570\u3067\u3059\u3002
+main.unknown.release=\u30EA\u30EA\u30FC\u30B9''{0}''\u306F\u3053\u306E\u30B3\u30F3\u30D1\u30A4\u30E9\u3067\u306F\u8A8D\u8B58\u3055\u308C\u307E\u305B\u3093\u3002
+main.wrote=[{0}\u3092\u66F8\u8FBC\u307F\u5B8C\u4E86]
+main.errors=\u30A8\u30E9\u30FC{0}\u500B
+main.1error=\u30A8\u30E9\u30FC1\u500B
+main.warnings=\u8B66\u544A{0}\u500B
+main.1warning=\u8B66\u544A1\u500B
+main.done_in=[{0}\u30DF\u30EA\u79D2\u3067\u5B8C\u4E86]
+main.no.memory=\u30B3\u30F3\u30D1\u30A4\u30E9\u306B\u30E1\u30E2\u30EA\u30FC\u304C\u4E0D\u8DB3\u3057\u3066\u3044\u307E\u3059\u3002"-J-mx<number>"\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u3066\u3001\u6700\u5927\u30D2\u30FC\u30D7\u30FB\u30B5\u30A4\u30BA\u3092\u5897\u3084\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+main.stack.overflow=\u30B3\u30F3\u30D1\u30A4\u30E9\u306B\u30B9\u30BF\u30C3\u30AF\u7A7A\u9593\u304C\u4E0D\u8DB3\u3057\u3066\u3044\u307E\u3059\u3002"-J-oss<number>"\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u3066\u3001Java\u30B9\u30BF\u30C3\u30AF\u306B\u5272\u308A\u5F53\u3066\u308B\u30E1\u30E2\u30EA\u30FC\u3092\u5897\u3084\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+main.path.msg=[\u30BD\u30FC\u30B9\u30FB\u30AF\u30E9\u30B9\u30D1\u30B9\u306F"{0}"\u3067\u3059]\n[\u30E9\u30A4\u30D6\u30E9\u30EA\u30FB\u30AF\u30E9\u30B9\u30D1\u30B9\u306F "{1}"\u3067\u3059]
+javac.err.invalid.encoding.char=\u3053\u306E\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u304C\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u306E\u3082\u306E\u3068\u7570\u306A\u3063\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002-encoding\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6307\u5B9A\u3057\u3066\u30D5\u30A1\u30A4\u30EB\u306E\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u3092\u6307\u5B9A\u3059\u308B\u304B\u3001\u307E\u305F\u306Fnative2ascii\u30E6\u30FC\u30C6\u30A3\u30EA\u30C6\u30A3\u3092\u4F7F\u7528\u3057\u3066\u30BD\u30FC\u30B9\u30FB\u30B3\u30FC\u30C9\u3092ASCII\u6587\u5B57\u306E\u307F\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002
--- a/jdk/src/share/classes/sun/tools/javac/resources/javac_zh_CN.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/tools/javac/resources/javac_zh_CN.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1996, 1999, 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
@@ -23,613 +23,292 @@
 # questions.
 #
 
-javac.err.internal=\
-	\u5185\u90e8\u9519\u8bef\u3002
-javac.err.eof.in.comment=\
-	\u8f93\u5165\u7ed3\u5c3e\u5904\u672a\u4ee5\u6ce8\u91ca\u7ed3\u675f\u3002
-javac.err.eof.in.string=\
-	\u8f93\u5165\u7ed3\u5c3e\u5904\u672a\u4ee5\u5b57\u7b26\u4e32\u7ed3\u675f\u3002
-javac.err.newline.in.string=\
-	\u884c\u7ed3\u5c3e\u5904\u672a\u4ee5\u5b57\u7b26\u4e32\u7ed3\u675f\u3002
-javac.err.invalid.char.constant=\
-	\u5b57\u7b26\u5e38\u91cf\u65e0\u6548\u3002
-javac.err.unbalanced.paren=\
-	\u62ec\u53f7\u591a\u4f59\u6216\u7f3a\u5c11\u3002
-javac.err.invalid.escape.char=\
-	\u6362\u7801\u7b26\u65e0\u6548\u3002
-javac.err.invalid.hex.number=\
-	\u5341\u516d\u8fdb\u5236\u6570\u5b57\u5fc5\u987b\u5305\u542b\u81f3\u5c11\u4e00\u4f4d\u5341\u516d\u8fdb\u5236\u6570\u5b57\u3002
-javac.err.invalid.octal.number=\
-	\u4ee5\u516b\u8fdb\u5236\u6570\u5b57\u8868\u793a\u7684\u5b57\u7b26\u65e0\u6548\u3002
-javac.err.invalid.number=\
-	\u4ee5\u6570\u5b57\u8868\u793a\u7684\u5b57\u7b26\u65e0\u6548\u3002
-javac.err.funny.char=\
-	\u8f93\u5165\u7684\u5b57\u7b26\u65e0\u6548\u3002
-javac.err.float.format=\
-	\u6d6e\u70b9\u6570\u683c\u5f0f\u65e0\u6548\u3002
-javac.err.overflow.int.oct=\
-	\u6574\u578b\u5b57\u9762\u503c\u8d85\u51fa\u8303\u56f4\u3002\u516b\u8fdb\u5236\u6574\u578b\u5b57\u9762\u503c\u5fc5\u987b\u5728\
-	00 \u81f3 037777777777 \u8303\u56f4\u4e4b\u95f4\u3002
-javac.err.overflow.int.dec=\
-	\u6574\u578b\u5b57\u9762\u503c\u8d85\u51fa\u8303\u56f4\u3002\u5341\u8fdb\u5236\u6574\u578b\u5b57\u9762\u503c\u5fc5\u987b\u5728\
-	-2147483648 \u81f3 2147483647 \u8303\u56f4\u4e4b\u95f4\u3002
-javac.err.overflow.int.hex=\
-	\u6574\u578b\u5b57\u9762\u503c\u8d85\u51fa\u8303\u56f4\u3002\u5341\u516d\u8fdb\u5236\u6574\u578b\u5b57\u9762\u503c\u5fc5\u987b\u5728\
-	0x0 \u81f3 0xffffffff \u8303\u56f4\u4e4b\u95f4\u3002
-javac.err.overflow.long.oct=\
-	\u6574\u578b\u5b57\u9762\u503c\u8d85\u51fa\u8303\u56f4\u3002\u516b\u8fdb\u5236\u957f\u578b\u5b57\u9762\u503c\u5fc5\u987b\u5728\
-	00L \u81f3 01777777777777777777777L \u8303\u56f4\u4e4b\u95f4\u3002
-javac.err.overflow.long.dec=\
-	\u6574\u578b\u5b57\u9762\u503c\u8d85\u51fa\u8303\u56f4\u3002\u5341\u8fdb\u5236\u957f\u578b\u5b57\u9762\u503c\u5fc5\u987b\u5728\
-	-9223372036854775808L \u81f3 9223372036854775807L \u8303\u56f4\u4e4b\u95f4\u3002
-javac.err.overflow.long.hex=\
-	\u6574\u578b\u5b57\u9762\u503c\u8d85\u51fa\u8303\u56f4\u3002\u5341\u516d\u8fdb\u5236\u957f\u578b\u5b57\u9762\u503c\u5fc5\u987b\u5728\
-	0x0L \u81f3 0xffffffffffffffffL \u8303\u56f4\u4e4b\u95f4\u3002
-javac.err.overflow.float=\
-	\u6570\u5b57\u6ea2\u51fa\uff1a\u6d6e\u70b9\u5b57\u9762\u503c\u8fc7\u5927\u3002
-javac.err.overflow.double=\
-	\u6570\u5b57\u6ea2\u51fa\uff1a\u53cc\u7cbe\u5ea6\u578b\u5b57\u9762\u503c\u8fc7\u5927\u3002
-javac.err.underflow.float=\
-	\u6570\u5b57\u4e0b\u6ea2\uff1a\u6d6e\u70b9\u5b57\u9762\u503c\u8fc7\u5c0f\u3002
-javac.err.underflow.double=\
-	\u6570\u5b57\u4e0b\u6ea2\uff1a\u53cc\u7cbe\u5ea6\u578b\u5b57\u9762\u503c\u8fc7\u5c0f\u3002
-javac.err.token.expected=\
-	\u9700\u8981 "{0}"\u3002
-javac.err.statement.expected=\
-	\u9700\u8981\u8bed\u53e5\u3002
-javac.err.type.expected=\
-	\u9700\u8981\u7c7b\u578b\u3002
-javac.err.identifier.expected=\
-	\u9700\u8981\u6807\u8bc6\u7b26\u3002
-javac.err.class.expected=\
-	\u9700\u8981 "class" \u6216 "interface" \u5173\u952e\u5b57\u3002
-javac.err.toplevel.expected=\
-	\u9700\u8981\u7c7b\u58f0\u660e\u6216\u63a5\u53e3\u58f0\u660e\u3002
-javac.err.missing.term=\
-	\u7f3a\u5c11\u6761\u4ef6\u3002
-javac.err.assign.in.conditionalexpr=\
-	\u4e0d\u5141\u8bb8\u5c06\u8d4b\u503c\u8868\u8fbe\u5f0f\u7528\u4f5c\u6761\u4ef6\u8868\u8fbe\u5f0f\u7684\u7b2c\u4e09\u4e2a\u5b50\u8868\u8fbe\u5f0f\
-	\uff08\u5373 ?: \u8868\u8fbe\u5f0f\uff09\u3002  \
-	\u8bf7\u5c1d\u8bd5\u5c06\u6b64\u8d4b\u503c\u8868\u8fbe\u5f0f\u52a0\u4e0a\u62ec\u53f7\u3002
-javac.err.else.without.if=\
-	\u6709 "if"\uff0c\u4f46\u662f\u6ca1\u6709 "else"\u3002
-javac.err.catch.without.try=\
-	\u6709 "catch"\uff0c\u4f46\u662f\u6ca1\u6709 "try"\u3002
-javac.err.finally.without.try=\
-	\u6709 "finally"\uff0c\u4f46\u662f\u6ca1\u6709 "try"\u3002
-javac.err.try.without.catch.finally=\
-	\u6709 "try"\uff0c\u4f46\u662f\u6ca1\u6709 "catch" \u6216 "finally"\u3002
-javac.err.case.without.switch=\
-	"case" \u4e0d\u5728 switch \u8bed\u53e5\u4e2d\u3002
-javac.err.default.without.switch=\
-	"default" \u4e0d\u5728 switch \u8bed\u53e5\u4e2d\u3002
-javac.err.io.exception=\
-	{0} \u4e2d\u51fa\u73b0 I/O \u9519\u8bef\u3002
-javac.err.io.exception.package=\
-	\u68c0\u67e5\u8f6f\u4ef6\u5305 {0} \u662f\u5426\u5b58\u5728\u65f6\u51fa\u73b0 I/O \u9519\u8bef\u3002
-javac.err.malformed.attribute=\
-	\u5305\u542b {0} \u7684\u7c7b\u6587\u4ef6\u7684 "{1}" \u5c5e\u6027\u4e0d\u89c4\u5219\u3002
-javac.err.array.index.required=\
-	\u9700\u8981\u6570\u7ec4\u7d22\u5f15\u3002
-javac.err.not.array=\
-	[] \u53ea\u80fd\u5e94\u7528\u4e8e\u6570\u7ec4\uff0c\u800c\u4e0d\u80fd\u5e94\u7528\u4e8e {0}\u3002
-javac.err.array.dim.in.decl=\
-	\u65e0\u6cd5\u5728\u58f0\u660e\u4e2d\u6307\u5b9a\u6570\u7ec4\u7ef4\u6570\u3002
-javac.err.array.dim.in.type=\
-	\u65e0\u6cd5\u5728\u7c7b\u578b\u8868\u8fbe\u5f0f\u4e2d\u6307\u5b9a\u6570\u7ec4\u7ef4\u6570\u3002
-javac.err.invalid.array.expr=\
-	\u6570\u7ec4\u5e38\u91cf\u53ea\u80fd\u7528\u4e8e\u521d\u59cb\u5316\u7a0b\u5e8f\u4e2d\u3002
-javac.err.invalid.array.init=\
-	\u7c7b\u578b {0} \u7684\u521d\u59cb\u5316\u7a0b\u5e8f\u65e0\u6548\u3002
-javac.err.invalid.lhs.assignment=\
-	\u8d4b\u503c\u8868\u8fbe\u5f0f\u7684\u5de6\u4fa7\u65e0\u6548\u3002
-javac.err.invalid.args=\
-	{0} \u7684\u53c2\u6570\u65e0\u6548\u3002
-javac.err.invalid.cast=\
-	\u4ece {0} \u5230 {1} \u7684\u8f6c\u6362\u65e0\u6548\u3002
-javac.err.invalid.instanceof=\
-	{0} \u65e0\u6cd5\u6210\u4e3a {1} \u7684\u5b9e\u4f8b\u3002
-javac.err.invalid.type.expr=\
-	\u7c7b\u578b\u8868\u8fbe\u5f0f\u65e0\u6548\u3002
-javac.err.anonymous.extends=\
-	\u53ea\u6709\u5df2\u547d\u540d\u7684\u7c7b\u624d\u80fd\u6709 "extends" \u6216 "implements" \u5b50\u53e5\u3002
-javac.err.invalid.field.reference=\
-	\u5c1d\u8bd5\u5728 {1} \u4e2d\u5f15\u7528\u5b57\u6bb5 {0}\u3002
-javac.err.no.such.field=\
-	{1} \u4e2d\u672a\u5b9a\u4e49\u53d8\u91cf {0}\u3002
-javac.err.no.field.access=\
-	\u65e0\u6cd5\u4ece {2} \u4e2d\u8bbf\u95ee {1} \u4e2d\u7684\u53d8\u91cf {0}\u3002
-javac.err.no.type.access=\
-	\u65e0\u6cd5\u4ece {2} \u4e2d\u8bbf\u95ee {1} \u4e2d\u7684\u5185\u90e8\u7c7b\u578b {0}\u3002
-javac.err.cant.access.member.type=\
-	\u65e0\u6cd5\u4ece {2} \u4e2d\u8bbf\u95ee\u6210\u5458 {0} \u6240\u5c5e\u7684\u7c7b\u578b {1}\u3002
-javac.err.inner.class.expected=\
-	\u5728 {1} \u4e2d\u672a\u627e\u5230\u5185\u90e8\u7c7b {0}\u3002
-javac.err.no.static.field.access=\
-	\u65e0\u6cd5\u9759\u6001\u5f15\u7528 {1} \u4e2d\u7684\u975e\u9759\u6001\u53d8\u91cf {0}\u3002
-javac.err.inner.static.ref=\
-	\u65e0\u6cd5\u9759\u6001\u5f15\u7528\u5185\u90e8\u7c7b {0}\u3002
-javac.err.ambig.field=\
-	\u5bf9 {0} \u7684\u5f15\u7528\u4e0d\u660e\u786e\u3002\u5728 {1} \u548c {2} \u4e2d\u90fd\u5bf9\u5176\u8fdb\u884c\u4e86\u5b9a\u4e49\u3002
-javac.err.invalid.field=\
-	\u5c1d\u8bd5\u5c06 {1} \u4e2d\u7684\u65b9\u6cd5 {0} \u4f5c\u4e3a\u5b9e\u4f8b\u53d8\u91cf\u8fdb\u884c\u5f15\u7528\u3002
-javac.err.assign.to.final=\
-	\u65e0\u6cd5\u4e3a\u6700\u7ec8\u53d8\u91cf\u6307\u5b9a\u503c\uff1a{0}
-javac.err.assign.to.blank.final=\
-	\u65e0\u6cd5\u4e3a\u7a7a\u6700\u7ec8\u53d8\u91cf\u6307\u5b9a\u7b2c\u4e8c\u4e2a\u503c\uff1a{0}
-javac.err.qualified.static.final.assign=\
-	\u4e3a\u7a7a\u9759\u6001\u6700\u7ec8\u53d8\u91cf\u6307\u5b9a\u7684\u53d8\u91cf\u5fc5\u987b\u4e3a\u7b80\u540d\uff08\u5176\u540e\u4e0d\u80fd\u52a0\u70b9 "."\uff09\u3002
-javac.err.bad.qualified.final.assign=\
-	\u4e3a\u7a7a\u6700\u7ec8\u53d8\u91cf\u6307\u5b9a\u7684\u53d8\u91cf\u5fc5\u987b\u4e3a\u7b80\u540d\u6216\u7531 "this" \u9650\u5b9a\u7684\u7b80\u540d\uff1a"{0}" \u6216 "this.{0}"\u3002
-javac.err.assign.to.blank.final.in.loop=\
-	\u5c1d\u8bd5\u5728 loop \u4e2d\u6307\u5b9a\u7a7a\u6700\u7ec8\u53d8\u91cf {0}\u3002\u53ea\u80fd\u8fdb\u884c\u4e00\u6b21\u521d\u59cb\u5316\u3002
-javac.err.assign.to.uplevel=\
-	\u5c1d\u8bd5\u4ee5\u5176\u4ed6\u65b9\u6cd5\u6307\u5b9a\u503c\u7ed9\u53d8\u91cf {0}\u3002\u5c01\u95ed\u5757\u4e2d\u53ea\u6709\u6700\u7ec8\u5c40\u90e8\u53d8\u91cf\u53ef\u7528\u3002
-javac.err.invalid.uplevel=\
-	\u5c1d\u8bd5\u4ee5\u5176\u4ed6\u65b9\u6cd5\u4f7f\u7528\u975e\u6700\u7ec8\u53d8\u91cf {0}\u3002\u5c01\u95ed\u5757\u4e2d\u53ea\u6709\u6700\u7ec8\u5c40\u90e8\u53d8\u91cf\u53ef\u7528\u3002
-javac.err.undef.var=\
-	\u672a\u5b9a\u4e49\u7684\u53d8\u91cf\uff1a{0}
-javac.err.undef.var.super=\
-	\u672a\u5b9a\u4e49\u7684\u53d8\u91cf\uff1a{0}\u3002  "super" \u5173\u952e\u5b57\u53ea\u80fd\u7528\u4e8e\u6210\u5458\u8bbf\u95ee\u548c\u6784\u9020\u51fd\u6570\u8c03\u7528\u3002
-javac.err.undef.var.or.package=\
-	\u672a\u5b9a\u4e49\u7684\u53d8\u91cf\u6216\u8f6f\u4ef6\u5305\u540d\u79f0\uff1a{0}
-javac.err.undef.class.or.package=\
-	\u672a\u5b9a\u4e49\u7684\u7c7b\u6216\u8f6f\u4ef6\u5305\u540d\u79f0\uff1a{0}
-javac.err.undef.var.class.or.package=\
-	\u672a\u5b9a\u4e49\u7684\u53d8\u91cf\u3001\u7c7b\u6216\u8f6f\u4ef6\u5305\u540d\u79f0\uff1a{0}
-javac.err.undef.class=\
-	\u672a\u5b9a\u4e49\u7684\u7c7b\u540d\uff1a{0}
-javac.err.undef.var.or.class=\
-	\u672a\u5b9a\u4e49\u7684\u53d8\u91cf\u6216\u7c7b\u540d\uff1a{0}
-javac.err.var.not.initialized=\
-	\u53ef\u80fd\u5c1a\u672a\u521d\u59cb\u5316\u53d8\u91cf {0}\u3002
-javac.err.final.var.not.initialized=\
-	\u53ef\u80fd\u5c1a\u672a\u521d\u59cb\u5316\u7a7a\u6700\u7ec8\u53d8\u91cf "{0}"\u3002\u5fc5\u987b\u5728\u521d\u59cb\u5316\u7a0b\u5e8f\u6216\u5728\u6bcf\u4e2a\u6784\u9020\u51fd\u6570\u4e2d\u5bf9\u5176\u6307\u5b9a\u503c\u3002
-javac.err.access.inst.before.super=\
-	\u65e0\u6cd5\u5728\u8c03\u7528\u7236\u7c7b\u6784\u9020\u51fd\u6570\u4e4b\u524d\u5f15\u7528 {0}\u3002
-javac.err.ambig.class=\
-	\u4e0d\u660e\u786e\u7684\u7c7b\uff1a{0} \u548c {1}
-javac.err.invalid.arg=\
-	{0} \u7684\u53c2\u6570\u65e0\u6548\u3002
-javac.err.invalid.arg.type=\
-	{1} \u7684\u53c2\u6570\u7c7b\u578b {0} \u65e0\u6548\u3002
-javac.err.invalid.length=\
-	"length" \u5e94\u7528\u5230\u4e0d\u662f\u6570\u7ec4\u7684 {0}\u3002
-javac.err.invalid.constr.invoke=\
-	\u53ea\u6709\u6784\u9020\u51fd\u6570\u624d\u80fd\u8c03\u7528\u6784\u9020\u51fd\u6570\u3002
-javac.err.constr.invoke.not.first=\
-	\u5728\u65b9\u6cd5\u4e2d\u5fc5\u987b\u9996\u5148\u8c03\u7528\u6784\u9020\u51fd\u6570\u3002
-javac.err.invalid.method.invoke=\
-	\u65e0\u6cd5\u5728 {0} \u4e0a\u8c03\u7528\u65b9\u6cd5\u3002
-javac.err.undef.meth=\
-	\u5728 {1} \u4e2d\u672a\u627e\u5230\u65b9\u6cd5 {0}\u3002
-javac.err.no.meth.access=\
-	\u65e0\u6cd5\u4ece {2} \u4e2d\u8bbf\u95ee {1} \u4e2d\u7684\u65b9\u6cd5 {0}\u3002
+javac.err.internal=\u5185\u90E8\u9519\u8BEF\u3002
+javac.err.eof.in.comment=\u8F93\u5165\u7ED3\u5C3E\u5904\u672A\u4EE5\u6CE8\u91CA\u7EC8\u6B62\u3002
+javac.err.eof.in.string=\u8F93\u5165\u7ED3\u5C3E\u5904\u672A\u4EE5\u5B57\u7B26\u4E32\u7EC8\u6B62\u3002
+javac.err.newline.in.string=\u884C\u7ED3\u5C3E\u5904\u672A\u4EE5\u5B57\u7B26\u4E32\u7EC8\u6B62\u3002
+javac.err.invalid.char.constant=\u5B57\u7B26\u5E38\u91CF\u65E0\u6548\u3002
+javac.err.unbalanced.paren=\u62EC\u53F7\u4E0D\u914D\u5BF9\u3002
+javac.err.invalid.escape.char=\u8F6C\u4E49\u7B26\u65E0\u6548\u3002
+javac.err.invalid.hex.number=\u5341\u516D\u8FDB\u5236\u6570\u5B57\u5FC5\u987B\u5305\u542B\u81F3\u5C11\u4E00\u4F4D\u5341\u516D\u8FDB\u5236\u6570\u5B57\u3002
+javac.err.invalid.octal.number=\u4EE5\u516B\u8FDB\u5236\u6570\u5B57\u8868\u793A\u7684\u5B57\u7B26\u65E0\u6548\u3002
+javac.err.invalid.number=\u4EE5\u6570\u5B57\u8868\u793A\u7684\u5B57\u7B26\u65E0\u6548\u3002
+javac.err.funny.char=\u8F93\u5165\u7684\u5B57\u7B26\u65E0\u6548\u3002
+javac.err.float.format=\u6D6E\u70B9\u6570\u683C\u5F0F\u65E0\u6548\u3002
+javac.err.overflow.int.oct=\u6574\u578B\u6587\u5B57\u8D85\u51FA\u8303\u56F4\u3002\u516B\u8FDB\u5236\u6574\u578B\u6587\u5B57\u5FC5\u987B\u5728 00 \u81F3 037777777777 \u8303\u56F4\u4E4B\u95F4\u3002
+javac.err.overflow.int.dec=\u6574\u578B\u6587\u5B57\u8D85\u51FA\u8303\u56F4\u3002\u5341\u8FDB\u5236\u6574\u578B\u6587\u5B57\u5FC5\u987B\u5728 -2147483648 \u81F3 2147483647 \u8303\u56F4\u4E4B\u95F4\u3002
+javac.err.overflow.int.hex=\u6574\u578B\u6587\u5B57\u8D85\u51FA\u8303\u56F4\u3002\u5341\u516D\u8FDB\u5236\u6574\u578B\u6587\u5B57\u5FC5\u987B\u5728 0x0 \u81F3 0xffffffff \u8303\u56F4\u4E4B\u95F4\u3002
+javac.err.overflow.long.oct=\u6574\u578B\u6587\u5B57\u8D85\u51FA\u8303\u56F4\u3002\u516B\u8FDB\u5236\u957F\u6574\u578B\u6587\u5B57\u5FC5\u987B\u5728 00L \u81F3 01777777777777777777777L \u8303\u56F4\u4E4B\u95F4\u3002
+javac.err.overflow.long.dec=\u6574\u578B\u6587\u5B57\u8D85\u51FA\u8303\u56F4\u3002\u5341\u8FDB\u5236\u957F\u6574\u578B\u6587\u5B57\u5FC5\u987B\u5728 -9223372036854775808L \u81F3 9223372036854775807L \u8303\u56F4\u4E4B\u95F4\u3002
+javac.err.overflow.long.hex=\u6574\u578B\u6587\u5B57\u8D85\u51FA\u8303\u56F4\u3002\u5341\u516D\u8FDB\u5236\u957F\u6574\u578B\u6587\u5B57\u5FC5\u987B\u5728 0x0L \u81F3 0xffffffffffffffffL \u8303\u56F4\u4E4B\u95F4\u3002
+javac.err.overflow.float=\u6570\u5B57\u6EA2\u51FA: \u6D6E\u70B9\u6587\u5B57\u8FC7\u5927\u3002
+javac.err.overflow.double=\u6570\u5B57\u6EA2\u51FA: \u53CC\u7CBE\u5EA6\u578B\u6587\u5B57\u8FC7\u5927\u3002
+javac.err.underflow.float=\u6570\u5B57\u4E0B\u6EA2: \u6D6E\u70B9\u6587\u5B57\u8FC7\u5C0F\u3002
+javac.err.underflow.double=\u6570\u5B57\u4E0B\u6EA2: \u53CC\u7CBE\u5EA6\u578B\u6587\u5B57\u8FC7\u5C0F\u3002
+javac.err.token.expected=\u9700\u8981 ''{0}''\u3002
+javac.err.statement.expected=\u9700\u8981\u8BED\u53E5\u3002
+javac.err.type.expected=\u9700\u8981\u7C7B\u578B\u3002
+javac.err.identifier.expected=\u9700\u8981\u6807\u8BC6\u7B26\u3002
+javac.err.class.expected=\u9700\u8981 ''class'' \u6216 ''interface'' \u5173\u952E\u5B57\u3002
+javac.err.toplevel.expected=\u9700\u8981\u7C7B\u58F0\u660E\u6216\u63A5\u53E3\u58F0\u660E\u3002
+javac.err.missing.term=\u7F3A\u5C11\u6761\u4EF6\u3002
+javac.err.assign.in.conditionalexpr=\u4E0D\u5141\u8BB8\u5C06\u8D4B\u503C\u8868\u8FBE\u5F0F\u7528\u4F5C\u6761\u4EF6\u8868\u8FBE\u5F0F\u7684\u7B2C\u4E09\u4E2A\u5B50\u8868\u8FBE\u5F0F (\u5373 ?: \u8868\u8FBE\u5F0F)\u3002\u8BF7\u5C1D\u8BD5\u5BF9\u6B64\u8D4B\u503C\u8868\u8FBE\u5F0F\u52A0\u62EC\u53F7\u3002
+javac.err.else.without.if=\u6709 ''if'', \u4F46\u662F\u6CA1\u6709 ''else''\u3002
+javac.err.catch.without.try=\u6709 ''catch'', \u4F46\u662F\u6CA1\u6709 ''try''\u3002
+javac.err.finally.without.try=\u6709 ''finally'', \u4F46\u662F\u6CA1\u6709 ''try''\u3002
+javac.err.try.without.catch.finally=\u6709 ''try'', \u4F46\u662F\u6CA1\u6709 ''catch'' \u6216 ''finally''\u3002
+javac.err.case.without.switch=''case'' \u4E0D\u5728 switch \u8BED\u53E5\u4E2D\u3002
+javac.err.default.without.switch=''default'' \u4E0D\u5728 switch \u8BED\u53E5\u4E2D\u3002
+javac.err.io.exception={0}\u4E2D\u51FA\u73B0 I/O \u9519\u8BEF\u3002
+javac.err.io.exception.package=\u68C0\u67E5\u7A0B\u5E8F\u5305{0}\u662F\u5426\u5B58\u5728\u65F6\u51FA\u73B0 I/O \u9519\u8BEF\u3002
+javac.err.malformed.attribute=\u5305\u542B{0}\u7684\u7C7B\u6587\u4EF6\u5177\u6709\u683C\u5F0F\u9519\u8BEF\u7684 ''{1}'' \u5C5E\u6027\u3002
+javac.err.array.index.required=\u9700\u8981\u6570\u7EC4\u7D22\u5F15\u3002
+javac.err.not.array=[] \u53EA\u80FD\u5E94\u7528\u4E8E\u6570\u7EC4, \u800C\u4E0D\u80FD\u5E94\u7528\u4E8E{0}\u3002
+javac.err.array.dim.in.decl=\u65E0\u6CD5\u5728\u58F0\u660E\u4E2D\u6307\u5B9A\u6570\u7EC4\u7EF4\u3002
+javac.err.array.dim.in.type=\u65E0\u6CD5\u5728\u7C7B\u578B\u8868\u8FBE\u5F0F\u4E2D\u6307\u5B9A\u6570\u7EC4\u7EF4\u3002
+javac.err.invalid.array.expr=\u6570\u7EC4\u5E38\u91CF\u53EA\u80FD\u7528\u4E8E\u521D\u59CB\u5316\u7A0B\u5E8F\u4E2D\u3002
+javac.err.invalid.array.init=\u7C7B\u578B{0}\u7684\u521D\u59CB\u5316\u7A0B\u5E8F\u65E0\u6548\u3002
+javac.err.invalid.lhs.assignment=\u8D4B\u503C\u8868\u8FBE\u5F0F\u7684\u5DE6\u4FA7\u65E0\u6548\u3002
+javac.err.invalid.args={0}\u7684\u53C2\u6570\u65E0\u6548\u3002
+javac.err.invalid.cast=\u4ECE{0}\u5230{1}\u7684\u8F6C\u6362\u65E0\u6548\u3002
+javac.err.invalid.instanceof={0}\u65E0\u6CD5\u6210\u4E3A{1}\u7684\u5B9E\u4F8B\u3002
+javac.err.invalid.type.expr=\u7C7B\u578B\u8868\u8FBE\u5F0F\u65E0\u6548\u3002
+javac.err.anonymous.extends=\u53EA\u6709\u5DF2\u547D\u540D\u7684\u7C7B\u624D\u80FD\u6709 ''extends'' \u6216 ''implements'' \u5B50\u53E5\u3002
+javac.err.invalid.field.reference=\u5C1D\u8BD5\u5728{1}\u4E2D\u5F15\u7528\u5B57\u6BB5{0}\u3002
+javac.err.no.such.field={1}\u4E2D\u672A\u5B9A\u4E49\u53D8\u91CF{0}\u3002
+javac.err.no.field.access=\u65E0\u6CD5\u4ECE{2}\u8BBF\u95EE{1}\u4E2D\u7684\u53D8\u91CF{0}\u3002
+javac.err.no.type.access=\u65E0\u6CD5\u4ECE{2}\u8BBF\u95EE{1}\u4E2D\u7684\u5185\u90E8\u7C7B\u578B {0}\u3002
+javac.err.cant.access.member.type=\u65E0\u6CD5\u4ECE{2}\u8BBF\u95EE\u6210\u5458{0}\u6240\u5C5E\u7684\u7C7B\u578B {1}\u3002
+javac.err.inner.class.expected=\u5728{1}\u4E2D\u627E\u4E0D\u5230\u5185\u90E8\u7C7B{0}\u3002
+javac.err.no.static.field.access=\u65E0\u6CD5\u9759\u6001\u5F15\u7528{1}\u4E2D\u7684\u975E\u9759\u6001\u53D8\u91CF{0}\u3002
+javac.err.inner.static.ref=\u65E0\u6CD5\u9759\u6001\u5F15\u7528\u5185\u90E8\u7C7B{0}\u3002
+javac.err.ambig.field=\u5BF9{0}\u7684\u5F15\u7528\u4E0D\u660E\u786E\u3002\u5728{1}\u548C{2}\u4E2D\u90FD\u5BF9\u5176\u8FDB\u884C\u4E86\u5B9A\u4E49\u3002
+javac.err.invalid.field=\u5C1D\u8BD5\u5C06{1}\u4E2D\u7684\u65B9\u6CD5{0}\u4F5C\u4E3A\u5B9E\u4F8B\u53D8\u91CF\u8FDB\u884C\u5F15\u7528\u3002
+javac.err.assign.to.final=\u65E0\u6CD5\u4E3A\u6700\u7EC8\u53D8\u91CF\u5206\u914D\u503C: {0}
+javac.err.assign.to.blank.final=\u65E0\u6CD5\u4E3A\u7A7A\u6700\u7EC8\u53D8\u91CF\u5206\u914D\u7B2C\u4E8C\u4E2A\u503C: {0}
+javac.err.qualified.static.final.assign=\u4E3A\u7A7A\u9759\u6001\u6700\u7EC8\u53D8\u91CF\u5206\u914D\u7684\u53D8\u91CF\u5FC5\u987B\u4E3A\u7B80\u540D (\u540E\u9762\u4E0D\u80FD\u52A0\u70B9 ''.'')\u3002
+javac.err.bad.qualified.final.assign=\u4E3A\u7A7A\u6700\u7EC8\u53D8\u91CF\u5206\u914D\u7684\u53D8\u91CF\u5FC5\u987B\u4E3A\u7B80\u540D\u6216\u7531 ''this'' \u9650\u5B9A\u7684\u7B80\u540D: ''{0}'' \u6216 ''this.{0}''\u3002
+javac.err.assign.to.blank.final.in.loop=\u5C1D\u8BD5\u5728 loop \u4E2D\u5206\u914D\u7A7A\u6700\u7EC8\u53D8\u91CF{0}\u3002\u53EA\u80FD\u8FDB\u884C\u4E00\u6B21\u521D\u59CB\u5316\u3002
+javac.err.assign.to.uplevel=\u5C1D\u8BD5\u4EE5\u5176\u4ED6\u65B9\u6CD5\u5C06\u503C\u5206\u914D\u7ED9\u53D8\u91CF{0}\u3002\u5C01\u95ED\u5757\u4E2D\u53EA\u6709\u6700\u7EC8\u672C\u5730\u53D8\u91CF\u53EF\u7528\u3002
+javac.err.invalid.uplevel=\u5C1D\u8BD5\u4EE5\u5176\u4ED6\u65B9\u6CD5\u4F7F\u7528\u975E\u6700\u7EC8\u53D8\u91CF{0}\u3002\u5C01\u95ED\u5757\u4E2D\u53EA\u6709\u6700\u7EC8\u672C\u5730\u53D8\u91CF\u53EF\u7528\u3002
+javac.err.undef.var=\u672A\u5B9A\u4E49\u7684\u53D8\u91CF: {0}
+javac.err.undef.var.super=\u672A\u5B9A\u4E49\u7684\u53D8\u91CF: {0}\u3002  "super" \u5173\u952E\u5B57\u53EA\u80FD\u7528\u4E8E\u6210\u5458\u8BBF\u95EE\u548C\u6784\u9020\u5668\u8C03\u7528\u3002
+javac.err.undef.var.or.package=\u672A\u5B9A\u4E49\u7684\u53D8\u91CF\u6216\u7A0B\u5E8F\u5305\u540D\u79F0: {0}
+javac.err.undef.class.or.package=\u672A\u5B9A\u4E49\u7684\u7C7B\u6216\u7A0B\u5E8F\u5305\u540D\u79F0: {0}
+javac.err.undef.var.class.or.package=\u672A\u5B9A\u4E49\u7684\u53D8\u91CF, \u7C7B\u6216\u7A0B\u5E8F\u5305\u540D\u79F0: {0}
+javac.err.undef.class=\u672A\u5B9A\u4E49\u7684\u7C7B\u540D: {0}
+javac.err.undef.var.or.class=\u672A\u5B9A\u4E49\u7684\u53D8\u91CF\u6216\u7C7B\u540D: {0}
+javac.err.var.not.initialized=\u53EF\u80FD\u5C1A\u672A\u521D\u59CB\u5316\u53D8\u91CF{0}\u3002
+javac.err.final.var.not.initialized=\u53EF\u80FD\u5C1A\u672A\u521D\u59CB\u5316\u7A7A\u6700\u7EC8\u53D8\u91CF ''{0}''\u3002\u5FC5\u987B\u5728\u521D\u59CB\u5316\u7A0B\u5E8F\u6216\u5728\u6BCF\u4E2A\u6784\u9020\u5668\u4E2D\u5206\u914D\u503C\u3002
+javac.err.access.inst.before.super=\u65E0\u6CD5\u5728\u8C03\u7528\u8D85\u7C7B\u6784\u9020\u5668\u4E4B\u524D\u5F15\u7528{0}\u3002
+javac.err.ambig.class=\u4E0D\u660E\u786E\u7684\u7C7B: {0}\u548C{1}
+javac.err.invalid.arg={0}\u7684\u53C2\u6570\u65E0\u6548\u3002
+javac.err.invalid.arg.type={1}\u7684\u53C2\u6570\u7C7B\u578B{0}\u65E0\u6548\u3002
+javac.err.invalid.length=''length'' \u5E94\u7528\u5230\u4E0D\u662F\u6570\u7EC4\u7684{0}\u3002
+javac.err.invalid.constr.invoke=\u53EA\u6709\u6784\u9020\u5668\u624D\u80FD\u8C03\u7528\u6784\u9020\u5668\u3002
+javac.err.constr.invoke.not.first=\u5728\u65B9\u6CD5\u4E2D\u5FC5\u987B\u9996\u5148\u8C03\u7528\u6784\u9020\u5668\u3002
+javac.err.invalid.method.invoke=\u65E0\u6CD5\u5728{0}\u4E0A\u8C03\u7528\u65B9\u6CD5\u3002
+javac.err.undef.meth=\u5728{1}\u4E2D\u627E\u4E0D\u5230\u65B9\u6CD5{0}\u3002
+javac.err.no.meth.access=\u65E0\u6CD5\u4ECE{2}\u8BBF\u95EE{1}\u4E2D\u7684\u65B9\u6CD5{0}\u3002
 #warning:
-javac.err.no.override.access=\
-	\u6ce8\u610f\uff1a{1} \u4e2d\u7684\u65b9\u6cd5 {0} \u4e0d\u4f1a\u8986\u76d6 {2} \u4e2d\u76f8\u5bf9\u5e94\u7684\u65b9\u6cd5\u3002\u5982\u679c\u6b63\u5c1d\u8bd5\u8986\u76d6\u6b64\u65b9\u6cd5\uff0c\u5219\u65e0\u6cd5\u8fbe\u5230\u76ee\u7684\uff0c\u56e0\u4e3a\u8be5\u65b9\u6cd5\u662f\u5176\u4ed6\u8f6f\u4ef6\u5305\u7684\u4e13\u7528\u65b9\u6cd5\u3002
-javac.err.no.static.meth.access=\
-	\u65e0\u6cd5\u9759\u6001\u5f15\u7528 {1} \u4e2d\u7684\u65b9\u6cd5 {0}\u3002
-javac.err.invalid.protected.method.use=\
-	\u65e0\u6cd5\u8bbf\u95ee {1} \u4e2d\u7684\u53d7\u4fdd\u62a4\u65b9\u6cd5 {0}\u3002{2} \u4e0d\u662f\u5f53\u524d\u7c7b\u7684\u5b50\u7c7b\u3002
-javac.err.invalid.protected.field.use=\
-	\u65e0\u6cd5\u8bbf\u95ee {1} \u4e2d\u7684\u53d7\u4fdd\u62a4\u5b57\u6bb5 {0}\u3002{2} \u4e0d\u662f\u5f53\u524d\u7c7b\u7684\u5b50\u7c7b\u3002
-javac.err.invalid.protected.type.use=\
-	\u65e0\u6cd5\u8bbf\u95ee {1} \u4e2d\u7684\u53d7\u4fdd\u62a4\u5185\u90e8\u7c7b\u578b {0}\u3002{2} \u4e0d\u662f\u5f53\u524d\u7c7b\u7684\u5b50\u7c7b\u3002
-javac.err.invalid.protected.constructor.use=\
-	\u65e0\u6cd5\u8bbf\u95ee {0} \u7684\u53d7\u4fdd\u62a4\u6784\u9020\u51fd\u6570\u3002\u53ea\u5141\u8bb8\u5728\u5b9a\u4e49\u4e86\u6784\u9020\u51fd\u6570\u7684\u8f6f\u4ef6\u5305\u5185\u521b\u5efa\u5b9e\u4f8b\u3002
-javac.err.invalid.method=\
-	\u5728 {1} \u4e2d\u5c06\u53d8\u91cf {0} \u4f5c\u4e3a\u4e00\u4e2a\u65b9\u6cd5\u8fdb\u884c\u5f15\u7528\u3002
-javac.err.invalid.var=\
-	\u5728 {1} \u4e2d\u5c06\u65b9\u6cd5 {0} \u4f5c\u4e3a\u4e00\u4e2a\u53d8\u91cf\u8fdb\u884c\u5f15\u7528\u3002
-javac.err.synchronized.null=\
-	\u7a7a\u5b57\u9762\u503c\u4e0d\u662f\u540c\u6b65\u8bed\u53e5\u7684\u5408\u6cd5\u53c2\u6570\u3002
+javac.err.no.override.access=\u6CE8: {1}\u4E2D\u7684\u65B9\u6CD5{0}\u4E0D\u4F1A\u8986\u76D6{2}\u4E2D\u76F8\u5BF9\u5E94\u7684\u65B9\u6CD5\u3002\u5982\u679C\u6B63\u5C1D\u8BD5\u8986\u76D6\u6B64\u65B9\u6CD5, \u5219\u65E0\u6CD5\u8FBE\u5230\u76EE\u7684, \u56E0\u4E3A\u8BE5\u65B9\u6CD5\u662F\u5176\u4ED6\u7A0B\u5E8F\u5305\u7684\u4E13\u7528\u65B9\u6CD5\u3002
+javac.err.no.static.meth.access=\u65E0\u6CD5\u9759\u6001\u5F15\u7528{1}\u4E2D\u7684\u65B9\u6CD5{0}\u3002
+javac.err.invalid.protected.method.use=\u65E0\u6CD5\u8BBF\u95EE{1}\u4E2D\u7684\u53D7\u4FDD\u62A4\u65B9\u6CD5{0}\u3002{2}\u4E0D\u662F\u5F53\u524D\u7C7B\u7684\u5B50\u7C7B\u3002
+javac.err.invalid.protected.field.use=\u65E0\u6CD5\u8BBF\u95EE{1}\u4E2D\u7684\u53D7\u4FDD\u62A4\u5B57\u6BB5{0}\u3002{2}\u4E0D\u662F\u5F53\u524D\u7C7B\u7684\u5B50\u7C7B\u3002
+javac.err.invalid.protected.type.use=\u65E0\u6CD5\u8BBF\u95EE{1}\u4E2D\u7684\u53D7\u4FDD\u62A4\u5185\u90E8\u7C7B\u578B {0}\u3002{2}\u4E0D\u662F\u5F53\u524D\u7C7B\u7684\u5B50\u7C7B\u3002
+javac.err.invalid.protected.constructor.use=\u65E0\u6CD5\u8BBF\u95EE{0}\u7684\u53D7\u4FDD\u62A4\u6784\u9020\u5668\u3002\u53EA\u5141\u8BB8\u5728\u5B9A\u4E49\u4E86\u6784\u9020\u5668\u7684\u7A0B\u5E8F\u5305\u5185\u521B\u5EFA\u5B9E\u4F8B\u3002
+javac.err.invalid.method=\u5728{1}\u4E2D\u5C06\u53D8\u91CF{0}\u4F5C\u4E3A\u4E00\u4E2A\u65B9\u6CD5\u8FDB\u884C\u5F15\u7528\u3002
+javac.err.invalid.var=\u5728{1}\u4E2D\u5C06\u65B9\u6CD5{0}\u4F5C\u4E3A\u4E00\u4E2A\u53D8\u91CF\u8FDB\u884C\u5F15\u7528\u3002
+javac.err.synchronized.null=\u7A7A\u503C\u6587\u5B57\u4E0D\u662F\u540C\u6B65\u8BED\u53E5\u7684\u5408\u6CD5\u53C2\u6570\u3002
 #all messages related to deprecation are warnings:
-javac.err.class.is.deprecated=\
-	\u6ce8\u610f\uff1a{0} \u5df2\u8fc7\u65f6\u3002
-javac.err.meth.is.deprecated=\
-	\u6ce8\u610f\uff1a{1} \u4e2d\u7684\u65b9\u6cd5 {0} \u5df2\u8fc7\u65f6\u3002
-javac.err.constr.is.deprecated=\
-	\u6ce8\u610f\uff1a\u6784\u9020\u51fd\u6570 {0} \u5df2\u8fc7\u65f6\u3002
-javac.err.field.is.deprecated=\
-	\u6ce8\u610f\uff1a{1} \u4e2d\u7684\u53d8\u91cf {0} \u5df2\u8fc7\u65f6\u3002
-javac.err.note.deprecations=\
-	\u6ce8\u610f\uff1a{0} \u6587\u4ef6\u4f7f\u7528\u6216\u8986\u76d6\u4e86\u5df2\u8fc7\u65f6\u7684 API\u3002\u8bf7\u53c2\u9605\u6587\u6863\u4ee5\u83b7\u5f97\u9488\u5bf9\u6bcf\u79cd\u60c5\u51b5\u7684\u66f4\u597d\u7684\u66ff\u4ee3\u65b9\u6cd5\u3002
-javac.err.note.1deprecation=\
-	\u6ce8\u610f\uff1a{0} \u4f7f\u7528\u6216\u8986\u76d6\u4e86\u5df2\u8fc7\u65f6\u7684 API\u3002\u8bf7\u53c2\u9605\u6587\u6863\u4ee5\u83b7\u5f97\u66f4\u597d\u7684\u66ff\u4ee3\u65b9\u6cd5\u3002
-javac.err.note.deprecations.silent=\
-	\u6ce8\u610f\uff1a{0} \u6587\u4ef6\u4f7f\u7528\u6216\u8986\u76d6\u4e86\u5df2\u8fc7\u65f6\u7684 API\u3002\u6709\u5173\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u4f7f\u7528 "-deprecation" \u91cd\u65b0\u7f16\u8bd1\u3002
-javac.err.note.1deprecation.silent=\
-	\u6ce8\u610f\uff1a{0} \u4f7f\u7528\u6216\u8986\u76d6\u4e86\u5df2\u8fc7\u65f6\u7684 API\u3002\u6709\u5173\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u4f7f\u7528 "-deprecation" \u91cd\u65b0\u7f16\u8bd1\u3002
-javac.err.invalid.array.dim=\
-	\u6570\u7ec4\u7ef4\u6570\u65e0\u6548\u3002
-javac.err.ambig.constr=\
-	\u6784\u9020\u51fd\u6570\u4e0d\u660e\u786e\uff1a{0}, {1}
-javac.err.explicit.cast.needed=\
-	{0} \u7684\u4e0d\u517c\u5bb9\u7c7b\u578b\u3002\u9700\u8981\u4f7f\u7528\u663e\u5f0f\u8f6c\u6362\u5c06 {1} \u8f6c\u6362\u4e3a {2}\u3002
-javac.err.incompatible.type=\
-	{0} \u7684\u4e0d\u517c\u5bb9\u7c7b\u578b\u3002\u65e0\u6cd5\u5c06 {1} \u8f6c\u6362\u4e3a {2}\u3002
-javac.err.invalid.term=\
-	\u6761\u4ef6\u65e0\u6548\u3002
-javac.err.abstract.class=\
-	\u5fc5\u987b\u5c06 {0} \u58f0\u660e\u4e3a\u62bd\u8c61\u3002{0} \u672a\u4ece {2} \u4e2d\u5b9a\u4e49 {1}\u3002
-javac.err.abstract.class.cannot.override=\
-	\u5fc5\u987b\u5c06 {0} \u58f0\u660e\u4e3a\u62bd\u8c61\u3002\u65e0\u6cd5\u8bbf\u95ee\u4e14\u65e0\u6cd5\u8986\u76d6\u7236\u7c7b {2} \u4e2d\u7684\u8f6f\u4ef6\u5305\u4e13\u7528\u62bd\u8c61\u65b9\u6cd5 {1}\u3002
-javac.err.new.intf=\
-	{0} \u662f\u63a5\u53e3\u3002\u65e0\u6cd5\u5bf9\u5176\u8fdb\u884c\u5b9e\u4f8b\u5316\u3002
-javac.err.invoke.abstract=\
-	\u65e0\u6cd5\u5728 {1} \u4e2d\u76f4\u63a5\u8c03\u7528\u62bd\u8c61\u65b9\u6cd5 {0}\u3002
-javac.err.unmatched.meth=\
-	\u5728 {1} \u4e2d\u672a\u627e\u5230\u4e0e {0} \u5339\u914d\u7684\u65b9\u6cd5\u3002
-javac.err.unmatched.constr=\
-	\u5728 {1} \u4e2d\u672a\u627e\u5230\u4e0e {0} \u5339\u914d\u7684\u6784\u9020\u51fd\u6570\u3002
-javac.err.wrong.number.args=\
-	{0} \u4e2d\u7684\u53c2\u6570\u6570\u76ee\u9519\u8bef\u3002
-javac.err.forward.ref=\
-	\u65e0\u6cd5\u5411\u524d\u5f15\u7528 {1} \u4e2d\u7684 {0}\u3002
-javac.err.array.dim.missing=\
-	\u7f3a\u5c11\u6570\u7ec4\u7ef4\u6570\u3002
-javac.err.new.abstract=\
-	{0} \u662f\u62bd\u8c61\u7c7b\u3002\u65e0\u6cd5\u5bf9\u5176\u8fdb\u884c\u5b9e\u4f8b\u5316\u3002
-javac.err.label.not.found=\
-	\u672a\u627e\u5230 {0} \u7684\u6807\u7b7e\u5b9a\u4e49\u3002
-javac.err.invalid.break=\
-	loop \u6216 switch \u4e2d\u5fc5\u987b\u6709 "break"\u3002
-javac.err.invalid.continue=\
-	loop \u4e2d\u5fc5\u987b\u6709 "continue"\u3002
-javac.err.branch.to.uplevel=\
-	"break" \u6216 "continue" \u5fc5\u987b\u5728\u540c\u4e00\u65b9\u6cd5\u5185\u8f6c\u79fb\u63a7\u5236\u3002
-javac.err.invalid.decl=\
-	\u58f0\u660e\u65e0\u6548\u3002
-javac.err.return.with.value=\
-	\u5bf9\u4e8e {0} \u4f7f\u7528 "return" \u8fd4\u56de\u503c\u3002
-javac.err.return.without.value=\
-	\u5bf9\u4e8e {0} \u4f7f\u7528 "return" \u672a\u8fd4\u56de\u503c\u3002
-javac.err.return.inside.static.initializer=\
-	\u9759\u6001\u521d\u59cb\u5316\u7a0b\u5e8f\u5185\u7684 "return"\u3002
-javac.err.invalid.label=\
-	\u6807\u7b7e\u65e0\u6548\u3002
-javac.err.return.required.at.end=\
-	\u5728 {0} \u7684\u7ed3\u5c3e\u5904\u8fd4\u56de\u6240\u9700\u5185\u5bb9\u3002
-javac.err.duplicate.label=\
-	case \u6807\u7b7e\u91cd\u590d\uff1a{0}
-javac.err.switch.overflow=\
-	\u5728 {1} \u4e0a\u7528\u4e8e "switch" \u7684 case \u6807\u7b7e {0} \u8fc7\u5927
-javac.err.nested.duplicate.label=\
-	\u8bed\u53e5\u4e0d\u80fd\u4e0e\u5176\u5c01\u95ed\u8bed\u53e5\u4e4b\u4e00\u4f7f\u7528\u540c\u4e00\u6807\u8bc6\u7b26\u6807\u8bb0\uff1a{0}
-javac.err.declaration.with.label=\
-	\u65e0\u6cd5\u6807\u8bb0\u58f0\u660e\uff1a{0}
-javac.err.const.expr.required=\
-	\u9700\u8981\u5e38\u91cf\u8868\u8fbe\u5f0f\u3002
-javac.err.duplicate.default=\
-	"default" \u6807\u7b7e\u91cd\u590d\u3002
-javac.err.not.supported=\
-	\u4e0d\u652f\u6301 "{0}"\u3002
-javac.err.return.with.value.constr=\
-	\u5bf9\u4e8e\u6784\u9020\u51fd\u6570\u4f7f\u7528 "return" \u8fd4\u56de\u503c\uff1a{0}
-javac.err.package.repeated=\
-	\u4ec5\u5141\u8bb8\u4e00\u4e2a\u8f6f\u4ef6\u5305\u58f0\u660e\u3002
-javac.err.class.multidef=\
-	\u5df2\u5728 {1} \u4e2d\u5b9a\u4e49\u7c7b {0}\u3002
-javac.err.class.multidef.import=\
-	\u7c7b\u540d {0} \u4e0e\u5bfc\u5165\u7c7b {1} \u51b2\u7a81\u3002
-javac.err.intf.constructor=\
-	\u63a5\u53e3\u4e0d\u80fd\u6709\u6784\u9020\u51fd\u6570\u3002
-javac.err.constr.modifier=\
-	\u6784\u9020\u51fd\u6570\u7684\u7c7b\u578b\u4e0d\u80fd\u4e3a\u672c\u673a\u3001\u62bd\u8c61\u3001\u9759\u6001\u3001\u540c\u6b65\u6216\u6700\u7ec8\uff1a{0}
-javac.err.intf.initializer=\
-	\u63a5\u53e3\u4e0d\u80fd\u6709\u9759\u6001\u521d\u59cb\u5316\u7a0b\u5e8f\u3002
-javac.err.intf.modifier.method=\
-	\u63a5\u53e3\u65b9\u6cd5\u7c7b\u578b\u4e0d\u80fd\u4e3a\u672c\u673a\u3001\u9759\u6001\u3001\u540c\u6b65\u3001\u6700\u7ec8\u3001\u4e13\u7528\u6216\u53d7\u4fdd\u62a4\uff1a{0}
-javac.err.intf.modifier.field=\
-	\u63a5\u53e3\u5b57\u6bb5\u7c7b\u578b\u4e0d\u80fd\u4e3a\u4e13\u7528\u6216\u53d7\u4fdd\u62a4\uff1a{0}
-javac.err.transient.meth=\
-	\u65b9\u6cd5 {0} \u4e0d\u80fd\u4e3a\u77ac\u6001\u65b9\u6cd5\u3002\u53ea\u6709\u53d8\u91cf\u624d\u80fd\u662f\u77ac\u6001\u7684\u3002
-javac.err.volatile.meth=\
-	\u65b9\u6cd5 {0} \u4e0d\u80fd\u4e3a\u6613\u5931\u65b9\u6cd5\u3002\u53ea\u6709\u53d8\u91cf\u624d\u80fd\u662f\u6613\u5931\u7684\u3002
-javac.err.abstract.private.modifier=\
-	\u62bd\u8c61\u65b9\u6cd5\u4e0d\u80fd\u4e3a\u4e13\u7528\u65b9\u6cd5\uff1a{0}
-javac.err.abstract.static.modifier=\
-	\u62bd\u8c61\u65b9\u6cd5\u4e0d\u80fd\u4e3a\u9759\u6001\u65b9\u6cd5\uff1a{0}
-javac.err.abstract.final.modifier=\
-	\u62bd\u8c61\u65b9\u6cd5\u4e0d\u80fd\u4e3a\u6700\u7ec8\u65b9\u6cd5\uff1a{0}
-javac.err.abstract.native.modifier=\
-	\u62bd\u8c61\u65b9\u6cd5\u4e0d\u80fd\u4e3a\u672c\u673a\u65b9\u6cd5\uff1a{0}
-javac.err.abstract.synchronized.modifier=\
-	\u62bd\u8c61\u65b9\u6cd5\u4e0d\u80fd\u4e3a\u540c\u6b65\u65b9\u6cd5\uff1a{0}
-javac.err.invalid.meth.body=\
-	\u62bd\u8c61\u65b9\u6cd5\u548c\u672c\u673a\u65b9\u6cd5\u4e0d\u80fd\u5e26\u6709\u4e3b\u4f53\uff1a{0}
-javac.err.var.modifier=\
-	\u53d8\u91cf\u7c7b\u578b\u4e0d\u80fd\u4e3a\u540c\u6b65\u3001\u62bd\u8c61\u6216\u672c\u673a\uff1a{0}
-javac.err.var.floatmodifier=\
-	\u4e0d\u80fd\u4e25\u683c\u58f0\u660e\u53d8\u91cf\uff1a{0}
-javac.err.inner.modifier=\
-	\u5185\u90e8\u7c7b\u7c7b\u578b\u4e0d\u80fd\u4e3a\u6613\u5931\u3001\u77ac\u6001\u3001\u672c\u673a\u6216\u540c\u6b65\uff1a{0}
-javac.err.transient.modifier=\
-	\u77ac\u6001\u53d8\u91cf\u4e0d\u80fd\u4e3a\u63a5\u53e3\u7684\u6210\u5458\uff1a{0}
-javac.err.volatile.modifier=\
-	\u6613\u5931\u53d8\u91cf\u4e0d\u80fd\u4e3a\u6700\u7ec8\u53d8\u91cf\u6216\u63a5\u53e3\u7684\u6210\u5458\uff1a{0}
-javac.err.initializer.needed=\
-	\u5fc5\u987b\u521d\u59cb\u5316\u6b64\u6700\u7ec8\u53d8\u91cf\uff1a{0}
-javac.err.meth.multidef=\
-	\u65b9\u6cd5\u58f0\u660e\u91cd\u590d\uff1a{0}
-javac.err.meth.redef.rettype=\
-	\u4e0d\u80fd\u4f7f\u7528\u5176\u4ed6\u8fd4\u56de\u7c7b\u578b\u91cd\u65b0\u5b9a\u4e49\u65b9\u6cd5\uff1a{0} \u662f {1}
-javac.err.var.multidef=\
-	\u53d8\u91cf\u58f0\u660e\u91cd\u590d\uff1a{0} \u662f {1}
-javac.err.inner.class.multidef=\
-	\u5185\u90e8\u7c7b\u58f0\u660e\u91cd\u590d\uff1a\u5df2\u5728\u6b64\u8303\u56f4\u5185\u5b9a\u4e49\u4e86 {0}\u3002
-javac.err.intf.super.class=\
-	{0} \u7684\u7236\u7c7b\u4e0d\u80fd\u662f\u63a5\u53e3\uff1a{1}
-javac.err.cant.access.class=\
-	\u65e0\u6cd5\u8bbf\u95ee {0}\u3002\u7c7b\u6216\u63a5\u53e3\u5fc5\u987b\u662f\u516c\u5171\u7684\u3001\u5728\u540c\u4e00\u8f6f\u4ef6\u5305\u4e2d\u6216\u4e3a\u53ef\u8bbf\u95ee\u6210\u5458\u7c7b\u3002
-javac.err.unqualified.name.required=\
-	\u9650\u5b9a\u7684 "new" \u8868\u8fbe\u5f0f\u4e2d\u7684\u7c7b\u578b\u540d\u79f0\u5fc5\u987b\u4e3a\u975e\u9650\u5b9a\u6807\u8bc6\u7b26\u3002
-javac.err.repeated.modifier=\
-	\u4fee\u9970\u7b26\u91cd\u590d\u3002
-javac.err.inconsistent.modifier=\
-	\u6210\u5458\u58f0\u660e\u4e0d\u4e00\u81f4\u3002\u6700\u591a\u53ea\u80fd\u6307\u5b9a\u4e00\u4e2a\u516c\u5171\u7684\u3001\u4e13\u7528\u7684\u6216\u53d7\u4fdd\u62a4\u7684\u6210\u5458\u3002
-javac.err.super.is.final=\
-	\u4e0d\u80fd\u5c06\u6700\u7ec8\u7c7b\u7528\u4f5c\u5b50\u7c7b\uff1a{0}
-javac.err.super.is.intf=\
-	\u4e0d\u80fd\u5c06\u63a5\u53e3\u7528\u4f5c\u5b50\u7c7b\uff1a{0}
-javac.err.cyclic.super=\
-	\u5faa\u73af\u7c7b\u7ee7\u627f\u3002
-javac.err.super.is.inner=\
-	\u5faa\u73af\u7c7b\u7ee7\u627f\uff1a\u5b50\u7c7b\u4e0d\u80fd\u5c01\u95ed\u7236\u7c7b\u3002
-javac.err.cyclic.intf=\
-	\u5faa\u73af\u63a5\u53e3\u7ee7\u627f\u3002
-javac.err.cyclic.scoping=\
-	\u5faa\u73af\u7c7b\u7ee7\u627f\u6216\u786e\u5b9a\u4f5c\u7528\u57df\u3002
-javac.err.not.intf=\
-	{0} \u5fc5\u987b\u4e3a\u63a5\u53e3\u3002
-javac.err.final.intf=\
-	\u63a5\u53e3\u4e0d\u80fd\u4e3a\u6700\u7ec8\u63a5\u53e3\uff1a{0}
-javac.err.intf.impl.intf=\
-	\u63a5\u53e3\u4e0d\u80fd\u5b9e\u73b0\u4efb\u4f55\u65b9\u6cd5\uff0c\u5b83\u53ea\u80fd\u6269\u5c55\u5176\u4ed6\u63a5\u53e3\u3002
-javac.err.multiple.inherit=\
-	\u4e0d\u652f\u6301\u591a\u91cd\u7ee7\u627f\u3002
-javac.err.intf.repeated=\
-	\u63a5\u53e3 {0} \u91cd\u590d\u3002
-javac.err.class.format=\
-	{0} \u4e2d\u7684\u7c7b\u6587\u4ef6\u683c\u5f0f\u65e0\u6548\u3002  {1}
-javac.err.truncated.class=\
-	\u8bfb\u53d6\u7c7b\u6587\u4ef6 {0} \u65f6\u9047\u5230\u610f\u5916\u7684\u6587\u4ef6\u7ed3\u5c3e\u3002
-javac.err.no.meth.body=\
-	\u65b9\u6cd5 {0} \u9700\u8981\u65b9\u6cd5\u4e3b\u4f53\u3002\u5426\u5219\u5c06\u5176\u58f0\u660e\u4e3a\u62bd\u8c61\u65b9\u6cd5\u3002
-javac.err.no.constructor.body=\
-	\u6784\u9020\u51fd\u6570 {0} \u9700\u8981\u65b9\u6cd5\u4e3b\u4f53\u3002
-javac.err.bad.constructor.modifier=\
-	\u6784\u9020\u51fd\u6570\u4e0d\u80fd\u7531 strictfp \u6765\u4fee\u6539\u3002
-javac.err.void.inst.var=\
-	\u5b9e\u4f8b\u53d8\u91cf\u4e0d\u80fd\u4e3a\u7a7a\uff1a{0}
-javac.err.invalid.method.decl=\
-	\u65b9\u6cd5\u58f0\u660e\u65e0\u6548\uff1b\u9700\u8981\u8fd4\u56de\u7c7b\u578b\u3002
-javac.err.invalid.method.decl.name=\
-	\u65b9\u6cd5\u58f0\u660e\u65e0\u6548\uff1b\u9700\u8981\u65b9\u6cd5\u540d\u79f0\u3002
-javac.err.invalid.method.decl.qual=\
-	\u5168\u9650\u5b9a\u6784\u9020\u51fd\u6570\u540d\u79f0\u65e0\u6548\u3002
-javac.err.super.not.found=\
-	\u672a\u627e\u5230 {1} \u7684\u7236\u7c7b {0}\u3002
-javac.err.intf.not.found=\
-	\u672a\u627e\u5230 {1} \u7684\u63a5\u53e3 {0}\u3002
-javac.err.final.abstract=\
-	\u4e0d\u80fd\u5c06\u7c7b {0} \u540c\u65f6\u58f0\u660e\u4e3a\u62bd\u8c61\u7c7b\u548c\u6700\u7ec8\u7c7b\u3002
-javac.err.void.array=\
-	\u7a7a\u6570\u7ec4\u4e3a\u65e0\u6548\u7c7b\u578b\u3002
-javac.err.void.argument=\
-	\u53c2\u6570\u7684\u7c7b\u578b\u4e0d\u80fd\u4e3a\u7a7a\uff1a{0}
-javac.err.invalid.expr=\
-	\u8868\u8fbe\u5f0f\u8bed\u53e5\u65e0\u6548\u3002
-javac.err.catch.not.reached=\
-	\u65e0\u6cd5\u8bbf\u95ee catch\u3002
-javac.err.stat.not.reached=\
-	\u65e0\u6cd5\u8bbf\u95ee\u8bed\u53e5\u3002
-javac.err.init.no.normal.completion=\
-	\u521d\u59cb\u5316\u7a0b\u5e8f\u5fc5\u987b\u6b63\u5e38\u5b8c\u6210\u3002
-javac.err.arithmetic.exception=\
-	\u7b97\u6cd5\u5f02\u5e38\u3002
-javac.err.generic=\
-	{0}
-javac.err.public.class.file=\
-	\u5fc5\u987b\u5728\u540d\u4e3a "{1}" \u7684\u6587\u4ef6\u4e2d\u5b9a\u4e49\u516c\u5171 {0}\u3002
-javac.err.package.class.file=\
-	{0} \u5728 {1} \u4e2d\u5b9a\u4e49\u3002\u7531\u4e8e\u5b83\u662f\u5728\u5176\u6e90\u6587\u4ef6\u4e4b\u5916\u4f7f\u7528\u7684\uff0c\u56e0\u6b64\u5e94\u5728\u540d\u4e3a "{2}" \u7684\u6587\u4ef6\u4e2d\u5bf9\u5176\u8fdb\u884c\u5b9a\u4e49\u3002
-javac.err.lose.precision=\
-	\u53ef\u80fd\u635f\u5931\u7cbe\u5ea6\u3002\u4f7f\u7528\u663e\u5f0f\u8f6c\u6362\u5c06 {0} \u8f6c\u6362\u4e3a {1}\u3002
-javac.err.duplicate.argument=\
-	\u5728\u6b64\u65b9\u6cd5\u7684\u53c2\u6570\u5217\u8868\u4e2d\u4e24\u6b21\u4f7f\u7528\u53d8\u91cf "{0}"\u3002
-javac.err.local.redefined=\
-	\u5df2\u5728\u6b64\u65b9\u6cd5\u4e2d\u5b9a\u4e49\u4e86\u53d8\u91cf "{0}"\u3002
-javac.err.local.class.redefined=\
-	\u5df2\u5728\u6b64\u65b9\u6cd5\u4e2d\u5b9a\u4e49\u4e86\u5c40\u90e8\u7c7b "{0}"\u3002
-javac.err.inner.redefined=\
-	\u5df2\u5728\u6b64\u8303\u56f4\u5185\u5b9a\u4e49\u4e86\u7c7b\u540d "{0}"\u3002\u5185\u90e8\u7c7b\u4e0d\u80fd\u4e0e\u5176\u4efb\u4e00\u5c01\u95ed\u7c7b\u5177\u6709\u76f8\u540c\u7684\u7b80\u540d\u3002
-javac.err.inherited.hides.field=\
-	\u53d8\u91cf "{0}" \u662f\u5728 {1} \u4e2d\u7ee7\u627f\u7684\uff0c\u5e76\u5728 {2} \u4e2d\u9690\u85cf\u4e86\u4e00\u4e2a\u540c\u540d\u53d8\u91cf\u3002\u5fc5\u987b\u4f7f\u7528\u663e\u5f0f "this" \u9650\u5b9a\u7b26\u9009\u62e9\u6240\u9700\u5b9e\u4f8b\u3002
-javac.err.inherited.hides.local=\
-	\u53d8\u91cf "{0}" \u662f\u5728 {1} \u4e2d\u7ee7\u627f\u7684\uff0c\u5e76\u4e14\u9690\u85cf\u4e86\u4e00\u4e2a\u540c\u540d\u5c40\u90e8\u53d8\u91cf\u3002\u5fc5\u987b\u4f7f\u7528\u663e\u5f0f "this" \u9650\u5b9a\u7b26\u9009\u62e9\u53d8\u91cf\uff0c\u5426\u5219\u5fc5\u987b\u91cd\u547d\u540d\u5c40\u90e8\u53d8\u91cf\u3002
-javac.err.inherited.hides.method=\
-	\u65b9\u6cd5 "{0}" \u662f\u5728 {1} \u4e2d\u7ee7\u627f\u7684\uff0c\u5e76\u5728 {2} \u4e2d\u9690\u85cf\u4e86\u4e00\u4e2a\u540c\u540d\u65b9\u6cd5\u3002\u5fc5\u987b\u4f7f\u7528\u663e\u5f0f "this" \u9650\u5b9a\u7b26\u9009\u62e9\u6240\u9700\u5b9e\u4f8b\u3002
-javac.err.inherited.hides.type=\
-	\u7c7b\u578b "{0}" \u662f\u5728 {1} \u4e2d\u7ee7\u627f\u7684\uff0c\u5e76\u5728\u5c01\u95ed\u8303\u56f4\u5185\u9690\u85cf\u4e86\u4e00\u4e2a\u540c\u540d\u7c7b\u578b\u3002\u5fc5\u987b\u4f7f\u7528\u663e\u5f0f\u9650\u5b9a\u7b26\u524d\u7f00\u547d\u540d\u6b64\u7c7b\u578b\u3002
-javac.err.private.class=\
-	\u7c7b\u578b {0} \u4e0d\u80fd\u4e3a\u4e13\u7528\u7c7b\u578b\u3002\u5728\u5f53\u524d\u8f6f\u4ef6\u5305\u4e2d\u59cb\u7ec8\u53ef\u4ee5\u8bbf\u95ee\u8f6f\u4ef6\u5305\u6210\u5458\u3002
-javac.err.static.class=\
-	\u7c7b\u578b {0} \u4e0d\u80fd\u58f0\u660e\u4e3a\u9759\u6001\u7c7b\u578b\u3002\u7531\u4e8e\u5b83\u662f\u8f6f\u4ef6\u5305\u6210\u5458\uff0c\u56e0\u6b64\u5b83\u5df2\u81f3\u9876\u5c42\u3002
-javac.err.protected.class=\
-	\u7c7b\u578b {0} \u4e0d\u80fd\u4e3a\u53d7\u4fdd\u62a4\u7c7b\u578b\u3002\u8f6f\u4ef6\u5305\u6210\u5458\u53ef\u4ee5\u662f\u5f53\u524d\u8f6f\u4ef6\u5305\u7684\u516c\u5171\u8f6f\u4ef6\u5305\u6210\u5458\u6216\u5c40\u90e8\u8f6f\u4ef6\u5305\u6210\u5458\u3002
-javac.err.recursive.constr=\
-	\u9012\u5f52\u6784\u9020\u51fd\u6570\u8c03\u7528\uff1a{0}\u3002
-javac.err.wrong.class=\
-	\u6587\u4ef6 {0} \u672a\u6309\u9884\u671f\u5305\u542b {1} \u800c\u662f\u5305\u542b\u4e86 {2}\u3002\u8bf7\u5220\u9664\u8be5\u6587\u4ef6\u6216\u786e\u4fdd\u8be5\u6587\u4ef6\u4f4d\u4e8e\u6b63\u786e\u7684\u7c7b\u8def\u5f84\u5b50\u76ee\u5f55\u4e2d\u3002
-javac.err.wrong.source=\
-	\u6587\u4ef6 {0} \u672a\u6309\u9884\u671f\u5305\u542b {1}\u3002\u8bf7\u8c03\u6574\u7c7b\u8def\u5f84\uff0c\u4ee5\u4f7f\u8be5\u6587\u4ef6\u4e0d\u51fa\u73b0\u5728 {2} \u4e2d\u3002
-javac.err.class.not.found=\
-	\u5728 {1} \u4e2d\u672a\u627e\u5230\u7c7b {0}\u3002
-javac.err.class.not.found.no.context=\
-	\u672a\u627e\u5230\u7c7b {0}\u3002
-javac.err.package.not.found=\
-	\u5728 {1} \u4e2d\u672a\u627e\u5230\u8f6f\u4ef6\u5305 {0}\u3002
-javac.err.package.not.found.strong=\
-	\u672a\u627e\u5230\u8f6f\u4ef6\u5305 {0}\u3002\u8bf7\u8c03\u6574\u7c7b\u8def\u5f84\uff0c\u4ee5\u4fbf\u53ef\u4ee5\u8bbf\u95ee\u8f6f\u4ef6\u5305 {0}\u3002
-javac.err.class.package.conflict=\
-	\u7c7b\u578b\u548c\u8f6f\u4ef6\u5305\u4e0d\u80fd\u540c\u540d\u3002\u53ef\u4ee5\u8bbf\u95ee\u8f6f\u4ef6\u5305 {0} \u65f6\uff0c\u4e0d\u80fd\u4f7f\u7528\u540d\u79f0 {0} \u6765\u547d\u540d\u7c7b\u3002
-javac.err.package.class.conflict=\
-	\u7c7b\u578b\u548c\u8f6f\u4ef6\u5305\u4e0d\u80fd\u540c\u540d\u3002\u53ef\u4ee5\u8bbf\u95ee\u7c7b {1} \u65f6\uff0c\u4e0d\u80fd\u4f7f\u7528\u540d\u79f0 {0} \u6765\u547d\u540d\u8f6f\u4ef6\u5305\u3002
-javac.err.package.class.conflict.strong=\
-	\u540d\u79f0 {0} \u5fc5\u987b\u53c2\u8003\u8f6f\u4ef6\u5305\u3002\u7531\u4e8e\u7c7b\u578b\u548c\u8f6f\u4ef6\u5305\u4e0d\u80fd\u540c\u540d\uff0c\u5982\u679c\u53ef\u8bbf\u95ee\u7c7b\u540d\u4e3a {1} \u5219\u4e3a\u975e\u6cd5\u3002\u5e94\u91cd\u547d\u540d\u7c7b {1} \u6216\u5c06\u5176\u4ece\u7c7b\u8def\u5f84\u4e2d\u5220\u9664\u3002
-javac.err.illegal.mangled.name=\
-	{1} \u7684\u540d\u79f0 {0} \u65e0\u6548\u3002
-javac.err.class.and.package=\
-	\u4e0d\u660e\u786e\u7684\u540d\u79f0\uff1a{0} \u65e2\u662f\u7c7b\u53c8\u662f\u8f6f\u4ef6\u5305\u3002
-javac.err.throws.not.throwable=\
-	throws \u5b50\u53e5\u4e2d\u7684 {0} \u5fc5\u987b\u662f\u7c7b java.lang.Throwable \u7684\u5b50\u7c7b\u3002
-javac.err.throw.not.throwable=\
-	\u65e0\u6cd5\u629b\u51fa {0}\uff1b\u5b83\u5fc5\u987b\u4e3a\u7c7b java.lang.Throwable \u7684\u5b50\u7c7b\u3002
-javac.err.catch.not.throwable=\
-	\u65e0\u6cd5\u6355\u6349 {0}\uff1b\u5b83\u5fc5\u987b\u4e3a\u7c7b java.lang.Throwable \u7684\u5b50\u7c7b\u3002
-javac.err.initializer.exception=\
-	\u4e0d\u80fd\u5728\u521d\u59cb\u5316\u7a0b\u5e8f\u4e2d\u629b\u51fa\u5f02\u5e38 {0}\u3002
-javac.err.cant.read=\
-	\u65e0\u6cd5\u8bfb\u53d6\uff1a{0}
-javac.err.cant.write=\
-	\u65e0\u6cd5\u5199\u5165\uff1a{0}
-javac.err.fatal.error=\
-	\u7f16\u8bd1\u5668\u51fa\u9519\uff1b\u8bf7\u5f52\u6863\u9519\u8bef\u62a5\u544a (http://java.sun.com/cgi-bin/bugreport.cgi)\u3002
-javac.err.fatal.exception=\
-	\u7f16\u8bd1\u5668\u4e2d\u51fa\u73b0\u5f02\u5e38\uff1b\u8bf7\u5f52\u6863\u9519\u8bef\u62a5\u544a (http://java.sun.com/cgi-bin/bugreport.cgi)\u3002
-javac.err.no.inner.classes=\
-	\u5df2\u7981\u7528\u5bf9\u5185\u90e8\u7c7b\u7684\u652f\u6301\u3002
-javac.err.uncaught.exception=\
-	\u5fc5\u987b\u6355\u6349\u5f02\u5e38 {0}\uff0c\u5426\u5219\u5fc5\u987b\u5728\u6b64\u65b9\u6cd5\u7684 throws \u5b50\u53e5\u4e2d\u5bf9\u5176\u8fdb\u884c\u58f0\u660e\u3002
-javac.err.constructor.exception=\
-	\u5fc5\u987b\u6355\u6349\u5f02\u5e38 {0}\uff0c\u5426\u5219\u5fc5\u987b\u5728\u6b64\u6784\u9020\u51fd\u6570\u7684 throws \u5b50\u53e5\u4e2d\u5bf9\u5176\u8fdb\u884c\u58f0\u660e\u3002
-javac.err.def.constructor.exception=\
-	\u7531\u4e8e\u7c7b\u7684\u7236\u7c7b\u7684\u6784\u9020\u51fd\u6570\u629b\u51fa\u5f02\u5e38 {0}\uff0c\u56e0\u6b64\u65e0\u6cd5\u4e3a\u6b64\u7c7b\u521b\u5efa\u9ed8\u8ba4\u6784\u9020\u51fd\u6570\u3002\u4e3a\u6b64\u7c7b\u663e\u5f0f\u5b9a\u4e49\u6784\u9020\u51fd\u6570\u3002
-javac.err.catch.not.thrown=\
-	\u4ece\u672a\u5728\u76f8\u5e94\u7684 try \u8bed\u53e5\u4e3b\u4f53\u4e2d\u629b\u51fa\u5f02\u5e38 {0}\u3002
+javac.err.class.is.deprecated=\u6CE8: {0}\u5DF2\u8FC7\u65F6\u3002
+javac.err.meth.is.deprecated=\u6CE8: {1}\u4E2D\u7684\u65B9\u6CD5{0}\u5DF2\u8FC7\u65F6\u3002
+javac.err.constr.is.deprecated=\u6CE8: \u6784\u9020\u5668{0}\u5DF2\u8FC7\u65F6\u3002
+javac.err.field.is.deprecated=\u6CE8: {1}\u4E2D\u7684\u53D8\u91CF{0}\u5DF2\u8FC7\u65F6\u3002
+javac.err.note.deprecations=\u6CE8: {0}\u6587\u4EF6\u4F7F\u7528\u6216\u8986\u76D6\u4E86\u5DF2\u8FC7\u65F6\u7684 API\u3002\u8BF7\u53C2\u9605\u6587\u6863\u4EE5\u83B7\u5F97\u9488\u5BF9\u6BCF\u79CD\u60C5\u51B5\u7684\u66F4\u597D\u7684\u66FF\u4EE3\u65B9\u6CD5\u3002
+javac.err.note.1deprecation=\u6CE8: {0}\u4F7F\u7528\u6216\u8986\u76D6\u4E86\u5DF2\u8FC7\u65F6\u7684 API\u3002\u8BF7\u53C2\u9605\u6587\u6863\u4EE5\u83B7\u5F97\u66F4\u597D\u7684\u66FF\u4EE3\u65B9\u6CD5\u3002
+javac.err.note.deprecations.silent=\u6CE8: {0}\u6587\u4EF6\u4F7F\u7528\u6216\u8986\u76D6\u4E86\u5DF2\u8FC7\u65F6\u7684 API\u3002\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u4F7F\u7528 "-deprecation" \u91CD\u65B0\u7F16\u8BD1\u3002
+javac.err.note.1deprecation.silent=\u6CE8: {0}\u4F7F\u7528\u6216\u8986\u76D6\u4E86\u5DF2\u8FC7\u65F6\u7684 API\u3002\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u4F7F\u7528 "-deprecation" \u91CD\u65B0\u7F16\u8BD1\u3002
+javac.err.invalid.array.dim=\u6570\u7EC4\u7EF4\u65E0\u6548\u3002
+javac.err.ambig.constr=\u6784\u9020\u5668\u4E0D\u660E\u786E: {0}, {1}
+javac.err.explicit.cast.needed={0}\u7684\u4E0D\u517C\u5BB9\u7C7B\u578B\u3002\u9700\u8981\u4F7F\u7528\u663E\u5F0F\u8F6C\u6362\u5C06{1}\u8F6C\u6362\u4E3A{2}\u3002
+javac.err.incompatible.type={0}\u7684\u4E0D\u517C\u5BB9\u7C7B\u578B\u3002\u65E0\u6CD5\u5C06{1}\u8F6C\u6362\u4E3A{2}\u3002
+javac.err.invalid.term=\u6761\u4EF6\u65E0\u6548\u3002
+javac.err.abstract.class=\u5FC5\u987B\u5C06{0}\u58F0\u660E\u4E3A\u62BD\u8C61\u3002\u5B83\u672A\u4ECE{2}\u5B9A\u4E49{1}\u3002
+javac.err.abstract.class.cannot.override=\u5FC5\u987B\u5C06{0}\u58F0\u660E\u4E3A\u62BD\u8C61\u3002\u65E0\u6CD5\u8BBF\u95EE\u4E14\u65E0\u6CD5\u8986\u76D6\u8D85\u7C7B{2}\u4E2D\u7684\u7A0B\u5E8F\u5305\u4E13\u7528\u62BD\u8C61\u65B9\u6CD5{1}\u3002
+javac.err.new.intf={0}\u662F\u63A5\u53E3\u3002\u65E0\u6CD5\u5B9E\u4F8B\u5316\u3002
+javac.err.invoke.abstract=\u65E0\u6CD5\u5728{1}\u4E2D\u76F4\u63A5\u8C03\u7528\u62BD\u8C61\u65B9\u6CD5{0}\u3002
+javac.err.unmatched.meth=\u5728{1}\u4E2D\u627E\u4E0D\u5230\u4E0E{0}\u5339\u914D\u7684\u65B9\u6CD5\u3002
+javac.err.unmatched.constr=\u5728{1}\u4E2D\u627E\u4E0D\u5230\u4E0E{0}\u5339\u914D\u7684\u6784\u9020\u5668\u3002
+javac.err.wrong.number.args={0}\u4E2D\u7684\u53C2\u6570\u6570\u76EE\u9519\u8BEF\u3002
+javac.err.forward.ref=\u65E0\u6CD5\u524D\u5411\u5F15\u7528{1}\u4E2D\u7684{0}\u3002
+javac.err.array.dim.missing=\u7F3A\u5C11\u6570\u7EC4\u7EF4\u3002
+javac.err.new.abstract={0}\u662F\u62BD\u8C61\u7C7B\u3002\u65E0\u6CD5\u5B9E\u4F8B\u5316\u3002
+javac.err.label.not.found=\u627E\u4E0D\u5230{0}\u7684\u6807\u7B7E\u5B9A\u4E49\u3002
+javac.err.invalid.break=loop \u6216 switch \u4E2D\u5FC5\u987B\u6709 ''break''\u3002
+javac.err.invalid.continue=loop \u4E2D\u5FC5\u987B\u6709 ''continue''\u3002
+javac.err.branch.to.uplevel=''break'' \u6216 ''continue'' \u5FC5\u987B\u5728\u540C\u4E00\u65B9\u6CD5\u5185\u8F6C\u79FB\u63A7\u5236\u3002
+javac.err.invalid.decl=\u58F0\u660E\u65E0\u6548\u3002
+javac.err.return.with.value=\u5BF9\u4E8E{0}\u4F7F\u7528 ''return'' \u8FD4\u56DE\u503C\u3002
+javac.err.return.without.value=\u5BF9\u4E8E{0}\u4F7F\u7528 ''return'' \u672A\u8FD4\u56DE\u503C\u3002
+javac.err.return.inside.static.initializer=\u9759\u6001\u521D\u59CB\u5316\u7A0B\u5E8F\u5185\u90E8\u7684 ''return''\u3002
+javac.err.invalid.label=\u6807\u7B7E\u65E0\u6548\u3002
+javac.err.return.required.at.end=\u5728{0}\u7684\u7ED3\u5C3E\u5904\u8FD4\u56DE\u6240\u9700\u5185\u5BB9\u3002
+javac.err.duplicate.label=case \u6807\u7B7E\u91CD\u590D: {0}
+javac.err.switch.overflow=\u5728{1}\u4E0A\u7528\u4E8E ''switch'' \u7684 case \u6807\u7B7E{0}\u8FC7\u5927
+javac.err.nested.duplicate.label=\u8BED\u53E5\u4E0D\u80FD\u4E0E\u5176\u5C01\u95ED\u8BED\u53E5\u4E4B\u4E00\u4F7F\u7528\u540C\u4E00\u6807\u8BC6\u7B26\u6807\u8BB0: {0}
+javac.err.declaration.with.label=\u65E0\u6CD5\u6807\u8BB0\u58F0\u660E: {0}
+javac.err.const.expr.required=\u9700\u8981\u5E38\u91CF\u8868\u8FBE\u5F0F\u3002
+javac.err.duplicate.default=''default'' \u6807\u7B7E\u91CD\u590D\u3002
+javac.err.not.supported=\u4E0D\u652F\u6301 ''{0}''\u3002
+javac.err.return.with.value.constr=\u5BF9\u4E8E\u6784\u9020\u5668\u4F7F\u7528 ''return'' \u8FD4\u56DE\u503C: {0}
+javac.err.package.repeated=\u4EC5\u5141\u8BB8\u4E00\u4E2A\u7A0B\u5E8F\u5305\u58F0\u660E\u3002
+javac.err.class.multidef=\u5DF2\u5728{1}\u4E2D\u5B9A\u4E49\u7C7B{0}\u3002
+javac.err.class.multidef.import=\u7C7B\u540D{0}\u4E0E\u5BFC\u5165\u7C7B{1}\u51B2\u7A81\u3002
+javac.err.intf.constructor=\u63A5\u53E3\u4E0D\u80FD\u6709\u6784\u9020\u5668\u3002
+javac.err.constr.modifier=\u6784\u9020\u5668\u7684\u7C7B\u578B\u4E0D\u80FD\u4E3A\u672C\u673A, \u62BD\u8C61, \u9759\u6001, \u540C\u6B65\u6216\u6700\u7EC8: {0}
+javac.err.intf.initializer=\u63A5\u53E3\u4E0D\u80FD\u6709\u9759\u6001\u521D\u59CB\u5316\u7A0B\u5E8F\u3002
+javac.err.intf.modifier.method=\u63A5\u53E3\u65B9\u6CD5\u7C7B\u578B\u4E0D\u80FD\u4E3A\u672C\u673A, \u9759\u6001, \u540C\u6B65, \u6700\u7EC8, \u4E13\u7528\u6216\u53D7\u4FDD\u62A4: {0}
+javac.err.intf.modifier.field=\u63A5\u53E3\u5B57\u6BB5\u7C7B\u578B\u4E0D\u80FD\u4E3A\u4E13\u7528\u6216\u53D7\u4FDD\u62A4: {0}
+javac.err.transient.meth=\u65B9\u6CD5{0}\u4E0D\u80FD\u4E3A\u77AC\u6001\u65B9\u6CD5\u3002\u53EA\u6709\u53D8\u91CF\u624D\u80FD\u662F\u77AC\u6001\u7684\u3002
+javac.err.volatile.meth=\u65B9\u6CD5{0}\u4E0D\u80FD\u4E3A\u6613\u5931\u65B9\u6CD5\u3002\u53EA\u6709\u53D8\u91CF\u624D\u80FD\u662F\u6613\u5931\u7684\u3002
+javac.err.abstract.private.modifier=\u62BD\u8C61\u65B9\u6CD5\u4E0D\u80FD\u4E3A\u4E13\u7528\u65B9\u6CD5: {0}
+javac.err.abstract.static.modifier=\u62BD\u8C61\u65B9\u6CD5\u4E0D\u80FD\u4E3A\u9759\u6001\u65B9\u6CD5: {0}
+javac.err.abstract.final.modifier=\u62BD\u8C61\u65B9\u6CD5\u4E0D\u80FD\u4E3A\u6700\u7EC8\u65B9\u6CD5: {0}
+javac.err.abstract.native.modifier=\u62BD\u8C61\u65B9\u6CD5\u4E0D\u80FD\u4E3A\u672C\u673A\u65B9\u6CD5: {0}
+javac.err.abstract.synchronized.modifier=\u62BD\u8C61\u65B9\u6CD5\u4E0D\u80FD\u4E3A\u540C\u6B65\u65B9\u6CD5: {0}
+javac.err.invalid.meth.body=\u62BD\u8C61\u65B9\u6CD5\u548C\u672C\u673A\u65B9\u6CD5\u4E0D\u80FD\u5E26\u6709\u4E3B\u4F53: {0}
+javac.err.var.modifier=\u53D8\u91CF\u7C7B\u578B\u4E0D\u80FD\u4E3A\u540C\u6B65, \u62BD\u8C61\u6216\u672C\u673A: {0}
+javac.err.var.floatmodifier=\u4E0D\u80FD\u4E25\u683C\u58F0\u660E\u53D8\u91CF: {0}
+javac.err.inner.modifier=\u5185\u90E8\u7C7B\u4E0D\u80FD\u4E3A\u6613\u5931, \u77AC\u6001, \u672C\u673A\u6216\u540C\u6B65\u7C7B: {0}
+javac.err.transient.modifier=\u77AC\u6001\u53D8\u91CF\u4E0D\u80FD\u4E3A\u63A5\u53E3\u7684\u6210\u5458: {0}
+javac.err.volatile.modifier=\u6613\u5931\u53D8\u91CF\u4E0D\u80FD\u4E3A\u6700\u7EC8\u53D8\u91CF\u6216\u63A5\u53E3\u7684\u6210\u5458: {0}
+javac.err.initializer.needed=\u5FC5\u987B\u521D\u59CB\u5316\u6B64\u6700\u7EC8\u53D8\u91CF: {0}
+javac.err.meth.multidef=\u65B9\u6CD5\u58F0\u660E\u91CD\u590D: {0}
+javac.err.meth.redef.rettype=\u4E0D\u80FD\u4F7F\u7528\u5176\u4ED6\u8FD4\u56DE\u7C7B\u578B\u91CD\u65B0\u5B9A\u4E49\u65B9\u6CD5: {0}\u662F{1}
+javac.err.var.multidef=\u53D8\u91CF\u58F0\u660E\u91CD\u590D: {0}\u662F{1}
+javac.err.inner.class.multidef=\u5185\u90E8\u7C7B\u58F0\u660E\u91CD\u590D: \u5DF2\u5728\u6B64\u8303\u56F4\u5185\u5B9A\u4E49\u4E86{0}\u3002
+javac.err.intf.super.class={0}\u7684\u8D85\u7C7B\u4E0D\u80FD\u662F\u63A5\u53E3: {1}
+javac.err.cant.access.class=\u65E0\u6CD5\u8BBF\u95EE{0}\u3002\u7C7B\u6216\u63A5\u53E3\u5FC5\u987B\u662F\u516C\u5171\u7684, \u5728\u540C\u4E00\u7A0B\u5E8F\u5305\u4E2D\u6216\u4E3A\u53EF\u8BBF\u95EE\u6210\u5458\u7C7B\u3002
+javac.err.unqualified.name.required=\u9650\u5B9A\u7684 'new' \u8868\u8FBE\u5F0F\u4E2D\u7684\u7C7B\u578B\u540D\u79F0\u5FC5\u987B\u4E3A\u975E\u9650\u5B9A\u6807\u8BC6\u7B26\u3002
+javac.err.repeated.modifier=\u4FEE\u9970\u7B26\u91CD\u590D\u3002
+javac.err.inconsistent.modifier=\u6210\u5458\u58F0\u660E\u4E0D\u4E00\u81F4\u3002\u6700\u591A\u53EA\u80FD\u6307\u5B9A\u4E00\u4E2A\u516C\u5171\u7684, \u4E13\u7528\u7684\u6216\u53D7\u4FDD\u62A4\u7684\u6210\u5458\u3002
+javac.err.super.is.final=\u4E0D\u80FD\u5C06\u6700\u7EC8\u7C7B\u7528\u4F5C\u5B50\u7C7B: {0}
+javac.err.super.is.intf=\u4E0D\u80FD\u5C06\u63A5\u53E3\u7528\u4F5C\u5B50\u7C7B: {0}
+javac.err.cyclic.super=\u5FAA\u73AF\u7C7B\u7EE7\u627F\u3002
+javac.err.super.is.inner=\u5FAA\u73AF\u7C7B\u7EE7\u627F: \u5B50\u7C7B\u4E0D\u80FD\u5C01\u95ED\u8D85\u7C7B\u3002
+javac.err.cyclic.intf=\u5FAA\u73AF\u63A5\u53E3\u7EE7\u627F\u3002
+javac.err.cyclic.scoping=\u5FAA\u73AF\u7C7B\u7EE7\u627F\u6216\u786E\u5B9A\u4F5C\u7528\u57DF\u3002
+javac.err.not.intf={0}\u5FC5\u987B\u4E3A\u63A5\u53E3\u3002
+javac.err.final.intf=\u63A5\u53E3\u4E0D\u80FD\u4E3A\u6700\u7EC8\u63A5\u53E3: {0}
+javac.err.intf.impl.intf=\u63A5\u53E3\u4E0D\u80FD\u5B9E\u73B0\u4EFB\u4F55\u65B9\u6CD5, \u5B83\u53EA\u80FD\u6269\u5C55\u5176\u4ED6\u63A5\u53E3\u3002
+javac.err.multiple.inherit=\u4E0D\u652F\u6301\u591A\u91CD\u7EE7\u627F\u3002
+javac.err.intf.repeated=\u63A5\u53E3{0}\u91CD\u590D\u3002
+javac.err.class.format={0}\u4E2D\u7684\u7C7B\u6587\u4EF6\u683C\u5F0F\u65E0\u6548\u3002{1}
+javac.err.truncated.class=\u8BFB\u53D6\u7C7B\u6587\u4EF6{0}\u65F6\u9047\u5230\u610F\u5916\u7684\u6587\u4EF6\u7ED3\u5C3E\u3002
+javac.err.no.meth.body=\u65B9\u6CD5{0}\u9700\u8981\u65B9\u6CD5\u4E3B\u4F53\u3002\u5426\u5219\u5C06\u5176\u58F0\u660E\u4E3A\u62BD\u8C61\u65B9\u6CD5\u3002
+javac.err.no.constructor.body=\u6784\u9020\u5668{0}\u9700\u8981\u65B9\u6CD5\u4E3B\u4F53\u3002
+javac.err.bad.constructor.modifier=\u6784\u9020\u5668\u4E0D\u80FD\u7531 strictfp \u6765\u4FEE\u6539\u3002
+javac.err.void.inst.var=\u5B9E\u4F8B\u53D8\u91CF\u4E0D\u80FD\u4E3A\u7A7A: {0}
+javac.err.invalid.method.decl=\u65B9\u6CD5\u58F0\u660E\u65E0\u6548; \u9700\u8981\u8FD4\u56DE\u7C7B\u578B\u3002
+javac.err.invalid.method.decl.name=\u65B9\u6CD5\u58F0\u660E\u65E0\u6548; \u9700\u8981\u65B9\u6CD5\u540D\u79F0\u3002
+javac.err.invalid.method.decl.qual=\u5168\u9650\u5B9A\u6784\u9020\u5668\u540D\u79F0\u65E0\u6548\u3002
+javac.err.super.not.found=\u627E\u4E0D\u5230{1}\u7684\u8D85\u7C7B{0}\u3002
+javac.err.intf.not.found=\u627E\u4E0D\u5230{1}\u7684\u63A5\u53E3{0}\u3002
+javac.err.final.abstract=\u4E0D\u80FD\u5C06\u7C7B{0}\u540C\u65F6\u58F0\u660E\u4E3A\u62BD\u8C61\u7C7B\u548C\u6700\u7EC8\u7C7B\u3002
+javac.err.void.array=\u7A7A\u6570\u7EC4\u4E3A\u65E0\u6548\u7C7B\u578B\u3002
+javac.err.void.argument=\u53C2\u6570\u7684\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A: {0}
+javac.err.invalid.expr=\u8868\u8FBE\u5F0F\u8BED\u53E5\u65E0\u6548\u3002
+javac.err.catch.not.reached=\u65E0\u6CD5\u8BBF\u95EE catch\u3002
+javac.err.stat.not.reached=\u65E0\u6CD5\u8BBF\u95EE\u8BED\u53E5\u3002
+javac.err.init.no.normal.completion=\u521D\u59CB\u5316\u7A0B\u5E8F\u5FC5\u987B\u80FD\u591F\u6B63\u5E38\u5B8C\u6210\u3002
+javac.err.arithmetic.exception=\u7B97\u6CD5\u5F02\u5E38\u9519\u8BEF\u3002
+javac.err.generic={0}
+javac.err.public.class.file=\u5FC5\u987B\u5728\u540D\u4E3A "{1}" \u7684\u6587\u4EF6\u4E2D\u5B9A\u4E49\u516C\u5171{0}\u3002
+javac.err.package.class.file={0}\u5728{1}\u4E2D\u5B9A\u4E49\u3002\u7531\u4E8E\u5B83\u662F\u5728\u5176\u6E90\u6587\u4EF6\u4E4B\u5916\u4F7F\u7528\u7684, \u56E0\u6B64\u5E94\u5728\u540D\u4E3A "{2}" \u7684\u6587\u4EF6\u4E2D\u5BF9\u5176\u8FDB\u884C\u5B9A\u4E49\u3002
+javac.err.lose.precision=\u53EF\u80FD\u635F\u5931\u7CBE\u5EA6\u3002\u4F7F\u7528\u663E\u5F0F\u8F6C\u6362\u5C06{0}\u8F6C\u6362\u4E3A{1}\u3002
+javac.err.duplicate.argument=\u5728\u6B64\u65B9\u6CD5\u7684\u53C2\u6570\u5217\u8868\u4E2D\u4E24\u6B21\u4F7F\u7528\u53D8\u91CF ''{0}''\u3002
+javac.err.local.redefined=\u5DF2\u5728\u6B64\u65B9\u6CD5\u4E2D\u5B9A\u4E49\u4E86\u53D8\u91CF ''{0}''\u3002
+javac.err.local.class.redefined=\u5DF2\u5728\u6B64\u65B9\u6CD5\u4E2D\u5B9A\u4E49\u4E86\u672C\u5730\u7C7B ''{0}''\u3002
+javac.err.inner.redefined=\u5DF2\u5728\u6B64\u8303\u56F4\u5185\u5B9A\u4E49\u4E86\u7C7B\u540D ''{0}''\u3002\u5185\u90E8\u7C7B\u4E0D\u80FD\u4E0E\u5176\u4EFB\u4E00\u5C01\u95ED\u7C7B\u5177\u6709\u76F8\u540C\u7684\u7B80\u540D\u3002
+javac.err.inherited.hides.field=\u53D8\u91CF ''{0}'' \u662F\u5728{1}\u4E2D\u7EE7\u627F\u7684, \u5E76\u5728{2}\u4E2D\u9690\u85CF\u4E86\u4E00\u4E2A\u540C\u540D\u53D8\u91CF\u3002\u5FC5\u987B\u4F7F\u7528\u663E\u5F0F ''this'' \u9650\u5B9A\u7B26\u9009\u62E9\u6240\u9700\u5B9E\u4F8B\u3002
+javac.err.inherited.hides.local=\u53D8\u91CF ''{0}'' \u662F\u5728{1}\u4E2D\u7EE7\u627F\u7684, \u5E76\u4E14\u9690\u85CF\u4E86\u4E00\u4E2A\u540C\u540D\u672C\u5730\u53D8\u91CF\u3002\u5FC5\u987B\u4F7F\u7528\u663E\u5F0F ''this'' \u9650\u5B9A\u7B26\u9009\u62E9\u53D8\u91CF, \u5426\u5219\u5FC5\u987B\u91CD\u547D\u540D\u672C\u5730\u53D8\u91CF\u3002
+javac.err.inherited.hides.method=\u65B9\u6CD5 ''{0}'' \u662F\u5728{1}\u4E2D\u7EE7\u627F\u7684, \u5E76\u5728{2}\u4E2D\u9690\u85CF\u4E86\u4E00\u4E2A\u540C\u540D\u65B9\u6CD5\u3002\u5FC5\u987B\u4F7F\u7528\u663E\u5F0F ''this'' \u9650\u5B9A\u7B26\u9009\u62E9\u6240\u9700\u5B9E\u4F8B\u3002
+javac.err.inherited.hides.type=\u7C7B\u578B ''{0}'' \u662F\u5728{1}\u4E2D\u7EE7\u627F\u7684, \u5E76\u5728\u5C01\u95ED\u8303\u56F4\u5185\u9690\u85CF\u4E86\u4E00\u4E2A\u540C\u540D\u7C7B\u578B\u3002\u5FC5\u987B\u4F7F\u7528\u663E\u5F0F\u9650\u5B9A\u7B26\u524D\u7F00\u547D\u540D\u6B64\u7C7B\u578B\u3002
+javac.err.private.class=\u7C7B\u578B{0}\u4E0D\u80FD\u4E3A\u4E13\u7528\u7C7B\u578B\u3002\u5728\u5F53\u524D\u7A0B\u5E8F\u5305\u4E2D\u59CB\u7EC8\u53EF\u4EE5\u8BBF\u95EE\u7A0B\u5E8F\u5305\u6210\u5458\u3002
+javac.err.static.class=\u7C7B\u578B{0}\u4E0D\u80FD\u58F0\u660E\u4E3A\u9759\u6001\u7C7B\u578B\u3002\u7531\u4E8E\u5B83\u662F\u7A0B\u5E8F\u5305\u6210\u5458, \u56E0\u6B64\u5B83\u5DF2\u81F3\u9876\u5C42\u3002
+javac.err.protected.class=\u7C7B\u578B{0}\u4E0D\u80FD\u4E3A\u53D7\u4FDD\u62A4\u7C7B\u578B\u3002\u7A0B\u5E8F\u5305\u6210\u5458\u53EF\u4EE5\u662F\u5F53\u524D\u7A0B\u5E8F\u5305\u7684\u516C\u5171\u7A0B\u5E8F\u5305\u6210\u5458\u6216\u672C\u5730\u7A0B\u5E8F\u5305\u6210\u5458\u3002
+javac.err.recursive.constr=\u9012\u5F52\u6784\u9020\u5668\u8C03\u7528: {0}\u3002
+javac.err.wrong.class=\u6587\u4EF6{0}\u672A\u6309\u9884\u671F\u5305\u542B{1}\u800C\u662F\u5305\u542B\u4E86{2}\u3002\u8BF7\u5220\u9664\u8BE5\u6587\u4EF6\u6216\u786E\u4FDD\u8BE5\u6587\u4EF6\u4F4D\u4E8E\u6B63\u786E\u7684\u7C7B\u8DEF\u5F84\u5B50\u76EE\u5F55\u4E2D\u3002
+javac.err.wrong.source=\u6587\u4EF6{0}\u672A\u6309\u9884\u671F\u5305\u542B{1}\u3002\u8BF7\u8C03\u6574\u7C7B\u8DEF\u5F84, \u4EE5\u4F7F\u8BE5\u6587\u4EF6\u4E0D\u51FA\u73B0\u5728{2}\u4E2D\u3002
+javac.err.class.not.found=\u5728{1}\u4E2D\u627E\u4E0D\u5230\u7C7B{0}\u3002
+javac.err.class.not.found.no.context=\u627E\u4E0D\u5230\u7C7B{0}\u3002
+javac.err.package.not.found=\u5728{1}\u4E2D\u627E\u4E0D\u5230\u7A0B\u5E8F\u5305{0}\u3002
+javac.err.package.not.found.strong=\u627E\u4E0D\u5230\u7A0B\u5E8F\u5305{0}\u3002\u8BF7\u8C03\u6574\u7C7B\u8DEF\u5F84, \u4EE5\u4FBF\u53EF\u4EE5\u8BBF\u95EE\u7A0B\u5E8F\u5305{0}\u3002
+javac.err.class.package.conflict=\u7C7B\u578B\u548C\u7A0B\u5E8F\u5305\u4E0D\u80FD\u540C\u540D\u3002\u53EF\u4EE5\u8BBF\u95EE\u7A0B\u5E8F\u5305{0}\u65F6, \u4E0D\u80FD\u4F7F\u7528\u540D\u79F0{0}\u6765\u547D\u540D\u7C7B\u3002
+javac.err.package.class.conflict=\u7C7B\u578B\u548C\u7A0B\u5E8F\u5305\u4E0D\u80FD\u540C\u540D\u3002\u53EF\u4EE5\u8BBF\u95EE\u7C7B{1}\u65F6, \u4E0D\u80FD\u4F7F\u7528\u540D\u79F0{0}\u6765\u547D\u540D\u7A0B\u5E8F\u5305\u3002
+javac.err.package.class.conflict.strong=\u540D\u79F0{0}\u5FC5\u987B\u53C2\u8003\u7A0B\u5E8F\u5305\u3002\u7531\u4E8E\u7C7B\u578B\u548C\u7A0B\u5E8F\u5305\u4E0D\u80FD\u540C\u540D, \u5982\u679C\u53EF\u8BBF\u95EE\u7C7B\u540D\u4E3A{1}\u5219\u4E3A\u975E\u6CD5\u3002\u5E94\u91CD\u547D\u540D\u7C7B{1}\u6216\u5C06\u5176\u4ECE\u7C7B\u8DEF\u5F84\u4E2D\u5220\u9664\u3002
+javac.err.illegal.mangled.name={1}\u7684\u540D\u79F0{0}\u65E0\u6548\u3002
+javac.err.class.and.package=\u4E0D\u660E\u786E\u7684\u540D\u79F0: {0}\u65E2\u662F\u7C7B\u53C8\u662F\u7A0B\u5E8F\u5305\u3002
+javac.err.throws.not.throwable=throws \u5B50\u53E5\u4E2D\u7684{0}\u5FC5\u987B\u662F\u7C7B java.lang.Throwable \u7684\u5B50\u7C7B\u3002
+javac.err.throw.not.throwable=\u65E0\u6CD5\u629B\u51FA{0}; \u5B83\u5FC5\u987B\u4E3A\u7C7B java.lang.Throwable \u7684\u5B50\u7C7B\u3002
+javac.err.catch.not.throwable=\u65E0\u6CD5\u6355\u83B7{0}; \u5B83\u5FC5\u987B\u4E3A\u7C7B java.lang.Throwable \u7684\u5B50\u7C7B\u3002
+javac.err.initializer.exception=\u4E0D\u80FD\u5728\u521D\u59CB\u5316\u7A0B\u5E8F\u4E2D\u629B\u51FA\u5F02\u5E38\u9519\u8BEF{0}\u3002
+javac.err.cant.read=\u65E0\u6CD5\u8BFB\u53D6: {0}
+javac.err.cant.write=\u65E0\u6CD5\u5199\u5165: {0}
+javac.err.fatal.error=\u7F16\u8BD1\u5668\u51FA\u9519; \u8BF7\u5EFA\u7ACB Bug \u62A5\u544A (http://java.sun.com/cgi-bin/bugreport.cgi)\u3002
+javac.err.fatal.exception=\u7F16\u8BD1\u5668\u4E2D\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF; \u8BF7\u5EFA\u7ACB Bug \u62A5\u544A (http://java.sun.com/cgi-bin/bugreport.cgi)\u3002
+javac.err.no.inner.classes=\u5DF2\u7981\u7528\u5BF9\u5185\u90E8\u7C7B\u7684\u652F\u6301\u3002
+javac.err.uncaught.exception=\u5FC5\u987B\u6355\u83B7\u5F02\u5E38\u9519\u8BEF{0}, \u5426\u5219\u5FC5\u987B\u5728\u6B64\u65B9\u6CD5\u7684 throws \u5B50\u53E5\u4E2D\u5BF9\u5176\u8FDB\u884C\u58F0\u660E\u3002
+javac.err.constructor.exception=\u5FC5\u987B\u6355\u83B7\u5F02\u5E38\u9519\u8BEF{0}, \u5426\u5219\u5FC5\u987B\u5728\u6B64\u6784\u9020\u5668\u7684 throws \u5B50\u53E5\u4E2D\u5BF9\u5176\u8FDB\u884C\u58F0\u660E\u3002
+javac.err.def.constructor.exception=\u7531\u4E8E\u7C7B\u7684\u8D85\u7C7B\u7684\u6784\u9020\u5668\u629B\u51FA\u5F02\u5E38\u9519\u8BEF{0}, \u56E0\u6B64\u65E0\u6CD5\u4E3A\u6B64\u7C7B\u521B\u5EFA\u9ED8\u8BA4\u6784\u9020\u5668\u3002\u4E3A\u6B64\u7C7B\u663E\u5F0F\u5B9A\u4E49\u6784\u9020\u5668\u3002
+javac.err.catch.not.thrown=\u4ECE\u672A\u5728\u76F8\u5E94\u7684 try \u8BED\u53E5\u4E3B\u4F53\u4E2D\u629B\u51FA\u5F02\u5E38\u9519\u8BEF{0}\u3002
 #warning:
-javac.err.array.clone.supported=\
-	\u6ce8\u610f\uff1a\u6570\u7ec4\u7684\u514b\u9686\u4e0d\u4f1a\u629b\u51fa\u4efb\u4f55\u68c0\u67e5\u8fc7\u7684\u5f02\u5e38\uff0c\u56e0\u6b64\u4e0d\u9700\u8981\u4f7f\u7528\u4efb\u4f55 catch \u5b50\u53e5\u3002\u8bf7\u5220\u9664\u672a\u4f7f\u7528\u7684 catch \u5b50\u53e5\uff0c\u6216\u8005\u5982\u679c\u8981\u4fdd\u6301\u4e0e\u65e7\u7248\u7f16\u8bd1\u5668\u7684\u517c\u5bb9\u6027\uff0c\u53ef\u4ee5\u6309\u5982\u4e0b\u6240\u793a\u63d2\u5165\u4eba\u5de5\u629b\u51fa\uff1aif (false) throw new CloneNotSupportedException();
-javac.err.no.outer.arg=\
-	\u8303\u56f4\u5185\u6ca1\u6709 {0} \u7684\u5c01\u95ed\u5b9e\u4f8b\uff1b\
-	\u521b\u5efa {1} \u65f6\u5fc5\u987b\u63d0\u4f9b\u4e00\u4e2a\u663e\u5f0f\u5c01\u95ed\u5b9e\u4f8b\uff0c\
-	\u5982 "outer. new Inner()" \u6216 "outer. super()" \u4e2d\u6240\u793a\u3002
-javac.err.no.default.outer.arg=\
-	\u8303\u56f4\u5185\u6ca1\u6709 {0} \u7684\u5c01\u95ed\u5b9e\u4f8b\uff1b\
-	\u65e0\u6cd5\u4e3a {1} \u521b\u5efa\u9ed8\u8ba4\u6784\u9020\u51fd\u6570\u3002
-javac.err.no.outer.base=\
-	\u8303\u56f4\u5185\u6ca1\u6709 {0} \u7684\u5c01\u95ed\u5b9e\u4f8b\uff1b\
-	\u8bbf\u95ee {1} \u65f6\u5fc5\u987b\u63d0\u4f9b\u4e00\u4e2a\u663e\u5f0f\u5c01\u95ed\u5b9e\u4f8b\uff0c\
-	\u5982 "outer.member" \u4e2d\u6240\u793a\u3002
-javac.err.inner.interface=\
-	\u6210\u5458\u63a5\u53e3\u53ea\u80fd\u51fa\u73b0\u5728\u63a5\u53e3\u548c\u9876\u5c42\u7c7b\u4e2d\u3002
-javac.err.static.inner.class=\
-	\u7c7b\u578b {0} \u4e0d\u80fd\u4e3a\u9759\u6001\u7c7b\u578b\u3002\u9759\u6001\u6210\u5458\u53ea\u80fd\u51fa\u73b0\u5728\u63a5\u53e3\u548c\u9876\u5c42\u7c7b\u4e2d\u3002
-javac.err.static.inner.field=\
-	\u53d8\u91cf {0} \u5728 {1} \u4e2d\u4e0d\u80fd\u4e3a\u9759\u6001\u53d8\u91cf\u3002\u53ea\u6709\u63a5\u53e3\u548c\u9876\u5c42\u7c7b\u7684\u6210\u5458\u624d\u80fd\u4e3a\u9759\u6001\u53d8\u91cf\u3002
-javac.err.static.inner.method=\
-	\u65b9\u6cd5 {0} \u5728 {1} \u4e2d\u4e0d\u80fd\u4e3a\u9759\u6001\u65b9\u6cd5\u3002\u53ea\u6709\u63a5\u53e3\u548c\u9876\u5c42\u7c7b\u7684\u6210\u5458\u624d\u80fd\u4e3a\u9759\u6001\u65b9\u6cd5\u3002
-javac.err.too.many.errors=\
-	\u9519\u8bef\u592a\u591a\u3002\uff08\u5bf9\u62a5\u544a\u7684\u9519\u8bef\u7684\u9650\u5236\u503c\u4e3a {0}\u3002\uff09
-javac.err.override.static.with.instance=\
-	\u5728 {1} \u4e2d\u58f0\u660e\u7684\u5b9e\u4f8b\u65b9\u6cd5 {0} \u4e0d\u80fd\u8986\u76d6\
-	\u5728 {2} \u4e2d\u58f0\u660e\u7684\u5177\u6709\u76f8\u540c\u7b7e\u540d\u7684\u9759\u6001\u65b9\u6cd5\u3002\u8986\u76d6\u9759\u6001\u65b9\u6cd5\
-	\u662f\u975e\u6cd5\u7684\u3002
-javac.err.hide.instance.with.static=\
-	\u5728 {1} \u4e2d\u58f0\u660e\u7684\u9759\u6001\u65b9\u6cd5 {0} \u4e0d\u80fd\u9690\u85cf\
-	\u5728 {2} \u4e2d\u58f0\u660e\u7684\u5177\u6709\u76f8\u540c\u7b7e\u540d\u7684\u5b9e\u4f8b\u65b9\u6cd5\u3002\u9690\u85cf\u5b9e\u4f8b\u65b9\u6cd5\
-	\u662f\u975e\u6cd5\u7684\u3002
-javac.err.override.final.method=\
-	\u5728 {1} \u4e2d\u58f0\u660e\u7684\u65b9\u6cd5 {0} \u4e0d\u80fd\u8986\u76d6\
-	\u5728 {2} \u4e2d\u58f0\u660e\u7684\u5177\u6709\u76f8\u540c\u7b7e\u540d\u7684\u6700\u7ec8\u65b9\u6cd5\u3002\u4e0d\u80fd\u8986\u76d6\u6700\u7ec8\
-	\u65b9\u6cd5\u3002
-javac.err.override.is.deprecated=\
-	\u5728 {1} \u4e2d\u58f0\u660e\u7684\u65b9\u6cd5 {0} \u672a\u8fc7\u65f6\uff0c\u4f46\u662f\
-	\u5c06\u8986\u76d6\u5728 {2} \u4e2d\u58f0\u660e\u7684\u5177\u6709\u76f8\u540c\u7b7e\u540d\u7684\
-	\u5df2\u8fc7\u65f6\u65b9\u6cd5\u3002
-javac.err.override.more.restrictive=\
-	\u5728 {1} \u4e2d\u58f0\u660e\u7684\u65b9\u6cd5 {0} \u4e0d\u80fd\u8986\u76d6\
-	\u5728 {2} \u4e2d\u58f0\u660e\u7684\u5177\u6709\u76f8\u540c\u7b7e\u540d\u7684\u65b9\u6cd5\u3002\u5df2\u5bf9\u8bbf\u95ee\u4fee\u9970\u7b26\u8fdb\u884c\u4e86\u66f4\u591a\
-	\u9650\u5236\u3002
-javac.err.override.different.return=\
-	\u5728 {1} \u4e2d\u58f0\u660e\u7684\u65b9\u6cd5 {0} \u4e0d\u80fd\u8986\u76d6\
-	\u5728 {2} \u4e2d\u58f0\u660e\u7684\u5177\u6709\u76f8\u540c\u7b7e\u540d\u7684\u65b9\u6cd5\u3002\u5b83\u4eec\u7684\u8fd4\u56de\u7c7b\u578b\u5fc5\u987b\
-	\u76f8\u540c\u3002	
-javac.err.override.incompatible.exceptions=\
-	\u5728 {1} \u4e2d\u58f0\u660e\u7684\u65b9\u6cd5 {0} \u4e0d\u80fd\u8986\u76d6\
-	\u5728 {2} \u4e2d\u58f0\u660e\u7684\u5177\u6709\u76f8\u540c\u7b7e\u540d\u7684\u65b9\u6cd5\u3002\u5b83\u4eec\u7684 throws \u5b50\u53e5\
-	\u4e0d\u517c\u5bb9\u3002
-javac.err.meet.different.return=\
-	\u4ece {1} \u7ee7\u627f\u7684\u65b9\u6cd5 {0} \u4e0e\u4ece {2} \u7ee7\u627f\u7684\u5177\u6709\u76f8\u540c\u7b7e\u540d\
-	\u7684\u65b9\u6cd5\u4e0d\u517c\u5bb9\u3002\u5b83\u4eec\u7684\u8fd4\u56de\u7c7b\u578b\u5fc5\u987b\
-	\u76f8\u540c\u3002
-javac.err.nontrivial.meet=\
-	\u4ece {1} \u548c {2} \u7ee7\u627f\u7684\u65b9\u6cd5 {0} \u7684\u5b9a\u4e49\u662f\u517c\u5bb9\u7684\uff0c\
-	\u4f46\u4e24\u8005\u7684\u7ec4\u5408\u662f\u975e\u51e1\u7684\u5e76\u4e14\u5c1a\u672a\
-	\u5b9e\u73b0\u3002\u89e3\u51b3\u65b9\u6cd5\u662f\uff1a\u5728\u6b64\u7c7b\u4e2d\u663e\u5f0f\
-	\u58f0\u660e {0}\u3002
-javac.err.method.too.long=\
-	\u6b64\u4ee3\u7801\u8981\u6c42\u751f\u6210\u5927\u4e8e 64K \u5b57\u8282\u7684\
-	\u65b9\u6cd5\u3002\u865a\u62df\u673a\u53ef\u80fd\u4f1a\u62d2\u7edd\u7ed3\u679c\u7c7b\u6587\u4ef6\u3002
+javac.err.array.clone.supported=\u6CE8: \u6570\u7EC4\u7684\u514B\u9686\u4E0D\u4F1A\u629B\u51FA\u4EFB\u4F55\u53D7\u63A7\u5F02\u5E38\u9519\u8BEF, \u56E0\u6B64\u4E0D\u9700\u8981\u4F7F\u7528\u4EFB\u4F55 catch \u5B50\u53E5\u3002\u8BF7\u5220\u9664\u672A\u4F7F\u7528\u7684 catch \u5B50\u53E5, \u6216\u8005\u5982\u679C\u8981\u4FDD\u6301\u4E0E\u65E7\u7248\u7F16\u8BD1\u5668\u7684\u517C\u5BB9\u6027, \u53EF\u4EE5\u6309\u5982\u4E0B\u6240\u793A\u63D2\u5165\u4EBA\u5DE5\u629B\u51FA: if (false) throw new CloneNotSupportedException();
+javac.err.no.outer.arg=\u8303\u56F4\u5185\u6CA1\u6709{0}\u7684\u5C01\u95ED\u5B9E\u4F8B; \u521B\u5EFA{1}\u65F6\u5FC5\u987B\u63D0\u4F9B\u4E00\u4E2A\u663E\u5F0F\u5C01\u95ED\u5B9E\u4F8B, \u4F8B\u5982 "outer. new Inner()" \u6216 "outer. super()" \u4E2D\u6240\u793A\u3002
+javac.err.no.default.outer.arg=\u8303\u56F4\u5185\u6CA1\u6709{0}\u7684\u5C01\u95ED\u5B9E\u4F8B; \u65E0\u6CD5\u4E3A{1}\u521B\u5EFA\u9ED8\u8BA4\u6784\u9020\u5668\u3002
+javac.err.no.outer.base=\u8303\u56F4\u5185\u6CA1\u6709{0}\u7684\u5C01\u95ED\u5B9E\u4F8B; \u8BBF\u95EE{1}\u65F6\u5FC5\u987B\u63D0\u4F9B\u4E00\u4E2A\u663E\u5F0F\u5C01\u95ED\u5B9E\u4F8B, \u5982 "outer.member" \u4E2D\u6240\u793A\u3002
+javac.err.inner.interface=\u6210\u5458\u63A5\u53E3\u53EA\u80FD\u51FA\u73B0\u5728\u63A5\u53E3\u548C\u9876\u5C42\u7C7B\u4E2D\u3002
+javac.err.static.inner.class=\u7C7B\u578B{0}\u4E0D\u80FD\u4E3A\u9759\u6001\u7C7B\u578B\u3002\u9759\u6001\u6210\u5458\u53EA\u80FD\u51FA\u73B0\u5728\u63A5\u53E3\u548C\u9876\u5C42\u7C7B\u4E2D\u3002
+javac.err.static.inner.field=\u53D8\u91CF{0}\u5728{1}\u4E2D\u4E0D\u80FD\u4E3A\u9759\u6001\u53D8\u91CF\u3002\u53EA\u6709\u63A5\u53E3\u548C\u9876\u5C42\u7C7B\u7684\u6210\u5458\u624D\u80FD\u4E3A\u9759\u6001\u53D8\u91CF\u3002
+javac.err.static.inner.method=\u65B9\u6CD5{0}\u5728{1}\u4E2D\u4E0D\u80FD\u4E3A\u9759\u6001\u65B9\u6CD5\u3002\u53EA\u6709\u63A5\u53E3\u548C\u9876\u5C42\u7C7B\u7684\u6210\u5458\u624D\u80FD\u4E3A\u9759\u6001\u65B9\u6CD5\u3002
+javac.err.too.many.errors=\u9519\u8BEF\u592A\u591A\u3002(\u5BF9\u62A5\u544A\u7684\u9519\u8BEF\u7684\u9650\u5236\u503C\u4E3A {0}\u3002)
+javac.err.override.static.with.instance=\u5728{1}\u4E2D\u58F0\u660E\u7684\u5B9E\u4F8B\u65B9\u6CD5{0}\u4E0D\u80FD\u8986\u76D6\u5728{2}\u4E2D\u58F0\u660E\u7684\u5177\u6709\u76F8\u540C\u7B7E\u540D\u7684\u9759\u6001\u65B9\u6CD5\u3002\u8986\u76D6\u9759\u6001\u65B9\u6CD5\u662F\u975E\u6CD5\u7684\u3002
+javac.err.hide.instance.with.static=\u5728{1}\u4E2D\u58F0\u660E\u7684\u9759\u6001\u65B9\u6CD5{0}\u4E0D\u80FD\u9690\u85CF\u5728{2}\u4E2D\u58F0\u660E\u7684\u5177\u6709\u76F8\u540C\u7B7E\u540D\u7684\u5B9E\u4F8B\u65B9\u6CD5\u3002\u9690\u85CF\u5B9E\u4F8B\u65B9\u6CD5\u662F\u975E\u6CD5\u7684\u3002
+javac.err.override.final.method=\u5728{1}\u4E2D\u58F0\u660E\u7684\u65B9\u6CD5{0}\u4E0D\u80FD\u8986\u76D6\u5728{2}\u4E2D\u58F0\u660E\u7684\u5177\u6709\u76F8\u540C\u7B7E\u540D\u7684\u6700\u7EC8\u65B9\u6CD5\u3002\u4E0D\u80FD\u8986\u76D6\u6700\u7EC8\u65B9\u6CD5\u3002
+javac.err.override.is.deprecated=\u5728{1}\u4E2D\u58F0\u660E\u7684\u65B9\u6CD5{0}\u672A\u8FC7\u65F6, \u4F46\u662F\u5C06\u8986\u76D6\u5728{2}\u4E2D\u58F0\u660E\u7684\u5177\u6709\u76F8\u540C\u7B7E\u540D\u7684\u5DF2\u8FC7\u65F6\u65B9\u6CD5\u3002
+javac.err.override.more.restrictive=\u5728{1}\u4E2D\u58F0\u660E\u7684\u65B9\u6CD5{0}\u4E0D\u80FD\u8986\u76D6\u5728{2}\u4E2D\u58F0\u660E\u7684\u5177\u6709\u76F8\u540C\u7B7E\u540D\u7684\u65B9\u6CD5\u3002\u5DF2\u5BF9\u8BBF\u95EE\u4FEE\u9970\u7B26\u8FDB\u884C\u4E86\u66F4\u591A\u9650\u5236\u3002
+javac.err.override.different.return=\u5728{1}\u4E2D\u58F0\u660E\u7684\u65B9\u6CD5{0}\u4E0D\u80FD\u8986\u76D6\u5728{2}\u4E2D\u58F0\u660E\u7684\u5177\u6709\u76F8\u540C\u7B7E\u540D\u7684\u65B9\u6CD5\u3002\u5B83\u4EEC\u7684\u8FD4\u56DE\u7C7B\u578B\u5FC5\u987B\u76F8\u540C\u3002\t
+javac.err.override.incompatible.exceptions=\u5728{1}\u4E2D\u58F0\u660E\u7684\u65B9\u6CD5{0}\u4E0D\u80FD\u8986\u76D6\u5728{2}\u4E2D\u58F0\u660E\u7684\u5177\u6709\u76F8\u540C\u7B7E\u540D\u7684\u65B9\u6CD5\u3002\u5B83\u4EEC\u7684 throws \u5B50\u53E5\u4E0D\u517C\u5BB9\u3002
+javac.err.meet.different.return=\u4ECE{1}\u7EE7\u627F\u7684\u65B9\u6CD5{0}\u4E0E\u4ECE{2}\u7EE7\u627F\u7684\u5177\u6709\u76F8\u540C\u7B7E\u540D\u7684\u65B9\u6CD5\u4E0D\u517C\u5BB9\u3002\u5B83\u4EEC\u7684\u8FD4\u56DE\u7C7B\u578B\u5FC5\u987B\u76F8\u540C\u3002
+javac.err.nontrivial.meet=\u4ECE{1}\u548C{2}\u7EE7\u627F\u7684\u65B9\u6CD5{0}\u7684\u5B9A\u4E49\u662F\u517C\u5BB9\u7684, \u4F46\u4E24\u8005\u7684\u7EC4\u5408\u662F\u975E\u51E1\u7684\u5E76\u4E14\u5C1A\u672A\u5B9E\u73B0\u3002\u89E3\u51B3\u65B9\u6CD5\u662F: \u5728\u6B64\u7C7B\u4E2D\u663E\u5F0F\u58F0\u660E{0}\u3002
+javac.err.method.too.long=\u6B64\u4EE3\u7801\u8981\u6C42\u751F\u6210\u5927\u4E8E 64K \u5B57\u8282\u7684\u65B9\u6CD5\u3002\u865A\u62DF\u673A\u53EF\u80FD\u4F1A\u62D2\u7EDD\u7ED3\u679C\u7C7B\u6587\u4EF6\u3002
+#
+javac.err.version.too.old=\u4E3B\u7248\u672C ''{0}'' \u592A\u65E7, \u6B64\u5DE5\u5177\u65E0\u6CD5\u8BC6\u522B\u3002
+javac.err.version.too.recent=major.minor \u7248\u672C ''{0}'' \u592A\u65B0, \u6B64\u5DE5\u5177\u65E0\u6CD5\u8BC6\u522B\u3002
 #
-javac.err.version.too.old=\
-	major \u7248\u672c "{0}" \u592a\u65e7\uff0c\u6b64\u5de5\u5177\u65e0\u6cd5\u8bc6\u522b\u3002
-javac.err.version.too.recent=\
-	major.minor \u7248\u672c "{0}" \u592a\u65b0\uff0c\u6b64\u5de5\u5177\u65e0\u6cd5\
-	\u8bc6\u522b\u3002
-#
-benv.parsed_in=[\u5728 {1} \u6beb\u79d2\u5185\u89e3\u6790 {0}]
-benv.loaded_in=[\u5728 {1} \u6beb\u79d2\u5185\u88c5\u5165 {0}]
-benv.failed_to_close_class_path=\u65e0\u6cd5\u5173\u95ed\u7c7b\u8def\u5f84\uff1a{0}
+benv.parsed_in=[\u5DF2\u5728 {1} \u6BEB\u79D2\u5185\u5BF9{0}\u8FDB\u884C\u8BED\u6CD5\u5206\u6790]
+benv.loaded_in=[\u5DF2\u5728 {1} \u6BEB\u79D2\u5185\u52A0\u8F7D{0}]
+benv.failed_to_close_class_path=\u65E0\u6CD5\u5173\u95ED\u7C7B\u8DEF\u5F84: {0}
 #
-main.usage=\
-\u7528\u6cd5\uff1a{0} <\u9009\u9879> <\u6e90\u6587\u4ef6>\n\
-\n\
-\u5176\u4e2d <\u9009\u9879> \u5305\u62ec\uff1a\n\
-\ \ -g                     \u751f\u6210\u6240\u6709\u8c03\u8bd5\u4fe1\u606f\n\
-\ \ -g:none                \u4e0d\u751f\u6210\u4efb\u4f55\u8c03\u8bd5\u4fe1\u606f\n\
-\ \ -g:'{'lines,vars,source'}' \u53ea\u751f\u6210\u67d0\u4e9b\u8c03\u8bd5\u4fe1\u606f\n\
-\ \ -O                     \u4f18\u5316\uff1b\u53ef\u4ee5\u963b\u788d\u8c03\u8bd5\u6216\u6269\u5927\u7c7b\u6587\u4ef6\n\
-\ \ -nowarn                \u4e0d\u751f\u6210\u4efb\u4f55\u8b66\u544a\n\
-\ \ -verbose               \u8f93\u51fa\u6709\u5173\u7f16\u8bd1\u5668\u6b63\u5728\u6267\u884c\u7684\u64cd\u4f5c\u7684\u6d88\u606f\n\
-\ \ -deprecation           \u8f93\u51fa\u4f7f\u7528\u5df2\u8fc7\u65f6\u7684 API \u7684\u6e90\u4f4d\u7f6e\n\
-\ \ -classpath <\u8def\u5f84>     \u6307\u5b9a\u67e5\u627e\u7528\u6237\u7c7b\u6587\u4ef6\u7684\u4f4d\u7f6e\n\
-\ \ -sourcepath <\u8def\u5f84>    \u6307\u5b9a\u67e5\u627e\u8f93\u5165\u6e90\u6587\u4ef6\u7684\u4f4d\u7f6e\n\
-\ \ -bootclasspath <\u8def\u5f84>  \u8986\u76d6\u5f15\u5bfc\u7c7b\u6587\u4ef6\u7684\u4f4d\u7f6e\n\
-\ \ -extdirs <\u76ee\u5f55>        \u8986\u76d6\u5b89\u88c5\u7684\u6269\u5c55\u76ee\u5f55\u7684\u4f4d\u7f6e\n\
-\ \ -d <\u76ee\u5f55>         \u6307\u5b9a\u5b58\u653e\u751f\u6210\u7684\u7c7b\u6587\u4ef6\u7684\u4f4d\u7f6e\n\
-\ \ -encoding <\u7f16\u7801>   \u6307\u5b9a\u6e90\u6587\u4ef6\u6240\u4f7f\u7528\u7684\u5b57\u7b26\u7f16\u7801\n\
-\ \ -target <\u7248\u672c>      \u751f\u6210\u7279\u5b9a VM \u7248\u672c\u7684\u7c7b\u6587\u4ef6
+main.usage=\u7528\u6CD5: {0} <options> <source files>\n\n\u5176\u4E2D <options> \u5305\u62EC:\n\ \ -g                     \u751F\u6210\u6240\u6709\u8C03\u8BD5\u4FE1\u606F\n\ \ -g:none                \u4E0D\u751F\u6210\u4EFB\u4F55\u8C03\u8BD5\u4FE1\u606F\n\ \ -g:''{''lines,vars,source''}'' \u53EA\u751F\u6210\u67D0\u4E9B\u8C03\u8BD5\u4FE1\u606F\n\ \ -O                     \u4F18\u5316; \u53EF\u4EE5\u963B\u788D\u8C03\u8BD5\u6216\u6269\u5927\u7C7B\u6587\u4EF6\n\ \ -nowarn                \u4E0D\u751F\u6210\u4EFB\u4F55\u8B66\u544A\n\ \ -verbose               \u8F93\u51FA\u6709\u5173\u7F16\u8BD1\u5668\u6B63\u5728\u6267\u884C\u7684\u64CD\u4F5C\u7684\u6D88\u606F\n\ \ -deprecation           \u8F93\u51FA\u4F7F\u7528\u5DF2\u8FC7\u65F6\u7684 API \u7684\u6E90\u4F4D\u7F6E\n\ \ -classpath <path>     \u6307\u5B9A\u67E5\u627E\u7528\u6237\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n\ \ -sourcepath <path>    \u6307\u5B9A\u67E5\u627E\u8F93\u5165\u6E90\u6587\u4EF6\u7684\u4F4D\u7F6E\n\ \ -bootclasspath <path>  \u8986\u76D6\u5F15\u5BFC\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n\ \ -extdirs <dirs>        \u8986\u76D6\u6240\u5B89\u88C5\u6269\u5C55\u7684\u4F4D\u7F6E\n\ \ -d <directory>         \u6307\u5B9A\u653E\u7F6E\u751F\u6210\u7684\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n\ \ -encoding <encoding>   \u6307\u5B9A\u6E90\u6587\u4EF6\u4F7F\u7528\u7684\u5B57\u7B26\u7F16\u7801\n\ \ -target <release>      \u751F\u6210\u7279\u5B9A VM \u7248\u672C\u7684\u7C7B\u6587\u4EF6
+#
+main.unsupported.usage=\ \ -Xdepend         \u9012\u5F52\u641C\u7D22\u6700\u65B0\u6E90\u6587\u4EF6\u4EE5\u8FDB\u884C\u91CD\u65B0\u7F16\u8BD1\n\ \ -Xstdout         \u5C06\u6D88\u606F\u53D1\u9001\u5230 System.out\n\ \ -Xverbosepath    \u8BF4\u660E\u641C\u7D22\u8DEF\u5F84\u548C\u6807\u51C6\u6269\u5C55\u7684\u65B9\u6CD5\n\ \ -J<\u8FD0\u884C\u65F6\u6807\u8BB0> \u5411 java \u89E3\u91CA\u5668\u4F20\u9012\u53C2\u6570\n\n-X \u548C -J \u9009\u9879\u90FD\u662F\u975E\u6807\u51C6\u9009\u9879, \u5982\u6709\u66F4\u6539, \u6055\u4E0D\u53E6\u884C\u901A\u77E5\u3002
 #
-main.unsupported.usage=\
-\ \ -Xdepend         \u9012\u5f52\u641c\u7d22\u6700\u65b0\u6e90\u6587\u4ef6\u4ee5\u8fdb\u884c\u91cd\u65b0\u7f16\u8bd1\n\
-\ \ -Xstdout         \u5c06\u6d88\u606f\u53d1\u9001\u5230 System.out\n\
-\ \ -Xverbosepath    \u8bf4\u660e\u641c\u7d22\u8def\u7ecf\u548c\u6807\u51c6\u6269\u5c55\u76ee\u5f55\u7684\u65b9\u6cd5\n\
-\ \ -J<\u8fd0\u884c\u65f6\u6807\u5fd7> \u5411 java \u89e3\u91ca\u7a0b\u5e8f\u4f20\u9012\u53c2\u6570\n\
-\n\
--X \u548c -J \u9009\u9879\u90fd\u662f\u975e\u6807\u51c6\u9009\u9879\uff0c\u5982\u6709\u66f4\u6539\uff0c\u6055\u4e0d\u53e6\u884c\u901a\u77e5\u3002
-#
-main.conflicting.options=\u4e0d\u80fd\u540c\u65f6\u4f7f\u7528\u9009\u9879 {0} \u548c {1}\u3002
-main.option.already.seen={0} \u9009\u9879\u53ea\u80fd\u88ab\u6307\u5b9a\u4e00\u6b21\u3002
-main.option.requires.argument={0} \u9009\u9879\u9700\u8981\u53c2\u6570\u3002
-main.bad.debug.option={0} \u9009\u9879\u7684\u683c\u5f0f\u4e0d\u5bf9\u3002\u53ea\u80fd\u4ee5\u9017\u53f7\u5206\u9694\u7684\u5f62\u5f0f\u6307\u5b9a "lines"\u3001"vars" \u548c "source"\u3002
-main.no.such.directory={0} \u76ee\u5f55\u4e0d\u5b58\u5728\u3002
-main.no.such.option={0} \u4e3a\u65e0\u6548\u9009\u9879\u6216\u53c2\u6570\u3002
-main.unknown.release=\u6b64\u7f16\u8bd1\u5668\u4e0d\u8bc6\u522b\u7248\u672c "{0}"\u3002
-main.wrote=[\u5199\u5165 {0}]
-main.errors={0} \u4e2a\u9519\u8bef
-main.1error=1 \u4e2a\u9519\u8bef
-main.warnings={0} \u4e2a\u8b66\u544a
-main.1warning=1 \u4e2a\u8b66\u544a
-main.done_in=[\u5728 {0} \u6beb\u79d2\u5185\u5b8c\u6210]
-main.no.memory=\
-	\u7f16\u8bd1\u5668\u6240\u7528\u5185\u5b58\u4e0d\u8db3\u3002\u8bf7\u8003\u8651\u4f7f\u7528 "-J-mx<\u6570\u5b57>" \u547d\u4ee4\u884c\u9009\u9879\u6765\u63d0\u9ad8\u5806\u5927\u5c0f\u7684\u6700\u5927\u503c\u3002
-main.stack.overflow=\
-	\u7f16\u8bd1\u5668\u6240\u7528\u5806\u6808\u7a7a\u95f4\u4e0d\u8db3\u3002\u8bf7\u8003\u8651\u4f7f\u7528 "-J-oss<\u6570\u5b57>" \u547d\u4ee4\u884c\u9009\u9879\u6765\u63d0\u9ad8\u5206\u914d\u7ed9 Java \u5806\u6808\u7684\u5185\u5b58\u5927\u5c0f\u3002
-main.path.msg=\
-	[\u6e90\u7c7b\u8def\u5f84\u4e3a "{0}"]\n\
-	[\u5e93\u7c7b\u8def\u5f84\u4e3a "{1}"]
-javac.err.invalid.encoding.char=\
-	\u6e90\u6587\u4ef6\u7f16\u7801\u4e0e\u6b64\u5e73\u53f0\u7f16\u7801\u4e0d\u540c\u3002\u8bf7\u4f7f\u7528 -encoding \u9009\u9879\u6765\u8c03\u6574\u6587\u4ef6\u7f16\u7801\uff0c\u6216\u5e94\u7528 native2ascii \u5b9e\u7528\u7a0b\u5e8f\u6765\u5c06\u6e90\u6587\u4ef6\u8f6c\u6362\u4e3a ASCII \u7f16\u7801\u3002
+main.conflicting.options=\u4E0D\u80FD\u540C\u65F6\u4F7F\u7528\u9009\u9879{0}\u548C{1}\u3002
+main.option.already.seen={0}\u9009\u9879\u53EA\u80FD\u6307\u5B9A\u4E00\u6B21\u3002
+main.option.requires.argument=\u9009\u9879{0}\u9700\u8981\u53C2\u6570\u3002
+main.bad.debug.option={0}\u9009\u9879\u7684\u683C\u5F0F\u4E0D\u5BF9\u3002\u53EA\u80FD\u4EE5\u9017\u53F7\u5206\u9694\u7684\u5F62\u5F0F\u6307\u5B9A "lines", "vars" \u548C "source"\u3002
+main.no.such.directory={0} \u76EE\u5F55\u4E0D\u5B58\u5728\u3002
+main.no.such.option={0}\u662F\u65E0\u6548\u9009\u9879\u6216\u53C2\u6570\u3002
+main.unknown.release=\u6B64\u7F16\u8BD1\u5668\u4E0D\u8BC6\u522B\u53D1\u884C\u7248 ''{0}''\u3002
+main.wrote=[\u5DF2\u5199\u5165{0}]
+main.errors={0} \u4E2A\u9519\u8BEF
+main.1error=1 \u4E2A\u9519\u8BEF
+main.warnings={0} \u4E2A\u8B66\u544A
+main.1warning=1 \u4E2A\u8B66\u544A
+main.done_in=[\u5728 {0} \u6BEB\u79D2\u5185\u5B8C\u6210]
+main.no.memory=\u7F16\u8BD1\u5668\u6240\u7528\u5185\u5B58\u4E0D\u8DB3\u3002\u8BF7\u8003\u8651\u4F7F\u7528 "-J-mx<\u6570\u5B57>" \u547D\u4EE4\u884C\u9009\u9879\u6765\u63D0\u9AD8\u5806\u5927\u5C0F\u7684\u6700\u5927\u503C\u3002
+main.stack.overflow=\u7F16\u8BD1\u5668\u6240\u7528\u5806\u6808\u7A7A\u95F4\u4E0D\u8DB3\u3002\u8BF7\u8003\u8651\u4F7F\u7528 "-J-oss<\u6570\u5B57>" \u547D\u4EE4\u884C\u9009\u9879\u6765\u63D0\u9AD8\u5206\u914D\u7ED9 Java \u5806\u6808\u7684\u5185\u5B58\u5927\u5C0F\u3002
+main.path.msg=[\u6E90\u7C7B\u8DEF\u5F84\u4E3A "{0}"]\n[\u5E93\u7C7B\u8DEF\u5F84\u4E3A "{1}"]
+javac.err.invalid.encoding.char=\u6E90\u6587\u4EF6\u7F16\u7801\u4E0E\u6B64\u5E73\u53F0\u7F16\u7801\u4E0D\u540C\u3002\u8BF7\u4F7F\u7528 -encoding \u9009\u9879\u6765\u8C03\u6574\u6587\u4EF6\u7F16\u7801, \u6216\u5E94\u7528 native2ascii \u5B9E\u7528\u7A0B\u5E8F\u6765\u5C06\u6E90\u6587\u4EF6\u8F6C\u6362\u4E3A ASCII \u7F16\u7801\u3002
--- a/jdk/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_ja.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_ja.java	Wed Jul 05 17:35:13 2017 +0200
@@ -44,7 +44,7 @@
  * or if the keys ends with ".mnemonic", an element
  * representing a mnemomic keycode <code>int</code> or <code>char</code>.
  */
-public class JConsoleResources_ja extends JConsoleResources {
+public class JConsoleResources_ja extends ListResourceBundle {
 
     /**
      * Returns the contents of this <code>ResourceBundle</code>.
@@ -55,7 +55,7 @@
      */
     protected Object[][] getContents0() {
         Object[][] temp = new Object[][] {
-        // NOTE 1: The value strings in this file containing "{0}" are
+                // NOTE 1: The value strings in this file containing "{0}" are
         //         processed by the java.text.MessageFormat class.  Any
         //         single quotes appearing in these strings need to be
         //         doubled up.
@@ -65,21 +65,21 @@
         //         message key.
         //
         // LOCALIZE THIS
-        {" 1 day"," 1 \u65e5"},
-        {" 1 hour"," 1 \u6642\u9593"},
-        {" 1 min"," 1 \u5206"},
-        {" 1 month"," 1 \u304b\u6708"},
-        {" 1 year"," 1 \u5e74"},
-        {" 2 hours"," 2 \u6642\u9593"},
-        {" 3 hours"," 3 \u6642\u9593"},
-        {" 3 months"," 3 \u304b\u6708"},
-        {" 5 min"," 5 \u5206"},
-        {" 6 hours"," 6 \u6642\u9593"},
-        {" 6 months"," 6 \u304b\u6708"},
-        {" 7 days"," 7 \u65e5"},
-        {"10 min","10 \u5206"},
-        {"12 hours","12 \u6642\u9593"},
-        {"30 min","30 \u5206"},
+        {" 1 day"," 1\u65E5"},
+        {" 1 hour"," 1\u6642\u9593"},
+        {" 1 min"," 1\u5206"},
+        {" 1 month"," 1\u304B\u6708"},
+        {" 1 year"," 1\u5E74"},
+        {" 2 hours"," 2\u6642\u9593"},
+        {" 3 hours"," 3\u6642\u9593"},
+        {" 3 months"," 3\u304B\u6708"},
+        {" 5 min"," 5\u5206"},
+        {" 6 hours"," 6\u6642\u9593"},
+        {" 6 months"," 6\u304B\u6708"},
+        {" 7 days"," 7\u65E5"},
+        {"10 min","10\u5206"},
+        {"12 hours","12\u6642\u9593"},
+        {"30 min","30\u5206"},
         {"<","<"},
         {"<<","<<"},
         {">",">"},
@@ -87,267 +87,264 @@
         {"ACTION_INFO","ACTION_INFO"},
         {"All","\u3059\u3079\u3066"},
         {"Apply","\u9069\u7528"},
-        {"Architecture","\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3"},
-        {"Array, OpenType", "\u914d\u5217\u3001OpenType"},
-        {"Array, OpenType, Numeric value viewer","\u914d\u5217\u3001OpenType\u3001\u6570\u5024\u306e\u30d3\u30e5\u30fc\u30a2"},
-        {"Attribute","\u5c5e\u6027"},
-        {"Attribute value","\u5c5e\u6027\u5024"},
-        {"Attribute values","\u5c5e\u6027\u5024"},
-        {"Attributes","\u5c5e\u6027"},
-        {"Blank", "\u30d6\u30e9\u30f3\u30af"},
+        {"Architecture","\u30A2\u30FC\u30AD\u30C6\u30AF\u30C1\u30E3"},
+        {"Array, OpenType", "\u914D\u5217\u3001OpenType"},
+        {"Array, OpenType, Numeric value viewer","\u914D\u5217\u3001OpenType\u3001\u6570\u5024\u30D3\u30E5\u30FC\u30A2"},
+        {"Attribute","\u5C5E\u6027"},
+        {"Attribute value","\u5C5E\u6027\u5024"},
+        {"Attribute values","\u5C5E\u6027\u5024"},
+        {"Attributes","\u5C5E\u6027"},
+        {"Blank", "\u30D6\u30E9\u30F3\u30AF"},
         {"BlockedCount WaitedCount",
-             "\u7dcf\u30d6\u30ed\u30c3\u30af\u6570 : {0}  \u7dcf\u5f85\u6a5f\u6570 : {1}\n"},
-        {"Boot class path","\u30d6\u30fc\u30c8\u30af\u30e9\u30b9\u30d1\u30b9"},
-        {"BorderedComponent.moreOrLessButton.toolTip", "\u8a73\u7d30\u60c5\u5831\u3092\u8868\u793a\u3059\u308b\u304b\u3069\u3046\u304b\u5207\u308a\u66ff\u3048\u308b"},
-        {"CPU Usage","CPU \u4f7f\u7528\u72b6\u6cc1"},
-        {"CPUUsageFormat","CPU \u4f7f\u7528\u72b6\u6cc1: {0}%"},
-        {"Cancel","\u53d6\u6d88\u3057"},
-        {"Cascade", "\u91cd\u306d\u3066\u8868\u793a(C)"},
-        {"Cascade.mnemonic", 'C'},
-        {"Chart:", "\u56f3(C):"},
-        {"Chart:.mnemonic", 'C'},
-        {"Class path","\u30af\u30e9\u30b9\u30d1\u30b9"},
-        {"Class","\u30af\u30e9\u30b9"},
+             "\u30D6\u30ED\u30C3\u30AF\u6E08\u5408\u8A08: {0}  \u5F85\u6A5F\u6E08\u5408\u8A08: {1}\n"},
+        {"Boot class path","\u30D6\u30FC\u30C8\u30FB\u30AF\u30E9\u30B9\u30D1\u30B9"},
+        {"BorderedComponent.moreOrLessButton.toolTip", "\u8868\u793A\u3059\u308B\u60C5\u5831\u91CF\u3092\u5897\u6E1B\u3059\u308B\u30C8\u30B0\u30EB"},
+        {"CPU Usage","CPU\u4F7F\u7528\u7387"},
+        {"CPUUsageFormat","CPU\u4F7F\u7528\u7387: {0}%"},
+        {"Cancel","\u53D6\u6D88"},
+        {"Cascade", "\u91CD\u306D\u3066\u8868\u793A"},
+        {"Cascade.mnemonic", "C"},
+        {"Chart:", "\u30C1\u30E3\u30FC\u30C8:"},
+        {"Chart:.mnemonic", "C"},
+        {"Class path","\u30AF\u30E9\u30B9\u30D1\u30B9"},
+        {"Class","\u30AF\u30E9\u30B9"},
         {"ClassName","ClassName"},
-        {"ClassTab.infoLabelFormat", "<html>\u30ed\u30fc\u30c9: {0}    \u30a2\u30f3\u30ed\u30fc\u30c9: {1}    \u7dcf\u6570: {2}</html>"},
-        {"ClassTab.loadedClassesPlotter.accessibleName", "\u30ed\u30fc\u30c9\u3055\u308c\u305f\u30af\u30e9\u30b9\u306e\u56f3\u3002"},
-        {"Classes","\u30af\u30e9\u30b9"},
-        {"Close","\u9589\u3058\u308b"},
-        {"Column.Name", "\u540d\u524d"},
+        {"ClassTab.infoLabelFormat", "<html>\u30ED\u30FC\u30C9\u6E08: {0}    \u672A\u30ED\u30FC\u30C9: {1}    \u5408\u8A08: {2}</html>"},
+        {"ClassTab.loadedClassesPlotter.accessibleName", "\u30ED\u30FC\u30C9\u6E08\u30AF\u30E9\u30B9\u306E\u30C1\u30E3\u30FC\u30C8\u3002"},
+        {"Classes","\u30AF\u30E9\u30B9"},
+        {"Close","\u9589\u3058\u308B"},
+        {"Column.Name", "\u540D\u524D"},
         {"Column.PID", "PID"},
-        {"Committed memory","\u78ba\u5b9a\u30e1\u30e2\u30ea"},
-        {"Committed virtual memory","\u78ba\u5b9a\u4eee\u60f3\u30e1\u30e2\u30ea"},
-        {"Committed", "\u78ba\u5b9a"},
-        {"Compiler","\u30b3\u30f3\u30d1\u30a4\u30e9"},
+        {"Committed memory","\u30B3\u30DF\u30C3\u30C8\u6E08\u30E1\u30E2\u30EA\u30FC"},
+        {"Committed virtual memory","\u30B3\u30DF\u30C3\u30C8\u6E08\u4EEE\u60F3\u30E1\u30E2\u30EA\u30FC"},
+        {"Committed", "\u30B3\u30DF\u30C3\u30C8\u6E08"},
+        {"Compiler","\u30B3\u30F3\u30D1\u30A4\u30E9"},
         {"CompositeData","CompositeData"},
-        {"Config","\u69cb\u6210"},
-        {"Connect", "\u63a5\u7d9a(C)"},
-        {"Connect.mnemonic", 'C'},
-        {"Connect...","\u63a5\u7d9a..."},
-        {"ConnectDialog.connectButton.toolTip", "Java \u4eee\u60f3\u30de\u30b7\u30f3\u306b\u63a5\u7d9a\u3059\u308b"},
-        {"ConnectDialog.accessibleDescription", "\u30ed\u30fc\u30ab\u30eb\u307e\u305f\u306f\u30ea\u30e2\u30fc\u30c8\u306e Java \u4eee\u60f3\u30de\u30b7\u30f3\u306b\u65b0\u898f\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306e\u30c0\u30a4\u30a2\u30ed\u30b0"},
-        {"ConnectDialog.masthead.accessibleName", "\u30de\u30b9\u30c8\u30d8\u30c3\u30c9\u306e\u30b0\u30e9\u30d5\u30a3\u30c3\u30af"},
-        {"ConnectDialog.masthead.title", "\u65b0\u898f\u63a5\u7d9a"},
-        {"ConnectDialog.statusBar.accessibleName", "\u30b9\u30c6\u30fc\u30bf\u30b9\u30d0\u30fc"},
-        {"ConnectDialog.title", "JConsole: \u65b0\u898f\u63a5\u7d9a"},
-        {"Connected. Click to disconnect.","\u63a5\u7d9a\u3055\u308c\u307e\u3057\u305f\u3002\u5207\u65ad\u3059\u308b\u306b\u306f\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"Connection failed","\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f"},
-        {"Connection", "\u63a5\u7d9a(C)"},
-        {"Connection.mnemonic", 'C'},
-        {"Connection name", "\u63a5\u7d9a\u540d"},
-        {"ConnectionName (disconnected)","{0} (\u63a5\u7d9a\u89e3\u9664)"},
-        {"Constructor","\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf"},
-        {"Current classes loaded", "\u73fe\u5728\u30ed\u30fc\u30c9\u3055\u308c\u3066\u3044\u308b\u30af\u30e9\u30b9"},
-        {"Current heap size","\u73fe\u5728\u306e\u30d2\u30fc\u30d7\u30b5\u30a4\u30ba"},
-        {"Current value","\u73fe\u5728\u306e\u5024: {0}"},
-        {"Create", "\u4f5c\u6210"},
-        {"Daemon threads","\u30c7\u30fc\u30e2\u30f3\u30b9\u30ec\u30c3\u30c9"},
-        {"Disconnected. Click to connect.","\u5207\u65ad\u3055\u308c\u307e\u3057\u305f\u3002\u63a5\u7d9a\u3059\u308b\u306b\u306f\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
-        {"Double click to expand/collapse","\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u3057\u3066\u5c55\u958b/\u6298\u308a\u305f\u305f\u307f"},
-        {"Double click to visualize", "\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u3057\u3066\u8868\u793a"},
-        {"Description", "\u8aac\u660e"},
-        {"Description: ", "\u8aac\u660e: "},
-        {"Descriptor", "\u8a18\u8ff0\u5b50"},
-        {"Details", "\u8a73\u7d30"},
-        {"Detect Deadlock", "\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u3092\u691c\u51fa\u3059\u308b(D)"},
-        {"Detect Deadlock.mnemonic", 'D'},
-        {"Detect Deadlock.toolTip", "\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u3057\u305f\u30b9\u30ec\u30c3\u30c9\u3092\u691c\u51fa\u3059\u308b"},
-        {"Dimension is not supported:","\u5927\u304d\u3055\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093:"},
-        {"Discard chart", "\u56f3\u3092\u7834\u68c4\u3059\u308b"},
-        {"DurationDaysHoursMinutes","{0,choice,1#{0,number,integer} \u65e5 |1.0<{0,number,integer} \u65e5 }{1,choice,0<{1,number,integer} \u6642\u9593 |1#{1,number,integer} \u6642\u9593 |1<{1,number,integer} \u6642\u9593 }{2,choice,0<{2,number,integer} \u5206 |1#{2,number,integer} \u5206 |1.0<{2,number,integer} \u5206}"},
+        {"Config","\u69CB\u6210"},
+        {"Connect", "\u63A5\u7D9A"},
+        {"Connect.mnemonic", "C"},
+        {"Connect...","\u63A5\u7D9A..."},
+        {"ConnectDialog.connectButton.toolTip", "Java\u4EEE\u60F3\u30DE\u30B7\u30F3\u306B\u63A5\u7D9A"},
+        {"ConnectDialog.accessibleDescription", "\u30ED\u30FC\u30AB\u30EB\u307E\u305F\u306F\u30EA\u30E2\u30FC\u30C8\u306EJava\u4EEE\u60F3\u30DE\u30B7\u30F3\u3078\u306E\u65B0\u898F\u63A5\u7D9A\u3092\u884C\u3046\u30C0\u30A4\u30A2\u30ED\u30B0"},
+        {"ConnectDialog.masthead.accessibleName", "\u30DE\u30B9\u30C8\u30D8\u30C3\u30C9\u56F3\u5F62"},
+        {"ConnectDialog.masthead.title", "\u65B0\u898F\u63A5\u7D9A"},
+        {"ConnectDialog.statusBar.accessibleName", "\u30B9\u30C6\u30FC\u30BF\u30B9\u30FB\u30D0\u30FC"},
+        {"ConnectDialog.title", "JConsole: \u65B0\u898F\u63A5\u7D9A"},
+        {"Connected. Click to disconnect.","\u63A5\u7D9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u5207\u65AD\u3057\u307E\u3059\u3002"},
+        {"Connection failed","\u63A5\u7D9A\u306B\u5931\u6557\u3057\u307E\u3057\u305F"},
+        {"Connection", "\u63A5\u7D9A"},
+        {"Connection.mnemonic", "C"},
+        {"Connection name", "\u63A5\u7D9A\u540D"},
+        {"ConnectionName (disconnected)","{0} (\u5207\u65AD\u6E08)"},
+        {"Constructor","\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF"},
+        {"Current classes loaded", "\u30ED\u30FC\u30C9\u6E08\u306E\u73FE\u5728\u306E\u30AF\u30E9\u30B9"},
+        {"Current heap size","\u73FE\u5728\u306E\u30D2\u30FC\u30D7\u30FB\u30B5\u30A4\u30BA"},
+        {"Current value","\u73FE\u5728\u5024: {0}"},
+        {"Create", "\u4F5C\u6210"},
+        {"Daemon threads","\u30C7\u30FC\u30E2\u30F3\u30FB\u30B9\u30EC\u30C3\u30C9"},
+        {"Disconnected. Click to connect.","\u5207\u65AD\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u63A5\u7D9A\u3057\u307E\u3059\u3002"},
+        {"Double click to expand/collapse","\u5C55\u958B\u307E\u305F\u306F\u7E2E\u5C0F\u3059\u308B\u306B\u306F\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044"},
+        {"Double click to visualize", "\u8996\u899A\u5316\u3059\u308B\u306B\u306F\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044"},
+        {"Description", "\u8AAC\u660E"},
+        {"Description: ", "\u8AAC\u660E: "},
+        {"Descriptor", "\u8A18\u8FF0\u5B50"},
+        {"Details", "\u8A73\u7D30"},
+        {"Detect Deadlock", "\u30C7\u30C3\u30C9\u30ED\u30C3\u30AF\u306E\u691C\u51FA"},
+        {"Detect Deadlock.mnemonic", "D"},
+        {"Detect Deadlock.toolTip", "\u30C7\u30C3\u30C9\u30ED\u30C3\u30AF\u6E08\u30B9\u30EC\u30C3\u30C9\u306E\u691C\u51FA"},
+        {"Dimension is not supported:","\u6B21\u5143\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093:"},
+        {"Discard chart", "\u30C1\u30E3\u30FC\u30C8\u306E\u7834\u68C4"},
+        {"DurationDaysHoursMinutes","{0,choice,1#{0,number,integer}\u65E5|1.0<{0,number,integer}\u65E5}{1,choice,0<{1,number,integer}\u6642\u9593|1#{1,number,integer}\u6642\u9593|1<{1,number,integer}\u6642\u9593}{2,choice,0<{2,number,integer}\u5206|1#{2,number,integer}\u5206|1.0<{2,number,integer}\u5206}"},
 
-        {"DurationHoursMinutes","{0,choice,1#{0,number,integer} \u6642\u9593 |1<{0,number,integer} \u6642\u9593 }{1,choice,0<{1,number,integer} \u5206 |1#{1,number,integer} \u5206 |1.0<{1,number,integer} \u5206}"},
+        {"DurationHoursMinutes","{0,choice,1#{0,number,integer}\u6642\u9593|1<{0,number,integer}\u6642\u9593}{1,choice,0<{1,number,integer}\u5206|1#{1,number,integer}\u5206|1.0<{1,number,integer}\u5206}"},
 
-        {"DurationMinutes","{0,choice,1#{0,number,integer} \u5206 |1.0<{0,number,integer} \u5206}"},
-        {"DurationSeconds","{0} \u79d2"},
-        {"Empty array", "\u914d\u5217\u3092\u7a7a\u306b\u3059\u308b"},
-        {"Empty opentype viewer", "OpenType \u30d3\u30e5\u30fc\u30a2\u3092\u7a7a\u306b\u3059\u308b"},
-        {"Error","\u30a8\u30e9\u30fc"},
-        {"Error: MBeans already exist","\u30a8\u30e9\u30fc : MBean \u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059"},
-        {"Error: MBeans do not exist","\u30a8\u30e9\u30fc : MBean \u306f\u5b58\u5728\u3057\u307e\u305b\u3093"},
-        {"Error:","\u30a8\u30e9\u30fc:"},
-        {"Event","\u30a4\u30d9\u30f3\u30c8"},
-        {"Exit", "\u7d42\u4e86(X)"},
-        {"Exit.mnemonic", 'x'},
-        {"Fail to load plugin", "\u8b66\u544a: \u30d7\u30e9\u30b0\u30a4\u30f3\u306e\u30ed\u30fc\u30c9\u306b\u5931\u6557\u3057\u307e\u3057\u305f: {0}"},
-        {"FileChooser.fileExists.cancelOption", "\u30ad\u30e3\u30f3\u30bb\u30eb"},
-        {"FileChooser.fileExists.message", "<html><center>\u30d5\u30a1\u30a4\u30eb\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u3066\u3044\u307e\u3059:<br>{0}<br>\u7f6e\u63db\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b?"},
-        {"FileChooser.fileExists.okOption", "\u7f6e\u63db"},
-        {"FileChooser.fileExists.title", "\u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3057\u3066\u3044\u307e\u3059"},
-        {"FileChooser.savedFile", "<html>\u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58\u3057\u307e\u3057\u305f:<br>{0}<br>({1} \u30d0\u30a4\u30c8)"},
-        {"FileChooser.saveFailed.message", "<html><center>\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u4fdd\u5b58\u306b\u5931\u6557\u3057\u307e\u3057\u305f:<br>{0}<br>{1}"},
-        {"FileChooser.saveFailed.title", "\u4fdd\u5b58\u306b\u5931\u6557\u3057\u307e\u3057\u305f"},
-        {"Free physical memory","\u7a7a\u304d\u7269\u7406\u30e1\u30e2\u30ea"},
-        {"Free swap space","\u7a7a\u304d\u30b9\u30ef\u30c3\u30d7\u30b9\u30da\u30fc\u30b9"},
-        {"Garbage collector","\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30bf"},
+        {"DurationMinutes","{0,choice,1#{0,number,integer}\u5206|1.0<{0,number,integer}\u5206}"},
+        {"DurationSeconds","{0}\u79D2"},
+        {"Empty array", "\u7A7A\u306E\u914D\u5217"},
+        {"Empty opentype viewer", "\u7A7A\u306Eopentype\u30D3\u30E5\u30FC\u30A2"},
+        {"Error","\u30A8\u30E9\u30FC"},
+        {"Error: MBeans already exist","\u30A8\u30E9\u30FC: MBeans\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059"},
+        {"Error: MBeans do not exist","\u30A8\u30E9\u30FC: MBeans\u306F\u5B58\u5728\u3057\u307E\u305B\u3093"},
+        {"Error:","\u30A8\u30E9\u30FC:"},
+        {"Event","\u30A4\u30D9\u30F3\u30C8"},
+        {"Exit", "\u7D42\u4E86"},
+        {"Exit.mnemonic", "X"},
+        {"Fail to load plugin", "\u8B66\u544A: \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30ED\u30FC\u30C9\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {0}"},
+        {"FileChooser.fileExists.cancelOption", "\u53D6\u6D88"},
+        {"FileChooser.fileExists.message", "<html><center>\u30D5\u30A1\u30A4\u30EB\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u3066\u3044\u307E\u3059:<br>{0}<br>\u7F6E\u63DB\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\u3002"},
+        {"FileChooser.fileExists.okOption", "\u7F6E\u63DB"},
+        {"FileChooser.fileExists.title", "\u30D5\u30A1\u30A4\u30EB\u304C\u5B58\u5728\u3057\u3066\u3044\u307E\u3059"},
+        {"FileChooser.savedFile", "<html>\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58\u3057\u307E\u3057\u305F:<br>{0}<br>({1}\u30D0\u30A4\u30C8)"},
+        {"FileChooser.saveFailed.message", "<html><center>\u30D5\u30A1\u30A4\u30EB\u3078\u306E\u4FDD\u5B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F:<br>{0}<br>{1}"},
+        {"FileChooser.saveFailed.title", "\u4FDD\u5B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F"},
+        {"Free physical memory","\u7A7A\u304D\u7269\u7406\u30E1\u30E2\u30EA\u30FC"},
+        {"Free swap space","\u7A7A\u304D\u30B9\u30EF\u30C3\u30D7\u30FB\u30B9\u30DA\u30FC\u30B9"},
+        {"Garbage collector","\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30BF"},
         {"GTK","GTK"},
-        {"GcInfo","\u540d\u524d = ''{0}'', \u30b3\u30ec\u30af\u30b7\u30e7\u30f3 = {1,choice,-1#\u5229\u7528\u4e0d\u53ef|0#{1,number,integer}}, \u7dcf\u7d4c\u904e\u6642\u9593 = {2}"},
-        {"GC time","GC \u6642\u9593"},
-        {"GC time details","{1} \u306e {0} ({2} \u30b3\u30ec\u30af\u30b7\u30e7\u30f3)"},
-        {"Heap Memory Usage","\u30d2\u30fc\u30d7\u30e1\u30e2\u30ea\u306e\u4f7f\u7528\u72b6\u6cc1"},
-        {"Heap", "\u30d2\u30fc\u30d7"},
-        {"Help.AboutDialog.accessibleDescription", "JConsole \u304a\u3088\u3073 JDK \u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831\u3092\u542b\u3080\u30c0\u30a4\u30a2\u30ed\u30b0"},
-        {"Help.AboutDialog.jConsoleVersion", "JConsole \u30d0\u30fc\u30b8\u30e7\u30f3:<br>{0}"},
-        {"Help.AboutDialog.javaVersion", "Java VM \u30d0\u30fc\u30b8\u30e7\u30f3:<br>{0}"},
-        {"Help.AboutDialog.masthead.accessibleName", "\u30de\u30b9\u30c8\u30d8\u30c3\u30c9\u306e\u30b0\u30e9\u30d5\u30a3\u30c3\u30af"},
-        {"Help.AboutDialog.masthead.title", "JConsole \u306b\u3064\u3044\u3066"},
-        {"Help.AboutDialog.title", "JConsole: \u88fd\u54c1\u60c5\u5831"},
-        {"Help.AboutDialog.userGuideLink", "JConsole \u30e6\u30fc\u30b6\u30fc\u30ac\u30a4\u30c9:<br>{0}"},
-        {"Help.AboutDialog.userGuideLink.mnemonic", 'U'},
-        {"Help.AboutDialog.userGuideLink.url", "http://java.sun.com/javase/6/docs/technotes/guides/management/MonitoringGuide/toc.html"},
-        {"HelpMenu.About.title", "JConsole \u306b\u3064\u3044\u3066(A)"},
-        {"HelpMenu.About.title.mnemonic", 'A'},
-        {"HelpMenu.UserGuide.title", "\u30aa\u30f3\u30e9\u30a4\u30f3\u30e6\u30fc\u30b6\u30fc\u30ac\u30a4\u30c9(U)"},
-        {"HelpMenu.UserGuide.title.mnemonic", 'U'},
-        {"HelpMenu.title", "\u30d8\u30eb\u30d7(H)"},
-        {"HelpMenu.title.mnemonic", 'H'},
-        {"Hotspot MBeans...", "Hotspot MBean..."},
-        {"Hotspot MBeans....mnemonic", 'H'},
-        {"Hotspot MBeans.dialog.accessibleDescription", "Hotspot MBean \u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u30c0\u30a4\u30a2\u30ed\u30b0"},
-        {"Impact","\u5f71\u97ff"},
-        {"Info","\u60c5\u5831"},
-        {"INFO","\u60c5\u5831"},
-        {"Invalid plugin path", "\u8b66\u544a: \u30d7\u30e9\u30b0\u30a4\u30f3\u30d1\u30b9\u304c\u7121\u52b9\u3067\u3059: {0}"},
-        {"Invalid URL", "\u7121\u52b9\u306a URL: {0}"},
-        {"Is","Is"},
+        {"GcInfo","\u540D\u524D= ''{0}''\u3001\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3= {1,choice,-1#\u3042\u308A\u307E\u305B\u3093|0#{1,number,integer}\u500B}\u3001\u5408\u8A08\u6D88\u8CBB\u6642\u9593= {2}"},
+        {"GC time","GC\u6642\u9593"},
+        {"GC time details","{1}\u3067{0} ({2}\u500B\u306E\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3)"},
+        {"Heap Memory Usage","\u30D2\u30FC\u30D7\u30FB\u30E1\u30E2\u30EA\u30FC\u4F7F\u7528\u7387"},
+        {"Heap", "\u30D2\u30FC\u30D7"},
+        {"Help.AboutDialog.accessibleDescription", "JConsole\u3068JDK\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306B\u3064\u3044\u3066\u306E\u60C5\u5831\u3092\u542B\u3080\u30C0\u30A4\u30A2\u30ED\u30B0"},
+        {"Help.AboutDialog.jConsoleVersion", "JConsole\u30D0\u30FC\u30B8\u30E7\u30F3:<br>{0}"},
+        {"Help.AboutDialog.javaVersion", "Java VM\u30D0\u30FC\u30B8\u30E7\u30F3:<br>{0}"},
+        {"Help.AboutDialog.masthead.accessibleName", "\u30DE\u30B9\u30C8\u30D8\u30C3\u30C9\u56F3\u5F62"},
+        {"Help.AboutDialog.masthead.title", "JConsole\u306B\u3064\u3044\u3066"},
+        {"Help.AboutDialog.title", "JConsole: \u8A73\u7D30"},
+        {"Help.AboutDialog.userGuideLink", "JConsole\u30E6\u30FC\u30B6\u30FC\u30FB\u30AC\u30A4\u30C9:<br>{0}"},
+        {"Help.AboutDialog.userGuideLink.mnemonic", "U"},
+        {"Help.AboutDialog.userGuideLink.url", "http://java.sun.com/javase/6/docs/technotes/guides/management/jconsole.html"},
+        {"HelpMenu.About.title", "JConsole\u306B\u3064\u3044\u3066"},
+        {"HelpMenu.About.title.mnemonic", "A"},
+        {"HelpMenu.UserGuide.title", "\u30AA\u30F3\u30E9\u30A4\u30F3\u30FB\u30E6\u30FC\u30B6\u30FC\u30FB\u30AC\u30A4\u30C9"},
+        {"HelpMenu.UserGuide.title.mnemonic", "U"},
+        {"HelpMenu.title", "\u30D8\u30EB\u30D7"},
+        {"HelpMenu.title.mnemonic", "H"},
+        {"Hotspot MBeans...", "Hotspot MBeans..."},
+        {"Hotspot MBeans....mnemonic", "H"},
+        {"Hotspot MBeans.dialog.accessibleDescription", "Hotspot MBeans\u306E\u7BA1\u7406\u7528\u30C0\u30A4\u30A2\u30ED\u30B0"},
+        {"Impact","\u5F71\u97FF"},
+        {"Info","\u60C5\u5831"},
+        {"INFO","\u60C5\u5831"},
+        {"Invalid plugin path", "\u8B66\u544A: \u7121\u52B9\u306A\u30D7\u30E9\u30B0\u30A4\u30F3\u30FB\u30D1\u30B9: {0}"},
+        {"Invalid URL", "\u7121\u52B9\u306AURL: {0}"},
+        {"Is","\u6B21\u306B\u4E00\u81F4\u3059\u308B"},
         {"Java Monitoring & Management Console", "Java Monitoring & Management Console"},
         {"JConsole: ","JConsole: {0}"},
-        {"JConsole version","JConsole \u30d0\u30fc\u30b8\u30e7\u30f3 \"{0}\""},
+        {"JConsole version","JConsole\u30D0\u30FC\u30B8\u30E7\u30F3\"{0}\""},
         {"JConsole.accessibleDescription", "Java Monitoring & Management Console"},
-        {"JIT compiler","JIT \u30b3\u30f3\u30d1\u30a4\u30e9"},
-        {"Java Virtual Machine","Java \u4eee\u60f3\u30de\u30b7\u30f3"},
+        {"JIT compiler","JIT\u30B3\u30F3\u30D1\u30A4\u30E9"},
+        {"Java Virtual Machine","Java\u4EEE\u60F3\u30DE\u30B7\u30F3"},
         {"Java","Java"},
-        {"Library path","\u30e9\u30a4\u30d6\u30e9\u30ea\u30d1\u30b9"},
-        {"Listeners","\u30ea\u30b9\u30ca\u30fc"},
-        {"Live Threads","\u30e9\u30a4\u30d6\u30b9\u30ec\u30c3\u30c9"},
-        {"Loaded", "\u30ed\u30fc\u30c9\u6e08\u307f"},
-        {"Local Process:", "\u30ed\u30fc\u30ab\u30eb\u30d7\u30ed\u30bb\u30b9(L):"},
-        {"Local Process:.mnemonic", 'L'},
-        {"Look and Feel","Look & Feel"},
+        {"Library path","\u30E9\u30A4\u30D6\u30E9\u30EA\u30FB\u30D1\u30B9"},
+        {"Listeners","\u30EA\u30B9\u30CA\u30FC"},
+        {"Live Threads","\u5B9F\u884C\u4E2D\u306E\u30B9\u30EC\u30C3\u30C9"},
+        {"Loaded", "\u30ED\u30FC\u30C9\u6E08"},
+        {"Local Process:", "\u30ED\u30FC\u30AB\u30EB\u30FB\u30D7\u30ED\u30BB\u30B9:"},
+        {"Local Process:.mnemonic", "L"},
+        {"Look and Feel","Look&Feel"},
         {"Masthead.font", "Dialog-PLAIN-25"},
-        {"Management Not Enabled","<b>\u6ce8</b>: \u7ba1\u7406\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u304c\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u3067\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u305b\u3093\u3002"},
-        {"Management Will Be Enabled","<b>\u6ce8</b>: \u7ba1\u7406\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u304c\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u3067\u6709\u52b9\u306b\u306a\u308a\u307e\u3059\u3002"},
+        {"Management Not Enabled","<b>\u6CE8\u610F</b>: \u7BA1\u7406\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306F\u3053\u306E\u30D7\u30ED\u30BB\u30B9\u3067\u306F\u6709\u52B9\u5316\u3055\u308C\u307E\u305B\u3093\u3002"},
+        {"Management Will Be Enabled","<b>\u6CE8\u610F</b>: \u7BA1\u7406\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306F\u3053\u306E\u30D7\u30ED\u30BB\u30B9\u3067\u6709\u52B9\u5316\u3055\u308C\u307E\u3059\u3002"},
         {"MBeanAttributeInfo","MBeanAttributeInfo"},
         {"MBeanInfo","MBeanInfo"},
         {"MBeanNotificationInfo","MBeanNotificationInfo"},
         {"MBeanOperationInfo","MBeanOperationInfo"},
-        {"MBeans","MBean"},
-        {"MBeansTab.clearNotificationsButton", "\u6d88\u53bb(C)"},
-        {"MBeansTab.clearNotificationsButton.mnemonic", 'C'},
-        {"MBeansTab.clearNotificationsButton.toolTip", "\u901a\u77e5\u3092\u6d88\u53bb\u3059\u308b"},
-        {"MBeansTab.compositeNavigationMultiple", "\u8907\u5408\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3 {0}/{1}"},
-        {"MBeansTab.compositeNavigationSingle", "\u8907\u5408\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3"},
-        {"MBeansTab.refreshAttributesButton", "\u66f4\u65b0(R)"},
-        {"MBeansTab.refreshAttributesButton.mnemonic", 'R'},
-        {"MBeansTab.refreshAttributesButton.toolTip", "\u5c5e\u6027\u3092\u66f4\u65b0\u3059\u308b"},
-        {"MBeansTab.subscribeNotificationsButton", "\u767b\u9332(S)"},
-        {"MBeansTab.subscribeNotificationsButton.mnemonic", 'S'},
-        {"MBeansTab.subscribeNotificationsButton.toolTip", "\u901a\u77e5\u306e\u5f85\u6a5f\u3092\u958b\u59cb"},
-        {"MBeansTab.tabularNavigationMultiple", "\u8868\u5f62\u5f0f\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3 {0}/{1}"},
-        {"MBeansTab.tabularNavigationSingle", "\u8868\u5f62\u5f0f\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3"},
-        {"MBeansTab.unsubscribeNotificationsButton", "\u767b\u9332\u89e3\u9664(U)"},
-        {"MBeansTab.unsubscribeNotificationsButton.mnemonic", 'U'},
-        {"MBeansTab.unsubscribeNotificationsButton.toolTip", "\u901a\u77e5\u306e\u5f85\u6a5f\u3092\u505c\u6b62"},
-        {"Manage Hotspot MBeans in: ", "Hotspot MBean \u3092\u7ba1\u7406: "},
+        {"MBeans","MBeans"},
+        {"MBeansTab.clearNotificationsButton", "\u30AF\u30EA\u30A2"},
+        {"MBeansTab.clearNotificationsButton.mnemonic", "C"},
+        {"MBeansTab.clearNotificationsButton.toolTip", "\u901A\u77E5\u306E\u30AF\u30EA\u30A2"},
+        {"MBeansTab.compositeNavigationMultiple", "\u30B3\u30F3\u30DD\u30B8\u30C3\u30C8\u30FB\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3{0}/{1}"},
+        {"MBeansTab.compositeNavigationSingle", "\u30B3\u30F3\u30DD\u30B8\u30C3\u30C8\u30FB\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3"},
+        {"MBeansTab.refreshAttributesButton", "\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5"},
+        {"MBeansTab.refreshAttributesButton.mnemonic", "R"},
+        {"MBeansTab.refreshAttributesButton.toolTip", "\u5C5E\u6027\u306E\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5"},
+        {"MBeansTab.subscribeNotificationsButton", "\u30B5\u30D6\u30B9\u30AF\u30E9\u30A4\u30D6"},
+        {"MBeansTab.subscribeNotificationsButton.mnemonic", "S"},
+        {"MBeansTab.subscribeNotificationsButton.toolTip", "\u901A\u77E5\u30EA\u30B9\u30CB\u30F3\u30B0\u306E\u958B\u59CB"},
+        {"MBeansTab.tabularNavigationMultiple", "\u30BF\u30D6\u30FB\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3{0}/{1}"},
+        {"MBeansTab.tabularNavigationSingle", "\u30BF\u30D6\u30FB\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3"},
+        {"MBeansTab.unsubscribeNotificationsButton", "\u30B5\u30D6\u30B9\u30AF\u30E9\u30A4\u30D6\u89E3\u9664"},
+        {"MBeansTab.unsubscribeNotificationsButton.mnemonic", "U"},
+        {"MBeansTab.unsubscribeNotificationsButton.toolTip", "\u901A\u77E5\u30EA\u30B9\u30CB\u30F3\u30B0\u306E\u505C\u6B62"},
+        {"Manage Hotspot MBeans in: ", "Hotspot MBeans\u306E\u7BA1\u7406: "},
         {"Max","\u6700\u5927"},
-        {"Maximum heap size","\u6700\u5927\u30d2\u30fc\u30d7\u30b5\u30a4\u30ba"},
-        {"Memory","\u30e1\u30e2\u30ea"},
-        {"MemoryPoolLabel", "\u30e1\u30e2\u30ea\u30d7\u30fc\u30eb \"{0}\""},
-        {"MemoryTab.heapPlotter.accessibleName", "\u30d2\u30fc\u30d7\u30e1\u30e2\u30ea\u30fc\u306e\u4f7f\u7528\u72b6\u6cc1\u306e\u56f3\u3002"},
-        {"MemoryTab.infoLabelFormat", "<html>\u4f7f\u7528\u6e08\u307f: {0}    \u78ba\u5b9a: {1}    \u6700\u5927: {2}</html>"},
-        {"MemoryTab.nonHeapPlotter.accessibleName", "\u975e\u30d2\u30fc\u30d7\u30e1\u30e2\u30ea\u30fc\u306e\u4f7f\u7528\u72b6\u6cc1\u306e\u56f3\u3002"},
-        {"MemoryTab.poolChart.aboveThreshold", "{0} \u306e\u3057\u304d\u3044\u5024\u3092\u8d85\u3048\u3066\u3044\u307e\u3059\u3002\n"},
-        {"MemoryTab.poolChart.accessibleName", "\u30e1\u30e2\u30ea\u30fc\u30d7\u30fc\u30eb\u306e\u4f7f\u7528\u72b6\u6cc1\u306e\u56f3\u3002"},
-        {"MemoryTab.poolChart.belowThreshold", "{0} \u306e\u3057\u304d\u3044\u5024\u3092\u4e0b\u56de\u3063\u3066\u3044\u307e\u3059\u3002\n"},
-        {"MemoryTab.poolPlotter.accessibleName", "{0} \u30e1\u30e2\u30ea\u30fc\u306e\u4f7f\u7528\u72b6\u6cc1\u306e\u56f3\u3002"},
-        {"Message","\u30e1\u30c3\u30bb\u30fc\u30b8"},
-        {"Method successfully invoked", "\u30e1\u30bd\u30c3\u30c9\u306f\u6b63\u5e38\u306b\u8d77\u52d5\u3055\u308c\u307e\u3057\u305f"},
-        {"Minimize All", "\u3059\u3079\u3066\u3092\u30a2\u30a4\u30b3\u30f3\u5316(M)"},
-        {"Minimize All.mnemonic", 'M'},
-        {"Minus Version", "\u3053\u308c\u306f {0} \u30d0\u30fc\u30b8\u30e7\u30f3 {1} \u3067\u3059"},
+        {"Maximum heap size","\u6700\u5927\u30D2\u30FC\u30D7\u30FB\u30B5\u30A4\u30BA"},
+        {"Memory","\u30E1\u30E2\u30EA\u30FC"},
+        {"MemoryPoolLabel", "\u30E1\u30E2\u30EA\u30FC\u30FB\u30D7\u30FC\u30EB\"{0}\""},
+        {"MemoryTab.heapPlotter.accessibleName", "\u30D2\u30FC\u30D7\u7528\u306E\u30E1\u30E2\u30EA\u30FC\u4F7F\u7528\u7387\u30C1\u30E3\u30FC\u30C8\u3002"},
+        {"MemoryTab.infoLabelFormat", "<html>\u4F7F\u7528\u6E08: {0}    \u30B3\u30DF\u30C3\u30C8\u6E08: {1}    \u6700\u5927: {2}</html>"},
+        {"MemoryTab.nonHeapPlotter.accessibleName", "\u975E\u30D2\u30FC\u30D7\u7528\u306E\u30E1\u30E2\u30EA\u30FC\u4F7F\u7528\u7387\u30C1\u30E3\u30FC\u30C8\u3002"},
+        {"MemoryTab.poolChart.aboveThreshold", "{0}\u306E\u3057\u304D\u3044\u5024\u3088\u308A\u4E0A\u3067\u3059\u3002\n"},
+        {"MemoryTab.poolChart.accessibleName", "\u30E1\u30E2\u30EA\u30FC\u30FB\u30D7\u30FC\u30EB\u4F7F\u7528\u7387\u30C1\u30E3\u30FC\u30C8\u3002"},
+        {"MemoryTab.poolChart.belowThreshold", "{0}\u306E\u3057\u304D\u3044\u5024\u3088\u308A\u4E0B\u3067\u3059\u3002\n"},
+        {"MemoryTab.poolPlotter.accessibleName", "{0}\u306E\u30E1\u30E2\u30EA\u30FC\u4F7F\u7528\u7387\u30C1\u30E3\u30FC\u30C8\u3002"},
+        {"Message","\u30E1\u30C3\u30BB\u30FC\u30B8"},
+        {"Method successfully invoked", "\u30E1\u30BD\u30C3\u30C9\u304C\u6B63\u5E38\u306B\u8D77\u52D5\u3055\u308C\u307E\u3057\u305F"},
+        {"Minimize All", "\u3059\u3079\u3066\u6700\u5C0F\u5316"},
+        {"Minimize All.mnemonic", "M"},
+        {"Minus Version", "\u3053\u308C\u306F{0}\u306E\u30D0\u30FC\u30B8\u30E7\u30F3{1}\u3067\u3059"},
         {"Monitor locked",
-             "   - \u30ed\u30c3\u30af\u3055\u308c\u305f {0}\n"},
+             "   - \u30ED\u30C3\u30AF\u6E08{0}\n"},
         {"Motif","Motif"},
-        {"Name Build and Mode","{0} (\u30d3\u30eb\u30c9 {1}, {2})"},
-        {"Name and Build","{0} (\u30d3\u30eb\u30c9 {1})"},
-        {"Name","\u540d\u524d"},
-        {"Name: ","\u540d\u524d: "},
+        {"Name Build and Mode","{0} (\u30D3\u30EB\u30C9{1}, {2})"},
+        {"Name and Build","{0} (\u30D3\u30EB\u30C9{1})"},
+        {"Name","\u540D\u524D"},
+        {"Name: ","\u540D\u524D: "},
         {"Name State",
-             "\u540d\u524d: {0}\n" +
-             "\u72b6\u614b: {1}\n"},
+             "\u540D\u524D: {0}\n\u72B6\u614B: {1}\n"},
         {"Name State LockName",
-             "\u540d\u524d: {0}\n" +
-             "\u72b6\u614b: {1} ({2} \u4e0a)\n"},
+             "\u540D\u524D: {0}\n\u72B6\u614B: {2}\u306E{1}\n"},
         {"Name State LockName LockOwner",
-             "\u540d\u524d: {0}\n" +
-             "\u72b6\u614b: {1} ({2} \u4e0a) \u6240\u6709\u8005: {3}\n"},
-        {"New Connection...", "\u65b0\u898f\u63a5\u7d9a(N)..."},
-        {"New Connection....mnemonic", 'N'},
-        {"New value applied","\u65b0\u3057\u3044\u5024\u304c\u9069\u7528\u3055\u308c\u307e\u3057\u305f"},
-        {"No attribute selected","\u5c5e\u6027\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
-        {"No deadlock detected","\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u306f\u691c\u51fa\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f"},
-        {"No value selected","\u5024\u304c\u9078\u629e\u3055\u308c\u3066\u307e\u305b\u3093"},
-        {"Non-Heap Memory Usage","\u975e\u30d2\u30fc\u30d7\u30e1\u30e2\u30ea\u306e\u4f7f\u7528\u72b6\u6cc1"},
-        {"Non-Heap", "\u975e\u30d2\u30fc\u30d7"},
-        {"Not Yet Implemented","\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
-        {"Not a valid event broadcaster", "\u6709\u52b9\u306a\u30a4\u30d9\u30f3\u30c8\u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8\u5143\u3067\u306f\u3042\u308a\u307e\u305b\u3093"},
-        {"Notification","\u901a\u77e5"},
-        {"Notification buffer","\u901a\u77e5\u30d0\u30c3\u30d5\u30a1\u30fc"},
-        {"Notifications","\u901a\u77e5"},
+             "\u540D\u524D: {0}\n\u72B6\u614B: {2}\u306E{1}\u3001\u6240\u6709\u8005: {3}\n"},
+        {"New Connection...", "\u65B0\u898F\u63A5\u7D9A..."},
+        {"New Connection....mnemonic", "N"},
+        {"New value applied","\u9069\u7528\u3055\u308C\u305F\u65B0\u898F\u5024"},
+        {"No attribute selected","\u5C5E\u6027\u304C\u9078\u629E\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F"},
+        {"No deadlock detected","\u30C7\u30C3\u30C9\u30ED\u30C3\u30AF\u304C\u691C\u51FA\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F"},
+        {"No value selected","\u5024\u304C\u9078\u629E\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F"},
+        {"Non-Heap Memory Usage","\u975E\u30D2\u30FC\u30D7\u30FB\u30E1\u30E2\u30EA\u30FC\u4F7F\u7528\u7387"},
+        {"Non-Heap", "\u975E\u30D2\u30FC\u30D7"},
+        {"Not Yet Implemented","\u307E\u3060\u5B9F\u88C5\u3055\u308C\u3066\u3044\u307E\u305B\u3093"},
+        {"Not a valid event broadcaster", "\u6709\u52B9\u306A\u30A4\u30D9\u30F3\u30C8\u30FB\u30D6\u30ED\u30FC\u30C9\u30AD\u30E3\u30B9\u30BF\u3067\u306F\u3042\u308A\u307E\u305B\u3093"},
+        {"Notification","\u901A\u77E5"},
+        {"Notification buffer","\u901A\u77E5\u30D0\u30C3\u30D5\u30A1"},
+        {"Notifications","\u901A\u77E5"},
         {"NotifTypes", "NotifTypes"},
-        {"Number of Threads","\u30b9\u30ec\u30c3\u30c9\u6570"},
-        {"Number of Loaded Classes","\u30ed\u30fc\u30c9\u3055\u308c\u305f\u30af\u30e9\u30b9\u306e\u6570"},
-        {"Number of processors","\u30d7\u30ed\u30bb\u30c3\u30b5\u306e\u6570"},
+        {"Number of Threads","\u30B9\u30EC\u30C3\u30C9\u6570"},
+        {"Number of Loaded Classes","\u30ED\u30FC\u30C9\u6E08\u30AF\u30E9\u30B9\u6570"},
+        {"Number of processors","\u30D7\u30ED\u30BB\u30C3\u30B5\u6570"},
         {"ObjectName","ObjectName"},
-        {"Operating System","\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0"},
-        {"Operation","\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3"},
-        {"Operation invocation","\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3\u547c\u3073\u51fa\u3057"},
-        {"Operation return value", "\u64cd\u4f5c\u306e\u623b\u308a\u5024"},
-        {"Operations","\u64cd\u4f5c"},
+        {"Operating System","\u30AA\u30DA\u30EC\u30FC\u30C6\u30A3\u30F3\u30B0\u30FB\u30B7\u30B9\u30C6\u30E0"},
+        {"Operation","\u64CD\u4F5C"},
+        {"Operation invocation","\u64CD\u4F5C\u306E\u547C\u51FA\u3057"},
+        {"Operation return value", "\u64CD\u4F5C\u306E\u623B\u308A\u5024"},
+        {"Operations","\u64CD\u4F5C"},
         {"Overview","\u6982\u8981"},
-        {"OverviewPanel.plotter.accessibleName", "{0} \u306e\u56f3\u3002"},
-        {"Parameter", "\u30d1\u30e9\u30e1\u30fc\u30bf"},
-        {"Password: ", "\u30d1\u30b9\u30ef\u30fc\u30c9(P): "},
-        {"Password: .mnemonic", 'P'},
-        {"Password.accessibleName", "\u30d1\u30b9\u30ef\u30fc\u30c9"},
-        {"Peak","\u30d4\u30fc\u30af"},
-        {"Perform GC", "GC \u306e\u5b9f\u884c"},
-        {"Perform GC.mnemonic", 'G'},
-        {"Perform GC.toolTip", "\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u8981\u6c42\u3059\u308b"},
-        {"Plotter.accessibleName", "\u56f3"},
+        {"OverviewPanel.plotter.accessibleName", "{0}\u306E\u30C1\u30E3\u30FC\u30C8\u3002"},
+        {"Parameter", "\u30D1\u30E9\u30E1\u30FC\u30BF"},
+        {"Password: ", "\u30D1\u30B9\u30EF\u30FC\u30C9: "},
+        {"Password: .mnemonic", "P"},
+        {"Password.accessibleName", "\u30D1\u30B9\u30EF\u30FC\u30C9"},
+        {"Peak","\u30D4\u30FC\u30AF"},
+        {"Perform GC", "GC\u306E\u5B9F\u884C"},
+        {"Perform GC.mnemonic", "G"},
+        {"Perform GC.toolTip", "\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u306E\u30EA\u30AF\u30A8\u30B9\u30C8"},
+        {"Plotter.accessibleName", "\u30C1\u30E3\u30FC\u30C8"},
         {"Plotter.accessibleName.keyAndValue", "{0}={1}\n"},
-        {"Plotter.accessibleName.noData", "\u30d7\u30ed\u30c3\u30c8\u3055\u308c\u305f\u30c7\u30fc\u30bf\u306f\u3042\u308a\u307e\u305b\u3093\u3002"},
-        {"Plotter.saveAsMenuItem", "\u30c7\u30fc\u30bf\u3092\u5225\u540d\u3067\u4fdd\u5b58(a)..."},
-        {"Plotter.saveAsMenuItem.mnemonic", 'a'},
-        {"Plotter.timeRangeMenu", "\u6642\u9593\u7bc4\u56f2(T)"},
-        {"Plotter.timeRangeMenu.mnemonic", 'T'},
-        {"Problem adding listener","\u30ea\u30b9\u30ca\u30fc\u8ffd\u52a0\u6642\u306e\u554f\u984c"},
-        {"Problem displaying MBean", "MBean \u8868\u793a\u6642\u306e\u554f\u984c"},
-        {"Problem invoking", "\u547c\u3073\u51fa\u3057\u6642\u306e\u554f\u984c"},
-        {"Problem removing listener","\u30ea\u30b9\u30ca\u30fc\u524a\u9664\u6642\u306e\u554f\u984c"},
-        {"Problem setting attribute","\u5c5e\u6027\u8a2d\u5b9a\u6642\u306e\u554f\u984c"},
-        {"Process CPU time","\u30d7\u30ed\u30bb\u30b9 CPU \u6642\u9593"},
+        {"Plotter.accessibleName.noData", "\u30C7\u30FC\u30BF\u304C\u30D7\u30ED\u30C3\u30C8\u3055\u308C\u307E\u305B\u3093\u3002"},
+        {"Plotter.saveAsMenuItem", "\u540D\u524D\u3092\u4ED8\u3051\u3066\u30C7\u30FC\u30BF\u3092\u4FDD\u5B58..."},
+        {"Plotter.saveAsMenuItem.mnemonic", "A"},
+        {"Plotter.timeRangeMenu", "\u6642\u9593\u7BC4\u56F2"},
+        {"Plotter.timeRangeMenu.mnemonic", "T"},
+        {"Problem adding listener","\u30EA\u30B9\u30CA\u30FC\u8FFD\u52A0\u4E2D\u306E\u554F\u984C"},
+        {"Problem displaying MBean", "MBean\u8868\u793A\u4E2D\u306E\u554F\u984C"},
+        {"Problem invoking", "\u547C\u51FA\u3057\u4E2D\u306E\u554F\u984C"},
+        {"Problem removing listener","\u30EA\u30B9\u30CA\u30FC\u524A\u9664\u4E2D\u306E\u554F\u984C"},
+        {"Problem setting attribute","\u5C5E\u6027\u8A2D\u5B9A\u4E2D\u306E\u554F\u984C"},
+        {"Process CPU time","\u30D7\u30ED\u30BB\u30B9CPU\u6642\u9593"},
         {"R/W","R/W"},
-        {"Readable","\u8aad\u307f\u8fbc\u307f\u53ef\u80fd"},
-        {"Received","\u53d7\u4fe1\u6e08\u307f"},
-        {"Reconnect","\u518d\u63a5\u7d9a"},
-        {"Remote Process:", "\u30ea\u30e2\u30fc\u30c8\u30d7\u30ed\u30bb\u30b9(R):"},
-        {"Remote Process:.mnemonic", 'R'},
-        {"Remote Process.textField.accessibleName", "\u30ea\u30e2\u30fc\u30c8\u30d7\u30ed\u30bb\u30b9"},
-        {"Remove","\u524a\u9664"},
-        {"Restore All", "\u3059\u3079\u3066\u3092\u5fa9\u5143(R)"},
-        {"Restore All.mnemonic", 'R'},
-        {"Return value", "\u623b\u308a\u5024"},
+        {"Readable","\u8AAD\u53D6\u308A\u53EF\u80FD"},
+        {"Received","\u53D7\u4FE1\u6E08"},
+        {"Reconnect","\u518D\u63A5\u7D9A"},
+        {"Remote Process:", "\u30EA\u30E2\u30FC\u30C8\u30FB\u30D7\u30ED\u30BB\u30B9:"},
+        {"Remote Process:.mnemonic", "R"},
+        {"Remote Process.textField.accessibleName", "\u30EA\u30E2\u30FC\u30C8\u30FB\u30D7\u30ED\u30BB\u30B9"},
+        {"Remove","\u524A\u9664"},
+        {"Restore All", "\u3059\u3079\u3066\u5FA9\u5143"},
+        {"Restore All.mnemonic", "R"},
+        {"Return value", "\u623B\u308A\u5024"},
         {"ReturnType", "ReturnType"},
-        {"SeqNum","\u30b7\u30fc\u30b1\u30f3\u30b9\u756a\u53f7"},
-        {"Size Bytes", "{0,number,integer} \u30d0\u30a4\u30c8"},
-        {"Size Gb","{0} G \u30d0\u30a4\u30c8"},
-        {"Size Kb","{0} K \u30d0\u30a4\u30c8"},
-        {"Size Mb","{0} M \u30d0\u30a4\u30c8"},
-        {"Source","\u30bd\u30fc\u30b9"},
+        {"SeqNum","SeqNum"},
+        {"Size Bytes", "{0,number,integer}\u30D0\u30A4\u30C8"},
+        {"Size Gb","{0} Gb"},
+        {"Size Kb","{0} Kb"},
+        {"Size Mb","{0} Mb"},
+        {"Source","\u30BD\u30FC\u30B9"},
         {"Stack trace",
-             "\n\u30b9\u30bf\u30c3\u30af\u30c8\u30ec\u30fc\u30b9: \n"},
-        {"Success:","\u6210\u529f:"},
+              "\n\u30B9\u30BF\u30C3\u30AF\u30FB\u30C8\u30EC\u30FC\u30B9: \n"},
+        {"Success:","\u6210\u529F:"},
         // Note: SummaryTab.headerDateTimeFormat can be one the following:
         // 1. A combination of two styles for date and time, using the
         //    constants from class DateFormat: SHORT, MEDIUM, LONG, FULL.
@@ -356,85 +353,75 @@
         //    of the class SimpleDateFormat.
         //    Example: "yyyy-MM-dd HH:mm:ss" or "M/d/yyyy h:mm:ss a"
         {"SummaryTab.headerDateTimeFormat", "FULL,FULL"},
-        {"SummaryTab.pendingFinalization.label", "\u4fdd\u7559\u72b6\u614b\u306e\u30d5\u30a1\u30a4\u30ca\u30e9\u30a4\u30ba"},
-        {"SummaryTab.pendingFinalization.value", "{0} \u30aa\u30d6\u30b8\u30a7\u30af\u30c8"},
-        {"SummaryTab.tabName", "VM \u306e\u6982\u8981"},
-        {"SummaryTab.vmVersion","{0} \u30d0\u30fc\u30b8\u30e7\u30f3 {1}"},
-        {"TabularData are not supported", "TabularData \u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
-        {"Threads","\u30b9\u30ec\u30c3\u30c9"},
-        {"ThreadTab.infoLabelFormat", "<html>\u30e9\u30a4\u30d6: {0}    \u30d4\u30fc\u30af: {1}    \u7dcf\u6570: {2}</html>"},
-        {"ThreadTab.threadInfo.accessibleName", "\u30b9\u30ec\u30c3\u30c9\u60c5\u5831"},
-        {"ThreadTab.threadPlotter.accessibleName", "\u30b9\u30ec\u30c3\u30c9\u6570\u306e\u56f3\u3002"},
-        {"Threshold","\u3057\u304d\u3044\u5024"},
-        {"Tile", "\u4e26\u3079\u3066\u8868\u793a(T)"},
-        {"Tile.mnemonic", 'T'},
-        {"Time Range:", "\u6642\u9593\u7bc4\u56f2(T):"},
-        {"Time Range:.mnemonic", 'T'},
+        {"SummaryTab.pendingFinalization.label", "\u30D5\u30A1\u30A4\u30CA\u30E9\u30A4\u30BA\u306E\u30DA\u30F3\u30C7\u30A3\u30F3\u30B0"},
+        {"SummaryTab.pendingFinalization.value", "{0}\u500B\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8"},
+        {"SummaryTab.tabName", "VM\u30B5\u30DE\u30EA\u30FC"},
+        {"SummaryTab.vmVersion","{0}\u30D0\u30FC\u30B8\u30E7\u30F3{1}"},
+        {"TabularData are not supported", "TabularData \u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093"},
+        {"Threads","\u30B9\u30EC\u30C3\u30C9"},
+        {"ThreadTab.infoLabelFormat", "<html>\u5B9F\u884C\u4E2D: {0}    \u30D4\u30FC\u30AF: {1}    \u5408\u8A08: {2}</html>"},
+        {"ThreadTab.threadInfo.accessibleName", "\u30B9\u30EC\u30C3\u30C9\u60C5\u5831"},
+        {"ThreadTab.threadPlotter.accessibleName", "\u30B9\u30EC\u30C3\u30C9\u6570\u306E\u30C1\u30E3\u30FC\u30C8\u3002"},
+        {"Threshold","\u3057\u304D\u3044\u5024"},
+        {"Tile", "\u4E26\u3079\u3066\u8868\u793A"},
+        {"Tile.mnemonic", "T"},
+        {"Time Range:", "\u6642\u9593\u7BC4\u56F2:"},
+        {"Time Range:.mnemonic", "T"},
         {"Time", "\u6642\u9593"},
-        {"TimeStamp","\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7"},
-        {"Total Loaded", "\u7dcf\u30ed\u30fc\u30c9\u6570"},
-        {"Total classes loaded","\u30ed\u30fc\u30c9\u3055\u308c\u305f\u30af\u30e9\u30b9\u306e\u7dcf\u6570"},
-        {"Total classes unloaded","\u30a2\u30f3\u30ed\u30fc\u30c9\u3055\u308c\u305f\u30af\u30e9\u30b9\u306e\u7dcf\u6570"},
-        {"Total compile time","\u30b3\u30f3\u30d1\u30a4\u30eb\u306e\u7dcf\u6642\u9593"},
-        {"Total physical memory","\u7dcf\u7269\u7406\u30e1\u30e2\u30ea"},
-        {"Total threads started","\u958b\u59cb\u3057\u305f\u30b9\u30ec\u30c3\u30c9\u306e\u7dcf\u6570"},
-        {"Total swap space","\u7dcf\u30b9\u30ef\u30c3\u30d7\u30b9\u30da\u30fc\u30b9"},
-        {"Type","\u578b"},
-        {"Unavailable","\u4f7f\u7528\u4e0d\u53ef\u80fd"},
+        {"TimeStamp","TimeStamp"},
+        {"Total Loaded", "\u30ED\u30FC\u30C9\u6E08\u5408\u8A08"},
+        {"Total classes loaded","\u30ED\u30FC\u30C9\u6E08\u30AF\u30E9\u30B9\u5408\u8A08"},
+        {"Total classes unloaded","\u30A2\u30F3\u30ED\u30FC\u30C9\u6E08\u30AF\u30E9\u30B9\u5408\u8A08"},
+        {"Total compile time","\u5408\u8A08\u30B3\u30F3\u30D1\u30A4\u30EB\u6642\u9593"},
+        {"Total physical memory","\u5408\u8A08\u7269\u7406\u30E1\u30E2\u30EA\u30FC"},
+        {"Total threads started","\u958B\u59CB\u6E08\u5408\u8A08\u30B9\u30EC\u30C3\u30C9"},
+        {"Total swap space","\u5408\u8A08\u30B9\u30EF\u30C3\u30D7\u30FB\u30B9\u30DA\u30FC\u30B9"},
+        {"Type","\u578B"},
+        {"Unavailable","\u5229\u7528\u4E0D\u53EF"},
         {"UNKNOWN","UNKNOWN"},
-        {"Unknown Host","\u672a\u77e5\u306e\u30db\u30b9\u30c8: {0}"},
-        {"Unregister", "\u767b\u9332\u89e3\u9664"},
-        {"Uptime","\u30a2\u30c3\u30d7\u30bf\u30a4\u30e0"},
-        {"Uptime: ","\u30a2\u30c3\u30d7\u30bf\u30a4\u30e0: "},
-        {"Usage Threshold","\u4f7f\u7528\u91cf\u306e\u3057\u304d\u3044\u5024"},
-        {"remoteTF.usage","<b>\u4f7f\u3044\u65b9</b>: &lt;\u30db\u30b9\u30c8\u540d&gt;:&lt;\u30dd\u30fc\u30c8&gt; \u307e\u305f\u306f service:jmx:&lt;\u30d7\u30ed\u30c8\u30b3\u30eb&gt;:&lt;sap&gt;"},
-        {"Used","\u4f7f\u7528\u6e08\u307f"},
-        {"Username: ", "\u30e6\u30fc\u30b6\u30fc\u540d(U): "},
-        {"Username: .mnemonic", 'U'},
-        {"Username.accessibleName", "\u30e6\u30fc\u30b6\u30fc\u540d"},
+        {"Unknown Host","\u4E0D\u660E\u306A\u30DB\u30B9\u30C8: {0}"},
+        {"Unregister", "\u767B\u9332\u89E3\u9664"},
+        {"Uptime","\u7A3C\u50CD\u6642\u9593"},
+        {"Uptime: ","\u7A3C\u50CD\u6642\u9593: "},
+        {"Usage Threshold","\u4F7F\u7528\u3057\u304D\u3044\u5024"},
+        {"remoteTF.usage","<b>\u4F7F\u7528\u65B9\u6CD5</b>: &lt;hostname&gt;:&lt;port&gt;\u307E\u305F\u306Fservice:jmx:&lt;protocol&gt;:&lt;sap&gt;"},
+        {"Used","\u4F7F\u7528\u6E08"},
+        {"Username: ", "\u30E6\u30FC\u30B6\u30FC\u540D: "},
+        {"Username: .mnemonic", "U"},
+        {"Username.accessibleName", "\u30E6\u30FC\u30B6\u30FC\u540D"},
         {"UserData","UserData"},
-        {"Virtual Machine","\u4eee\u60f3\u30de\u30b7\u30f3"},
-        {"VM arguments","VM \u306e\u5f15\u6570"},
+        {"Virtual Machine","\u4EEE\u60F3\u30DE\u30B7\u30F3"},
+        {"VM arguments","VM\u5F15\u6570"},
         {"VM","VM"},
-        {"VMInternalFrame.accessibleDescription", "Java \u4eee\u60f3\u30de\u30b7\u30f3\u3092\u76e3\u8996\u3059\u308b\u305f\u3081\u306e\u5185\u90e8\u30d5\u30ec\u30fc\u30e0"},
+        {"VMInternalFrame.accessibleDescription", "Java\u4EEE\u60F3\u30DE\u30B7\u30F3\u306E\u30E2\u30CB\u30BF\u30FC\u7528\u306E\u5185\u90E8\u30D5\u30EC\u30FC\u30E0"},
         {"Value","\u5024"},
-        {"Vendor", "\u30d9\u30f3\u30c0"},
-        {"Verbose Output","\u8a73\u7d30\u51fa\u529b"},
-        {"Verbose Output.toolTip", "\u30af\u30e9\u30b9\u30ed\u30fc\u30c7\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u306e\u8a73\u7d30\u51fa\u529b\u3092\u6709\u52b9\u306b\u3059\u308b"},
-        {"View value", "\u5024\u3092\u8868\u793a\u3059\u308b"},
-        {"View","\u8868\u793a"},
-        {"Window", "\u30a6\u30a3\u30f3\u30c9\u30a6(W)"},
-        {"Window.mnemonic", 'W'},
-        {"Windows","\u30a6\u30a3\u30f3\u30c9\u30a6"},
-        {"Writable","\u66f8\u304d\u8fbc\u307f\u53ef\u80fd"},
-        {"You cannot drop a class here", "\u30af\u30e9\u30b9\u3092\u3053\u3053\u306b\u30c9\u30ed\u30c3\u30d7\u3067\u304d\u307e\u305b\u3093"},
-        {"collapse", "\u6298\u308a\u305f\u305f\u307f"},
-        {"connectionFailed1","\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f: \u518d\u8a66\u884c\u3057\u307e\u3059\u304b?"},
-        {"connectionFailed2","{0} \u3078\u306e\u63a5\u7d9a\u304c\u6210\u529f\u3057\u307e\u305b\u3093\u3067\u3057\u305f\u3002<br>\u3082\u3046\u4e00\u5ea6\u8a66\u3057\u307e\u3059\u304b?"},
-        {"connectionLost1","\u63a5\u7d9a\u304c\u5931\u308f\u308c\u307e\u3057\u305f: \u518d\u63a5\u7d9a\u3057\u307e\u3059\u304b?"},
-        {"connectionLost2","\u30ea\u30e2\u30fc\u30c8\u30d7\u30ed\u30bb\u30b9\u304c\u7d42\u4e86\u3057\u305f\u305f\u3081\u3001{0} \u3078\u306e\u63a5\u7d9a\u304c\u5931\u308f\u308c\u307e\u3057\u305f\u3002<br>\u518d\u63a5\u7d9a\u3057\u307e\u3059\u304b?"},
-        {"connectingTo1","{0} \u306b\u63a5\u7d9a\u3057\u3066\u3044\u307e\u3059"},
-        {"connectingTo2","\u73fe\u5728 {0} \u306b\u63a5\u7d9a\u3057\u3066\u3044\u307e\u3059\u3002<br>\u3053\u308c\u306b\u306f\u5c11\u3057\u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\u3002"},
+        {"Vendor", "\u30D9\u30F3\u30C0\u30FC"},
+        {"Verbose Output","\u8A73\u7D30\u51FA\u529B"},
+        {"Verbose Output.toolTip", "\u30AF\u30E9\u30B9\u8AAD\u8FBC\u307F\u30B7\u30B9\u30C6\u30E0\u3067\u8A73\u7D30\u51FA\u529B\u3092\u6709\u52B9\u306B\u3059\u308B"},
+        {"View value", "\u5024\u306E\u8868\u793A"},
+        {"View","\u8868\u793A"},
+        {"Window", "\u30A6\u30A3\u30F3\u30C9\u30A6"},
+        {"Window.mnemonic", "W"},
+        {"Windows","\u30A6\u30A3\u30F3\u30C9\u30A6"},
+        {"Writable","\u66F8\u8FBC\u307F\u53EF\u80FD"},
+        {"You cannot drop a class here", "\u30AF\u30E9\u30B9\u3092\u3053\u3053\u306B\u30C9\u30ED\u30C3\u30D7\u3067\u304D\u307E\u305B\u3093"},
+        {"collapse", "\u7E2E\u5C0F"},
+        {"connectionFailed1","\u63A5\u7D9A\u306B\u5931\u6557\u3057\u307E\u3057\u305F: \u518D\u8A66\u884C\u3057\u307E\u3059\u304B\u3002"},
+        {"connectionFailed2","{0}\u3078\u306E\u63A5\u7D9A\u304C\u6210\u529F\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002<br>\u3082\u3046\u4E00\u5EA6\u8A66\u3057\u307E\u3059\u304B\u3002"},
+        {"connectionLost1","\u63A5\u7D9A\u304C\u5931\u308F\u308C\u307E\u3057\u305F: \u518D\u63A5\u7D9A\u3057\u307E\u3059\u304B\u3002"},
+        {"connectionLost2","\u30EA\u30E2\u30FC\u30C8\u30FB\u30D7\u30ED\u30BB\u30B9\u304C\u7D42\u4E86\u3057\u305F\u305F\u3081{0}\u3078\u306E\u63A5\u7D9A\u304C\u5931\u308F\u308C\u307E\u3057\u305F\u3002<br>\u518D\u63A5\u7D9A\u3057\u307E\u3059\u304B\u3002"},
+        {"connectingTo1","{0}\u306B\u63A5\u7D9A\u4E2D"},
+        {"connectingTo2","{0}\u306B\u73FE\u5728\u63A5\u7D9A\u4E2D\u3067\u3059\u3002<br>\u3053\u308C\u306B\u306F\u6570\u5206\u304B\u304B\u308A\u307E\u3059\u3002"},
         {"deadlockAllTab","\u3059\u3079\u3066"},
-        {"deadlockTab","\u30c7\u30c3\u30c9\u30ed\u30c3\u30af"},
-        {"deadlockTabN","\u30c7\u30c3\u30c9\u30ed\u30c3\u30af {0}"},
-        {"expand", "\u5c55\u958b"},
-        {"kbytes","{0} k \u30d0\u30a4\u30c8"},
-        {"operation","\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3"},
-        {"plot", "\u30d7\u30ed\u30c3\u30c8"},
-        {"visualize","\u8868\u793a"},
+        {"deadlockTab","\u30C7\u30C3\u30C9\u30ED\u30C3\u30AF"},
+        {"deadlockTabN","\u30C7\u30C3\u30C9\u30ED\u30C3\u30AF{0}"},
+        {"expand", "\u5C55\u958B"},
+        {"kbytes","{0} KB"},
+        {"operation","\u64CD\u4F5C"},
+        {"plot", "\u30D7\u30ED\u30C3\u30C8"},
+        {"visualize","\u8996\u899A\u5316"},
         {"zz usage text",
-             "\u4f7f\u3044\u65b9: {0} [ -interval=n ] [ -notile ] [ -pluginpath <path> ] [ -version ] [ connection ... ]\n\n" +
-             "  -interval   \u66f4\u65b0\u9593\u9694\u3092 n \u79d2\u306b\u8a2d\u5b9a\u3059\u308b (\u30c7\u30d5\u30a9\u30eb\u30c8\u306f 4 \u79d2)\n" +
-             "  -notile     \u521d\u671f\u72b6\u614b\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u30bf\u30a4\u30eb\u72b6\u306b\u4e26\u3079\u306a\u3044 (\u63a5\u7d9a\u304c\u8907\u6570\u3042\u308b\u5834\u5408)\n" +
-             "  -pluginpath JConsole \u3067\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u63a2\u3059\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u30d1\u30b9\u3092\u6307\u5b9a\u3059\u308b\n" +
-             "  -version    \u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u51fa\u529b\u3059\u308b\n\n" +
-             "  connection = pid || host:port || JMX URL (service:jmx:<protocol>://...)\n" +
-             "  pid         \u30bf\u30fc\u30b2\u30c3\u30c8\u30d7\u30ed\u30bb\u30b9\u306e\u30d7\u30ed\u30bb\u30b9 ID\n" +
-             "  host        \u30ea\u30e2\u30fc\u30c8\u30db\u30b9\u30c8\u306e\u540d\u524d\u307e\u305f\u306f IP \u30a2\u30c9\u30ec\u30b9\n" +
-             "  port        \u30ea\u30e2\u30fc\u30c8\u63a5\u7d9a\u7528\u306e\u30dd\u30fc\u30c8\u756a\u53f7\n\n" +
-             "  -J          JConsole \u3092\u5b9f\u884c\u3059\u308b Java \u4eee\u60f3\u30de\u30b7\u30f3\u3078\u306e\n" +
-             "              \u5165\u529b\u5f15\u6570\u3092\u6307\u5b9a\u3059\u308b"},
+             "\u4F7F\u7528\u65B9\u6CD5: {0} [ -interval=n ] [ -notile ] [ -pluginpath <path> ] [ -version ] [ connection ... ]\n\n  -interval   \u66F4\u65B0\u9593\u9694\u3092n\u79D2\u306B\u8A2D\u5B9A\u3059\u308B(\u30C7\u30D5\u30A9\u30EB\u30C8\u306F4\u79D2)\n  -notile     \u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u6700\u521D\u306B\u4E26\u3079\u3066\u8868\u793A\u3057\u306A\u3044(2\u3064\u4EE5\u4E0A\u306E\u63A5\u7D9A\u306B\u3064\u3044\u3066)\n  -pluginpath JConsole\u304C\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u53C2\u7167\u3059\u308B\u305F\u3081\u306B\u4F7F\u7528\u3059\u308B\u30D1\u30B9\u3092\u6307\u5B9A\u3059\u308B\n  -version    \u30D7\u30ED\u30B0\u30E9\u30E0\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u5370\u5237\u3059\u308B\n\n  connection = pid || host:port || JMX URL (service:jmx:<protocol>://...)\n  pid         \u30BF\u30FC\u30B2\u30C3\u30C8\u30FB\u30D7\u30ED\u30BB\u30B9\u306E\u30D7\u30ED\u30BB\u30B9ID\n  host        \u30EA\u30E2\u30FC\u30C8\u30FB\u30DB\u30B9\u30C8\u540D\u307E\u305F\u306FIP\u30A2\u30C9\u30EC\u30B9\n  port        \u30EA\u30E2\u30FC\u30C8\u63A5\u7D9A\u7528\u306E\u30DD\u30FC\u30C8\u756A\u53F7\n\n  -J          JConsole\u304C\u5B9F\u884C\u4E2D\u306EJava\u4EEE\u60F3\u30DE\u30B7\u30F3\u3078\u306E\n              \u5165\u529B\u5F15\u6570\u3092\u6307\u5B9A\u3059\u308B"},
         // END OF MATERIAL TO LOCALIZE
         };
 
--- a/jdk/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_zh_CN.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/tools/jconsole/resources/JConsoleResources_zh_CN.java	Wed Jul 05 17:35:13 2017 +0200
@@ -44,7 +44,7 @@
  * or if the keys ends with ".mnemonic", an element
  * representing a mnemomic keycode <code>int</code> or <code>char</code>.
  */
-public class JConsoleResources_zh_CN extends JConsoleResources {
+public class JConsoleResources_zh_CN extends ListResourceBundle {
 
     /**
      * Returns the contents of this <code>ResourceBundle</code>.
@@ -55,7 +55,7 @@
      */
     protected Object[][] getContents0() {
         Object[][] temp = new Object[][] {
-        // NOTE 1: The value strings in this file containing "{0}" are
+                // NOTE 1: The value strings in this file containing "{0}" are
         //         processed by the java.text.MessageFormat class.  Any
         //         single quotes appearing in these strings need to be
         //         doubled up.
@@ -66,288 +66,285 @@
         //
         // LOCALIZE THIS
         {" 1 day"," 1 \u5929"},
-        {" 1 hour"," 1 \u5c0f\u65f6"},
-        {" 1 min"," 1 \u5206\u949f"},
-        {" 1 month"," 1 \u4e2a\u6708"},
-        {" 1 year"," 1 \u5e74"},
-        {" 2 hours"," 2 \u5c0f\u65f6"},
-        {" 3 hours"," 3 \u5c0f\u65f6"},
-        {" 3 months"," 3 \u4e2a\u6708"},
-        {" 5 min"," 5 \u5206\u949f"},
-        {" 6 hours"," 6 \u5c0f\u65f6"},
-        {" 6 months"," 6 \u4e2a\u6708"},
+        {" 1 hour"," 1 \u5C0F\u65F6"},
+        {" 1 min"," 1 \u5206\u949F"},
+        {" 1 month"," 1 \u4E2A\u6708"},
+        {" 1 year"," 1 \u5E74"},
+        {" 2 hours"," 2 \u5C0F\u65F6"},
+        {" 3 hours"," 3 \u5C0F\u65F6"},
+        {" 3 months"," 3 \u4E2A\u6708"},
+        {" 5 min"," 5 \u5206\u949F"},
+        {" 6 hours"," 6 \u5C0F\u65F6"},
+        {" 6 months"," 6 \u4E2A\u6708"},
         {" 7 days"," 7 \u5929"},
-        {"10 min","10 \u5206\u949f"},
-        {"12 hours","12 \u5c0f\u65f6"},
-        {"30 min","30 \u5206\u949f"},
+        {"10 min","10 \u5206\u949F"},
+        {"12 hours","12 \u5C0F\u65F6"},
+        {"30 min","30 \u5206\u949F"},
         {"<","<"},
         {"<<","<<"},
         {">",">"},
         {"ACTION","ACTION"},
         {"ACTION_INFO","ACTION_INFO"},
-        {"All","\u5168\u90e8"},
-        {"Apply","\u5e94\u7528"},
-        {"Architecture","\u4f53\u7cfb\u7ed3\u6784"},
-        {"Array, OpenType", "\u6570\u7ec4, OpenType"},
-        {"Array, OpenType, Numeric value viewer","\u6570\u7ec4, OpenType, \u6570\u503c\u67e5\u770b\u5668"},
-        {"Attribute","\u5c5e\u6027"},
-        {"Attribute value","\u5c5e\u6027\u503c"},
-        {"Attribute values","\u5c5e\u6027\u503c"},
-        {"Attributes","\u5c5e\u6027"},
-        {"Blank", "\u7a7a\u767d"},
+        {"All","\u5168\u90E8"},
+        {"Apply","\u5E94\u7528"},
+        {"Architecture","\u4F53\u7CFB\u7ED3\u6784"},
+        {"Array, OpenType", "\u6570\u7EC4, OpenType"},
+        {"Array, OpenType, Numeric value viewer","\u6570\u7EC4, OpenType, \u6570\u503C\u67E5\u770B\u5668"},
+        {"Attribute","\u5C5E\u6027"},
+        {"Attribute value","\u5C5E\u6027\u503C"},
+        {"Attribute values","\u5C5E\u6027\u503C"},
+        {"Attributes","\u5C5E\u6027"},
+        {"Blank", "\u7A7A\u767D"},
         {"BlockedCount WaitedCount",
-             "\u963b\u585e\u603b\u6570\uff1a{0}  \u7b49\u5f85\u603b\u6570\uff1a {1}\n"},
-        {"Boot class path","\u5f15\u5bfc\u7c7b\u8def\u5f84"},
-        {"BorderedComponent.moreOrLessButton.toolTip", "\u5207\u6362\u4ee5\u663e\u793a\u8f83\u591a\u4fe1\u606f\u6216\u8f83\u5c11\u4fe1\u606f"},
-        {"CPU Usage","CPU \u4f7f\u7528\u60c5\u51b5"},
-        {"CPUUsageFormat","CPU \u4f7f\u7528\u60c5\u51b5: {0}%"},
-        {"Cancel","\u53d6\u6d88"},
-        {"Cascade", "\u5c42\u53e0"},
-        {"Cascade.mnemonic", 'C'},
-        {"Chart:", "\u56fe\u8868\uff1a"},
-        {"Chart:.mnemonic", 'C'},
-        {"Class path","\u7c7b\u8def\u5f84"},
-        {"Class","\u7c7b"},
-        {"ClassName","\u7c7b\u540d\u79f0"},
-        {"ClassTab.infoLabelFormat", "<html>\u5df2\u52a0\u8f7d: {0}    \u672a\u52a0\u8f7d: {1}    \u603b\u8ba1: {2}</html>"},
-        {"ClassTab.loadedClassesPlotter.accessibleName", "\u5df2\u88c5\u5165\u7c7b\u7684\u56fe\u8868\u3002"},
-        {"Classes","\u7c7b"},
-        {"Close","\u5173\u95ed"},
-        {"Column.Name", "\u540d\u79f0"},
+             "\u603B\u963B\u6B62\u6570: {0}, \u603B\u7B49\u5F85\u6570: {1}\n"},
+        {"Boot class path","\u5F15\u5BFC\u7C7B\u8DEF\u5F84"},
+        {"BorderedComponent.moreOrLessButton.toolTip", "\u5207\u6362\u4EE5\u663E\u793A\u66F4\u591A\u6216\u66F4\u5C11\u4FE1\u606F"},
+        {"CPU Usage","CPU \u5360\u7528\u7387"},
+        {"CPUUsageFormat","CPU \u5360\u7528\u7387: {0}%"},
+        {"Cancel","\u53D6\u6D88"},
+        {"Cascade", "\u7EA7\u8054"},
+        {"Cascade.mnemonic", "C"},
+        {"Chart:", "\u56FE\u8868:"},
+        {"Chart:.mnemonic", "C"},
+        {"Class path","\u7C7B\u8DEF\u5F84"},
+        {"Class","\u7C7B"},
+        {"ClassName","ClassName"},
+        {"ClassTab.infoLabelFormat", "<html>\u5DF2\u52A0\u8F7D: {0}    \u5DF2\u5378\u8F7D: {1}    \u603B\u8BA1: {2}</html>"},
+        {"ClassTab.loadedClassesPlotter.accessibleName", "\u5DF2\u52A0\u8F7D\u7C7B\u7684\u56FE\u8868\u3002"},
+        {"Classes","\u7C7B"},
+        {"Close","\u5173\u95ED"},
+        {"Column.Name", "\u540D\u79F0"},
         {"Column.PID", "PID"},
-        {"Committed memory","\u5206\u914d\u7684\u5185\u5b58"},
-        {"Committed virtual memory","\u5206\u914d\u7684\u865a\u62df\u5185\u5b58"},
-        {"Committed", "\u5206\u914d"},
-        {"Compiler","\u7f16\u8bd1\u5668"},
-        {"CompositeData","\u590d\u5408\u6570\u636e"},
-        {"Config","\u914d\u7f6e"},
-        {"Connect", "\u8fde\u63a5"},
-        {"Connect.mnemonic", 'C'},
-        {"Connect...","\u8fde\u63a5..."},
-        {"ConnectDialog.connectButton.toolTip", "\u8fde\u63a5\u81f3 Java \u865a\u62df\u673a"},
-        {"ConnectDialog.accessibleDescription", "\u7528\u4e8e\u4e0e\u672c\u5730\u6216\u8fdc\u7a0b Java \u865a\u62df\u673a\u5efa\u7acb\u65b0\u8fde\u63a5\u7684\u5bf9\u8bdd\u6846"},
-        {"ConnectDialog.masthead.accessibleName", "\u6807\u9898\u56fe\u5f62"},
-        {"ConnectDialog.masthead.title", "\u65b0\u5efa\u8fde\u63a5"},
-        {"ConnectDialog.statusBar.accessibleName", "\u72b6\u6001\u6761"},
-        {"ConnectDialog.title", "JConsole\uff1a\u65b0\u5efa\u8fde\u63a5"},
-        {"Connected. Click to disconnect.","\u5df2\u8fde\u63a5\u3002\u8bf7\u5355\u51fb\u4ee5\u65ad\u5f00\u8fde\u63a5\u3002"},
-        {"Connection failed","\u8fde\u63a5\u5931\u8d25"},
-        {"Connection", "\u8fde\u63a5"},
-        {"Connection.mnemonic", 'C'},
-        {"Connection name", "\u8fde\u63a5\u540d\u79f0"},
-        {"ConnectionName (disconnected)","{0}\uff08\u5df2\u65ad\u5f00\u8fde\u63a5\uff09"},
-        {"Constructor","\u6784\u9020\u51fd\u6570"},
-        {"Current classes loaded", "\u5f53\u524d\u7c7b\u5df2\u88c5\u5165"},
-        {"Current heap size","\u5f53\u524d\u5806\u5927\u5c0f"},
-        {"Current value","\u5f53\u524d\u503c\uff1a {0}"},
-        {"Create", "\u521b\u5efa"},
-        {"Daemon threads","\u5b88\u62a4\u7ebf\u7a0b"},
-        {"Disconnected. Click to connect.","\u5df2\u65ad\u5f00\u8fde\u63a5\u3002\u8bf7\u5355\u51fb\u4ee5\u8fde\u63a5\u3002"},
-        {"Double click to expand/collapse","\u53cc\u51fb\u4ee5\u5c55\u5f00/\u6298\u53e0"},
-        {"Double click to visualize", "\u53cc\u51fb\u4ee5\u663e\u793a"},
-        {"Description", "\u63cf\u8ff0"},
-        {"Description: ", "\u63cf\u8ff0\uff1a "},
-        {"Descriptor", "\u63cf\u8ff0\u7b26"},
-        {"Details", "\u8be6\u7ec6\u4fe1\u606f"},
-        {"Detect Deadlock", "\u68c0\u6d4b\u5230\u6b7b\u9501"},
-        {"Detect Deadlock.mnemonic", 'D'},
-        {"Detect Deadlock.toolTip", "\u68c0\u6d4b\u5230\u6b7b\u9501\u7684\u7ebf\u7a0b"},
-        {"Dimension is not supported:","\u4e0d\u652f\u6301\u7ef4\uff1a"},
-        {"Discard chart", "\u653e\u5f03\u56fe\u8868"},
-        {"DurationDaysHoursMinutes","{0,choice,1#{0,number,integer} day |1.0<{0,number,integer} days }{1,choice,0<{1,number,integer} hours |1#{1,number,integer} hour |1<{1,number,integer} hours }{2,choice,0<{2,number,integer} minutes|1#{2,number,integer} minute|1.0<{2,number,integer} minutes}"},
+        {"Committed memory","\u63D0\u4EA4\u7684\u5185\u5B58"},
+        {"Committed virtual memory","\u63D0\u4EA4\u7684\u865A\u62DF\u5185\u5B58"},
+        {"Committed", "\u5DF2\u63D0\u4EA4"},
+        {"Compiler","\u7F16\u8BD1\u5668"},
+        {"CompositeData","CompositeData"},
+        {"Config","\u914D\u7F6E"},
+        {"Connect", "\u8FDE\u63A5"},
+        {"Connect.mnemonic", "C"},
+        {"Connect...","\u8FDE\u63A5..."},
+        {"ConnectDialog.connectButton.toolTip", "\u8FDE\u63A5\u5230 Java \u865A\u62DF\u673A"},
+        {"ConnectDialog.accessibleDescription", "\u7528\u4E8E\u4E0E\u672C\u5730\u6216\u8FDC\u7A0B Java \u865A\u62DF\u673A\u5EFA\u7ACB\u65B0\u8FDE\u63A5\u7684\u5BF9\u8BDD\u6846"},
+        {"ConnectDialog.masthead.accessibleName", "\u62A5\u5934\u56FE"},
+        {"ConnectDialog.masthead.title", "\u65B0\u5EFA\u8FDE\u63A5"},
+        {"ConnectDialog.statusBar.accessibleName", "\u72B6\u6001\u680F"},
+        {"ConnectDialog.title", "JConsole: \u65B0\u5EFA\u8FDE\u63A5"},
+        {"Connected. Click to disconnect.","\u5DF2\u8FDE\u63A5\u3002\u5355\u51FB\u53EF\u65AD\u5F00\u8FDE\u63A5\u3002"},
+        {"Connection failed","\u8FDE\u63A5\u5931\u8D25"},
+        {"Connection", "\u8FDE\u63A5"},
+        {"Connection.mnemonic", "C"},
+        {"Connection name", "\u8FDE\u63A5\u540D\u79F0"},
+        {"ConnectionName (disconnected)","{0} (\u5DF2\u65AD\u5F00\u8FDE\u63A5)"},
+        {"Constructor","\u6784\u9020\u5668"},
+        {"Current classes loaded", "\u5DF2\u52A0\u88C5\u5F53\u524D\u7C7B"},
+        {"Current heap size","\u5F53\u524D\u5806\u5927\u5C0F"},
+        {"Current value","\u5F53\u524D\u503C: {0}"},
+        {"Create", "\u521B\u5EFA"},
+        {"Daemon threads","\u5B88\u62A4\u7A0B\u5E8F\u7EBF\u7A0B"},
+        {"Disconnected. Click to connect.","\u5DF2\u65AD\u5F00\u8FDE\u63A5\u3002\u5355\u51FB\u53EF\u8FDE\u63A5\u3002"},
+        {"Double click to expand/collapse","\u53CC\u51FB\u4EE5\u5C55\u5F00/\u9690\u85CF"},
+        {"Double click to visualize", "\u53CC\u51FB\u4EE5\u4F7F\u5176\u53EF\u89C1"},
+        {"Description", "\u8BF4\u660E"},
+        {"Description: ", "\u8BF4\u660E: "},
+        {"Descriptor", "\u63CF\u8FF0\u7B26"},
+        {"Details", "\u8BE6\u7EC6\u8D44\u6599"},
+        {"Detect Deadlock", "\u68C0\u6D4B\u6B7B\u9501"},
+        {"Detect Deadlock.mnemonic", "D"},
+        {"Detect Deadlock.toolTip", "\u68C0\u6D4B\u5904\u4E8E\u6B7B\u9501\u72B6\u6001\u7684\u7EBF\u7A0B"},
+        {"Dimension is not supported:","\u4E0D\u652F\u6301\u7EF4:"},
+        {"Discard chart", "\u653E\u5F03\u56FE\u8868"},
+        {"DurationDaysHoursMinutes","{0,choice,1#{0,number,integer} \u5929 |1.0<{0,number,integer} \u5929 }{1,choice,0<{1,number,integer} \u5C0F\u65F6 |1#{1,number,integer} \u5C0F\u65F6 |1<{1,number,integer} \u5C0F\u65F6 }{2,choice,0<{2,number,integer} \u5206\u949F|1#{2,number,integer} \u5206\u949F|1.0<{2,number,integer} \u5206\u949F}"},
 
-        {"DurationHoursMinutes","{0,choice,1#{0,number,integer} hour |1<{0,number,integer} hours }{1,choice,0<{1,number,integer} minutes|1#{1,number,integer} minute|1.0<{1,number,integer} minutes}"},
+        {"DurationHoursMinutes","{0,choice,1#{0,number,integer} \u5C0F\u65F6 |1<{0,number,integer} \u5C0F\u65F6 }{1,choice,0<{1,number,integer} \u5206\u949F|1#{1,number,integer} \u5206\u949F|1.0<{1,number,integer} \u5206\u949F}"},
 
-        {"DurationMinutes","{0,choice,1#{0,number,integer} minute|1.0<{0,number,integer} minutes}"},
-        {"DurationSeconds","{0} \u79d2"},
-        {"Empty array", "\u7a7a\u6570\u7ec4"},
-        {"Empty opentype viewer", "\u7a7a OpenType \u67e5\u770b\u5668"},
-        {"Error","\u9519\u8bef"},
-        {"Error: MBeans already exist","\u9519\u8bef\uff1aMBean \u5df2\u5b58\u5728"},
-        {"Error: MBeans do not exist","\u9519\u8bef\uff1aMBean \u4e0d\u5b58\u5728"},
-        {"Error:","\u9519\u8bef\uff1a"},
-        {"Event","\u4e8b\u4ef6"},
-        {"Exit", "\u9000\u51fa"},
-        {"Exit.mnemonic", 'x'},
-        {"Fail to load plugin", "\u8b66\u544a: \u65e0\u6cd5\u88c5\u5165\u63d2\u4ef6: {0}"},
-        {"FileChooser.fileExists.cancelOption", "\u53d6\u6d88"},
-        {"FileChooser.fileExists.message", "<html><center>\u6587\u4ef6\u5df2\u5b58\u5728:<br>{0}<br>\u662f\u5426\u8981\u66ff\u6362\uff1f"},
-        {"FileChooser.fileExists.okOption", "\u66ff\u6362"},
-        {"FileChooser.fileExists.title", "\u6587\u4ef6\u5df2\u5b58\u5728"},
-        {"FileChooser.savedFile", "<html>\u5df2\u4fdd\u5b58\u5230\u6587\u4ef6:<br>{0}<br>\uff08{1} \u5b57\u8282\uff09"},
-        {"FileChooser.saveFailed.message", "<html><center>\u4fdd\u5b58\u5230\u6587\u4ef6\u5931\u8d25:<br>{0}<br>{1}"},
-        {"FileChooser.saveFailed.title", "\u4fdd\u5b58\u5931\u8d25"},
-        {"Free physical memory","\u53ef\u7528\u7269\u7406\u5185\u5b58"},
-        {"Free swap space","\u53ef\u7528\u4ea4\u6362\u7a7a\u95f4"},
-        {"Garbage collector","\u5783\u573e\u6536\u96c6\u5668"},
+        {"DurationMinutes","{0,choice,1#{0,number,integer} \u5206\u949F|1.0<{0,number,integer} \u5206\u949F}"},
+        {"DurationSeconds","{0} \u79D2"},
+        {"Empty array", "\u7A7A\u6570\u7EC4"},
+        {"Empty opentype viewer", "\u7A7A opentype \u67E5\u770B\u5668"},
+        {"Error","\u9519\u8BEF"},
+        {"Error: MBeans already exist","\u9519\u8BEF: MBean \u5DF2\u5B58\u5728"},
+        {"Error: MBeans do not exist","\u9519\u8BEF: MBean \u4E0D\u5B58\u5728"},
+        {"Error:","\u9519\u8BEF:"},
+        {"Event","\u4E8B\u4EF6"},
+        {"Exit", "\u9000\u51FA"},
+        {"Exit.mnemonic", "X"},
+        {"Fail to load plugin", "\u8B66\u544A: \u65E0\u6CD5\u52A0\u8F7D\u63D2\u4EF6: {0}"},
+        {"FileChooser.fileExists.cancelOption", "\u53D6\u6D88"},
+        {"FileChooser.fileExists.message", "<html><center>\u6587\u4EF6\u5DF2\u5B58\u5728:<br>{0}<br>\u662F\u5426\u8981\u66FF\u6362?"},
+        {"FileChooser.fileExists.okOption", "\u66FF\u6362"},
+        {"FileChooser.fileExists.title", "\u6587\u4EF6\u5DF2\u5B58\u5728"},
+        {"FileChooser.savedFile", "<html>\u5DF2\u4FDD\u5B58\u5230\u6587\u4EF6:<br>{0}<br>({1} \u5B57\u8282)"},
+        {"FileChooser.saveFailed.message", "<html><center>\u672A\u80FD\u4FDD\u5B58\u5230\u6587\u4EF6:<br>{0}<br>{1}"},
+        {"FileChooser.saveFailed.title", "\u4FDD\u5B58\u5931\u8D25"},
+        {"Free physical memory","\u7A7A\u95F2\u7269\u7406\u5185\u5B58"},
+        {"Free swap space","\u7A7A\u95F2\u4EA4\u6362\u7A7A\u95F4"},
+        {"Garbage collector","\u5783\u573E\u6536\u96C6\u5668"},
         {"GTK","GTK"},
-        {"GcInfo","Name = ''{0}'', Collections = {1,choice,-1#Unavailable|0#{1,number,integer}}, Total time spent = {2}"},
-        {"GC time","GC \u65f6\u95f4"},
-        {"GC time details","{1}\uff08{2} \u9879\u6536\u96c6\uff09\u6240\u7528\u7684\u65f6\u95f4\u4e3a {0}"},
-        {"Heap Memory Usage","\u5806\u5185\u5b58\u4f7f\u7528\u60c5\u51b5"},
+        {"GcInfo","\u540D\u79F0 = ''{0}'', \u6536\u96C6 = {1,choice,-1#Unavailable|0#{1,number,integer}}, \u603B\u82B1\u8D39\u65F6\u95F4 = {2}"},
+        {"GC time","GC \u65F6\u95F4"},
+        {"GC time details","{1}\u4E0A\u7684{0} ({2}\u6536\u96C6)"},
+        {"Heap Memory Usage","\u5806\u5185\u5B58\u4F7F\u7528\u91CF"},
         {"Heap", "\u5806"},
-        {"Help.AboutDialog.accessibleDescription", "\u5305\u542b\u6709\u5173 JConsole \u548c JDK \u7248\u672c\u4fe1\u606f\u7684\u5bf9\u8bdd\u6846"},
-        {"Help.AboutDialog.jConsoleVersion", "JConsole \u7248\u672c:<br>{0}"},
-        {"Help.AboutDialog.javaVersion", "Java VM \u7248\u672c:<br>{0}"},
-        {"Help.AboutDialog.masthead.accessibleName", "\u6807\u9898\u56fe\u5f62"},
-        {"Help.AboutDialog.masthead.title", "\u5173\u4e8e JConsole"},
-        {"Help.AboutDialog.title", "JConsole\uff1a\u5173\u4e8e"},
+        {"Help.AboutDialog.accessibleDescription", "\u5305\u542B\u6709\u5173 JConsole \u548C JDK \u7248\u672C\u4FE1\u606F\u7684\u5BF9\u8BDD\u6846"},
+        {"Help.AboutDialog.jConsoleVersion", "JConsole \u7248\u672C:<br>{0}"},
+        {"Help.AboutDialog.javaVersion", "Java VM \u7248\u672C:<br>{0}"},
+        {"Help.AboutDialog.masthead.accessibleName", "\u62A5\u5934\u56FE"},
+        {"Help.AboutDialog.masthead.title", "\u5173\u4E8E JConsole"},
+        {"Help.AboutDialog.title", "JConsole: \u5173\u4E8E"},
         {"Help.AboutDialog.userGuideLink", "JConsole \u7528\u6237\u6307\u5357:<br>{0}"},
-        {"Help.AboutDialog.userGuideLink.mnemonic", 'U'},
-        {"Help.AboutDialog.userGuideLink.url", "http://java.sun.com/javase/6/docs/technotes/guides/management/MonitoringGuide/toc.html"},
-        {"HelpMenu.About.title", "\u5173\u4e8e JConsole"},
-        {"HelpMenu.About.title.mnemonic", 'A'},
-        {"HelpMenu.UserGuide.title", "\u8054\u673a\u7528\u6237\u6307\u5357"},
-        {"HelpMenu.UserGuide.title.mnemonic", 'U'},
-        {"HelpMenu.title", "\u5e2e\u52a9"},
-        {"HelpMenu.title.mnemonic", 'H'},
-        {"Hotspot MBeans...", "Hotspot MBean..."},
-        {"Hotspot MBeans....mnemonic", 'H'},
-        {"Hotspot MBeans.dialog.accessibleDescription", "\u7528\u4e8e\u7ba1\u7406 Hotspot Mbean \u7684\u5bf9\u8bdd\u6846"},
-        {"Impact","\u5f71\u54cd"},
-        {"Info","\u4fe1\u606f"},
+        {"Help.AboutDialog.userGuideLink.mnemonic", "U"},
+        {"Help.AboutDialog.userGuideLink.url", "http://java.sun.com/javase/6/docs/technotes/guides/management/jconsole.html"},
+        {"HelpMenu.About.title", "\u5173\u4E8E JConsole"},
+        {"HelpMenu.About.title.mnemonic", "A"},
+        {"HelpMenu.UserGuide.title", "\u8054\u673A\u7528\u6237\u6307\u5357"},
+        {"HelpMenu.UserGuide.title.mnemonic", "U"},
+        {"HelpMenu.title", "\u5E2E\u52A9"},
+        {"HelpMenu.title.mnemonic", "H"},
+        {"Hotspot MBeans...", "\u70ED\u70B9 MBean..."},
+        {"Hotspot MBeans....mnemonic", "H"},
+        {"Hotspot MBeans.dialog.accessibleDescription", "\u7528\u4E8E\u7BA1\u7406\u70ED\u70B9 MBean \u7684\u5BF9\u8BDD\u6846"},
+        {"Impact","\u5F71\u54CD"},
+        {"Info","\u4FE1\u606F"},
         {"INFO","INFO"},
-        {"Invalid plugin path", "\u8b66\u544a: \u65e0\u6548\u7684\u63d2\u4ef6\u8def\u5f84: {0}"},
-        {"Invalid URL", "\u65e0\u6548\u7684 URL: {0}"},
-        {"Is","\u4e3a"},
-        {"Java Monitoring & Management Console", "Java \u76d1\u89c6\u548c\u7ba1\u7406\u63a7\u5236\u53f0"},
+        {"Invalid plugin path", "\u8B66\u544A: \u63D2\u4EF6\u8DEF\u5F84\u65E0\u6548: {0}"},
+        {"Invalid URL", "URL \u65E0\u6548: {0}"},
+        {"Is","\u662F"},
+        {"Java Monitoring & Management Console", "Java \u76D1\u89C6\u548C\u7BA1\u7406\u63A7\u5236\u53F0"},
         {"JConsole: ","JConsole: {0}"},
-        {"JConsole version","JConsole \u7248\u672c \"{0}\""},
-        {"JConsole.accessibleDescription", "Java \u76d1\u89c6\u548c\u7ba1\u7406\u63a7\u5236\u53f0"},
-        {"JIT compiler","JIT \u7f16\u8bd1\u5668"},
-        {"Java Virtual Machine","Java \u865a\u62df\u673a"},
+        {"JConsole version","JConsole \u7248\u672C \"{0}\""},
+        {"JConsole.accessibleDescription", "Java \u76D1\u89C6\u548C\u7BA1\u7406\u63A7\u5236\u53F0"},
+        {"JIT compiler","JIT \u7F16\u8BD1\u5668"},
+        {"Java Virtual Machine","Java \u865A\u62DF\u673A"},
         {"Java","Java"},
-        {"Library path","\u5e93\u8def\u5f84"},
-        {"Listeners","\u4fa6\u542c\u5668"},
-        {"Live Threads","\u6d3b\u52a8\u7ebf\u7a0b"},
-        {"Loaded", "\u5df2\u88c5\u5165"},
-        {"Local Process:", "\u672c\u5730\u8fdb\u7a0b:"},
-        {"Local Process:.mnemonic", 'L'},
-        {"Look and Feel","\u5916\u89c2"},
+        {"Library path","\u5E93\u8DEF\u5F84"},
+        {"Listeners","\u76D1\u542C\u7A0B\u5E8F"},
+        {"Live Threads","\u6D3B\u52A8\u7EBF\u7A0B"},
+        {"Loaded", "\u5DF2\u52A0\u8F7D"},
+        {"Local Process:", "\u672C\u5730\u8FDB\u7A0B:"},
+        {"Local Process:.mnemonic", "L"},
+        {"Look and Feel","\u5916\u89C2"},
         {"Masthead.font", "Dialog-PLAIN-25"},
-        {"Management Not Enabled","<b>\u6ce8\u610f</b>\uff1a\u5728\u6b64\u8fdb\u7a0b\u4e2d\u672a\u542f\u7528\u7ba1\u7406\u4ee3\u7406\u3002"},
-        {"Management Will Be Enabled","<b>\u6ce8\u610f</b>\uff1a\u5728\u6b64\u8fdb\u7a0b\u4e2d\u5c06\u542f\u7528\u7ba1\u7406\u4ee3\u7406\u3002"},
+        {"Management Not Enabled","<b>\u6CE8</b>: \u672A\u5BF9\u6B64\u8FDB\u7A0B\u542F\u7528\u7BA1\u7406\u4EE3\u7406\u3002"},
+        {"Management Will Be Enabled","<b>\u6CE8</b>: \u5C06\u5BF9\u6B64\u8FDB\u7A0B\u542F\u7528\u7BA1\u7406\u4EE3\u7406\u3002"},
         {"MBeanAttributeInfo","MBeanAttributeInfo"},
         {"MBeanInfo","MBeanInfo"},
         {"MBeanNotificationInfo","MBeanNotificationInfo"},
         {"MBeanOperationInfo","MBeanOperationInfo"},
         {"MBeans","MBean"},
-        {"MBeansTab.clearNotificationsButton", "\u6e05\u9664(C)"},
-        {"MBeansTab.clearNotificationsButton.mnemonic", 'C'},
-        {"MBeansTab.clearNotificationsButton.toolTip", "\u6e05\u9664\u901a\u77e5"},
-        {"MBeansTab.compositeNavigationMultiple", "\u590d\u5408\u5bfc\u822a {0}/{1}"},
-        {"MBeansTab.compositeNavigationSingle", "\u590d\u5408\u5bfc\u822a"},
-        {"MBeansTab.refreshAttributesButton", "\u5237\u65b0(R)"},
-        {"MBeansTab.refreshAttributesButton.mnemonic", 'R'},
-        {"MBeansTab.refreshAttributesButton.toolTip", "\u5237\u65b0\u5c5e\u6027"},
-        {"MBeansTab.subscribeNotificationsButton", "\u8ba2\u9605(S)"},
-        {"MBeansTab.subscribeNotificationsButton.mnemonic", 'S'},
-        {"MBeansTab.subscribeNotificationsButton.toolTip", "\u5f00\u59cb\u4fa6\u542c\u901a\u77e5"},
-        {"MBeansTab.tabularNavigationMultiple", "\u8868\u683c\u5bfc\u822a {0}/{1}"},
-        {"MBeansTab.tabularNavigationSingle", "\u8868\u683c\u5bfc\u822a"},
-        {"MBeansTab.unsubscribeNotificationsButton", "\u53d6\u6d88\u8ba2\u9605(U)"},
-        {"MBeansTab.unsubscribeNotificationsButton.mnemonic", 'U'},
-        {"MBeansTab.unsubscribeNotificationsButton.toolTip", "\u505c\u6b62\u4fa6\u542c\u901a\u77e5"},
-        {"Manage Hotspot MBeans in: ", "\u7ba1\u7406 Hotspot MBean \u4e8e\uff1a "},
-        {"Max","\u6700\u5927\u503c"},
-        {"Maximum heap size","\u5806\u5927\u5c0f\u7684\u6700\u5927\u503c"},
-        {"Memory","\u5185\u5b58"},
-        {"MemoryPoolLabel", "\u5185\u5b58\u6c60 \"{0}\""},
-        {"MemoryTab.heapPlotter.accessibleName", "\u5806\u7684\u5185\u5b58\u4f7f\u7528\u60c5\u51b5\u56fe\u8868\u3002"},
-        {"MemoryTab.infoLabelFormat", "<html>\u5df2\u4f7f\u7528: {0}    \u5df2\u63d0\u4ea4: {1}    \u6700\u5927\u503c: {2}</html>"},
-        {"MemoryTab.nonHeapPlotter.accessibleName", "\u975e\u5806\u7684\u5185\u5b58\u4f7f\u7528\u60c5\u51b5\u56fe\u8868\u3002"},
-        {"MemoryTab.poolChart.aboveThreshold", "\u5927\u4e8e\u9608\u503c {0}\u3002\n"},
-        {"MemoryTab.poolChart.accessibleName", "\u5185\u5b58\u6c60\u4f7f\u7528\u60c5\u51b5\u56fe\u8868\u3002"},
-        {"MemoryTab.poolChart.belowThreshold", "\u5c0f\u4e8e\u9608\u503c {0}\u3002\n"},
-        {"MemoryTab.poolPlotter.accessibleName", "{0} \u7684\u5185\u5b58\u4f7f\u7528\u60c5\u51b5\u56fe\u8868\u3002"},
-        {"Message","\u6d88\u606f"},
-        {"Method successfully invoked", "\u6210\u529f\u8c03\u7528\u65b9\u6cd5"},
-        {"Minimize All", "\u5168\u90e8\u6700\u5c0f\u5316"},
-        {"Minimize All.mnemonic", 'M'},
-        {"Minus Version", "\u8fd9\u662f {0} \u7248\u672c {1}"},
+        {"MBeansTab.clearNotificationsButton", "\u6E05\u9664"},
+        {"MBeansTab.clearNotificationsButton.mnemonic", "C"},
+        {"MBeansTab.clearNotificationsButton.toolTip", "\u6E05\u9664\u901A\u77E5"},
+        {"MBeansTab.compositeNavigationMultiple", "\u7EC4\u5408\u5BFC\u822A{0}/{1}"},
+        {"MBeansTab.compositeNavigationSingle", "\u7EC4\u5408\u5BFC\u822A"},
+        {"MBeansTab.refreshAttributesButton", "\u5237\u65B0"},
+        {"MBeansTab.refreshAttributesButton.mnemonic", "R"},
+        {"MBeansTab.refreshAttributesButton.toolTip", "\u5237\u65B0\u5C5E\u6027"},
+        {"MBeansTab.subscribeNotificationsButton", "\u8BA2\u9605"},
+        {"MBeansTab.subscribeNotificationsButton.mnemonic", "S"},
+        {"MBeansTab.subscribeNotificationsButton.toolTip", "\u5F00\u59CB\u76D1\u542C\u901A\u77E5"},
+        {"MBeansTab.tabularNavigationMultiple", "\u8868\u683C\u5F0F\u5BFC\u822A{0}/{1}"},
+        {"MBeansTab.tabularNavigationSingle", "\u8868\u683C\u5F0F\u5BFC\u822A"},
+        {"MBeansTab.unsubscribeNotificationsButton", "\u53D6\u6D88\u8BA2\u9605"},
+        {"MBeansTab.unsubscribeNotificationsButton.mnemonic", "U"},
+        {"MBeansTab.unsubscribeNotificationsButton.toolTip", "\u505C\u6B62\u76D1\u542C\u901A\u77E5"},
+        {"Manage Hotspot MBeans in: ", "\u7BA1\u7406\u4EE5\u4E0B\u4F4D\u7F6E\u7684\u70ED\u70B9 MBean: "},
+        {"Max","\u6700\u5927\u503C"},
+        {"Maximum heap size","\u6700\u5927\u5806\u5927\u5C0F"},
+        {"Memory","\u5185\u5B58"},
+        {"MemoryPoolLabel", "\u5185\u5B58\u6C60 \"{0}\""},
+        {"MemoryTab.heapPlotter.accessibleName", "\u5806\u7684\u5185\u5B58\u4F7F\u7528\u91CF\u56FE\u8868\u3002"},
+        {"MemoryTab.infoLabelFormat", "<html>\u5DF2\u7528: {0}    \u5DF2\u63D0\u4EA4: {1}    \u6700\u5927: {2}</html>"},
+        {"MemoryTab.nonHeapPlotter.accessibleName", "\u975E\u5806\u7684\u5185\u5B58\u4F7F\u7528\u91CF\u56FE\u8868\u3002"},
+        {"MemoryTab.poolChart.aboveThreshold", "\u5927\u4E8E{0}\u7684\u9608\u503C\u3002\n"},
+        {"MemoryTab.poolChart.accessibleName", "\u5185\u5B58\u6C60\u4F7F\u7528\u91CF\u56FE\u8868\u3002"},
+        {"MemoryTab.poolChart.belowThreshold", "\u4F4E\u4E8E{0}\u7684\u9608\u503C\u3002\n"},
+        {"MemoryTab.poolPlotter.accessibleName", "{0}\u7684\u5185\u5B58\u4F7F\u7528\u91CF\u56FE\u8868\u3002"},
+        {"Message","\u6D88\u606F"},
+        {"Method successfully invoked", "\u5DF2\u6210\u529F\u8C03\u7528\u65B9\u6CD5"},
+        {"Minimize All", "\u5168\u90E8\u6700\u5C0F\u5316"},
+        {"Minimize All.mnemonic", "M"},
+        {"Minus Version", "\u8FD9\u662F{0}\u7248\u672C {1}"},
         {"Monitor locked",
-             "   - \u5df2\u9501\u5b9a {0}\n"},
-        {"Motif","\u4fee\u6539"},
-        {"Name Build and Mode","{0}\uff08\u5185\u90e8\u7248\u672c {1}\u3001{2}\uff09"},
-        {"Name and Build","{0}\uff08\u5185\u90e8\u7248\u672c {1}\uff09"},
-        {"Name","\u540d\u79f0"},
-        {"Name: ","\u540d\u79f0\uff1a "},
+             "   - \u5DF2\u9501\u5B9A{0}\n"},
+        {"Motif","Motif"},
+        {"Name Build and Mode","{0} (\u5DE5\u4F5C\u7248\u672C {1}, {2})"},
+        {"Name and Build","{0} (\u5DE5\u4F5C\u7248\u672C {1})"},
+        {"Name","\u540D\u79F0"},
+        {"Name: ","\u540D\u79F0: "},
         {"Name State",
-             "\u540d\u79f0\uff1a {0}\n" +
-             "\u72b6\u6001\uff1a {1}\n"},
+             "\u540D\u79F0: {0}\n\u72B6\u6001: {1}\n"},
         {"Name State LockName",
-             "\u540d\u79f0\uff1a {0}\n" +
-             "\u72b6\u6001\uff1a{1} \u5728 {2} \u4e0a\n"},
+             "\u540D\u79F0: {0}\n\u72B6\u6001: {2}\u4E0A\u7684{1}\n"},
         {"Name State LockName LockOwner",
-             "\u540d\u79f0\uff1a {0}\n" +
-             "\u72b6\u6001\uff1a{1} \u5728 {2} \u4e0a\uff0c\u62e5\u6709\u8005\uff1a {3}\n"},
-        {"New Connection...", "\u65b0\u5efa\u8fde\u63a5..."},
-        {"New Connection....mnemonic", 'N'},
-        {"New value applied","\u5df2\u5e94\u7528\u65b0\u503c"},
-        {"No attribute selected","\u672a\u9009\u62e9\u5c5e\u6027"},
-        {"No deadlock detected","\u672a\u68c0\u6d4b\u5230\u6b7b\u9501"},
-        {"No value selected","\u672a\u9009\u62e9\u503c"},
-        {"Non-Heap Memory Usage","\u975e\u5806\u5185\u5b58\u4f7f\u7528\u60c5\u51b5"},
-        {"Non-Heap", "\u975e\u5806"},
-        {"Not Yet Implemented","\u5c1a\u672a\u5b9e\u73b0"},
-        {"Not a valid event broadcaster", "\u4e0d\u662f\u6709\u6548\u7684\u4e8b\u4ef6\u5e7f\u64ad\u5668"},
-        {"Notification","\u901a\u77e5"},
-        {"Notification buffer","\u901a\u77e5\u7f13\u51b2\u533a"},
-        {"Notifications","\u901a\u77e5"},
+             "\u540D\u79F0: {0}\n\u72B6\u6001: {2}\u4E0A\u7684{1}, \u62E5\u6709\u8005: {3}\n"},
+        {"New Connection...", "\u65B0\u5EFA\u8FDE\u63A5..."},
+        {"New Connection....mnemonic", "N"},
+        {"New value applied","\u5DF2\u5E94\u7528\u65B0\u503C"},
+        {"No attribute selected","\u672A\u9009\u62E9\u5C5E\u6027"},
+        {"No deadlock detected","\u672A\u68C0\u6D4B\u5230\u6B7B\u9501"},
+        {"No value selected","\u672A\u9009\u62E9\u503C"},
+        {"Non-Heap Memory Usage","\u975E\u5806\u5185\u5B58\u4F7F\u7528\u91CF"},
+        {"Non-Heap", "\u975E\u5806"},
+        {"Not Yet Implemented","\u5C1A\u672A\u5B9E\u73B0"},
+        {"Not a valid event broadcaster", "\u4E0D\u662F\u6709\u6548\u7684\u4E8B\u4EF6\u5E7F\u64AD\u8005"},
+        {"Notification","\u901A\u77E5"},
+        {"Notification buffer","\u901A\u77E5\u7F13\u51B2\u533A"},
+        {"Notifications","\u901A\u77E5"},
         {"NotifTypes", "NotifTypes"},
-        {"Number of Threads","\u7ebf\u7a0b\u7684\u6570\u76ee"},
-        {"Number of Loaded Classes","\u5df2\u88c5\u5165\u7c7b\u7684\u6570\u76ee"},
-        {"Number of processors","\u5904\u7406\u5668\u7684\u6570\u76ee"},
+        {"Number of Threads","\u7EBF\u7A0B\u6570"},
+        {"Number of Loaded Classes","\u5DF2\u52A0\u8F7D\u7C7B\u6570"},
+        {"Number of processors","\u5904\u7406\u7A0B\u5E8F\u6570"},
         {"ObjectName","ObjectName"},
-        {"Operating System","\u64cd\u4f5c\u7cfb\u7edf"},
-        {"Operation","\u64cd\u4f5c"},
-        {"Operation invocation","\u64cd\u4f5c\u8c03\u7528"},
-        {"Operation return value", "\u64cd\u4f5c\u8fd4\u56de\u503c"},
-        {"Operations","\u64cd\u4f5c"},
-        {"Overview","\u6982\u8ff0"},
-        {"OverviewPanel.plotter.accessibleName", "{0} \u7684\u56fe\u8868\u3002"},
-        {"Parameter", "\u53c2\u6570"},
-        {"Password: ", "\u53e3\u4ee4\uff1a "},
-        {"Password: .mnemonic", 'P'},
-        {"Password.accessibleName", "\u5bc6\u7801"},
-        {"Peak","\u5cf0"},
-        {"Perform GC", "\u6267\u884c GC"},
-        {"Perform GC.mnemonic", 'G'},
-        {"Perform GC.toolTip", "\u8bf7\u6c42\u5783\u573e\u6536\u96c6"},
-        {"Plotter.accessibleName", "\u56fe\u8868"},
+        {"Operating System","\u64CD\u4F5C\u7CFB\u7EDF"},
+        {"Operation","\u64CD\u4F5C"},
+        {"Operation invocation","\u64CD\u4F5C\u8C03\u7528"},
+        {"Operation return value", "\u64CD\u4F5C\u8FD4\u56DE\u503C"},
+        {"Operations","\u64CD\u4F5C"},
+        {"Overview","\u6982\u89C8"},
+        {"OverviewPanel.plotter.accessibleName", "{0}\u7684\u56FE\u8868\u3002"},
+        {"Parameter", "\u53C2\u6570"},
+        {"Password: ", "\u53E3\u4EE4: "},
+        {"Password: .mnemonic", "P"},
+        {"Password.accessibleName", "\u53E3\u4EE4"},
+        {"Peak","\u5CF0\u503C"},
+        {"Perform GC", "\u6267\u884C GC"},
+        {"Perform GC.mnemonic", "G"},
+        {"Perform GC.toolTip", "\u8BF7\u6C42\u5783\u573E\u6536\u96C6"},
+        {"Plotter.accessibleName", "\u56FE\u8868"},
         {"Plotter.accessibleName.keyAndValue", "{0}={1}\n"},
-        {"Plotter.accessibleName.noData", "\u672a\u7ed8\u5236\u6570\u636e\u3002"},
-        {"Plotter.saveAsMenuItem", "\u5c06\u6570\u636e\u53e6\u5b58\u4e3a..."},
-        {"Plotter.saveAsMenuItem.mnemonic", 'a'},
-        {"Plotter.timeRangeMenu", "\u65f6\u95f4\u8303\u56f4"},
-        {"Plotter.timeRangeMenu.mnemonic", 'T'},
-        {"Problem adding listener","\u6dfb\u52a0\u4fa6\u542c\u5668\u65f6\u51fa\u73b0\u95ee\u9898"},
-        {"Problem displaying MBean", "\u663e\u793a MBean \u65f6\u51fa\u73b0\u95ee\u9898"},
-        {"Problem invoking", "\u8c03\u7528\u65f6\u51fa\u73b0\u95ee\u9898"},
-        {"Problem removing listener","\u5220\u9664\u4fa6\u542c\u5668\u65f6\u51fa\u73b0\u95ee\u9898"},
-        {"Problem setting attribute","\u8bbe\u7f6e\u5c5e\u6027\u65f6\u51fa\u73b0\u95ee\u9898"},
-        {"Process CPU time","\u5904\u7406 CPU \u65f6\u95f4"},
-        {"R/W","R/W"},
-        {"Readable","\u53ef\u8bfb"},
-        {"Received","\u5df2\u6536\u5230"},
-        {"Reconnect","\u91cd\u65b0\u8fde\u63a5"},
-        {"Remote Process:", "\u8fdc\u7a0b\u8fdb\u7a0b:"},
-        {"Remote Process:.mnemonic", 'R'},
-        {"Remote Process.textField.accessibleName", "\u8fdc\u7a0b\u8fdb\u7a0b"},
+        {"Plotter.accessibleName.noData", "\u672A\u7ED8\u5236\u6570\u636E\u3002"},
+        {"Plotter.saveAsMenuItem", "\u5C06\u6570\u636E\u53E6\u5B58\u4E3A..."},
+        {"Plotter.saveAsMenuItem.mnemonic", "A"},
+        {"Plotter.timeRangeMenu", "\u65F6\u95F4\u8303\u56F4"},
+        {"Plotter.timeRangeMenu.mnemonic", "T"},
+        {"Problem adding listener","\u6DFB\u52A0\u76D1\u542C\u7A0B\u5E8F\u65F6\u51FA\u73B0\u95EE\u9898"},
+        {"Problem displaying MBean", "\u663E\u793A MBean \u65F6\u51FA\u73B0\u95EE\u9898"},
+        {"Problem invoking", "\u8C03\u7528\u65F6\u51FA\u73B0\u95EE\u9898"},
+        {"Problem removing listener","\u5220\u9664\u76D1\u542C\u7A0B\u5E8F\u65F6\u51FA\u73B0\u95EE\u9898"},
+        {"Problem setting attribute","\u8BBE\u7F6E\u5C5E\u6027\u65F6\u51FA\u73B0\u95EE\u9898"},
+        {"Process CPU time","\u8FDB\u7A0B CPU \u65F6\u95F4"},
+        {"R/W","\u8BFB\u5199"},
+        {"Readable","\u53EF\u8BFB"},
+        {"Received","\u6536\u5230"},
+        {"Reconnect","\u91CD\u65B0\u8FDE\u63A5"},
+        {"Remote Process:", "\u8FDC\u7A0B\u8FDB\u7A0B:"},
+        {"Remote Process:.mnemonic", "R"},
+        {"Remote Process.textField.accessibleName", "\u8FDC\u7A0B\u8FDB\u7A0B"},
         {"Remove","\u5220\u9664"},
-        {"Restore All", "\u5168\u90e8\u6062\u590d"},
-        {"Restore All.mnemonic", 'R'},
-        {"Return value", "\u8fd4\u56de\u503c"},
+        {"Restore All", "\u5168\u90E8\u8FD8\u539F"},
+        {"Restore All.mnemonic", "R"},
+        {"Return value", "\u8FD4\u56DE\u503C"},
         {"ReturnType", "ReturnType"},
-        {"SeqNum","\u5e8f\u5217\u53f7"},
-        {"Size Bytes", "{0,number,integer} \u5b57\u8282"},
-        {"Size Gb","{0} Gb"},
-        {"Size Kb","{0} Kb"},
-        {"Size Mb","{0} Mb"},
-        {"Source","\u6e90"},
+        {"SeqNum","SeqNum"},
+        {"Size Bytes", "{0,number,integer} \u5B57\u8282"},
+        {"Size Gb","{0} GB"},
+        {"Size Kb","{0} KB"},
+        {"Size Mb","{0} MB"},
+        {"Source","\u6E90"},
         {"Stack trace",
-             "\n\u5806\u6808\u8ffd\u8e2a\uff1a \n"},
-        {"Success:","\u6210\u529f\uff1a"},
+              "\n\u5806\u6808\u8DDF\u8E2A: \n"},
+        {"Success:","\u6210\u529F:"},
         // Note: SummaryTab.headerDateTimeFormat can be one the following:
         // 1. A combination of two styles for date and time, using the
         //    constants from class DateFormat: SHORT, MEDIUM, LONG, FULL.
@@ -356,85 +353,75 @@
         //    of the class SimpleDateFormat.
         //    Example: "yyyy-MM-dd HH:mm:ss" or "M/d/yyyy h:mm:ss a"
         {"SummaryTab.headerDateTimeFormat", "FULL,FULL"},
-        {"SummaryTab.pendingFinalization.label", "\u6682\u6302\u7ed3\u675f\u64cd\u4f5c"},
-        {"SummaryTab.pendingFinalization.value", "{0} \u4e2a\u5bf9\u8c61"},
-        {"SummaryTab.tabName", "VM \u6458\u8981"},
-        {"SummaryTab.vmVersion","{0} \u7248\u672c {1}"},
-        {"TabularData are not supported", "\u4e0d\u652f\u6301\u8868\u683c\u5f0f\u6570\u636e"},
-        {"Threads","\u7ebf\u7a0b"},
-        {"ThreadTab.infoLabelFormat", "<html>\u6d3b\u52a8: {0}    \u5cf0\u503c: {1}    \u603b\u8ba1: {2}</html>"},
-        {"ThreadTab.threadInfo.accessibleName", "\u7ebf\u7a0b\u4fe1\u606f"},
-        {"ThreadTab.threadPlotter.accessibleName", "\u7ebf\u7a0b\u6570\u76ee\u56fe\u8868\u3002"},
-        {"Threshold","\u9608\u503c"},
-        {"Tile", "\u5e73\u94fa"},
-        {"Tile.mnemonic", 'T'},
-        {"Time Range:", "\u65f6\u95f4\u8303\u56f4\uff1a"},
-        {"Time Range:.mnemonic", 'T'},
-        {"Time", "\u65f6\u95f4"},
-        {"TimeStamp","\u65f6\u95f4\u6233"},
-        {"Total Loaded", "\u5df2\u88c5\u5165\u7684\u603b\u6570"},
-        {"Total classes loaded","\u5df2\u88c5\u5165\u7c7b\u7684\u603b\u6570"},
-        {"Total classes unloaded","\u5df2\u5378\u8f7d\u7c7b\u7684\u603b\u6570"},
-        {"Total compile time","\u7f16\u8bd1\u603b\u65f6\u95f4"},
-        {"Total physical memory","\u7269\u7406\u5185\u5b58\u603b\u91cf"},
-        {"Total threads started","\u5df2\u542f\u52a8\u7684\u7ebf\u7a0b\u603b\u6570"},
-        {"Total swap space","\u4ea4\u6362\u7a7a\u95f4\u603b\u91cf"},
-        {"Type","\u7c7b\u578b"},
-        {"Unavailable","\u4e0d\u53ef\u7528"},
-        {"UNKNOWN","\u672a\u77e5"},
-        {"Unknown Host","\u672a\u77e5\u4e3b\u673a: {0}"},
-        {"Unregister", "\u672a\u6ce8\u518c"},
-        {"Uptime","\u6b63\u5e38\u8fd0\u884c\u65f6\u95f4"},
-        {"Uptime: ","\u6b63\u5e38\u8fd0\u884c\u65f6\u95f4\uff1a "},
-        {"Usage Threshold","\u4f7f\u7528\u9608\u503c"},
-        {"remoteTF.usage","<b>\u7528\u6cd5</b>: &lt;hostname&gt;:&lt;port&gt; \u6216 service:jmx:&lt;protocol&gt;:&lt;sap&gt;"},
-        {"Used","\u5df2\u4f7f\u7528"},
-        {"Username: ", "\u7528\u6237\u540d: "},
-        {"Username: .mnemonic", 'U'},
-        {"Username.accessibleName", "\u7528\u6237\u540d"},
-        {"UserData","\u7528\u6237\u6570\u636e"},
-        {"Virtual Machine","\u865a\u62df\u673a"},
-        {"VM arguments","VM \u53c2\u6570"},
+        {"SummaryTab.pendingFinalization.label", "\u6682\u6302\u6700\u7EC8\u5904\u7406"},
+        {"SummaryTab.pendingFinalization.value", "{0}\u5BF9\u8C61"},
+        {"SummaryTab.tabName", "VM \u6982\u8981"},
+        {"SummaryTab.vmVersion","{0}\u7248\u672C {1}"},
+        {"TabularData are not supported", "\u4E0D\u652F\u6301 TabularData"},
+        {"Threads","\u7EBF\u7A0B"},
+        {"ThreadTab.infoLabelFormat", "<html>\u6D3B\u52A8: {0}    \u5CF0\u503C: {1}    \u603B\u8BA1: {2}</html>"},
+        {"ThreadTab.threadInfo.accessibleName", "\u7EBF\u7A0B\u4FE1\u606F"},
+        {"ThreadTab.threadPlotter.accessibleName", "\u8868\u793A\u7EBF\u7A0B\u6570\u7684\u56FE\u8868\u3002"},
+        {"Threshold","\u9608\u503C"},
+        {"Tile", "\u5E73\u94FA"},
+        {"Tile.mnemonic", "T"},
+        {"Time Range:", "\u65F6\u95F4\u8303\u56F4:"},
+        {"Time Range:.mnemonic", "T"},
+        {"Time", "\u65F6\u95F4"},
+        {"TimeStamp","TimeStamp"},
+        {"Total Loaded", "\u52A0\u8F7D\u603B\u6570"},
+        {"Total classes loaded","\u5DF2\u52A0\u8F7D\u7C7B\u603B\u6570"},
+        {"Total classes unloaded","\u5DF2\u5378\u8F7D\u7C7B\u603B\u6570"},
+        {"Total compile time","\u603B\u7F16\u8BD1\u65F6\u95F4"},
+        {"Total physical memory","\u603B\u7269\u7406\u5185\u5B58"},
+        {"Total threads started","\u542F\u52A8\u7684\u7EBF\u7A0B\u603B\u6570"},
+        {"Total swap space","\u603B\u4EA4\u6362\u7A7A\u95F4"},
+        {"Type","\u7C7B\u578B"},
+        {"Unavailable","\u4E0D\u53EF\u7528"},
+        {"UNKNOWN","UNKNOWN"},
+        {"Unknown Host","\u672A\u77E5\u4E3B\u673A: {0}"},
+        {"Unregister", "\u6CE8\u9500"},
+        {"Uptime","\u8FD0\u884C\u65F6\u95F4"},
+        {"Uptime: ","\u8FD0\u884C\u65F6\u95F4: "},
+        {"Usage Threshold","\u7528\u6CD5\u9608\u503C"},
+        {"remoteTF.usage","<b>\u7528\u6CD5</b>: &lt;hostname&gt;:&lt;port&gt; \u6216 service:jmx:&lt;protocol&gt;:&lt;sap&gt;"},
+        {"Used","\u5DF2\u7528"},
+        {"Username: ", "\u7528\u6237\u540D: "},
+        {"Username: .mnemonic", "U"},
+        {"Username.accessibleName", "\u7528\u6237\u540D"},
+        {"UserData","UserData"},
+        {"Virtual Machine","\u865A\u62DF\u673A"},
+        {"VM arguments","VM \u53C2\u6570"},
         {"VM","VM"},
-        {"VMInternalFrame.accessibleDescription", "\u7528\u4e8e\u76d1\u89c6 Java \u865a\u62df\u673a\u7684\u5185\u90e8\u6846\u67b6"},
-        {"Value","\u503c"},
-        {"Vendor", "\u4f9b\u5e94\u5546"},
-        {"Verbose Output","\u8be6\u7ec6\u8f93\u51fa"},
-        {"Verbose Output.toolTip", "\u4e3a\u7c7b\u88c5\u5165\u7cfb\u7edf\u542f\u7528\u8be6\u7ec6\u8f93\u51fa"},
-        {"View value", "\u67e5\u770b\u503c"},
-        {"View","\u89c6\u56fe"},
-        {"Window", "\u7a97\u53e3"},
-        {"Window.mnemonic", 'W'},
-        {"Windows","\u7a97\u53e3"},
-        {"Writable","\u53ef\u5199"},
-        {"You cannot drop a class here", "\u60a8\u4e0d\u80fd\u5c06\u7c7b\u653e\u5728\u6b64\u5904"},
-        {"collapse", "\u6298\u53e0"},
-        {"connectionFailed1","\u8fde\u63a5\u5931\u8d25\uff1a\u662f\u5426\u91cd\u8bd5\uff1f"},
-        {"connectionFailed2","\u4e0e {0} \u7684\u8fde\u63a5\u672a\u6210\u529f\u3002<br>\u662f\u5426\u8981\u91cd\u8bd5\uff1f"},
-        {"connectionLost1","\u8fde\u63a5\u65ad\u5f00\uff1a\u662f\u5426\u91cd\u65b0\u8fde\u63a5\uff1f"},
-        {"connectionLost2","\u4e0e {0} \u7684\u8fde\u63a5\u5df2\u65ad\u5f00\u539f\u56e0\u662f\u5df2\u7ec8\u6b62\u8fdc\u7a0b\u8fdb\u7a0b\u3002<br>\u662f\u5426\u8981\u91cd\u65b0\u8fde\u63a5\uff1f"},
-        {"connectingTo1","\u6b63\u5728\u8fde\u63a5\u81f3 {0}"},
-        {"connectingTo2","\u5f53\u524d\u6b63\u5728\u8fde\u63a5\u81f3 {0}\u3002<br>\u8fd9\u5c06\u4f1a\u82b1\u8d39\u4e00\u4e9b\u65f6\u95f4\u3002"},
-        {"deadlockAllTab","\u5168\u90e8"},
-        {"deadlockTab","\u6b7b\u9501"},
-        {"deadlockTabN","\u6b7b\u9501 {0}"},
-        {"expand", "\u5c55\u5f00"},
-        {"kbytes","{0} Kb"},
-        {"operation","\u64cd\u4f5c"},
-        {"plot", "\u7ed8\u56fe"},
-        {"visualize","\u663e\u793a"},
+        {"VMInternalFrame.accessibleDescription", "\u7528\u4E8E\u76D1\u89C6 Java \u865A\u62DF\u673A\u7684\u5185\u90E8\u6846\u67B6"},
+        {"Value","\u503C"},
+        {"Vendor", "\u5382\u5546"},
+        {"Verbose Output","\u8BE6\u7EC6\u8F93\u51FA"},
+        {"Verbose Output.toolTip", "\u4E3A\u7C7B\u52A0\u8F7D\u7CFB\u7EDF\u542F\u7528\u8BE6\u7EC6\u8F93\u51FA"},
+        {"View value", "\u89C6\u56FE\u503C"},
+        {"View","\u89C6\u56FE"},
+        {"Window", "\u7A97\u53E3"},
+        {"Window.mnemonic", "W"},
+        {"Windows","Windows"},
+        {"Writable","\u53EF\u5199"},
+        {"You cannot drop a class here", "\u65E0\u6CD5\u5220\u9664\u6B64\u5904\u7684\u7C7B"},
+        {"collapse", "\u9690\u85CF"},
+        {"connectionFailed1","\u8FDE\u63A5\u5931\u8D25: \u662F\u5426\u91CD\u8BD5?"},
+        {"connectionFailed2","\u672A\u6210\u529F\u8FDE\u63A5\u5230{0}\u3002<br>\u662F\u5426\u8981\u91CD\u8BD5?"},
+        {"connectionLost1","\u8FDE\u63A5\u4E22\u5931: \u662F\u5426\u91CD\u65B0\u8FDE\u63A5?"},
+        {"connectionLost2","\u7531\u4E8E\u8FDC\u7A0B\u8FDB\u7A0B\u5DF2\u7EC8\u6B62, \u4E0E{0}\u7684\u8FDE\u63A5\u4E22\u5931\u3002<br>\u662F\u5426\u8981\u91CD\u65B0\u8FDE\u63A5?"},
+        {"connectingTo1","\u6B63\u5728\u8FDE\u63A5\u5230{0}"},
+        {"connectingTo2","\u60A8\u5F53\u524D\u6B63\u5728\u8FDE\u63A5\u5230{0}\u3002<br>\u8FD9\u5C06\u9700\u8981\u51E0\u5206\u949F\u7684\u65F6\u95F4\u3002"},
+        {"deadlockAllTab","\u5168\u90E8"},
+        {"deadlockTab","\u6B7B\u9501"},
+        {"deadlockTabN","\u6B7B\u9501{0}"},
+        {"expand", "\u5C55\u5F00"},
+        {"kbytes","{0} KB"},
+        {"operation","\u64CD\u4F5C"},
+        {"plot", "\u7ED8\u56FE"},
+        {"visualize","\u53EF\u89C6\u5316"},
         {"zz usage text",
-             "\u7528\u6cd5: {0} [ -interval=n ] [ -notile ] [ -pluginpath <path> ] [ -version ] [ connection ...]\n\n" +
-             "  -interval   \u5c06\u66f4\u65b0\u95f4\u9694\u65f6\u95f4\u8bbe\u7f6e\u4e3a n \u79d2\uff08\u9ed8\u8ba4\u503c\u4e3a 4 \u79d2\uff09\n" +
-             "  -notile     \u6700\u521d\u4e0d\u5e73\u94fa\u663e\u793a\u7a97\u53e3\uff08\u5bf9\u4e8e\u4e24\u4e2a\u6216\u66f4\u591a\u8fde\u63a5\uff09\n" +
-             "  -pluginpath \u6307\u5b9a jconsole \u7528\u4e8e\u67e5\u627e\u63d2\u4ef6\u7684\u8def\u5f84\n" +
-             "  -version    \u8f93\u51fa\u7a0b\u5e8f\u7248\u672c\n\n" +
-             "  connection = pid || host:port || JMX URL (service:jmx:<protocol>://...)\n" +
-             "  pid       \u76ee\u6807\u8fdb\u7a0b\u7684\u8fdb\u7a0b ID\n" +
-             "  host      \u8fdc\u7a0b\u4e3b\u673a\u540d\u6216 IP \u5730\u5740\n" +
-             "  port      \u7528\u4e8e\u8fdc\u7a0b\u8fde\u63a5\u7684\u7aef\u53e3\u53f7\n\n" +
-             "  -J          \u5bf9\u6b63\u5728\u8fd0\u884c jconsole \u7684 Java \u865a\u62df\u673a\u6307\u5b9a\n" +
-             "            \u8f93\u5165\u53c2\u6570"},
+             "\u7528\u6CD5: {0} [ -interval=n ] [ -notile ] [ -pluginpath <path> ] [ -version ] [ connection ... ]\n\n  -interval   \u5C06\u66F4\u65B0\u95F4\u9694\u8BBE\u7F6E\u4E3A n \u79D2 (\u9ED8\u8BA4\u503C\u4E3A 4 \u79D2)\n  -notile     \u521D\u59CB\u4E0D\u5E73\u94FA\u7A97\u53E3 (\u5BF9\u4E8E\u4E24\u4E2A\u6216\u591A\u4E2A\u8FDE\u63A5)\n  -pluginpath \u6307\u5B9A jconsole \u7528\u4E8E\u67E5\u627E\u63D2\u4EF6\u7684\u8DEF\u5F84\n  -version    \u8F93\u51FA\u7A0B\u5E8F\u7248\u672C\n\n  connection = pid || host:port || JMX URL (service:jmx:<\u534F\u8BAE>://...)\n  pid         \u76EE\u6807\u8FDB\u7A0B\u7684\u8FDB\u7A0B ID\n  host        \u8FDC\u7A0B\u4E3B\u673A\u540D\u6216 IP \u5730\u5740\n  port        \u8FDC\u7A0B\u8FDE\u63A5\u7684\u7AEF\u53E3\u53F7\n\n  -J          \u6307\u5B9A\u8FD0\u884C jconsole \u7684 Java \u865A\u62DF\u673A\n              \u7684\u8F93\u5165\u53C2\u6570"},
         // END OF MATERIAL TO LOCALIZE
         };
 
--- a/jdk/src/share/classes/sun/tools/native2ascii/resources/MsgNative2ascii_ja.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/tools/native2ascii/resources/MsgNative2ascii_ja.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2010, 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
@@ -30,12 +30,13 @@
 public class MsgNative2ascii_ja extends ListResourceBundle {
 
     public Object[][] getContents() {
-        return new Object[][] {
-        {"err.bad.arg", "-encoding \u306b\u306f\u3001\u5f15\u6570\u304c\u5fc5\u8981\u3067\u3059\u3002"},
-        {"err.cannot.read",  "{0} \u3092\u8aad\u307f\u8fbc\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002"},
-        {"err.cannot.write", "{0} \u306b\u66f8\u304d\u8fbc\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002"},
-        {"usage", "\u4f7f\u3044\u65b9: native2ascii" +
-         " [-reverse] [-encoding encoding] [inputfile [outputfile]]"},
+        Object[][] temp = new Object[][] {
+        {"err.bad.arg", "-encoding\u306B\u306F\u5F15\u6570\u304C\u5FC5\u8981\u3067\u3059"},
+        {"err.cannot.read",  "{0}\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F\u3002"},
+        {"err.cannot.write", "{0}\u3092\u66F8\u304D\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F\u3002"},
+        {"usage", "\u4F7F\u7528\u65B9\u6CD5: native2ascii [-reverse] [-encoding encoding] [inputfile [outputfile]]"},
         };
+
+        return temp;
     }
 }
--- a/jdk/src/share/classes/sun/tools/native2ascii/resources/MsgNative2ascii_zh_CN.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/tools/native2ascii/resources/MsgNative2ascii_zh_CN.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2010, 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
@@ -30,12 +30,13 @@
 public class MsgNative2ascii_zh_CN extends ListResourceBundle {
 
     public Object[][] getContents() {
-        return new Object[][] {
-        {"err.bad.arg", "-encoding \u9700\u8981\u53c2\u6570"},
-        {"err.cannot.read",  "\u65e0\u6cd5\u8bfb\u53d6 {0}\u3002"},
-        {"err.cannot.write", "\u65e0\u6cd5\u5199\u5165 {0}\u3002"},
-        {"usage", "\u7528\u6cd5\uff1anative2ascii" +
-         " [-reverse] [-encoding \u7f16\u7801] [\u8f93\u5165\u6587\u4ef6 [\u8f93\u51fa\u6587\u4ef6]]"},
+        Object[][] temp = new Object[][] {
+        {"err.bad.arg", "-encoding \u9700\u8981\u53C2\u6570"},
+        {"err.cannot.read",  "\u65E0\u6CD5\u8BFB\u53D6{0}\u3002"},
+        {"err.cannot.write", "\u65E0\u6CD5\u5199\u5165{0}\u3002"},
+        {"usage", "\u7528\u6CD5: native2ascii [-reverse] [-encoding encoding] [inputfile [outputfile]]"},
         };
+
+        return temp;
     }
 }
--- a/jdk/src/share/classes/sun/tools/serialver/serialver_ja.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/tools/serialver/serialver_ja.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,19 +1,13 @@
-SerialVersionInspector=\u30b7\u30ea\u30a2\u30eb\u30d0\u30fc\u30b8\u30e7\u30f3\u30a4\u30f3\u30b9\u30da\u30af\u30bf
-File=\u30d5\u30a1\u30a4\u30eb
-Exit=\u7d42\u4e86
-Show=\u8868\u793a
-FullClassName=\u5b8c\u5168\u30af\u30e9\u30b9\u540d:
-SerialVersion=\u30b7\u30ea\u30a2\u30eb\u30d0\u30fc\u30b8\u30e7\u30f3
-NotSerializable=\
-	\u30af\u30e9\u30b9 {0} \u306f\u76f4\u5217\u5316\u3067\u304d\u307e\u305b\u3093\u3002
-ClassNotFound=\u30af\u30e9\u30b9 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
-error.parsing.classpath=\
-	\u30af\u30e9\u30b9\u30d1\u30b9 {0} \u306e\u89e3\u6790\u30a8\u30e9\u30fc\u3067\u3059\u3002
-error.missing.classpath=\
-	-classpath \u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u5f15\u6570\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093
-invalid.flag=\
-	\u7121\u52b9\u306a\u30d5\u30e9\u30b0 {0}
-ignoring.classes=\
-	-show \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u6301\u3064\u30af\u30e9\u30b9\u5f15\u6570\u3092\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093
-usage=\
-	\u4f7f\u3044\u65b9: serialver [-classpath classpath] [-show] [classname...]
+SerialVersionInspector=\u30B7\u30EA\u30A2\u30EB\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3\u30FB\u30A4\u30F3\u30B9\u30DA\u30AF\u30BF
+File=\u30D5\u30A1\u30A4\u30EB
+Exit=\u7D42\u4E86
+Show=\u8868\u793A
+FullClassName=\u5B8C\u5168\u30AF\u30E9\u30B9\u540D:
+SerialVersion=\u30B7\u30EA\u30A2\u30EB\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3:
+NotSerializable=\u30AF\u30E9\u30B9{0}\u306F\u76F4\u5217\u5316\u3067\u304D\u307E\u305B\u3093\u3002
+ClassNotFound=\u30AF\u30E9\u30B9{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
+error.parsing.classpath=\u30AF\u30E9\u30B9\u30D1\u30B9{0}\u306E\u89E3\u6790\u30A8\u30E9\u30FC\u3067\u3059\u3002
+error.missing.classpath=-classpath\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5F15\u6570\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
+invalid.flag=\u7121\u52B9\u306A\u30D5\u30E9\u30B0{0}\u3002
+ignoring.classes=-show\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6301\u3064\u30AF\u30E9\u30B9\u5F15\u6570\u3092\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093
+usage=\u4F7F\u7528\u65B9\u6CD5: serialver [-classpath classpath] [-show] [classname...]
--- a/jdk/src/share/classes/sun/tools/serialver/serialver_zh_CN.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/tools/serialver/serialver_zh_CN.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,20 +1,13 @@
-SerialVersionInspector=\u5e8f\u5217\u7248\u672c\u68c0\u67e5\u5668
-File=\u6587\u4ef6
-Exit=\u9000\u51fa
-Show=\u663e\u793a
-FullClassName=\u5b8c\u6574\u7684\u7c7b\u540d\uff1a
-SerialVersion=\u5e8f\u5217\u7248\u672c\uff1a
-NotSerializable=\
-	\u7c7b {0} \u65e0\u6cd5\u5e8f\u5217\u5316\u3002
-ClassNotFound=\
-	\u672a\u627e\u5230\u7c7b {0}\u3002
-error.parsing.classpath=\
-	\u89e3\u6790\u7c7b\u8def\u5f84 {0} \u65f6\u51fa\u9519\u3002
-error.missing.classpath=\
-	\u7f3a\u5c11 -classpath \u9009\u9879\u7684\u53c2\u6570
-invalid.flag=\
-	\u65e0\u6548\u6807\u5fd7 {0}\u3002
-ignoring.classes=\
-	\u65e0\u6cd5\u4f7f\u7528 -show \u9009\u9879\u6307\u5b9a\u7c7b\u53c2\u6570
-usage=\
-	\u7528\u6cd5\uff1aserialver [-classpath \u7c7b\u8def\u5f84] [-show] [\u7c7b\u540d\u79f0...]
+SerialVersionInspector=\u5E8F\u5217\u7248\u672C\u68C0\u67E5\u5668
+File=\u6587\u4EF6
+Exit=\u9000\u51FA
+Show=\u663E\u793A
+FullClassName=\u5B8C\u6574\u7684\u7C7B\u540D:
+SerialVersion=\u5E8F\u5217\u7248\u672C:
+NotSerializable=\u7C7B{0}\u65E0\u6CD5\u5E8F\u5217\u5316\u3002
+ClassNotFound=\u627E\u4E0D\u5230\u7C7B{0}\u3002
+error.parsing.classpath=\u5BF9\u7C7B\u8DEF\u5F84 {0} \u8FDB\u884C\u8BED\u6CD5\u5206\u6790\u65F6\u51FA\u9519\u3002
+error.missing.classpath=\u7F3A\u5C11 -classpath \u9009\u9879\u7684\u53C2\u6570
+invalid.flag=\u65E0\u6548\u6807\u8BB0{0}\u3002
+ignoring.classes=\u65E0\u6CD5\u4F7F\u7528 -show \u9009\u9879\u6307\u5B9A\u7C7B\u53C2\u6570
+usage=\u7528\u6CD5: serialver [-classpath \u7C7B\u8DEF\u5F84] [-show] [\u7C7B\u540D\u79F0...]
--- a/jdk/src/share/classes/sun/util/locale/LanguageTag.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/util/locale/LanguageTag.java	Wed Jul 05 17:35:13 2017 +0200
@@ -421,11 +421,11 @@
         String region = baseLocale.getRegion();
         String variant = baseLocale.getVariant();
 
+        boolean hasSubtag = false;
+
         String privuseVar = null;   // store ill-formed variant subtags
 
-        if (language.length() == 0 || !isLanguage(language)) {
-            tag._language = UNDETERMINED;
-        } else {
+        if (language.length() > 0 && isLanguage(language)) {
             // Convert a deprecated language code used by Java to
             // a new code
             if (language.equals("iw")) {
@@ -440,10 +440,12 @@
 
         if (script.length() > 0 && isScript(script)) {
             tag._script = canonicalizeScript(script);
+            hasSubtag = true;
         }
 
         if (region.length() > 0 && isRegion(region)) {
             tag._region = canonicalizeRegion(region);
+            hasSubtag = true;
         }
 
         // Special handling for no_NO_NY - use nn_NO for language tag
@@ -468,6 +470,7 @@
             }
             if (variants != null) {
                 tag._variants = variants;
+                hasSubtag = true;
             }
             if (!varitr.isDone()) {
                 // ill-formed variant subtags
@@ -508,6 +511,7 @@
 
         if (extensions != null) {
             tag._extensions = extensions;
+            hasSubtag = true;
         }
 
         // append ill-formed variant subtags to private use
@@ -521,8 +525,12 @@
 
         if (privateuse != null) {
             tag._privateuse = privateuse;
-        } else if (tag._language.length() == 0) {
-            // use "und" if neither language nor privateuse is available
+        }
+
+        if (tag._language.length() == 0 && (hasSubtag || privateuse == null)) {
+            // use lang "und" when 1) no language is available AND
+            // 2) any of other subtags other than private use are available or
+            // no private use tag is available
             tag._language = UNDETERMINED;
         }
 
--- a/jdk/src/share/classes/sun/util/logging/resources/logging_de.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/util/logging/resources/logging_de.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 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
@@ -25,13 +25,13 @@
 
 # Localizations for Level names.  For the US locale
 # these are the same as the non-localized level name.
-ALL=ALLE
-SEVERE=SCHWERWIEGEND
-WARNING=WARNUNG
+ALL=ALL
+SEVERE=SEVERE
+WARNING=WARNING
 INFO=INFO
-CONFIG= KONFIG
-FINE=FEIN
-FINER=FEINER
-FINEST=AM FEINSTEN
+CONFIG= CONFIG
+FINE=FINE
+FINER=FINER
+FINEST=FINEST
 OFF=OFF
 
--- a/jdk/src/share/classes/sun/util/logging/resources/logging_es.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/util/logging/resources/logging_es.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 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
@@ -25,13 +25,13 @@
 
 # Localizations for Level names.  For the US locale
 # these are the same as the non-localized level name.
-ALL=TODO
-SEVERE=GRAVE
-WARNING=ADVERTENCIA
+ALL=ALL
+SEVERE=SEVERE
+WARNING=WARNING
 INFO=INFO
 CONFIG= CONFIG
-FINE=FINA
-FINER=M\u00c1S FINA
-FINEST=LA M\u00c1S FINA
-OFF=APAGADO
+FINE=FINE
+FINER=FINER
+FINEST=FINEST
+OFF=OFF
 
--- a/jdk/src/share/classes/sun/util/logging/resources/logging_fr.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/util/logging/resources/logging_fr.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 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
@@ -25,13 +25,13 @@
 
 # Localizations for Level names.  For the US locale
 # these are the same as the non-localized level name.
-ALL=TOUS
-SEVERE=GRAVE
-WARNING=ATTENTION
+ALL=ALL
+SEVERE=SEVERE
+WARNING=WARNING
 INFO=INFO
 CONFIG= CONFIG
-FINE=FIN
-FINER=PLUS FIN
-FINEST=LE PLUS FIN
-OFF=AUCUN
+FINE=FINE
+FINER=FINER
+FINEST=FINEST
+OFF=OFF
 
--- a/jdk/src/share/classes/sun/util/logging/resources/logging_it.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/util/logging/resources/logging_it.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 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
@@ -25,13 +25,13 @@
 
 # Localizations for Level names.  For the US locale
 # these are the same as the non-localized level name.
-ALL=TUTTO
-SEVERE=GRAVE
-WARNING=AVVERTENZA
+ALL=ALL
+SEVERE=SEVERE
+WARNING=WARNING
 INFO=INFO
 CONFIG= CONFIG
 FINE=FINE
-FINER=MOLTO FINE
-FINEST=FINISSIMO
+FINER=FINER
+FINEST=FINEST
 OFF=OFF
 
--- a/jdk/src/share/classes/sun/util/logging/resources/logging_ja.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/util/logging/resources/logging_ja.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 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
@@ -26,12 +26,12 @@
 # Localizations for Level names.  For the US locale
 # these are the same as the non-localized level name.
 ALL=\u3059\u3079\u3066
-SEVERE=\u81f4\u547d\u7684
-WARNING=\u8b66\u544a
-INFO=\u60c5\u5831
-CONFIG= \u8a2d\u5b9a
-FINE=\u8a73\u7d30\u30ec\u30d9\u30eb (\u4f4e)
-FINER=\u8a73\u7d30\u30ec\u30d9\u30eb (\u4e2d)
-FINEST=\u8a73\u7d30\u30ec\u30d9\u30eb (\u9ad8)
-OFF=\u30aa\u30d5
+SEVERE=SEVERE
+WARNING=WARNING
+INFO=\u60C5\u5831
+CONFIG= CONFIG
+FINE=\u8A73\u7D30\u30EC\u30D9\u30EB(\u4F4E)
+FINER=FINER
+FINEST=FINEST
+OFF=\u30AA\u30D5
 
--- a/jdk/src/share/classes/sun/util/logging/resources/logging_ko.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/util/logging/resources/logging_ko.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 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
@@ -25,13 +25,13 @@
 
 # Localizations for Level names.  For the US locale
 # these are the same as the non-localized level name.
-ALL=\ubaa8\ub450
-SEVERE=\uc2ec\uac01
-WARNING=\uacbd\uace0
-INFO=\uc815\ubcf4
-CONFIG= \uad6c\uc131
-FINE=\uc790\uc138\ud788
-FINER=\ub354 \uc790\uc138\ud788
-FINEST=\uc544\uc8fc \uc790\uc138\ud788
-OFF=\uc124\uc815\ud574\uc81c
+ALL=ALL
+SEVERE=SEVERE
+WARNING=WARNING
+INFO=INFO
+CONFIG= CONFIG
+FINE=FINE
+FINER=FINER
+FINEST=FINEST
+OFF=OFF
 
--- a/jdk/src/share/classes/sun/util/logging/resources/logging_pt_BR.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/util/logging/resources/logging_pt_BR.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 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
@@ -25,13 +25,13 @@
 
 # Localizations for Level names.  For the US locale
 # these are the same as the non-localized level name.
-ALL=TODOS
-SEVERE=GRAVE
-WARNING=AVISO
+ALL=TUDO
+SEVERE=SEVERE
+WARNING=WARNING
 INFO=INFO
 CONFIG= CONFIG
-FINE=BOM
-FINER=MUITO BOM
-FINEST=EXCELENTE
+FINE=FINE
+FINER=FINER
+FINEST=FINEST
 OFF=OFF
 
--- a/jdk/src/share/classes/sun/util/logging/resources/logging_sv.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/util/logging/resources/logging_sv.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 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
@@ -26,12 +26,12 @@
 # Localizations for Level names.  For the US locale
 # these are the same as the non-localized level name.
 ALL=ALLA
-SEVERE=ALLVARLIG
-WARNING=VARNING
+SEVERE=SEVERE
+WARNING=WARNING
 INFO=INFO
-CONFIG= KONFIG
+CONFIG= CONFIG
 FINE=FIN
-FINER=FINARE
-FINEST=FINAST
+FINER=FINER
+FINEST=FINEST
 OFF=AV
 
--- a/jdk/src/share/classes/sun/util/logging/resources/logging_zh_CN.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/util/logging/resources/logging_zh_CN.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 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
@@ -25,13 +25,13 @@
 
 # Localizations for Level names.  For the US locale
 # these are the same as the non-localized level name.
-ALL=\u5168\u90e8
-SEVERE=\u4e25\u91cd
-WARNING=\u8b66\u544a
-INFO=\u4fe1\u606f
-CONFIG= \u914d\u7f6e
-FINE=\u826f\u597d
-FINER=\u8f83\u597d
-FINEST=\u6700\u597d
-OFF=\u5173\u95ed
+ALL=ALL
+SEVERE=SEVERE
+WARNING=WARNING
+INFO=INFO
+CONFIG= CONFIG
+FINE=FINE
+FINER=FINER
+FINEST=FINEST
+OFF=OFF
 
--- a/jdk/src/share/classes/sun/util/logging/resources/logging_zh_TW.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/classes/sun/util/logging/resources/logging_zh_TW.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2001, 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
@@ -26,12 +26,12 @@
 # Localizations for Level names.  For the US locale
 # these are the same as the non-localized level name.
 ALL=\u6240\u6709
-SEVERE=\u56b4\u91cd\u7684
-WARNING=\u8b66\u544a
-INFO=\u8cc7\u8a0a
-CONFIG= \u914d\u7f6e
-FINE=\u7d30\u7dfb
-FINER=\u66f4\u7d30\u7dfb
-FINEST=\u6700\u7d30\u7dfb
-OFF=\u95dc\u9589
+SEVERE=SEVERE
+WARNING=WARNING
+INFO=\u8CC7\u8A0A
+CONFIG= CONFIG
+FINE=\u7D30\u7DFB
+FINER=FINER
+FINEST=FINEST
+OFF=\u95DC\u9589
 
--- a/jdk/src/share/demo/jfc/CodePointIM/resources/codepoint_ja.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/demo/jfc/CodePointIM/resources/codepoint_ja.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -2,8 +2,5 @@
 # Resource strings for CodePointIM
 #
 
-warning=\
-\u3053\u308c\u306f\u30c7\u30e2\u7528\u306e\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9\u3067\u3059\u3002\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3068\u3057\u3066\u5358\u4f53\u3067\u5b9f\u884c\u3059\u308b\n\
-\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u3053\u306e\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9\u306e\u4f7f\u3044\u65b9\u306b\u3064\u3044\u3066\u306f\u3001\u3053\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\n\
-\u306b\u3042\u308b README_ja.html \u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
+warning=\u3053\u308C\u306F\u30C7\u30E2\u7528\u306E\u5165\u529B\u30E1\u30BD\u30C3\u30C9\u3067\u3059\u3002\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3068\u3057\u3066\u5358\u4F53\u3067\u5B9F\u884C\u3059\u308B\n\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\u3053\u306E\u5165\u529B\u30E1\u30BD\u30C3\u30C9\u306E\u4F7F\u7528\u65B9\u6CD5\u306B\u3064\u3044\u3066\u306F\u3001\u3053\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\n\u306B\u3042\u308BREADME.html\u3092\u3054\u89A7\u304F\u3060\u3055\u3044\u3002
 
--- a/jdk/src/share/demo/jfc/CodePointIM/resources/codepoint_zh_CN.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/demo/jfc/CodePointIM/resources/codepoint_zh_CN.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -2,8 +2,5 @@
 # Resource strings for CodePointIM
 #
 
-warning=\
-\u8fd9\u662f\u6f14\u793a\u8f93\u5165\u6cd5\uff1b\u4e0d\u80fd\u5c06\u5176\u76f4\u63a5\u4f5c\u4e3a\u5e94\u7528\u7a0b\u5e8f\u6765\u8fd0\u884c\u3002\n\
-\u8bf7\u9605\u8bfb\u6b64\u76ee\u5f55\u4e2d\u7684 README_zh_CN.html \u6587\u4ef6\u4ee5\u4e86\u89e3\u5982\u4f55\u4f7f\u7528\n\
-\u6b64\u8f93\u5165\u6cd5\u3002
+warning=\u8FD9\u662F\u6F14\u793A\u8F93\u5165\u6CD5; \u4E0D\u80FD\u5C06\u5176\u76F4\u63A5\u4F5C\u4E3A\u5E94\u7528\u7A0B\u5E8F\u6765\u8FD0\u884C\u3002\n\u8BF7\u9605\u8BFB\u6B64\u76EE\u5F55\u4E2D\u7684 README.html \u6587\u4EF6\u4EE5\u4E86\u89E3\u5982\u4F55\u4F7F\u7528\n\u6B64\u8F93\u5165\u6CD5\u3002
 
--- a/jdk/src/share/demo/jfc/Font2DTest/resources/TextResources_ja.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/demo/jfc/Font2DTest/resources/TextResources_ja.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,1 +1,1 @@
-string=Java 2D \u3067\u3059\u3002(\u30c7\u30d5\u30a9\u30eb\u30c8)
+string=Java 2D\u3067\u3059\u3002(\u30C7\u30D5\u30A9\u30EB\u30C8)
--- a/jdk/src/share/demo/jfc/Font2DTest/resources/TextResources_zh_CN.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/demo/jfc/Font2DTest/resources/TextResources_zh_CN.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,1 +1,1 @@
-string=\u8fd9\u662f Java 2D\uff01\uff08\u9ed8\u8ba4\u503c\uff09
+string=\u8FD9\u662F Java 2D! (\u9ED8\u8BA4\u503C)
--- a/jdk/src/share/demo/jfc/Notepad/resources/Notepad_ja.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/demo/jfc/Notepad/resources/Notepad_ja.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,15 +1,15 @@
 #
 # Resource strings for Notepad example
 
-Title=\u30e1\u30e2\u5e33
-ElementTreeFrameTitle=\u8981\u7d20
+Title=\u30E1\u30E2\u5E33
+ElementTreeFrameTitle=\u8981\u7D20
 ViewportBackingStore=false
 
 # menubar definition
 #
 # Each of the strings that follow form a key to be 
 # used to the actual menu definition.
-menubar=file edit debug
+menubar=\u30D5\u30A1\u30A4\u30EB \u7DE8\u96C6 \u30C7\u30D0\u30C3\u30B0
 
 # file Menu definition
 #
@@ -20,15 +20,15 @@
 # new  ->  Notepad.newAction
 # save ->  Notepad.saveAction
 # exit ->  Notepad.exitAction
-file=new open save - exit
-fileLabel=\u30d5\u30a1\u30a4\u30eb
-openLabel=\u958b\u304f
+file=\u65B0\u898F \u958B\u304F \u4FDD\u5B58 - \u7D42\u4E86
+fileLabel=\u30D5\u30A1\u30A4\u30EB
+openLabel=\u958B\u304F
 openImage=resources/open.gif
-newLabel=\u65b0\u898f
+newLabel=\u65B0\u898F
 newImage=resources/new.gif
-saveLabel=\u4fdd\u5b58
+saveLabel=\u4FDD\u5B58
 saveImage=resources/save.gif
-exitLabel=\u7d42\u4e86
+exitLabel=\u7D42\u4E86
 
 #
 # edit Menu definition
@@ -36,30 +36,30 @@
 # cut   -> JTextComponent.cutAction
 # copy  -> JTextComponent.copyAction
 # paste -> JTextComponent.pasteAction
-edit=cut copy paste - undo redo
-editLabel=\u7de8\u96c6
-cutLabel=\u30ab\u30c3\u30c8
+edit=\u5207\u53D6\u308A \u30B3\u30D4\u30FC \u8CBC\u4ED8\u3051 - \u5143\u306B\u623B\u3059 \u518D\u5B9F\u884C
+editLabel=\u7DE8\u96C6
+cutLabel=\u5207\u53D6\u308A
 cutAction=cut-to-clipboard
 cutImage=resources/cut.gif
-copyLabel=\u30b3\u30d4\u30fc
+copyLabel=\u30B3\u30D4\u30FC
 copyAction=copy-to-clipboard
 copyImage=resources/copy.gif
-pasteLabel=\u30da\u30fc\u30b9\u30c8
+pasteLabel=\u8CBC\u4ED8\u3051
 pasteAction=paste-from-clipboard
 pasteImage=resources/paste.gif
-undoLabel=\u5143\u306b\u623b\u3059
-undoAction=Undo
-redoLabel=\u518d\u5b9f\u884c
-redoAction=Redo
+undoLabel=\u5143\u306B\u623B\u3059
+undoAction=\u5143\u306B\u623B\u3059
+redoLabel=\u518D\u5B9F\u884C
+redoAction=\u518D\u5B9F\u884C
 
 #
 # debug Menu definition
 #
-debug=dump showElementTree
-debugLabel=\u30c7\u30d0\u30c3\u30b0
-dumpLabel=\u30e2\u30c7\u30eb\u3092 System.err \u306b\u30c0\u30f3\u30d7
+debug=showElementTree\u306E\u30C0\u30F3\u30D7
+debugLabel=\u30C7\u30D0\u30C3\u30B0
+dumpLabel=\u30E2\u30C7\u30EB\u3092System.err\u306B\u30C0\u30F3\u30D7
 dumpAction=dump-model
-showElementTreeLabel=\u8981\u7d20\u3092\u8868\u793a
+showElementTreeLabel=\u8981\u7D20\u306E\u8868\u793A
 
 # toolbar definition
 #
@@ -67,10 +67,10 @@
 # used as the basis of the tool definition.  Actions
 # are of course sharable, and in this case are shared
 # with the menu items.
-toolbar=new open save - cut copy paste
-newTooltip=\u30d5\u30a1\u30a4\u30eb\u3092\u65b0\u898f\u4f5c\u6210\u3059\u308b
-openTooltip=\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f
-saveTooltip=\u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58
-cutTooltip=\u9078\u629e\u3092\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u306b\u79fb\u52d5
-copyTooltip=\u9078\u629e\u3092\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u306b\u30b3\u30d4\u30fc
-pasteTooltip=\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u3092\u9078\u629e\u306b\u30da\u30fc\u30b9\u30c8
+toolbar=\u65B0\u898F \u958B\u304F \u4FDD\u5B58 - \u5207\u53D6\u308A \u30B3\u30D4\u30FC \u8CBC\u4ED8\u3051
+newTooltip=\u30D5\u30A1\u30A4\u30EB\u3092\u65B0\u898F\u4F5C\u6210\u3059\u308B
+openTooltip=\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F
+saveTooltip=\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58
+cutTooltip=\u9078\u629E\u3092\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u306B\u79FB\u52D5
+copyTooltip=\u9078\u629E\u3092\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u306B\u30B3\u30D4\u30FC
+pasteTooltip=\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u3092\u9078\u629E\u306B\u8CBC\u4ED8\u3051
--- a/jdk/src/share/demo/jfc/Notepad/resources/Notepad_zh_CN.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/demo/jfc/Notepad/resources/Notepad_zh_CN.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -1,8 +1,8 @@
 #
 # Resource strings for Notepad example
 
-Title=\u5199\u5b57\u677f
-ElementTreeFrameTitle=\u5143\u7d20
+Title=\u8BB0\u4E8B\u672C
+ElementTreeFrameTitle=\u5143\u7D20
 ViewportBackingStore=false
 
 # menubar definition
@@ -21,14 +21,14 @@
 # save ->  Notepad.saveAction
 # exit ->  Notepad.exitAction
 file=new open save - exit
-fileLabel=\u6587\u4ef6
-openLabel=\u6253\u5f00
+fileLabel=\u6587\u4EF6
+openLabel=\u6253\u5F00
 openImage=resources/open.gif
-newLabel=\u65b0\u5efa
+newLabel=\u65B0\u5EFA
 newImage=resources/new.gif
-saveLabel=\u4fdd\u5b58
+saveLabel=\u4FDD\u5B58
 saveImage=resources/save.gif
-exitLabel=\u9000\u51fa
+exitLabel=\u9000\u51FA
 
 #
 # edit Menu definition
@@ -37,29 +37,29 @@
 # copy  -> JTextComponent.copyAction
 # paste -> JTextComponent.pasteAction
 edit=cut copy paste - undo redo
-editLabel=\u7f16\u8f91
-cutLabel=\u526a\u5207
+editLabel=\u7F16\u8F91
+cutLabel=\u526A\u5207
 cutAction=cut-to-clipboard
 cutImage=resources/cut.gif
-copyLabel=\u62f7\u8d1d
+copyLabel=\u590D\u5236
 copyAction=copy-to-clipboard
 copyImage=resources/copy.gif
-pasteLabel=\u7c98\u8d34
+pasteLabel=\u7C98\u8D34
 pasteAction=paste-from-clipboard
 pasteImage=resources/paste.gif
-undoLabel=\u64a4\u6d88
-undoAction=Undo
-redoLabel=\u91cd\u505a
-redoAction=Redo
+undoLabel=\u64A4\u6D88
+undoAction=\u64A4\u6D88
+redoLabel=\u91CD\u505A
+redoAction=\u91CD\u505A
 
 #
 # debug Menu definition
 #
 debug=dump showElementTree
-debugLabel=\u8c03\u8bd5
-dumpLabel=\u5c06\u6a21\u5f0f\u8f6c\u50a8\u5230System.err
+debugLabel=\u8C03\u8BD5
+dumpLabel=\u5C06\u6A21\u578B\u8F6C\u50A8\u5230 System.err
 dumpAction=dump-model
-showElementTreeLabel=\u663e\u793a\u5143\u7d20
+showElementTreeLabel=\u663E\u793A\u5143\u7D20
 
 # toolbar definition
 #
@@ -68,9 +68,9 @@
 # are of course sharable, and in this case are shared
 # with the menu items.
 toolbar=new open save - cut copy paste
-newTooltip=\u521b\u5efa\u65b0\u6587\u4ef6
-openTooltip=\u6253\u5f00\u6587\u4ef6
-saveTooltip=\u4fdd\u5b58\u6587\u4ef6
-cutTooltip=\u526a\u5207\u9009\u62e9\u7684\u5185\u5bb9\u5230\u526a\u5e16\u677f\u4e2d
-copyTooltip=\u62f7\u8d1d\u9009\u62e9\u7684\u5185\u5bb9\u5230\u526a\u5e16\u677f\u4e2d
-pasteTooltip=\u7c98\u8d34\u9009\u62e9\u7684\u5185\u5bb9\u5230\u526a\u5e16\u677f\u4e2d
+newTooltip=\u521B\u5EFA\u65B0\u6587\u4EF6
+openTooltip=\u6253\u5F00\u6587\u4EF6
+saveTooltip=\u4FDD\u5B58\u6587\u4EF6
+cutTooltip=\u526A\u5207\u9009\u5B9A\u5185\u5BB9\u5230\u526A\u5E16\u677F\u4E2D
+copyTooltip=\u590D\u5236\u9009\u5B9A\u5185\u5BB9\u5230\u526A\u5E16\u677F\u4E2D
+pasteTooltip=\u7C98\u8D34\u9009\u5B9A\u5185\u5BB9\u5230\u526A\u5E16\u677F\u4E2D
--- a/jdk/src/share/demo/nio/zipfs/Demo.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/demo/nio/zipfs/Demo.java	Wed Jul 05 17:35:13 2017 +0200
@@ -33,6 +33,7 @@
 import java.nio.*;
 import java.nio.channels.*;
 import java.nio.file.*;
+import java.nio.file.spi.*;
 import java.nio.file.attribute.*;
 import java.net.*;
 import java.text.DateFormat;
@@ -144,78 +145,76 @@
     }
 
     public static void main(String[] args) throws Throwable {
+        FileSystemProvider provider = getZipFSProvider();
+        if (provider == null) {
+            System.err.println("ZIP filesystem provider is not installed");
+            System.exit(1);
+        }
 
         Action action = Action.valueOf(args[0]);
         Map<String, Object> env = env = new HashMap<>();
         if (action == Action.create)
             env.put("create", "true");
-        if (action == Action.tlist || action == Action.twalk)
-            env.put("buildDirTree", true);
-        FileSystem fs = FileSystems.newFileSystem(Paths.get(args[1]), env, null);
-
-        try {
-            FileSystem fs2;
+        try (FileSystem fs = provider.newFileSystem(Paths.get(args[1]), env)) {
             Path path, src, dst;
             boolean isRename = false;
             switch (action) {
             case rename:
                 src = fs.getPath(args[2]);
                 dst = fs.getPath(args[3]);
-                src.moveTo(dst);
+                Files.move(src, dst);
                 break;
             case moveout:
                 src = fs.getPath(args[2]);
                 dst = Paths.get(args[3]);
-                src.moveTo(dst);
+                Files.move(src, dst);
                 break;
             case movein:
                 src = Paths.get(args[2]);
                 dst = fs.getPath(args[3]);
-                src.moveTo(dst);
+                Files.move(src, dst);
                 break;
             case copy:
                 src = fs.getPath(args[2]);
                 dst = fs.getPath(args[3]);
-                src.copyTo(dst);
+                Files.copy(src, dst);
                 break;
             case copyout:
                 src = fs.getPath(args[2]);
                 dst = Paths.get(args[3]);
-                src.copyTo(dst);
+                Files.copy(src, dst);
                 break;
             case copyin:
                 src = Paths.get(args[2]);
                 dst = fs.getPath(args[3]);
-                src.copyTo(dst);
+                Files.copy(src, dst);
                 break;
             case copyin_attrs:
                 src = Paths.get(args[2]);
                 dst = fs.getPath(args[3]);
-                src.copyTo(dst, COPY_ATTRIBUTES);
+                Files.copy(src, dst, COPY_ATTRIBUTES);
                 break;
             case copyout_attrs:
                 src = fs.getPath(args[2]);
                 dst = Paths.get(args[3]);
-                src.copyTo(dst, COPY_ATTRIBUTES);
+                Files.copy(src, dst, COPY_ATTRIBUTES);
                 break;
             case zzmove:
-                fs2 = FileSystems.newFileSystem(Paths.get(args[2]), env, null);
-                //sf1.getPath(args[3]).moveTo(fs2.getPath(args[3]));
-                z2zmove(fs, fs2, args[3]);
-                fs2.close();
+                try (FileSystem fs2 = provider.newFileSystem(Paths.get(args[2]), env)) {
+                    z2zmove(fs, fs2, args[3]);
+                }
                 break;
             case zzcopy:
-                fs2 = FileSystems.newFileSystem(Paths.get(args[2]), env, null);
-                //sf1.getPath(args[3]).copyTo(fs2.getPath(args[3]));
-                z2zcopy(fs, fs2, args[3]);
-                fs2.close();
+                try (FileSystem fs2 = provider.newFileSystem(Paths.get(args[2]), env)) {
+                    z2zcopy(fs, fs2, args[3]);
+                }
                 break;
             case attrs:
                 for (int i = 2; i < args.length; i++) {
                     path = fs.getPath(args[i]);
                     System.out.println(path);
                     System.out.println(
-                        Attributes.readBasicFileAttributes(path).toString());
+                        Files.readAttributes(path, BasicFileAttributes.class).toString());
                 }
                 break;
             case setmtime:
@@ -223,10 +222,10 @@
                 Date newDatetime = df.parse(args[2]);
                 for (int i = 3; i < args.length; i++) {
                     path = fs.getPath(args[i]);
-                    path.setAttribute("lastModifiedTime",
-                                      FileTime.fromMillis(newDatetime.getTime()));
+                    Files.setAttribute(path, "lastModifiedTime",
+                                       FileTime.fromMillis(newDatetime.getTime()));
                     System.out.println(
-                        Attributes.readBasicFileAttributes(path).toString());
+                        Files.readAttributes(path, BasicFileAttributes.class).toString());
                 }
                 break;
             case setctime:
@@ -234,10 +233,10 @@
                 newDatetime = df.parse(args[2]);
                 for (int i = 3; i < args.length; i++) {
                     path = fs.getPath(args[i]);
-                    path.setAttribute("creationTime",
-                                      FileTime.fromMillis(newDatetime.getTime()));
+                    Files.setAttribute(path, "creationTime",
+                                       FileTime.fromMillis(newDatetime.getTime()));
                     System.out.println(
-                        Attributes.readBasicFileAttributes(path).toString());
+                        Files.readAttributes(path, BasicFileAttributes.class).toString());
                 }
                 break;
             case setatime:
@@ -245,25 +244,22 @@
                 newDatetime = df.parse(args[2]);
                 for (int i = 3; i < args.length; i++) {
                     path = fs.getPath(args[i]);
-                    path.setAttribute("lastAccessTime",
-                                      FileTime.fromMillis(newDatetime.getTime()));
+                    Files.setAttribute(path, "lastAccessTime",
+                                       FileTime.fromMillis(newDatetime.getTime()));
                     System.out.println(
-                        Attributes.readBasicFileAttributes(path).toString());
+                        Files.readAttributes(path, BasicFileAttributes.class).toString());
                 }
                 break;
             case attrsspace:
                 path = fs.getPath("/");
-                FileStore fstore = path.getFileStore();
-                //System.out.println(fstore.getFileStoreAttributeView(FileStoreSpaceAttributeView.class)
-                //                         .readAttributes());
-                // or
+                FileStore fstore = Files.getFileStore(path);
                 System.out.printf("filestore[%s]%n", fstore.name());
                 System.out.printf("    totalSpace: %d%n",
-                                  (Long)fstore.getAttribute("space:totalSpace"));
+                                  (Long)fstore.getAttribute("totalSpace"));
                 System.out.printf("   usableSpace: %d%n",
-                                  (Long)fstore.getAttribute("space:usableSpace"));
+                                  (Long)fstore.getAttribute("usableSpace"));
                 System.out.printf("  unallocSpace: %d%n",
-                                  (Long)fstore.getAttribute("space:unallocatedSpace"));
+                                  (Long)fstore.getAttribute("unallocatedSpace"));
                 break;
             case list:
             case tlist:
@@ -293,7 +289,7 @@
                 break;
             case delete:
                 for (int i = 2; i < args.length; i++)
-                    fs.getPath(args[i]).delete();
+                    Files.delete(fs.getPath(args[i]));
                 break;
             case create:
             case add:
@@ -305,17 +301,19 @@
             case lsdir:
                 path = fs.getPath(args[2]);
                 final String fStr = (args.length > 3)?args[3]:"";
-                DirectoryStream<Path> ds = path.newDirectoryStream(
+                try (DirectoryStream<Path> ds = Files.newDirectoryStream(path,
                     new DirectoryStream.Filter<Path>() {
                         public boolean accept(Path path) {
                             return path.toString().contains(fStr);
                         }
-                    });
-                for (Path p : ds)
-                    System.out.println(p);
+                    }))
+                {
+                    for (Path p : ds)
+                        System.out.println(p);
+                }
                 break;
             case mkdir:
-                fs.getPath(args[2]).createDirectory();
+                Files.createDirectory(fs.getPath(args[2]));
                 break;
             case mkdirs:
                 mkdirs(fs.getPath(args[2]));
@@ -326,14 +324,14 @@
                     System.out.printf("%n%s%n", path);
                     System.out.println("-------(1)---------");
                     System.out.println(
-                        Attributes.readBasicFileAttributes(path).toString());
+                        Files.readAttributes(path, BasicFileAttributes.class).toString());
                     System.out.println("-------(2)---------");
-                    Map<String, ?> map = path.readAttributes("zip:*");
-                    for (Map.Entry<String, ?> e : map.entrySet()) {
+                    Map<String, Object> map = Files.readAttributes(path, "zip:*");
+                    for (Map.Entry<String, Object> e : map.entrySet()) {
                         System.out.printf("    %s : %s%n", e.getKey(), e.getValue());
                     }
                     System.out.println("-------(3)---------");
-                    map = path.readAttributes("size,lastModifiedTime,isDirectory");
+                    map = Files.readAttributes(path, "size,lastModifiedTime,isDirectory");
                     for (Map.Entry<String, ?> e : map.entrySet()) {
                         System.out.printf("    %s : %s%n", e.getKey(), e.getValue());
                     }
@@ -349,12 +347,17 @@
             }
         } catch (Exception x) {
             x.printStackTrace();
-        } finally {
-            if (fs != null)
-                fs.close();
         }
     }
 
+    private static FileSystemProvider getZipFSProvider() {
+        for (FileSystemProvider provider : FileSystemProvider.installedProviders()) {
+            if ("jar".equals(provider.getScheme()))
+                return provider;
+        }
+        return null;
+    }
+
     private static byte[] getBytes(String name) {
         return name.getBytes();
     }
@@ -380,7 +383,7 @@
                                                  BasicFileAttributes attrs)
                 {
                     indent();
-                    System.out.printf("%s%n", file.getName().toString());
+                    System.out.printf("%s%n", file.getFileName().toString());
                     return FileVisitResult.CONTINUE;
                 }
 
@@ -406,35 +409,35 @@
 
     private static void update(FileSystem fs, String path) throws Throwable{
         Path src = FileSystems.getDefault().getPath(path);
-        if (Boolean.TRUE.equals(src.getAttribute("isDirectory"))) {
-            DirectoryStream<Path> ds = src.newDirectoryStream();
-            for (Path child : ds)
-                update(fs, child.toString());
-            ds.close();
+        if (Files.isDirectory(src)) {
+            try (DirectoryStream<Path> ds = Files.newDirectoryStream(src)) {
+                for (Path child : ds)
+                    update(fs, child.toString());
+            }
         } else {
             Path dst = fs.getPath(path);
             Path parent = dst.getParent();
-            if (parent != null && parent.notExists())
+            if (parent != null && Files.notExists(parent))
                 mkdirs(parent);
-            src.copyTo(dst, REPLACE_EXISTING);
+            Files.copy(src, dst, REPLACE_EXISTING);
         }
     }
 
     private static void extract(FileSystem fs, String path) throws Throwable{
         Path src = fs.getPath(path);
-        if (Boolean.TRUE.equals(src.getAttribute("isDirectory"))) {
-            DirectoryStream<Path> ds = src.newDirectoryStream();
-            for (Path child : ds)
-                extract(fs, child.toString());
-            ds.close();
+        if (Files.isDirectory(src)) {
+            try (DirectoryStream<Path> ds = Files.newDirectoryStream(src)) {
+                for (Path child : ds)
+                    extract(fs, child.toString());
+            }
         } else {
             if (path.startsWith("/"))
                 path = path.substring(1);
             Path dst = FileSystems.getDefault().getPath(path);
             Path parent = dst.getParent();
-            if (parent.notExists())
+            if (Files.notExists(parent))
                 mkdirs(parent);
-            src.copyTo(dst, REPLACE_EXISTING);
+            Files.copy(src, dst, REPLACE_EXISTING);
         }
     }
 
@@ -445,21 +448,21 @@
         Path srcPath = src.getPath(path);
         Path dstPath = dst.getPath(path);
 
-        if (Boolean.TRUE.equals(srcPath.getAttribute("isDirectory"))) {
-            if (!dstPath.exists()) {
+        if (Files.isDirectory(srcPath)) {
+            if (!Files.exists(dstPath)) {
                 try {
                     mkdirs(dstPath);
                 } catch (FileAlreadyExistsException x) {}
             }
-            DirectoryStream<Path> ds = srcPath.newDirectoryStream();
-            for (Path child : ds) {
-                z2zcopy(src, dst,
-                        path + (path.endsWith("/")?"":"/") + child.getName());
+            try (DirectoryStream<Path> ds = Files.newDirectoryStream(srcPath)) {
+                for (Path child : ds) {
+                    z2zcopy(src, dst,
+                            path + (path.endsWith("/")?"":"/") + child.getFileName());
+                }
             }
-            ds.close();
         } else {
             //System.out.println("copying..." + path);
-            srcPath.copyTo(dstPath);
+            Files.copy(srcPath, dstPath);
         }
     }
 
@@ -480,9 +483,9 @@
                 dst = dstPath.resolve(dst);
                 try {
                     Path parent = dstPath.getParent();
-                    if (parent != null && parent.notExists())
+                    if (parent != null && Files.notExists(parent))
                         mkdirs(parent);
-                    file.moveTo(dst);
+                    Files.move(file, dst);
                 } catch (IOException x) {
                     x.printStackTrace();
                 }
@@ -497,7 +500,7 @@
                 dst = dstPath.resolve(dst);
                 try {
 
-                    if (dst.notExists())
+                    if (Files.notExists(dst))
                         mkdirs(dst);
                 } catch (IOException x) {
                     x.printStackTrace();
@@ -511,7 +514,7 @@
                 throws IOException
             {
                 try {
-                    dir.delete();
+                    Files.delete(dir);
                 } catch (IOException x) {
                     //x.printStackTrace();
                 }
@@ -525,15 +528,15 @@
         path = path.toAbsolutePath();
         Path parent = path.getParent();
         if (parent != null) {
-            if (parent.notExists())
+            if (Files.notExists(parent))
                 mkdirs(parent);
         }
-        path.createDirectory();
+        Files.createDirectory(path);
     }
 
     private static void rmdirs(Path path) throws IOException {
         while (path != null && path.getNameCount() != 0) {
-            path.delete();
+            Files.delete(path);
             path = path.getParent();
         }
     }
@@ -542,15 +545,15 @@
         if (!"/".equals(path.toString())) {
            System.out.printf("  %s%n", path.toString());
            if (verbose)
-                System.out.println(Attributes.readBasicFileAttributes(path).toString());
+                System.out.println(Files.readAttributes(path, BasicFileAttributes.class).toString());
         }
-        if (path.notExists())
+        if (Files.notExists(path))
             return;
-        if (Attributes.readBasicFileAttributes(path).isDirectory()) {
-            DirectoryStream<Path> ds = path.newDirectoryStream();
-            for (Path child : ds)
-                list(child, verbose);
-            ds.close();
+        if (Files.isDirectory(path)) {
+            try (DirectoryStream<Path> ds = Files.newDirectoryStream(path)) {
+                for (Path child : ds)
+                    list(child, verbose);
+            }
         }
     }
 
@@ -561,12 +564,11 @@
         //                  src.toString(), dst.toString());
 
         //streams
-        InputStream isSrc = src.newInputStream();
-        InputStream isDst = dst.newInputStream();
         byte[] bufSrc = new byte[8192];
         byte[] bufDst = new byte[8192];
-
-        try {
+        try (InputStream isSrc = Files.newInputStream(src);
+             InputStream isDst = Files.newInputStream(dst))
+        {
             int nSrc = 0;
             while ((nSrc = isSrc.read(bufSrc)) != -1) {
                 int nDst = 0;
@@ -588,24 +590,22 @@
                     nSrc--;
                 }
             }
-        } finally {
-            isSrc.close();
-            isDst.close();
         }
 
         // channels
-        SeekableByteChannel chSrc = src.newByteChannel();
-        SeekableByteChannel chDst = dst.newByteChannel();
-        if (chSrc.size() != chDst.size()) {
-            System.out.printf("src[%s].size=%d, dst[%s].size=%d%n",
-                              chSrc.toString(), chSrc.size(),
-                              chDst.toString(), chDst.size());
-            throw new RuntimeException("CHECK FAILED!");
-        }
-        ByteBuffer bbSrc = ByteBuffer.allocate(8192);
-        ByteBuffer bbDst = ByteBuffer.allocate(8192);
 
-        try {
+        try (SeekableByteChannel chSrc = Files.newByteChannel(src);
+             SeekableByteChannel chDst = Files.newByteChannel(dst))
+        {
+            if (chSrc.size() != chDst.size()) {
+                System.out.printf("src[%s].size=%d, dst[%s].size=%d%n",
+                                  chSrc.toString(), chSrc.size(),
+                                  chDst.toString(), chDst.size());
+                throw new RuntimeException("CHECK FAILED!");
+            }
+            ByteBuffer bbSrc = ByteBuffer.allocate(8192);
+            ByteBuffer bbDst = ByteBuffer.allocate(8192);
+
             int nSrc = 0;
             while ((nSrc = chSrc.read(bbSrc)) != -1) {
                 int nDst = chDst.read(bbDst);
@@ -627,9 +627,6 @@
             }
         } catch (IOException x) {
             x.printStackTrace();
-        } finally {
-            chSrc.close();
-            chDst.close();
         }
     }
 
@@ -641,23 +638,15 @@
         openwrite.add(CREATE_NEW);
         openwrite.add(WRITE);
 
-        FileChannel srcFc = src.getFileSystem()
-                               .provider()
-                               .newFileChannel(src, read);
-        FileChannel dstFc = dst.getFileSystem()
-                               .provider()
-                               .newFileChannel(dst, openwrite);
-
-        try {
+        try (FileChannel srcFc = src.getFileSystem().provider().newFileChannel(src, read);
+             FileChannel dstFc = dst.getFileSystem().provider().newFileChannel(dst, openwrite))
+        {
             ByteBuffer bb = ByteBuffer.allocate(8192);
             while (srcFc.read(bb) >= 0) {
                 bb.flip();
                 dstFc.write(bb);
                 bb.clear();
             }
-        } finally {
-            srcFc.close();
-            dstFc.close();
         }
     }
 
@@ -669,35 +658,28 @@
         openwrite.add(CREATE_NEW);
         openwrite.add(WRITE);
 
-        SeekableByteChannel srcCh = src.newByteChannel(read);
-        SeekableByteChannel dstCh = dst.newByteChannel(openwrite);
-
-        try {
+        try (SeekableByteChannel srcCh = Files.newByteChannel(src, read);
+             SeekableByteChannel dstCh = Files.newByteChannel(dst, openwrite))
+        {
             ByteBuffer bb = ByteBuffer.allocate(8192);
             while (srcCh.read(bb) >= 0) {
                 bb.flip();
                 dstCh.write(bb);
                 bb.clear();
             }
-        } finally {
-            srcCh.close();
-            dstCh.close();
         }
     }
 
     private static void streamCopy(Path src, Path dst) throws IOException
     {
-        InputStream isSrc = src.newInputStream();
-        OutputStream osDst = dst.newOutputStream();
         byte[] buf = new byte[8192];
-        try {
+        try (InputStream isSrc = Files.newInputStream(src);
+             OutputStream osDst = Files.newOutputStream(dst))
+        {
             int n = 0;
             while ((n = isSrc.read(buf)) != -1) {
                 osDst.write(buf, 0, n);
             }
-        } finally {
-            isSrc.close();
-            osDst.close();
         }
     }
 }
--- a/jdk/src/share/demo/nio/zipfs/README.txt	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/demo/nio/zipfs/README.txt	Wed Jul 05 17:35:13 2017 +0200
@@ -5,9 +5,8 @@
 used to create a FileSystem, eg:
 
    // use file type detection
-   Map<String,?> env = Collections.emptyMap();
    Path jarfile = Paths.get("foo.jar");
-   FileSystem fs = FileSystems.newFileSystem(jarfile, env, null);
+   FileSystem fs = FileSystems.newFileSystem(jarfile, null);
 
 -or
 
--- a/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileAttributeView.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileAttributeView.java	Wed Jul 05 17:35:13 2017 +0200
@@ -32,11 +32,10 @@
 
 package com.sun.nio.zipfs;
 
-import java.nio.file.attribute.BasicFileAttributeView;
-import java.nio.file.attribute.FileAttributeView;
-import java.nio.file.attribute.FileTime;
+import java.nio.file.attribute.*;
 import java.io.IOException;
 import java.util.LinkedHashMap;
+import java.util.Map;
 
 /*
  * @author  Xueming Shen, Rajendra Gutupalli, Jaya Hangal
@@ -122,25 +121,19 @@
             "' is unknown or read-only attribute");
     }
 
-    public Object getAttribute(String attribute, boolean domap)
+    Map<String, Object> readAttributes(String attributes)
         throws IOException
     {
         ZipFileAttributes zfas = readAttributes();
-        if (!domap) {
-            try {
-                return attribute(AttrID.valueOf(attribute), zfas);
-            } catch (IllegalArgumentException x) {}
-            return null;
-        }
         LinkedHashMap<String, Object> map = new LinkedHashMap<>();
-        if ("*".equals(attribute)) {
+        if ("*".equals(attributes)) {
             for (AttrID id : AttrID.values()) {
                 try {
                     map.put(id.name(), attribute(id, zfas));
                 } catch (IllegalArgumentException x) {}
             }
         } else {
-            String[] as = attribute.split(",");
+            String[] as = attributes.split(",");
             for (String a : as) {
                 try {
                     map.put(a, attribute(AttrID.valueOf(a), zfas));
--- a/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileStore.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileStore.java	Wed Jul 05 17:35:13 2017 +0200
@@ -32,14 +32,13 @@
 package com.sun.nio.zipfs;
 
 import java.io.IOException;
+import java.nio.file.Files;
 import java.nio.file.FileStore;
 import java.nio.file.FileSystems;
 import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
 import java.nio.file.attribute.FileAttributeView;
 import java.nio.file.attribute.FileStoreAttributeView;
-import java.nio.file.attribute.FileStoreSpaceAttributeView;
-import java.nio.file.attribute.FileStoreSpaceAttributes;
-import java.nio.file.attribute.Attributes;
 import java.nio.file.attribute.BasicFileAttributeView;
 import java.util.Formatter;
 
@@ -87,71 +86,61 @@
     public <V extends FileStoreAttributeView> V getFileStoreAttributeView(Class<V> type) {
         if (type == null)
             throw new NullPointerException();
-        if (type == FileStoreSpaceAttributeView.class)
-            return (V) new ZipFileStoreAttributeView(this);
-        return null;
+        return (V)null;
+    }
+
+    @Override
+    public long getTotalSpace() throws IOException {
+         return new ZipFileStoreAttributes(this).totalSpace();
+    }
+
+    @Override
+    public long getUsableSpace() throws IOException {
+         return new ZipFileStoreAttributes(this).usableSpace();
+    }
+
+    @Override
+    public long getUnallocatedSpace() throws IOException {
+         return new ZipFileStoreAttributes(this).unallocatedSpace();
     }
 
     @Override
     public Object getAttribute(String attribute) throws IOException {
-         if (attribute.equals("space:totalSpace"))
-               return new ZipFileStoreAttributeView(this).readAttributes().totalSpace();
-         if (attribute.equals("space:usableSpace"))
-               return new ZipFileStoreAttributeView(this).readAttributes().usableSpace();
-         if (attribute.equals("space:unallocatedSpace"))
-               return new ZipFileStoreAttributeView(this).readAttributes().unallocatedSpace();
+         if (attribute.equals("totalSpace"))
+               return getTotalSpace();
+         if (attribute.equals("usableSpace"))
+               return getUsableSpace();
+         if (attribute.equals("unallocatedSpace"))
+               return getUnallocatedSpace();
          throw new UnsupportedOperationException("does not support the given attribute");
     }
 
-    private static class ZipFileStoreAttributeView implements FileStoreSpaceAttributeView {
-
-        private final ZipFileStore fileStore;
+    private static class ZipFileStoreAttributes {
+        final FileStore fstore;
+        final long size;
 
-        public ZipFileStoreAttributeView(ZipFileStore fileStore) {
-            this.fileStore = fileStore;
-        }
-
-        @Override
-        public String name() {
-            return "space";
+        public ZipFileStoreAttributes(ZipFileStore fileStore)
+            throws IOException
+        {
+            Path path = FileSystems.getDefault().getPath(fileStore.name());
+            this.size = Files.size(path);
+            this.fstore = Files.getFileStore(path);
         }
 
-        @Override
-        public FileStoreSpaceAttributes readAttributes() throws IOException {
-            final String file = fileStore.name();
-            Path path = FileSystems.getDefault().getPath(file);
-            final long size = Attributes.readBasicFileAttributes(path).size();
-            final FileStore fstore = path.getFileStore();
-            final FileStoreSpaceAttributes fstoreAttrs =
-                Attributes.readFileStoreSpaceAttributes(fstore);
-            return new FileStoreSpaceAttributes() {
-                public long totalSpace() {
-                    return size;
-                }
+        public long totalSpace() {
+            return size;
+        }
 
-                public long usableSpace() {
-                    if (!fstore.isReadOnly())
-                        return fstoreAttrs.usableSpace();
-                    return 0;
-                }
-
-                public long unallocatedSpace() {
-                    if (!fstore.isReadOnly())
-                        return fstoreAttrs.unallocatedSpace();
-                    return 0;
-                }
+        public long usableSpace() throws IOException {
+            if (!fstore.isReadOnly())
+                return fstore.getUsableSpace();
+            return 0;
+        }
 
-                public String toString() {
-                    StringBuilder sb = new StringBuilder();
-                    Formatter fm = new Formatter(sb);
-                    fm.format("FileStoreSpaceAttributes[%s]%n", file);
-                    fm.format("      totalSpace: %d%n", totalSpace());
-                    fm.format("     usableSpace: %d%n", usableSpace());
-                    fm.format("    unallocSpace: %d%n", unallocatedSpace());
-                    fm.close();
-                    return sb.toString();
-                }
-            };
+        public long unallocatedSpace()  throws IOException {
+            if (!fstore.isReadOnly())
+                return fstore.getUnallocatedSpace();
+            return 0;
         }
     }
 }
--- a/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java	Wed Jul 05 17:35:13 2017 +0200
@@ -101,24 +101,25 @@
 
         this.provider = provider;
         this.zfpath = zfpath;
-        if (zfpath.notExists()) {
+        if (Files.notExists(zfpath)) {
             if (createNew) {
-                OutputStream os = zfpath.newOutputStream(CREATE_NEW, WRITE);
-                new END().write(os, 0);
-                os.close();
+                try (OutputStream os = Files.newOutputStream(zfpath, CREATE_NEW, WRITE)) {
+                    new END().write(os, 0);
+                }
             } else {
                 throw new FileSystemNotFoundException(zfpath.toString());
             }
         }
-        zfpath.checkAccess(AccessMode.READ); // sm and existence check
+        // sm and existence check
+        zfpath.getFileSystem().provider().checkAccess(zfpath, AccessMode.READ);
         try {
-            zfpath.checkAccess(AccessMode.WRITE);
+            zfpath.getFileSystem().provider().checkAccess(zfpath, AccessMode.WRITE);
         } catch (AccessDeniedException x) {
             this.readOnly = true;
         }
         this.zc = ZipCoder.get(nameEncoding);
         this.defaultdir = new ZipPath(this, getBytes(defaultDir));
-        this.ch = zfpath.newByteChannel(READ);
+        this.ch = Files.newByteChannel(zfpath, READ);
         this.cen = initCEN();
     }
 
@@ -159,9 +160,22 @@
     }
 
     @Override
-    public ZipPath getPath(String path) {
-        if (path.length() == 0)
-            throw new InvalidPathException(path, "path should not be empty");
+    public ZipPath getPath(String first, String... more) {
+        String path;
+        if (more.length == 0) {
+            path = first;
+        } else {
+            StringBuilder sb = new StringBuilder();
+            sb.append(first);
+            for (String segment: more) {
+                if (segment.length() > 0) {
+                    if (sb.length() > 0)
+                        sb.append('/');
+                    sb.append(segment);
+                }
+            }
+            path = sb.toString();
+        }
         return new ZipPath(this, getBytes(path));
     }
 
@@ -268,16 +282,22 @@
                 def.end();
         }
 
+        IOException ioe = null;
         synchronized (tmppaths) {
             for (Path p: tmppaths) {
                 try {
-                    p.deleteIfExists();
+                    Files.deleteIfExists(p);
                 } catch (IOException x) {
-                    x.printStackTrace();
+                    if (ioe == null)
+                        ioe = x;
+                    else
+                        ioe.addSuppressed(x);
                 }
             }
         }
-        provider.removeFileSystem(zfpath);
+        provider.removeFileSystem(zfpath, this);
+        if (ioe != null)
+           throw ioe;
     }
 
     ZipFileAttributes getFileAttributes(byte[] path)
@@ -444,7 +464,7 @@
                         u.bytes = Arrays.copyOf(eSrc.bytes, eSrc.bytes.length);
                     else if (eSrc.file != null) {
                         u.file = getTempPathForEntry(null);
-                        eSrc.file.copyTo(u.file, REPLACE_EXISTING);
+                        Files.copy(eSrc.file, u.file, REPLACE_EXISTING);
                     }
                 }
             }
@@ -778,7 +798,8 @@
                     fch.close();
                     if (forWrite) {
                         u.mtime = System.currentTimeMillis();
-                        u.size = Attributes.readBasicFileAttributes(u.file).size();
+                        u.size = Files.size(u.file);
+
                         update(u);
                     } else {
                         if (!isFCH)    // if this is a new fch for reading
@@ -805,13 +826,8 @@
         if (path != null) {
             Entry e = getEntry0(path);
             if (e != null) {
-                InputStream is = newInputStream(path);
-                OutputStream os = tmpPath.newOutputStream(WRITE);
-                try {
-                    copyStream(is, os);
-                } finally {
-                    is.close();
-                    os.close();
+                try (InputStream is = newInputStream(path)) {
+                    Files.copy(is, tmpPath, REPLACE_EXISTING);
                 }
             }
         }
@@ -819,7 +835,7 @@
     }
 
     private void removeTempPathForEntry(Path path) throws IOException {
-        path.delete();
+        Files.delete(path);
         tmppaths.remove(path);
     }
 
@@ -1073,11 +1089,11 @@
     // shared key. consumer guarantees the "writeLock" before use it.
     private final IndexNode LOOKUPKEY = IndexNode.keyOf(null);
 
-    private void updateDelete(Entry e) {
+    private void updateDelete(IndexNode inode) {
         beginWrite();
         try {
-            removeFromTree(e);
-            inodes.remove(e);
+            removeFromTree(inode);
+            inodes.remove(inode);
             hasUpdate = true;
         } finally {
              endWrite();
@@ -1158,7 +1174,7 @@
             for (ExChannelCloser ecc : exChClosers) {
                 if (ecc.streams.isEmpty()) {
                     ecc.ch.close();
-                    ecc.path.delete();
+                    Files.delete(ecc.path);
                     exChClosers.remove(ecc);
                 }
             }
@@ -1166,7 +1182,7 @@
         if (!hasUpdate)
             return;
         Path tmpFile = createTempFileInSameDirectoryAs(zfpath);
-        OutputStream os = tmpFile.newOutputStream(WRITE);
+        OutputStream os = Files.newOutputStream(tmpFile, WRITE);
         ArrayList<Entry> elist = new ArrayList<>(inodes.size());
         long written = 0;
         byte[] buf = new byte[8192];
@@ -1191,26 +1207,26 @@
                             os.write(e.bytes);        // already
                             written += e.bytes.length;
                         } else if (e.file != null) {  // tmp file
-                            InputStream is = e.file.newInputStream();
-                            int n;
-                            if (e.type == Entry.NEW) {  // deflated already
-                                while ((n = is.read(buf)) != -1) {
-                                    os.write(buf, 0, n);
-                                    written += n;
+                            try (InputStream is = Files.newInputStream(e.file)) {
+                                int n;
+                                if (e.type == Entry.NEW) {  // deflated already
+                                    while ((n = is.read(buf)) != -1) {
+                                        os.write(buf, 0, n);
+                                        written += n;
+                                    }
+                                } else if (e.type == Entry.FILECH) {
+                                    // the data are not deflated, use ZEOS
+                                    try (OutputStream os2 = new EntryOutputStream(e, os)) {
+                                        while ((n = is.read(buf)) != -1) {
+                                            os2.write(buf, 0, n);
+                                        }
+                                    }
+                                    written += e.csize;
+                                    if ((e.flag & FLAG_DATADESCR) != 0)
+                                        written += e.writeEXT(os);
                                 }
-                            } else if (e.type == Entry.FILECH) {
-                                // the data are not deflated, use ZEOS
-                                OutputStream os2 = new EntryOutputStream(e, os);
-                                while ((n = is.read(buf)) != -1) {
-                                    os2.write(buf, 0, n);
-                                }
-                                os2.close();
-                                written += e.csize;
-                                if ((e.flag & FLAG_DATADESCR) != 0)
-                                    written += e.writeEXT(os);
                             }
-                            is.close();
-                            e.file.delete();
+                            Files.delete(e.file);
                             tmppaths.remove(e.file);
                         } else {
                             // dir, 0-length data
@@ -1257,15 +1273,15 @@
                                       createTempFileInSameDirectoryAs(zfpath),
                                       ch,
                                       streams);
-            zfpath.moveTo(ecc.path, REPLACE_EXISTING);
+            Files.move(zfpath, ecc.path, REPLACE_EXISTING);
             exChClosers.add(ecc);
             streams = Collections.synchronizedSet(new HashSet<InputStream>());
         } else {
             ch.close();
-            zfpath.delete();
+            Files.delete(zfpath);
         }
 
-        tmpFile.moveTo(zfpath, REPLACE_EXISTING);
+        Files.move(tmpFile, zfpath, REPLACE_EXISTING);
         hasUpdate = false;    // clear
         /*
         if (isOpen) {
@@ -1304,16 +1320,17 @@
         throws IOException
     {
         checkWritable();
-        Entry e = getEntry0(path);
-        if (e == null) {
+
+        IndexNode inode = getInode(path);
+        if (inode == null) {
             if (path != null && path.length == 0)
                 throw new ZipException("root directory </> can't not be delete");
             if (failIfNotExists)
                 throw new NoSuchFileException(getString(path));
         } else {
-            if (e.isDir() && e.child != null)
+            if (inode.isDir() && inode.child != null)
                 throw new DirectoryNotEmptyException(getString(path));
-            updateDelete(e);
+            updateDelete(inode);
         }
     }
 
@@ -1343,7 +1360,7 @@
         OutputStream os;
         if (useTempFile) {
             e.file = getTempPathForEntry(null);
-            os = e.file.newOutputStream(WRITE);
+            os = Files.newOutputStream(e.file, WRITE);
         } else {
             os = new ByteArrayOutputStream((e.size > 0)? (int)e.size : 8192);
         }
@@ -1359,12 +1376,12 @@
             if (e.bytes != null)
                 eis = new ByteArrayInputStream(e.bytes);
             else if (e.file != null)
-                eis = e.file.newInputStream();
+                eis = Files.newInputStream(e.file);
             else
                 throw new ZipException("update entry data is missing");
         } else if (e.type == Entry.FILECH) {
             // FILECH result is un-compressed.
-            eis = e.file.newInputStream();
+            eis = Files.newInputStream(e.file);
             // TBD: wrap to hook close()
             // streams.add(eis);
             return eis;
--- a/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystemProvider.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystemProvider.java	Wed Jul 05 17:35:13 2017 +0200
@@ -31,23 +31,18 @@
 
 package com.sun.nio.zipfs;
 
-import java.io.IOException;
-import java.nio.channels.FileChannel;
-import java.nio.file.FileRef;
-import java.nio.file.FileSystem;
-import java.nio.file.FileSystemNotFoundException;
-import java.nio.file.FileSystemAlreadyExistsException;
-import java.nio.file.OpenOption;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.ProviderMismatchException;
-import java.nio.file.attribute.FileAttribute;
+import java.io.*;
+import java.nio.channels.*;
+import java.nio.file.*;
+import java.nio.file.DirectoryStream.Filter;
+import java.nio.file.attribute.*;
 import java.nio.file.spi.FileSystemProvider;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.ExecutorService;
 
 /*
  *
@@ -87,28 +82,25 @@
     public FileSystem newFileSystem(URI uri, Map<String, ?> env)
         throws IOException
     {
-        return newFileSystem(uriToPath(uri), env);
+        return newFileSystem(uriToPath(uri), env, true);
     }
 
     @Override
-    public FileSystem newFileSystem(FileRef file, Map<String, ?> env)
+    public FileSystem newFileSystem(Path path, Map<String, ?> env)
         throws IOException
     {
-        if (!(file instanceof Path))
-            throw new UnsupportedOperationException();
-        Path path = (Path)file;
         if (!path.toUri().getScheme().equalsIgnoreCase("file")) {
             throw new UnsupportedOperationException();
         }
-        return newFileSystem(path, env);
+        return newFileSystem(path, env, false);
     }
 
-    private FileSystem newFileSystem(Path path, Map<String, ?> env)
+    private FileSystem newFileSystem(Path path, Map<String, ?> env, boolean checkIfFSExists)
         throws IOException
     {
         synchronized(filesystems) {
             Path realPath = null;
-            if (path.exists()) {
+            if (checkIfFSExists && Files.exists(path)) {
                 realPath = path.toRealPath(true);
                 if (filesystems.containsKey(realPath))
                     throw new FileSystemAlreadyExistsException();
@@ -116,7 +108,8 @@
             ZipFileSystem zipfs = new ZipFileSystem(this, path, env);
             if (realPath == null)
                 realPath = path.toRealPath(true);
-            filesystems.put(realPath, zipfs);
+            if (!filesystems.containsKey(realPath))
+                filesystems.put(realPath, zipfs);
             return zipfs;
         }
     }
@@ -133,18 +126,6 @@
         return getFileSystem(uri).getPath(spec.substring(sep + 1));
     }
 
-    @Override
-    public FileChannel newFileChannel(Path path,
-            Set<? extends OpenOption> options,
-            FileAttribute<?>... attrs)
-            throws IOException
-    {
-        if (path == null)
-            throw new NullPointerException("path is null");
-        if (path instanceof ZipPath)
-            return ((ZipPath)path).newFileChannel(options, attrs);
-        throw new ProviderMismatchException();
-    }
 
     @Override
     public FileSystem getFileSystem(URI uri) {
@@ -161,9 +142,155 @@
         }
     }
 
-    void removeFileSystem(Path zfpath) throws IOException {
+    // Checks that the given file is a UnixPath
+    static final ZipPath toZipPath(Path path) {
+        if (path == null)
+            throw new NullPointerException();
+        if (!(path instanceof ZipPath))
+            throw new ProviderMismatchException();
+        return (ZipPath)path;
+    }
+
+    @Override
+    public void checkAccess(Path path, AccessMode... modes) throws IOException {
+        toZipPath(path).checkAccess(modes);
+    }
+
+    @Override
+    public void copy(Path src, Path target, CopyOption... options)
+        throws IOException
+    {
+        toZipPath(src).copy(toZipPath(target), options);
+    }
+
+    @Override
+    public void createDirectory(Path path, FileAttribute<?>... attrs)
+        throws IOException
+    {
+        toZipPath(path).createDirectory(attrs);
+    }
+
+    @Override
+    public final void delete(Path path) throws IOException {
+        toZipPath(path).delete();
+    }
+
+    @Override
+    @SuppressWarnings("unchecked")
+    public <V extends FileAttributeView> V
+        getFileAttributeView(Path path, Class<V> type, LinkOption... options)
+    {
+        return (V)ZipFileAttributeView.get(toZipPath(path), type);
+    }
+
+    @Override
+    public FileStore getFileStore(Path path) throws IOException {
+        return toZipPath(path).getFileStore();
+    }
+
+    @Override
+    public boolean isHidden(Path path) {
+        return toZipPath(path).isHidden();
+    }
+
+    @Override
+    public boolean isSameFile(Path path, Path other) throws IOException {
+        return toZipPath(path).isSameFile(other);
+    }
+
+    @Override
+    public void move(Path src, Path target, CopyOption... options)
+        throws IOException
+    {
+        toZipPath(src).move(toZipPath(target), options);
+    }
+
+    @Override
+    public AsynchronousFileChannel newAsynchronousFileChannel(Path path,
+            Set<? extends OpenOption> options,
+            ExecutorService exec,
+            FileAttribute<?>... attrs)
+            throws IOException
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public SeekableByteChannel newByteChannel(Path path,
+                                              Set<? extends OpenOption> options,
+                                              FileAttribute<?>... attrs)
+        throws IOException
+    {
+        return toZipPath(path).newByteChannel(options, attrs);
+    }
+
+    @Override
+    public DirectoryStream<Path> newDirectoryStream(
+        Path path, Filter<? super Path> filter) throws IOException
+    {
+        return toZipPath(path).newDirectoryStream(filter);
+    }
+
+    @Override
+    public FileChannel newFileChannel(Path path,
+                                      Set<? extends OpenOption> options,
+                                      FileAttribute<?>... attrs)
+        throws IOException
+    {
+        return toZipPath(path).newFileChannel(options, attrs);
+    }
+
+    @Override
+    public InputStream newInputStream(Path path, OpenOption... options)
+        throws IOException
+    {
+        return toZipPath(path).newInputStream(options);
+    }
+
+    @Override
+    public OutputStream newOutputStream(Path path, OpenOption... options)
+        throws IOException
+    {
+        return toZipPath(path).newOutputStream(options);
+    }
+
+    @Override
+    public <A extends BasicFileAttributes> A
+        readAttributes(Path path, Class<A> type, LinkOption... options)
+        throws IOException
+    {
+        if (type == BasicFileAttributes.class || type == ZipFileAttributes.class)
+            return (A)toZipPath(path).getAttributes();
+        return null;
+    }
+
+    @Override
+    public Map<String, Object>
+        readAttributes(Path path, String attribute, LinkOption... options)
+        throws IOException
+    {
+        return toZipPath(path).readAttributes(attribute, options);
+    }
+
+    @Override
+    public Path readSymbolicLink(Path link) throws IOException {
+        throw new UnsupportedOperationException("Not supported.");
+    }
+
+    @Override
+    public void setAttribute(Path path, String attribute,
+                             Object value, LinkOption... options)
+        throws IOException
+    {
+        toZipPath(path).setAttribute(attribute, value, options);
+    }
+
+    //////////////////////////////////////////////////////////////
+    void removeFileSystem(Path zfpath, ZipFileSystem zfs) throws IOException {
         synchronized (filesystems) {
-            filesystems.remove(zfpath.toRealPath(true));
+            zfpath = zfpath.toRealPath(true);
+            if (filesystems.get(zfpath) == zfs)
+                filesystems.remove(zfpath);
         }
     }
 }
--- a/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipPath.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipPath.java	Wed Jul 05 17:35:13 2017 +0200
@@ -31,29 +31,23 @@
 
 package com.sun.nio.zipfs;
 
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
+import java.io.*;
 import java.net.URI;
-import java.nio.channels.FileChannel;
-import java.nio.channels.SeekableByteChannel;
+import java.nio.channels.*;
 import java.nio.file.*;
 import java.nio.file.DirectoryStream.Filter;
-import java.nio.file.attribute.BasicFileAttributeView;
-import java.nio.file.attribute.FileAttribute;
-import java.nio.file.attribute.FileAttributeView;
-import java.nio.file.attribute.FileTime;
+import java.nio.file.attribute.*;
 import java.util.*;
 import static java.nio.file.StandardOpenOption.*;
 import static java.nio.file.StandardCopyOption.*;
 
+
 /**
  *
  * @author  Xueming Shen, Rajendra Gutupalli,Jaya Hangal
  */
 
-public class ZipPath extends Path {
+public class ZipPath implements Path {
 
     private final ZipFileSystem zfs;
     private final byte[] path;
@@ -82,7 +76,7 @@
     }
 
     @Override
-    public Path getName() {
+    public Path getFileName() {
         initOffsets();
         int count = offsets.length;
         if (count == 0)
@@ -162,8 +156,7 @@
         return realPath;
     }
 
-    @Override
-    public boolean isHidden() {
+    boolean isHidden() {
         return false;
     }
 
@@ -230,7 +223,7 @@
     public Path relativize(Path other) {
         final ZipPath o = checkPath(other);
         if (o.equals(this))
-            return null;
+            return new ZipPath(getFileSystem(), new byte[0], true);
         if (/* this.getFileSystem() != o.getFileSystem() || */
             this.isAbsolute() != o.isAbsolute()) {
             throw new IllegalArgumentException();
@@ -272,13 +265,11 @@
 
     @Override
     public boolean isAbsolute() {
-        return (this.path[0] == '/');
+        return (this.path.length > 0 && path[0] == '/');
     }
 
     @Override
     public ZipPath resolve(Path other) {
-        if (other == null)
-            return this;
         final ZipPath o = checkPath(other);
         if (o.isAbsolute())
             return o;
@@ -297,39 +288,70 @@
     }
 
     @Override
-    public ZipPath resolve(String other) {
-        return resolve(getFileSystem().getPath(other));
+    public Path resolveSibling(Path other) {
+        if (other == null)
+            throw new NullPointerException();
+        Path parent = getParent();
+        return (parent == null) ? other : parent.resolve(other);
     }
 
     @Override
     public boolean startsWith(Path other) {
         final ZipPath o = checkPath(other);
-        if (o.isAbsolute() != this.isAbsolute())
+        if (o.isAbsolute() != this.isAbsolute() ||
+            o.path.length > this.path.length)
             return false;
-        final int oCount = o.getNameCount();
-        if (getNameCount() < oCount)
-            return false;
-        for (int i = 0; i < oCount; i++) {
-            if (!o.getName(i).equals(getName(i)))
+        int olast = o.path.length;
+        for (int i = 0; i < olast; i++) {
+            if (o.path[i] != this.path[i])
                 return false;
         }
-        return true;
+        olast--;
+        return o.path.length == this.path.length ||
+               o.path[olast] == '/' ||
+               this.path[olast + 1] == '/';
     }
 
     @Override
     public boolean endsWith(Path other) {
         final ZipPath o = checkPath(other);
-        if (o.isAbsolute())
-            return this.isAbsolute() ? this.equals(o) : false;
-        int i = o.getNameCount();
-        int j = this.getNameCount();
-        if (j < i)
+        int olast = o.path.length - 1;
+        if (olast > 0 && o.path[olast] == '/')
+            olast--;
+        int last = this.path.length - 1;
+        if (last > 0 && this.path[last] == '/')
+            last--;
+        if (olast == -1)    // o.path.length == 0
+            return last == -1;
+        if ((o.isAbsolute() &&(!this.isAbsolute() || olast != last)) ||
+            (last < olast))
             return false;
-        for (--i, --j; i >= 0; i--, j--) {
-            if (!o.getName(i).equals(this.getName(j)))
+        for (; olast >= 0; olast--, last--) {
+            if (o.path[olast] != this.path[last])
                 return false;
         }
-        return true;
+        return o.path[olast + 1] == '/' ||
+               last == -1 || this.path[last] == '/';
+    }
+
+    @Override
+    public ZipPath resolve(String other) {
+        return resolve(getFileSystem().getPath(other));
+    }
+
+    @Override
+    public final Path resolveSibling(String other) {
+        return resolveSibling(getFileSystem().getPath(other));
+    }
+
+    @Override
+    public final boolean startsWith(String other) {
+        return startsWith(getFileSystem().getPath(other));
+    }
+
+    @Override
+    public final boolean endsWith(String other) {
+        return endsWith(getFileSystem().getPath(other));
     }
 
     @Override
@@ -337,8 +359,6 @@
         byte[] resolved = getResolved();
         if (resolved == path)    // no change
             return this;
-        if (resolved.length == 0)
-            return null;
         return new ZipPath(zfs, resolved, true);
     }
 
@@ -548,198 +568,6 @@
         return len1 - len2;
     }
 
-    @Override
-    public Path createSymbolicLink(
-            Path target, FileAttribute<?>... attrs) throws IOException {
-        throw new UnsupportedOperationException("Not supported.");
-    }
-
-    @Override
-    public Path createLink(
-            Path existing) throws IOException {
-        throw new UnsupportedOperationException("Not supported.");
-    }
-
-    @Override
-    public Path readSymbolicLink() throws IOException {
-        throw new UnsupportedOperationException("Not supported.");
-    }
-
-    @Override
-    public Path createDirectory(FileAttribute<?>... attrs)
-        throws IOException
-    {
-        zfs.createDirectory(getResolvedPath(), attrs);
-        return this;
-    }
-
-    public final Path createFile(FileAttribute<?>... attrs)
-        throws IOException
-    {
-        OutputStream os = newOutputStream(CREATE_NEW, WRITE);
-        try {
-            os.close();
-        } catch (IOException x) {}
-        return this;
-    }
-
-    @Override
-    public InputStream newInputStream(OpenOption... options)
-            throws IOException {
-        if (options.length > 0) {
-            for (OpenOption opt : options) {
-                if (opt != READ)
-                    throw new UnsupportedOperationException("'" + opt + "' not allowed");
-            }
-        }
-        return zfs.newInputStream(getResolvedPath());
-    }
-
-    private static final DirectoryStream.Filter<Path> acceptAllFilter =
-        new DirectoryStream.Filter<>() {
-            @Override public boolean accept(Path entry) { return true; }
-        };
-
-    @Override
-    public final DirectoryStream<Path> newDirectoryStream() throws IOException {
-        return newDirectoryStream(acceptAllFilter);
-    }
-
-    @Override
-    public DirectoryStream<Path> newDirectoryStream(Filter<? super Path> filter)
-        throws IOException
-    {
-        return new ZipDirectoryStream(this, filter);
-    }
-
-    @Override
-    public final DirectoryStream<Path> newDirectoryStream(String glob)
-        throws IOException
-    {
-        // avoid creating a matcher if all entries are required.
-        if (glob.equals("*"))
-            return newDirectoryStream();
-
-        // create a matcher and return a filter that uses it.
-        final PathMatcher matcher = getFileSystem().getPathMatcher("glob:" + glob);
-        DirectoryStream.Filter<Path> filter = new DirectoryStream.Filter<>() {
-            @Override
-            public boolean accept(Path entry)  {
-                return matcher.matches(entry.getName());
-            }
-        };
-        return newDirectoryStream(filter);
-    }
-
-    @Override
-    public final void delete() throws IOException {
-        zfs.deleteFile(getResolvedPath(), true);
-    }
-
-    @Override
-    public final void deleteIfExists() throws IOException {
-        zfs.deleteFile(getResolvedPath(), false);
-    }
-
-    ZipFileAttributes getAttributes() throws IOException
-    {
-        ZipFileAttributes zfas = zfs.getFileAttributes(getResolvedPath());
-        if (zfas == null)
-            throw new NoSuchFileException(toString());
-        return zfas;
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public <V extends FileAttributeView> V getFileAttributeView(Class<V> type,
-                                                                LinkOption... options)
-    {
-        return (V)ZipFileAttributeView.get(this, type);
-    }
-
-    @Override
-    public void setAttribute(String attribute,
-                             Object value,
-                             LinkOption... options)
-        throws IOException
-    {
-        String type = null;
-        String attr = null;
-        int colonPos = attribute.indexOf(':');
-        if (colonPos == -1) {
-            type = "basic";
-            attr = attribute;
-        } else {
-            type = attribute.substring(0, colonPos++);
-            attr = attribute.substring(colonPos);
-        }
-        ZipFileAttributeView view = ZipFileAttributeView.get(this, type);
-        if (view == null)
-            throw new UnsupportedOperationException("view <" + view + "> is not supported");
-        view.setAttribute(attr, value);
-    }
-
-    void setTimes(FileTime mtime, FileTime atime, FileTime ctime)
-        throws IOException
-    {
-        zfs.setTimes(getResolvedPath(), mtime, atime, ctime);
-    }
-
-    private Object getAttributesImpl(String attribute, boolean domap)
-        throws IOException
-    {
-        String view = null;
-        String attr = null;
-        int colonPos = attribute.indexOf(':');
-        if (colonPos == -1) {
-            view = "basic";
-            attr = attribute;
-        } else {
-            view = attribute.substring(0, colonPos++);
-            attr = attribute.substring(colonPos);
-        }
-        ZipFileAttributeView zfv = ZipFileAttributeView.get(this, view);
-        if (zfv == null) {
-            throw new UnsupportedOperationException("view not supported");
-        }
-        return zfv.getAttribute(attr, domap);
-    }
-
-    @Override
-    public Object getAttribute(String attribute, LinkOption... options)
-        throws IOException
-    {
-        return getAttributesImpl(attribute, false);
-    }
-
-    @Override
-    public Map<String,?> readAttributes(String attribute, LinkOption... options)
-        throws IOException
-    {
-        return (Map<String, ?>)getAttributesImpl(attribute, true);
-    }
-
-    @Override
-    public FileStore getFileStore() throws IOException {
-        // each ZipFileSystem only has one root (as requested for now)
-        if (exists())
-            return zfs.getFileStore(this);
-        throw new NoSuchFileException(zfs.getString(path));
-    }
-
-    @Override
-    public boolean isSameFile(Path other) throws IOException {
-        if (this.equals(other))
-            return true;
-        if (other == null ||
-            this.getFileSystem() != other.getFileSystem())
-            return false;
-        this.checkAccess();
-        other.checkAccess();
-        return Arrays.equals(this.getResolvedPath(),
-                             ((ZipPath)other).getResolvedPath());
-    }
-
     public WatchKey register(
             WatchService watcher,
             WatchEvent.Kind<?>[] events,
@@ -756,6 +584,11 @@
     }
 
     @Override
+    public final File toFile() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
     public Iterator<Path> iterator() {
         return new Iterator<>() {
             private int i = 0;
@@ -783,9 +616,115 @@
         };
     }
 
-    @Override
-    public SeekableByteChannel newByteChannel(Set<? extends OpenOption> options,
-                                              FileAttribute<?>... attrs)
+    /////////////////////////////////////////////////////////////////////
+
+
+    void createDirectory(FileAttribute<?>... attrs)
+        throws IOException
+    {
+        zfs.createDirectory(getResolvedPath(), attrs);
+    }
+
+    InputStream newInputStream(OpenOption... options) throws IOException
+    {
+        if (options.length > 0) {
+            for (OpenOption opt : options) {
+                if (opt != READ)
+                    throw new UnsupportedOperationException("'" + opt + "' not allowed");
+            }
+        }
+        return zfs.newInputStream(getResolvedPath());
+    }
+
+    DirectoryStream<Path> newDirectoryStream(Filter<? super Path> filter)
+        throws IOException
+    {
+        return new ZipDirectoryStream(this, filter);
+    }
+
+    void delete() throws IOException {
+        zfs.deleteFile(getResolvedPath(), true);
+    }
+
+    void deleteIfExists() throws IOException {
+        zfs.deleteFile(getResolvedPath(), false);
+    }
+
+    ZipFileAttributes getAttributes() throws IOException
+    {
+        ZipFileAttributes zfas = zfs.getFileAttributes(getResolvedPath());
+        if (zfas == null)
+            throw new NoSuchFileException(toString());
+        return zfas;
+    }
+
+    void setAttribute(String attribute, Object value, LinkOption... options)
+        throws IOException
+    {
+        String type = null;
+        String attr = null;
+        int colonPos = attribute.indexOf(':');
+        if (colonPos == -1) {
+            type = "basic";
+            attr = attribute;
+        } else {
+            type = attribute.substring(0, colonPos++);
+            attr = attribute.substring(colonPos);
+        }
+        ZipFileAttributeView view = ZipFileAttributeView.get(this, type);
+        if (view == null)
+            throw new UnsupportedOperationException("view <" + view + "> is not supported");
+        view.setAttribute(attr, value);
+    }
+
+    void setTimes(FileTime mtime, FileTime atime, FileTime ctime)
+        throws IOException
+    {
+        zfs.setTimes(getResolvedPath(), mtime, atime, ctime);
+    }
+
+    Map<String, Object> readAttributes(String attributes, LinkOption... options)
+        throws IOException
+
+    {
+        String view = null;
+        String attrs = null;
+        int colonPos = attributes.indexOf(':');
+        if (colonPos == -1) {
+            view = "basic";
+            attrs = attributes;
+        } else {
+            view = attributes.substring(0, colonPos++);
+            attrs = attributes.substring(colonPos);
+        }
+        ZipFileAttributeView zfv = ZipFileAttributeView.get(this, view);
+        if (zfv == null) {
+            throw new UnsupportedOperationException("view not supported");
+        }
+        return zfv.readAttributes(attrs);
+    }
+
+    FileStore getFileStore() throws IOException {
+        // each ZipFileSystem only has one root (as requested for now)
+        if (exists())
+            return zfs.getFileStore(this);
+        throw new NoSuchFileException(zfs.getString(path));
+    }
+
+    boolean isSameFile(Path other) throws IOException {
+        if (this.equals(other))
+            return true;
+        if (other == null ||
+            this.getFileSystem() != other.getFileSystem())
+            return false;
+        this.checkAccess();
+        ((ZipPath)other).checkAccess();
+        return Arrays.equals(this.getResolvedPath(),
+                             ((ZipPath)other).getResolvedPath());
+    }
+
+    SeekableByteChannel newByteChannel(Set<? extends OpenOption> options,
+                                       FileAttribute<?>... attrs)
         throws IOException
     {
         return zfs.newByteChannel(getResolvedPath(), options, attrs);
@@ -799,16 +738,7 @@
         return zfs.newFileChannel(getResolvedPath(), options, attrs);
     }
 
-    @Override
-    public SeekableByteChannel newByteChannel(OpenOption... options)
-            throws IOException {
-        Set<OpenOption> set = new HashSet<>(options.length);
-        Collections.addAll(set, options);
-        return newByteChannel(set);
-    }
-
-    @Override
-    public void checkAccess(AccessMode... modes) throws IOException {
+    void checkAccess(AccessMode... modes) throws IOException {
         boolean w = false;
         boolean x = false;
         for (AccessMode mode : modes) {
@@ -834,11 +764,9 @@
         }
         if (x)
             throw new AccessDeniedException(toString());
-
     }
 
-    @Override
-    public boolean exists() {
+    boolean exists() {
         if (path.length == 1 && path[0] == '/')
             return true;
         try {
@@ -847,15 +775,7 @@
         return false;
     }
 
-    @Override
-    public boolean notExists() {
-        return !exists();
-    }
-
-
-    @Override
-    public OutputStream newOutputStream(OpenOption... options)
-        throws IOException
+    OutputStream newOutputStream(OpenOption... options) throws IOException
     {
         if (options.length == 0)
             return zfs.newOutputStream(getResolvedPath(),
@@ -863,42 +783,32 @@
         return zfs.newOutputStream(getResolvedPath(), options);
     }
 
-    @Override
-    public Path moveTo(Path target, CopyOption... options)
+    void move(ZipPath target, CopyOption... options)
         throws IOException
     {
-        if (this.zfs.provider() == target.getFileSystem().provider() &&
-            this.zfs.getZipFile().isSameFile(((ZipPath)target).zfs.getZipFile()))
+        if (Files.isSameFile(this.zfs.getZipFile(), target.zfs.getZipFile()))
         {
             zfs.copyFile(true,
-                         getResolvedPath(),
-                         ((ZipPath)target).getResolvedPath(),
+                         getResolvedPath(), target.getResolvedPath(),
                          options);
         } else {
             copyToTarget(target, options);
             delete();
         }
-        return target;
     }
 
-    @Override
-    public Path copyTo(Path target, CopyOption... options)
+    void copy(ZipPath target, CopyOption... options)
         throws IOException
     {
-        if (this.zfs.provider() == target.getFileSystem().provider() &&
-            this.zfs.getZipFile().isSameFile(((ZipPath)target).zfs.getZipFile()))
-        {
+        if (Files.isSameFile(this.zfs.getZipFile(), target.zfs.getZipFile()))
             zfs.copyFile(false,
-                         getResolvedPath(),
-                         ((ZipPath)target).getResolvedPath(),
+                         getResolvedPath(), target.getResolvedPath(),
                          options);
-        } else {
+        else
             copyToTarget(target, options);
-        }
-        return target;
     }
 
-    private void copyToTarget(Path target, CopyOption... options)
+    private void copyToTarget(ZipPath target, CopyOption... options)
         throws IOException
     {
         boolean replaceExisting = false;
@@ -948,7 +858,7 @@
         }
         if (copyAttrs) {
             BasicFileAttributeView view =
-                target.getFileAttributeView(BasicFileAttributeView.class);
+                ZipFileAttributeView.get(target, BasicFileAttributeView.class);
             try {
                 view.setTimes(zfas.lastModifiedTime(),
                               zfas.lastAccessTime(),
--- a/jdk/src/share/demo/zipfs	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,703 +0,0 @@
-/*
- * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   - Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *
- *   - Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- *
- *   - Neither the name of Oracle nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-import java.io.*;
-import java.nio.*;
-import java.nio.channels.*;
-import java.nio.file.*;
-import java.nio.file.attribute.*;
-import java.net.*;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-import static java.nio.file.StandardOpenOption.*;
-import static java.nio.file.StandardCopyOption.*;
-
-/*
- * ZipFileSystem usage demo
- *
- * java Demo action ZipfileName [...]
- *
- * @author Xueming Shen
- */
-
-public class Demo {
-
-    static enum Action {
-        rename,          // <java Demo rename zipfile src dst>
-                         // rename entry src to dst inside zipfile
-
-        movein,          // <java Demo movein zipfile src dst>
-                         // move an external src file into zipfile
-                         // as entry dst
-
-        moveout,         // <java Demo moveout zipfile src dst>
-                         // move a zipfile entry src out to dst
-
-        copy,            // <java Demo copy zipfile src dst>
-                         // copy entry src to dst inside zipfile
-
-        copyin,          // <java Demo copyin zipfile src dst>
-                         // copy an external src file into zipfile
-                         // as entry dst
-
-        copyin_attrs,    // <java Demo copyin_attrs zipfile src dst>
-                         // copy an external src file into zipfile
-                         // as entry dst, with attributes (timestamp)
-
-        copyout,         // <java Demo copyout zipfile src dst>
-                         // copy zipfile entry src" out to file dst
-
-        copyout_attrs,   // <java Demo copyout_attrs zipfile src dst>
-
-        zzmove,          // <java Demo zzmove zfsrc zfdst path>
-                         // move entry path/dir from zfsrc to zfdst
-
-        zzcopy,          // <java Demo zzcopy zfsrc zfdst path>
-                         // copy path from zipfile zfsrc to zipfile
-                         // zfdst
-
-        attrs,           // <java Demo attrs zipfile path>
-                         // printout the attributes of entry path
-
-        attrsspace,      // <java Demo attrsspace zipfile path>
-                         // printout the storespace attrs of entry path
-
-        setmtime,        // <java Demo setmtime zipfile "MM/dd/yy-HH:mm:ss" path...>
-                         // set the lastModifiedTime of entry path
-
-        setatime,        // <java Demo setatime zipfile "MM/dd/yy-HH:mm:ss" path...>
-        setctime,        // <java Demo setctime zipfile "MM/dd/yy-HH:mm:ss" path...>
-
-        lsdir,           // <java Demo lsdir zipfile dir>
-                         // list dir's direct child files/dirs
-
-        mkdir,           // <java Demo mkdir zipfile dir>
-
-        mkdirs,          // <java Demo mkdirs zipfile dir>
-
-        rmdirs,          // <java Demo rmdirs zipfile dir>
-
-        list,            // <java Demo list zipfile [dir]>
-                         // recursively list all entries of dir
-                         // via DirectoryStream
-
-        tlist,           // <java Demo tlist zipfile [dir]>
-                         // list with buildDirTree=true
-
-        vlist,           // <java Demo vlist zipfile [dir]>
-                         // recursively verbose list all entries of
-                         // dir via DirectoryStream
-
-        walk,            // <java Demo walk zipfile [dir]>
-                         // recursively walk all entries of dir
-                         // via Files.walkFileTree
-
-        twalk,           // <java Demo twalk zipfile [dir]>
-                         // walk with buildDirTree=true
-
-        extract,         // <java Demo extract zipfile file [...]>
-
-        update,          // <java Demo extract zipfile file [...]>
-
-        delete,          // <java Demo delete zipfile file [...]>
-
-        add,             // <java Demo add zipfile file [...]>
-
-        create,          // <java Demo create zipfile file [...]>
-                         // create a new zipfile if it doesn't exit
-                         // and then add the file(s) into it.
-
-        attrs2,          // <java Demo attrs2 zipfile file [...]>
-                         // test different ways to print attrs
-
-        prof,
-    }
-
-    public static void main(String[] args) throws Throwable {
-
-        Action action = Action.valueOf(args[0]);
-        Map<String, Object> env = env = new HashMap<>();
-        if (action == Action.create)
-            env.put("create", "true");
-        if (action == Action.tlist || action == Action.twalk)
-            env.put("buildDirTree", true);
-        FileSystem fs = FileSystems.newFileSystem(Paths.get(args[1]), env, null);
-
-        try {
-            FileSystem fs2;
-            Path path, src, dst;
-            boolean isRename = false;
-            switch (action) {
-            case rename:
-                src = fs.getPath(args[2]);
-                dst = fs.getPath(args[3]);
-                src.moveTo(dst);
-                break;
-            case moveout:
-                src = fs.getPath(args[2]);
-                dst = Paths.get(args[3]);
-                src.moveTo(dst);
-                break;
-            case movein:
-                src = Paths.get(args[2]);
-                dst = fs.getPath(args[3]);
-                src.moveTo(dst);
-                break;
-            case copy:
-                src = fs.getPath(args[2]);
-                dst = fs.getPath(args[3]);
-                src.copyTo(dst);
-                break;
-            case copyout:
-                src = fs.getPath(args[2]);
-                dst = Paths.get(args[3]);
-                src.copyTo(dst);
-                break;
-            case copyin:
-                src = Paths.get(args[2]);
-                dst = fs.getPath(args[3]);
-                src.copyTo(dst);
-                break;
-            case copyin_attrs:
-                src = Paths.get(args[2]);
-                dst = fs.getPath(args[3]);
-                src.copyTo(dst, COPY_ATTRIBUTES);
-                break;
-            case copyout_attrs:
-                src = fs.getPath(args[2]);
-                dst = Paths.get(args[3]);
-                src.copyTo(dst, COPY_ATTRIBUTES);
-                break;
-            case zzmove:
-                fs2 = FileSystems.newFileSystem(Paths.get(args[2]), env, null);
-                //sf1.getPath(args[3]).moveTo(fs2.getPath(args[3]));
-                z2zmove(fs, fs2, args[3]);
-                fs2.close();
-                break;
-            case zzcopy:
-                fs2 = FileSystems.newFileSystem(Paths.get(args[2]), env, null);
-                //sf1.getPath(args[3]).copyTo(fs2.getPath(args[3]));
-                z2zcopy(fs, fs2, args[3]);
-                fs2.close();
-                break;
-            case attrs:
-                for (int i = 2; i < args.length; i++) {
-                    path = fs.getPath(args[i]);
-                    System.out.println(path);
-                    System.out.println(
-                        Attributes.readBasicFileAttributes(path).toString());
-                }
-                break;
-            case setmtime:
-                DateFormat df = new SimpleDateFormat("MM/dd/yyyy-HH:mm:ss");
-                Date newDatetime = df.parse(args[2]);
-                for (int i = 3; i < args.length; i++) {
-                    path = fs.getPath(args[i]);
-                    path.setAttribute("lastModifiedTime",
-                                      FileTime.fromMillis(newDatetime.getTime()));
-                    System.out.println(
-                        Attributes.readBasicFileAttributes(path).toString());
-                }
-                break;
-            case setctime:
-                df = new SimpleDateFormat("MM/dd/yyyy-HH:mm:ss");
-                newDatetime = df.parse(args[2]);
-                for (int i = 3; i < args.length; i++) {
-                    path = fs.getPath(args[i]);
-                    path.setAttribute("creationTime",
-                                      FileTime.fromMillis(newDatetime.getTime()));
-                    System.out.println(
-                        Attributes.readBasicFileAttributes(path).toString());
-                }
-                break;
-            case setatime:
-                df = new SimpleDateFormat("MM/dd/yyyy-HH:mm:ss");
-                newDatetime = df.parse(args[2]);
-                for (int i = 3; i < args.length; i++) {
-                    path = fs.getPath(args[i]);
-                    path.setAttribute("lastAccessTime",
-                                      FileTime.fromMillis(newDatetime.getTime()));
-                    System.out.println(
-                        Attributes.readBasicFileAttributes(path).toString());
-                }
-                break;
-            case attrsspace:
-                path = fs.getPath("/");
-                FileStore fstore = path.getFileStore();
-                //System.out.println(fstore.getFileStoreAttributeView(FileStoreSpaceAttributeView.class)
-                //                         .readAttributes());
-                // or
-                System.out.printf("filestore[%s]%n", fstore.name());
-                System.out.printf("    totalSpace: %d%n",
-                                  (Long)fstore.getAttribute("space:totalSpace"));
-                System.out.printf("   usableSpace: %d%n",
-                                  (Long)fstore.getAttribute("space:usableSpace"));
-                System.out.printf("  unallocSpace: %d%n",
-                                  (Long)fstore.getAttribute("space:unallocatedSpace"));
-                break;
-            case list:
-            case tlist:
-                if (args.length < 3)
-                    list(fs.getPath("/"), false);
-                else
-                    list(fs.getPath(args[2]), false);
-                break;
-            case vlist:
-                if (args.length < 3)
-                    list(fs.getPath("/"), true);
-                else
-                    list(fs.getPath(args[2]), true);
-                break;
-            case twalk:
-            case walk:
-                walk(fs.getPath((args.length > 2)? args[2] : "/"));
-                break;
-            case extract:
-                if (args.length == 2) {
-                     extract(fs, "/");
-                } else {
-                    for (int i = 2; i < args.length; i++) {
-                        extract(fs, args[i]);
-                    }
-                }
-                break;
-            case delete:
-                for (int i = 2; i < args.length; i++)
-                    fs.getPath(args[i]).delete();
-                break;
-            case create:
-            case add:
-            case update:
-                for (int i = 2; i < args.length; i++) {
-                    update(fs, args[i]);
-                }
-                break;
-            case lsdir:
-                path = fs.getPath(args[2]);
-                final String fStr = (args.length > 3)?args[3]:"";
-                DirectoryStream<Path> ds = path.newDirectoryStream(
-                    new DirectoryStream.Filter<Path>() {
-                        public boolean accept(Path path) {
-                            return path.toString().contains(fStr);
-                        }
-                    });
-                for (Path p : ds)
-                    System.out.println(p);
-                break;
-            case mkdir:
-                fs.getPath(args[2]).createDirectory();
-                break;
-            case mkdirs:
-                mkdirs(fs.getPath(args[2]));
-                break;
-            case attrs2:
-                for (int i = 2; i < args.length; i++) {
-                    path = fs.getPath(args[i]);
-                    System.out.printf("%n%s%n", path);
-                    System.out.println("-------(1)---------");
-                    System.out.println(
-                        Attributes.readBasicFileAttributes(path).toString());
-                    System.out.println("-------(2)---------");
-                    Map<String, ?> map = path.readAttributes("zip:*");
-                    for (Map.Entry<String, ?> e : map.entrySet()) {
-                        System.out.printf("    %s : %s%n", e.getKey(), e.getValue());
-                    }
-                    System.out.println("-------(3)---------");
-                    map = path.readAttributes("size,lastModifiedTime,isDirectory");
-                    for (Map.Entry<String, ?> e : map.entrySet()) {
-                        System.out.printf("    %s : %s%n", e.getKey(), e.getValue());
-                    }
-                }
-                break;
-            case prof:
-                list(fs.getPath("/"), false);
-                while (true) {
-                    Thread.sleep(10000);
-                    //list(fs.getPath("/"), true);
-                    System.out.println("sleeping...");
-                }
-            }
-        } catch (Exception x) {
-            x.printStackTrace();
-        } finally {
-            if (fs != null)
-                fs.close();
-        }
-    }
-
-    private static byte[] getBytes(String name) {
-        return name.getBytes();
-    }
-
-    private static String getString(byte[] name) {
-        return new String(name);
-    }
-
-    private static void walk(Path path) throws IOException
-    {
-        Files.walkFileTree(
-            path,
-            new SimpleFileVisitor<Path>() {
-                private int indent = 0;
-                private void indent() {
-                    int n = 0;
-                    while (n++ < indent)
-                        System.out.printf(" ");
-                }
-
-                @Override
-                public FileVisitResult visitFile(Path file,
-                                                 BasicFileAttributes attrs)
-                {
-                    indent();
-                    System.out.printf("%s%n", file.getName().toString());
-                    return FileVisitResult.CONTINUE;
-                }
-
-                @Override
-                public FileVisitResult preVisitDirectory(Path dir,
-                                                         BasicFileAttributes attrs)
-                {
-                    indent();
-                    System.out.printf("[%s]%n", dir.toString());
-                    indent += 2;
-                    return FileVisitResult.CONTINUE;
-                }
-
-                @Override
-                public FileVisitResult postVisitDirectory(Path dir,
-                                                          IOException ioe)
-                {
-                    indent -= 2;
-                    return FileVisitResult.CONTINUE;
-                }
-        });
-    }
-
-    private static void update(FileSystem fs, String path) throws Throwable{
-        Path src = FileSystems.getDefault().getPath(path);
-        if (Boolean.TRUE.equals(src.getAttribute("isDirectory"))) {
-            DirectoryStream<Path> ds = src.newDirectoryStream();
-            for (Path child : ds)
-                update(fs, child.toString());
-            ds.close();
-        } else {
-            Path dst = fs.getPath(path);
-            Path parent = dst.getParent();
-            if (parent != null && parent.notExists())
-                mkdirs(parent);
-            src.copyTo(dst, REPLACE_EXISTING);
-        }
-    }
-
-    private static void extract(FileSystem fs, String path) throws Throwable{
-        Path src = fs.getPath(path);
-        if (Boolean.TRUE.equals(src.getAttribute("isDirectory"))) {
-            DirectoryStream<Path> ds = src.newDirectoryStream();
-            for (Path child : ds)
-                extract(fs, child.toString());
-            ds.close();
-        } else {
-            if (path.startsWith("/"))
-                path = path.substring(1);
-            Path dst = FileSystems.getDefault().getPath(path);
-            Path parent = dst.getParent();
-            if (parent.notExists())
-                mkdirs(parent);
-            src.copyTo(dst, REPLACE_EXISTING);
-        }
-    }
-
-    // use DirectoryStream
-    private static void z2zcopy(FileSystem src, FileSystem dst, String path)
-        throws IOException
-    {
-        Path srcPath = src.getPath(path);
-        Path dstPath = dst.getPath(path);
-
-        if (Boolean.TRUE.equals(srcPath.getAttribute("isDirectory"))) {
-            if (!dstPath.exists()) {
-                try {
-                    mkdirs(dstPath);
-                } catch (FileAlreadyExistsException x) {}
-            }
-            DirectoryStream<Path> ds = srcPath.newDirectoryStream();
-            for (Path child : ds) {
-                z2zcopy(src, dst,
-                        path + (path.endsWith("/")?"":"/") + child.getName());
-            }
-            ds.close();
-        } else {
-            //System.out.println("copying..." + path);
-            srcPath.copyTo(dstPath);
-        }
-    }
-
-    // use TreeWalk to move
-    private static void z2zmove(FileSystem src, FileSystem dst, String path)
-        throws IOException
-    {
-        final Path srcPath = src.getPath(path).toAbsolutePath();
-        final Path dstPath = dst.getPath(path).toAbsolutePath();
-
-        Files.walkFileTree(srcPath, new SimpleFileVisitor<Path>() {
-
-            @Override
-            public FileVisitResult visitFile(Path file,
-                                            BasicFileAttributes attrs)
-            {
-                Path dst = srcPath.relativize(file);
-                dst = dstPath.resolve(dst);
-                try {
-                    Path parent = dstPath.getParent();
-                    if (parent != null && parent.notExists())
-                        mkdirs(parent);
-                    file.moveTo(dst);
-                } catch (IOException x) {
-                    x.printStackTrace();
-                }
-                return FileVisitResult.CONTINUE;
-            }
-
-            @Override
-            public FileVisitResult preVisitDirectory(Path dir,
-                                                     BasicFileAttributes attrs)
-            {
-                Path dst = srcPath.relativize(dir);
-                dst = dstPath.resolve(dst);
-                try {
-
-                    if (dst.notExists())
-                        mkdirs(dst);
-                } catch (IOException x) {
-                    x.printStackTrace();
-                }
-                return FileVisitResult.CONTINUE;
-            }
-
-            @Override
-            public FileVisitResult postVisitDirectory(Path dir,
-                                                      IOException ioe)
-                throws IOException
-            {
-                try {
-                    dir.delete();
-                } catch (IOException x) {
-                    //x.printStackTrace();
-                }
-                return FileVisitResult.CONTINUE;
-            }
-        });
-
-    }
-
-    private static void mkdirs(Path path) throws IOException {
-        path = path.toAbsolutePath();
-        Path parent = path.getParent();
-        if (parent != null) {
-            if (parent.notExists())
-                mkdirs(parent);
-        }
-        path.createDirectory();
-    }
-
-    private static void rmdirs(Path path) throws IOException {
-        while (path != null && path.getNameCount() != 0) {
-            path.delete();
-            path = path.getParent();
-        }
-    }
-
-    private static void list(Path path, boolean verbose ) throws IOException {
-        if (!"/".equals(path.toString())) {
-           System.out.printf("  %s%n", path.toString());
-           if (verbose)
-                System.out.println(Attributes.readBasicFileAttributes(path).toString());
-        }
-        if (path.notExists())
-            return;
-        if (Attributes.readBasicFileAttributes(path).isDirectory()) {
-            DirectoryStream<Path> ds = path.newDirectoryStream();
-            for (Path child : ds)
-                list(child, verbose);
-            ds.close();
-        }
-    }
-
-    // check the content of two paths are equal
-    private static void checkEqual(Path src, Path dst) throws IOException
-    {
-        //System.out.printf("checking <%s> vs <%s>...%n",
-        //                  src.toString(), dst.toString());
-
-        //streams
-        InputStream isSrc = src.newInputStream();
-        InputStream isDst = dst.newInputStream();
-        byte[] bufSrc = new byte[8192];
-        byte[] bufDst = new byte[8192];
-
-        try {
-            int nSrc = 0;
-            while ((nSrc = isSrc.read(bufSrc)) != -1) {
-                int nDst = 0;
-                while (nDst < nSrc) {
-                    int n = isDst.read(bufDst, nDst, nSrc - nDst);
-                    if (n == -1) {
-                        System.out.printf("checking <%s> vs <%s>...%n",
-                                          src.toString(), dst.toString());
-                        throw new RuntimeException("CHECK FAILED!");
-                    }
-                    nDst += n;
-                }
-                while (--nSrc >= 0) {
-                    if (bufSrc[nSrc] != bufDst[nSrc]) {
-                        System.out.printf("checking <%s> vs <%s>...%n",
-                                          src.toString(), dst.toString());
-                        throw new RuntimeException("CHECK FAILED!");
-                    }
-                    nSrc--;
-                }
-            }
-        } finally {
-            isSrc.close();
-            isDst.close();
-        }
-
-        // channels
-        SeekableByteChannel chSrc = src.newByteChannel();
-        SeekableByteChannel chDst = dst.newByteChannel();
-        if (chSrc.size() != chDst.size()) {
-            System.out.printf("src[%s].size=%d, dst[%s].size=%d%n",
-                              chSrc.toString(), chSrc.size(),
-                              chDst.toString(), chDst.size());
-            throw new RuntimeException("CHECK FAILED!");
-        }
-        ByteBuffer bbSrc = ByteBuffer.allocate(8192);
-        ByteBuffer bbDst = ByteBuffer.allocate(8192);
-
-        try {
-            int nSrc = 0;
-            while ((nSrc = chSrc.read(bbSrc)) != -1) {
-                int nDst = chDst.read(bbDst);
-                if (nSrc != nDst) {
-                    System.out.printf("checking <%s> vs <%s>...%n",
-                                      src.toString(), dst.toString());
-                    throw new RuntimeException("CHECK FAILED!");
-                }
-                while (--nSrc >= 0) {
-                    if (bbSrc.get(nSrc) != bbDst.get(nSrc)) {
-                        System.out.printf("checking <%s> vs <%s>...%n",
-                                          src.toString(), dst.toString());
-                        throw new RuntimeException("CHECK FAILED!");
-                    }
-                    nSrc--;
-                }
-                bbSrc.flip();
-                bbDst.flip();
-            }
-        } catch (IOException x) {
-            x.printStackTrace();
-        } finally {
-            chSrc.close();
-            chDst.close();
-        }
-    }
-
-    private static void fchCopy(Path src, Path dst) throws IOException
-    {
-        Set<OpenOption> read = new HashSet<>();
-        read.add(READ);
-        Set<OpenOption> openwrite = new HashSet<>();
-        openwrite.add(CREATE_NEW);
-        openwrite.add(WRITE);
-
-        FileChannel srcFc = src.getFileSystem()
-                               .provider()
-                               .newFileChannel(src, read);
-        FileChannel dstFc = dst.getFileSystem()
-                               .provider()
-                               .newFileChannel(dst, openwrite);
-
-        try {
-            ByteBuffer bb = ByteBuffer.allocate(8192);
-            while (srcFc.read(bb) >= 0) {
-                bb.flip();
-                dstFc.write(bb);
-                bb.clear();
-            }
-        } finally {
-            srcFc.close();
-            dstFc.close();
-        }
-    }
-
-    private static void chCopy(Path src, Path dst) throws IOException
-    {
-        Set<OpenOption> read = new HashSet<>();
-        read.add(READ);
-        Set<OpenOption> openwrite = new HashSet<>();
-        openwrite.add(CREATE_NEW);
-        openwrite.add(WRITE);
-
-        SeekableByteChannel srcCh = src.newByteChannel(read);
-        SeekableByteChannel dstCh = dst.newByteChannel(openwrite);
-
-        try {
-            ByteBuffer bb = ByteBuffer.allocate(8192);
-            while (srcCh.read(bb) >= 0) {
-                bb.flip();
-                dstCh.write(bb);
-                bb.clear();
-            }
-        } finally {
-            srcCh.close();
-            dstCh.close();
-        }
-    }
-
-    private static void streamCopy(Path src, Path dst) throws IOException
-    {
-        InputStream isSrc = src.newInputStream();
-        OutputStream osDst = dst.newOutputStream();
-        byte[] buf = new byte[8192];
-        try {
-            int n = 0;
-            while ((n = isSrc.read(buf)) != -1) {
-                osDst.write(buf, 0, n);
-            }
-        } finally {
-            isSrc.close();
-            osDst.close();
-        }
-    }
-}
--- a/jdk/src/share/native/java/io/io_util.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/java/io/io_util.c	Wed Jul 05 17:35:13 2017 +0200
@@ -44,7 +44,7 @@
         JNU_ThrowIOException(env, "Stream Closed");
         return -1;
     }
-    nread = IO_Read(fd, &ret, 1);
+    nread = (jint)IO_Read(fd, &ret, 1);
     if (nread == 0) { /* EOF */
         return -1;
     } else if (nread == JVM_IO_ERR) { /* error */
@@ -108,7 +108,7 @@
         JNU_ThrowIOException(env, "Stream Closed");
         nread = -1;
     } else {
-        nread = IO_Read(fd, buf, len);
+        nread = (jint)IO_Read(fd, buf, len);
         if (nread > 0) {
             (*env)->SetByteArrayRegion(env, bytes, off, nread, (jbyte *)buf);
         } else if (nread == JVM_IO_ERR) {
@@ -137,9 +137,9 @@
         return;
     }
     if (append == JNI_TRUE) {
-        n = IO_Append(fd, &c, 1);
+        n = (jint)IO_Append(fd, &c, 1);
     } else {
-        n = IO_Write(fd, &c, 1);
+        n = (jint)IO_Write(fd, &c, 1);
     }
     if (n == JVM_IO_ERR) {
         JNU_ThrowIOExceptionWithLastError(env, "Write error");
@@ -190,9 +190,9 @@
                 break;
             }
             if (append == JNI_TRUE) {
-                n = IO_Append(fd, buf+off, len);
+                n = (jint)IO_Append(fd, buf+off, len);
             } else {
-                n = IO_Write(fd, buf+off, len);
+                n = (jint)IO_Write(fd, buf+off, len);
             }
             if (n == JVM_IO_ERR) {
                 JNU_ThrowIOExceptionWithLastError(env, "Write error");
--- a/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/ECC_JNI.cpp	Wed Jul 05 17:35:13 2017 +0200
@@ -38,7 +38,7 @@
 /*
  * Throws an arbitrary Java exception.
  */
-void ThrowException(JNIEnv *env, char *exceptionName)
+void ThrowException(JNIEnv *env, const char *exceptionName)
 {
     jclass exceptionClazz = env->FindClass(exceptionName);
     env->ThrowNew(exceptionClazz, NULL);
@@ -89,7 +89,7 @@
     // Fill a new ECParams using the supplied OID
     if (EC_DecodeParams(&params_item, &ecparams, 0) != SECSuccess) {
         /* bad curve OID */
-        ThrowException(env, (char *) INVALID_ALGORITHM_PARAMETER_EXCEPTION);
+        ThrowException(env, INVALID_ALGORITHM_PARAMETER_EXCEPTION);
         goto cleanup;
     }
 
@@ -101,7 +101,7 @@
     // Generate the new keypair (using the supplied seed)
     if (EC_NewKey(ecparams, &privKey, (unsigned char *) pSeedBuffer,
         jSeedLength, 0) != SECSuccess) {
-        ThrowException(env, (char *) KEY_EXCEPTION);
+        ThrowException(env, KEY_EXCEPTION);
         goto cleanup;
     }
 
--- a/jdk/src/share/native/sun/security/ec/impl/ec.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ec.c	Wed Jul 05 17:35:13 2017 +0200
@@ -51,12 +51,10 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "mplogic.h"
 #include "ec.h"
 #include "ecl.h"
@@ -67,6 +65,7 @@
 #include <string.h>
 
 #ifndef _WIN32
+#include <stdio.h>
 #include <strings.h>
 #endif /* _WIN32 */
 
@@ -116,7 +115,7 @@
     ECGroup *group = NULL;
     SECStatus rv = SECFailure;
     mp_err err = MP_OKAY;
-    int len;
+    unsigned int len;
 
 #if EC_DEBUG
     int i;
@@ -278,10 +277,6 @@
     printf("ec_NewKey called\n");
 #endif
 
-#ifndef _WIN32
-int printf();
-#endif /* _WIN32 */
-
     if (!ecParams || !privKey || !privKeyBytes || (privKeyLen < 0)) {
         PORT_SetError(SEC_ERROR_INVALID_ARGS);
         return SECFailure;
@@ -361,8 +356,9 @@
 
 cleanup:
     mp_clear(&k);
-    if (rv)
+    if (rv) {
         PORT_FreeArena(arena, PR_TRUE);
+    }
 
 #if EC_DEBUG
     printf("ec_NewKey returning %s\n",
@@ -504,7 +500,7 @@
     ECGroup *group = NULL;
     SECStatus rv = SECFailure;
     mp_err err = MP_OKAY;
-    int len;
+    unsigned int len;
 
     if (!ecParams || !publicValue) {
         PORT_SetError(SEC_ERROR_INVALID_ARGS);
@@ -778,7 +774,7 @@
     /* In the definition of EC signing, digests are truncated
      * to the length of n in bits.
      * (see SEC 1 "Elliptic Curve Digit Signature Algorithm" section 4.1.*/
-    if (digest->len*8 > ecParams->fieldID.size) {
+    if (digest->len*8 > (unsigned int)ecParams->fieldID.size) {
         mpl_rsh(&s,&s,digest->len*8 - ecParams->fieldID.size);
     }
 
@@ -993,7 +989,8 @@
     /* In the definition of EC signing, digests are truncated
      * to the length of n in bits.
      * (see SEC 1 "Elliptic Curve Digit Signature Algorithm" section 4.1.*/
-    if (digest->len*8 > ecParams->fieldID.size) {  /* u1 = HASH(M')     */
+    /* u1 = HASH(M')     */
+    if (digest->len*8 > (unsigned int)ecParams->fieldID.size) {
         mpl_rsh(&u1,&u1,digest->len*8- ecParams->fieldID.size);
     }
 
--- a/jdk/src/share/native/sun/security/ec/impl/ec.h	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ec.h	Wed Jul 05 17:35:13 2017 +0200
@@ -57,8 +57,6 @@
 #ifndef __ec_h_
 #define __ec_h_
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #define EC_DEBUG                          0
 #define EC_POINT_FORM_COMPRESSED_Y0    0x02
 #define EC_POINT_FORM_COMPRESSED_Y1    0x03
--- a/jdk/src/share/native/sun/security/ec/impl/ec2.h	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ec2.h	Wed Jul 05 17:35:13 2017 +0200
@@ -57,8 +57,6 @@
 #ifndef _EC2_H
 #define _EC2_H
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "ecl-priv.h"
 
 /* Checks if point P(px, py) is at infinity.  Uses affine coordinates. */
--- a/jdk/src/share/native/sun/security/ec/impl/ec2_163.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ec2_163.c	Wed Jul 05 17:35:13 2017 +0200
@@ -56,8 +56,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "ec2.h"
 #include "mp_gf2m.h"
 #include "mp_gf2m-priv.h"
--- a/jdk/src/share/native/sun/security/ec/impl/ec2_193.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ec2_193.c	Wed Jul 05 17:35:13 2017 +0200
@@ -56,8 +56,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "ec2.h"
 #include "mp_gf2m.h"
 #include "mp_gf2m-priv.h"
--- a/jdk/src/share/native/sun/security/ec/impl/ec2_233.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ec2_233.c	Wed Jul 05 17:35:13 2017 +0200
@@ -56,8 +56,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "ec2.h"
 #include "mp_gf2m.h"
 #include "mp_gf2m-priv.h"
--- a/jdk/src/share/native/sun/security/ec/impl/ec2_aff.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ec2_aff.c	Wed Jul 05 17:35:13 2017 +0200
@@ -54,8 +54,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "ec2.h"
 #include "mplogic.h"
 #include "mp_gf2m.h"
--- a/jdk/src/share/native/sun/security/ec/impl/ec2_mont.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ec2_mont.c	Wed Jul 05 17:35:13 2017 +0200
@@ -56,8 +56,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "ec2.h"
 #include "mplogic.h"
 #include "mp_gf2m.h"
--- a/jdk/src/share/native/sun/security/ec/impl/ec_naf.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ec_naf.c	Wed Jul 05 17:35:13 2017 +0200
@@ -54,8 +54,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "ecl-priv.h"
 
 /* Returns 2^e as an integer. This is meant to be used for small powers of
--- a/jdk/src/share/native/sun/security/ec/impl/ecc_impl.h	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ecc_impl.h	Wed Jul 05 17:35:13 2017 +0200
@@ -51,15 +51,13 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
 #ifndef _ECC_IMPL_H
 #define _ECC_IMPL_H
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -82,6 +80,7 @@
 typedef unsigned char uint8_t;
 typedef unsigned long ulong_t;
 typedef enum boolean { B_FALSE, B_TRUE } boolean_t;
+#define strdup _strdup          /* Replace POSIX name with ISO C++ name */
 #endif /* _WIN32 */
 
 #ifndef _KERNEL
--- a/jdk/src/share/native/sun/security/ec/impl/ecdecode.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ecdecode.c	Wed Jul 05 17:35:13 2017 +0200
@@ -55,8 +55,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include <sys/types.h>
 
 #ifndef _WIN32
@@ -90,7 +88,7 @@
 {
     int i = 0;
     int byteval = 0;
-    int tmp = strlen(str);
+    int tmp = (int)strlen(str);
 
     if ((tmp % 2) != 0) return NULL;
 
@@ -134,7 +132,8 @@
     /* 2 ['0'+'4'] + MAX_ECKEY_LEN * 2 [x,y] * 2 [hex string] + 1 ['\0'] */
     char genenc[3 + 2 * 2 * MAX_ECKEY_LEN];
 
-    if ((name < ECCurve_noName) || (name > ECCurve_pastLastCurve)) goto cleanup;
+    if (((int)name < ECCurve_noName) || (name > ECCurve_pastLastCurve))
+        goto cleanup;
     params->name = name;
     curveParams = ecCurve_map[params->name];
     CHECK_OK(curveParams);
--- a/jdk/src/share/native/sun/security/ec/impl/ecl-curve.h	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ecl-curve.h	Wed Jul 05 17:35:13 2017 +0200
@@ -57,8 +57,6 @@
 #ifndef _ECL_CURVE_H
 #define _ECL_CURVE_H
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "ecl-exp.h"
 #ifndef _KERNEL
 #include <stdlib.h>
--- a/jdk/src/share/native/sun/security/ec/impl/ecl-exp.h	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ecl-exp.h	Wed Jul 05 17:35:13 2017 +0200
@@ -57,8 +57,6 @@
 #ifndef _ECL_EXP_H
 #define _ECL_EXP_H
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 /* Curve field type */
 typedef enum {
         ECField_GFp,
--- a/jdk/src/share/native/sun/security/ec/impl/ecl-priv.h	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ecl-priv.h	Wed Jul 05 17:35:13 2017 +0200
@@ -58,8 +58,6 @@
 #ifndef _ECL_PRIV_H
 #define _ECL_PRIV_H
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "ecl.h"
 #include "mpi.h"
 #include "mplogic.h"
@@ -90,6 +88,10 @@
     s = ACCUM(w); \
     cout = CARRYOUT(w); }
 
+/* Handle case when carry-in value is zero */
+#define MP_ADD_CARRY_ZERO(a1, a2, s, cout)   \
+    MP_ADD_CARRY(a1, a2, s, 0, cout);
+
 #define MP_SUB_BORROW(a1, a2, s, bin, bout)   \
     { mp_word w; \
     w = ((mp_word)(a1)) - (a2) - (bin); \
@@ -111,6 +113,15 @@
     s = sum += (cin); \
     cout = tmp + (sum < (cin)); }
 
+/* Handle case when carry-in value is zero */
+#define MP_ADD_CARRY_ZERO(a1, a2, s, cout)   \
+    { mp_digit tmp,sum; \
+    tmp = (a1); \
+    sum = tmp + (a2); \
+    tmp = (sum < tmp);                     /* detect overflow */ \
+    s = sum; \
+    cout = tmp; }
+
 #define MP_SUB_BORROW(a1, a2, s, bin, bout)   \
     { mp_digit tmp; \
     tmp = (a1); \
--- a/jdk/src/share/native/sun/security/ec/impl/ecl.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ecl.c	Wed Jul 05 17:35:13 2017 +0200
@@ -54,8 +54,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "mpi.h"
 #include "mplogic.h"
 #include "ecl.h"
--- a/jdk/src/share/native/sun/security/ec/impl/ecl.h	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ecl.h	Wed Jul 05 17:35:13 2017 +0200
@@ -57,8 +57,6 @@
 #ifndef _ECL_H
 #define _ECL_H
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 /* Although this is not an exported header file, code which uses elliptic
  * curve point operations will need to include it. */
 
--- a/jdk/src/share/native/sun/security/ec/impl/ecl_curve.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ecl_curve.c	Wed Jul 05 17:35:13 2017 +0200
@@ -54,8 +54,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "ecl.h"
 #include "ecl-curve.h"
 #include "ecl-priv.h"
--- a/jdk/src/share/native/sun/security/ec/impl/ecl_gf.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ecl_gf.c	Wed Jul 05 17:35:13 2017 +0200
@@ -55,8 +55,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "mpi.h"
 #include "mp_gf2m.h"
 #include "ecl-priv.h"
@@ -307,7 +305,7 @@
         }
 
 #ifndef MPI_AMD64_ADD
-        MP_ADD_CARRY(a0, r0, r0, 0,     carry);
+        MP_ADD_CARRY_ZERO(a0, r0, r0, carry);
         MP_ADD_CARRY(a1, r1, r1, carry, carry);
         MP_ADD_CARRY(a2, r2, r2, carry, carry);
 #else
@@ -394,7 +392,7 @@
         }
 
 #ifndef MPI_AMD64_ADD
-        MP_ADD_CARRY(a0, r0, r0, 0,     carry);
+        MP_ADD_CARRY_ZERO(a0, r0, r0, carry);
         MP_ADD_CARRY(a1, r1, r1, carry, carry);
         MP_ADD_CARRY(a2, r2, r2, carry, carry);
         MP_ADD_CARRY(a3, r3, r3, carry, carry);
@@ -491,7 +489,7 @@
                 r0 = MP_DIGIT(b,0);
         }
 
-        MP_ADD_CARRY(a0, r0, r0, 0,     carry);
+        MP_ADD_CARRY_ZERO(a0, r0, r0, carry);
         MP_ADD_CARRY(a1, r1, r1, carry, carry);
         MP_ADD_CARRY(a2, r2, r2, carry, carry);
         MP_ADD_CARRY(a3, r3, r3, carry, carry);
@@ -572,7 +570,7 @@
                 r0 = MP_DIGIT(b,0);
         }
 
-        MP_ADD_CARRY(a0, r0, r0, 0,     carry);
+        MP_ADD_CARRY_ZERO(a0, r0, r0, carry);
         MP_ADD_CARRY(a1, r1, r1, carry, carry);
         MP_ADD_CARRY(a2, r2, r2, carry, carry);
         MP_ADD_CARRY(a3, r3, r3, carry, carry);
@@ -675,7 +673,7 @@
                 b1 = MP_DIGIT(&meth->irr,1);
                 b0 = MP_DIGIT(&meth->irr,0);
 #ifndef MPI_AMD64_ADD
-                MP_ADD_CARRY(b0, r0, r0, 0,      borrow);
+                MP_ADD_CARRY_ZERO(b0, r0, r0, borrow);
                 MP_ADD_CARRY(b1, r1, r1, borrow, borrow);
                 MP_ADD_CARRY(b2, r2, r2, borrow, borrow);
 #else
@@ -766,7 +764,7 @@
                 b1 = MP_DIGIT(&meth->irr,1);
                 b0 = MP_DIGIT(&meth->irr,0);
 #ifndef MPI_AMD64_ADD
-                MP_ADD_CARRY(b0, r0, r0, 0,      borrow);
+                MP_ADD_CARRY_ZERO(b0, r0, r0, borrow);
                 MP_ADD_CARRY(b1, r1, r1, borrow, borrow);
                 MP_ADD_CARRY(b2, r2, r2, borrow, borrow);
                 MP_ADD_CARRY(b3, r3, r3, borrow, borrow);
@@ -850,7 +848,7 @@
                 b2 = MP_DIGIT(&meth->irr,2);
                 b1 = MP_DIGIT(&meth->irr,1);
                 b0 = MP_DIGIT(&meth->irr,0);
-                MP_ADD_CARRY(b0, r0, r0, 0,      borrow);
+                MP_ADD_CARRY_ZERO(b0, r0, r0, borrow);
                 MP_ADD_CARRY(b1, r1, r1, borrow, borrow);
                 MP_ADD_CARRY(b2, r2, r2, borrow, borrow);
                 MP_ADD_CARRY(b3, r3, r3, borrow, borrow);
@@ -924,7 +922,7 @@
                 b2 = MP_DIGIT(&meth->irr,2);
                 b1 = MP_DIGIT(&meth->irr,1);
                 b0 = MP_DIGIT(&meth->irr,0);
-                MP_ADD_CARRY(b0, r0, r0, 0,      borrow);
+                MP_ADD_CARRY_ZERO(b0, r0, r0, borrow);
                 MP_ADD_CARRY(b1, r1, r1, borrow, borrow);
                 MP_ADD_CARRY(b2, r2, r2, borrow, borrow);
                 MP_ADD_CARRY(b3, r3, r3, borrow, borrow);
--- a/jdk/src/share/native/sun/security/ec/impl/ecl_mult.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ecl_mult.c	Wed Jul 05 17:35:13 2017 +0200
@@ -54,8 +54,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "mpi.h"
 #include "mplogic.h"
 #include "ecl.h"
--- a/jdk/src/share/native/sun/security/ec/impl/ecp.h	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ecp.h	Wed Jul 05 17:35:13 2017 +0200
@@ -57,8 +57,6 @@
 #ifndef _ECP_H
 #define _ECP_H
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "ecl-priv.h"
 
 /* Checks if point P(px, py) is at infinity.  Uses affine coordinates. */
--- a/jdk/src/share/native/sun/security/ec/impl/ecp_192.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ecp_192.c	Wed Jul 05 17:35:13 2017 +0200
@@ -54,8 +54,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "ecp.h"
 #include "mpi.h"
 #include "mplogic.h"
@@ -210,15 +208,15 @@
 
                 /* implement r = (a2,a1,a0)+(a5,a5,a5)+(a4,a4,0)+(0,a3,a3) */
 #ifndef MPI_AMD64_ADD
-                MP_ADD_CARRY(r0, a3, r0, 0,     carry);
+                MP_ADD_CARRY_ZERO(r0, a3, r0, carry);
                 MP_ADD_CARRY(r1, a3, r1, carry, carry);
                 MP_ADD_CARRY(r2, a4, r2, carry, carry);
                 r3 = carry;
-                MP_ADD_CARRY(r0, a5, r0, 0,     carry);
+                MP_ADD_CARRY_ZERO(r0, a5, r0, carry);
                 MP_ADD_CARRY(r1, a5, r1, carry, carry);
                 MP_ADD_CARRY(r2, a5, r2, carry, carry);
                 r3 += carry;
-                MP_ADD_CARRY(r1, a4, r1, 0,     carry);
+                MP_ADD_CARRY_ZERO(r1, a4, r1, carry);
                 MP_ADD_CARRY(r2,  0, r2, carry, carry);
                 r3 += carry;
 
@@ -251,7 +249,7 @@
                 /* reduce out the carry */
                 while (r3) {
 #ifndef MPI_AMD64_ADD
-                        MP_ADD_CARRY(r0, r3, r0, 0,     carry);
+                        MP_ADD_CARRY_ZERO(r0, r3, r0, carry);
                         MP_ADD_CARRY(r1, r3, r1, carry, carry);
                         MP_ADD_CARRY(r2,  0, r2, carry, carry);
                         r3 = carry;
@@ -335,7 +333,7 @@
         }
 
 #ifndef MPI_AMD64_ADD
-        MP_ADD_CARRY(a0, r0, r0, 0,     carry);
+        MP_ADD_CARRY_ZERO(a0, r0, r0, carry);
         MP_ADD_CARRY(a1, r1, r1, carry, carry);
         MP_ADD_CARRY(a2, r2, r2, carry, carry);
 #else
@@ -357,7 +355,7 @@
                       ((r1 == MP_DIGIT_MAX) ||
                         ((r1 == (MP_DIGIT_MAX-1)) && (r0 == MP_DIGIT_MAX))))) {
 #ifndef MPI_AMD64_ADD
-                MP_ADD_CARRY(r0, 1, r0, 0,     carry);
+                MP_ADD_CARRY_ZERO(r0, 1, r0, carry);
                 MP_ADD_CARRY(r1, 1, r1, carry, carry);
                 MP_ADD_CARRY(r2, 0, r2, carry, carry);
 #else
--- a/jdk/src/share/native/sun/security/ec/impl/ecp_224.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ecp_224.c	Wed Jul 05 17:35:13 2017 +0200
@@ -54,8 +54,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "ecp.h"
 #include "mpi.h"
 #include "mplogic.h"
@@ -251,10 +249,10 @@
                         +(  0, a6,a5b,  0)
                         -(  0    0,    0|a6b, a6a|a5b )
                         -(  a6b, a6a|a5b, a5a|a4b, a4a|a3b ) */
-                MP_ADD_CARRY (r1, a3b, r1, 0,     carry);
+                MP_ADD_CARRY_ZERO (r1, a3b, r1, carry);
                 MP_ADD_CARRY (r2, a4 , r2, carry, carry);
                 MP_ADD_CARRY (r3, a5a, r3, carry, carry);
-                MP_ADD_CARRY (r1, a5b, r1, 0,     carry);
+                MP_ADD_CARRY_ZERO (r1, a5b, r1, carry);
                 MP_ADD_CARRY (r2, a6 , r2, carry, carry);
                 MP_ADD_CARRY (r3,   0, r3, carry, carry);
 
@@ -275,7 +273,7 @@
                 r3b = (int)(r3 >>32);
                 while (r3b > 0) {
                         r3 &= 0xffffffff;
-                        MP_ADD_CARRY(r1,((mp_digit)r3b) << 32, r1, 0, carry);
+                        MP_ADD_CARRY_ZERO(r1,((mp_digit)r3b) << 32, r1, carry);
                         if (carry) {
                                 MP_ADD_CARRY(r2,  0, r2, carry, carry);
                                 MP_ADD_CARRY(r3,  0, r3, carry, carry);
@@ -290,7 +288,7 @@
                 }
 
                 while (r3b < 0) {
-                        MP_ADD_CARRY (r0, 1, r0, 0,     carry);
+                        MP_ADD_CARRY_ZERO (r0, 1, r0, carry);
                         MP_ADD_CARRY (r1, MP_DIGIT_MAX <<32, r1, carry, carry);
                         MP_ADD_CARRY (r2, MP_DIGIT_MAX, r2, carry, carry);
                         MP_ADD_CARRY (r3, MP_DIGIT_MAX >> 32, r3, carry, carry);
--- a/jdk/src/share/native/sun/security/ec/impl/ecp_256.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ecp_256.c	Wed Jul 05 17:35:13 2017 +0200
@@ -54,8 +54,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "ecp.h"
 #include "mpi.h"
 #include "mplogic.h"
@@ -303,32 +301,32 @@
                 r0 = MP_DIGIT(a,0);
 
                 /* sum 1 */
-                MP_ADD_CARRY(r1, a5h << 32, r1, 0,     carry);
+                MP_ADD_CARRY_ZERO(r1, a5h << 32, r1, carry);
                 MP_ADD_CARRY(r2, a6,        r2, carry, carry);
                 MP_ADD_CARRY(r3, a7,        r3, carry, carry);
                 r4 = carry;
-                MP_ADD_CARRY(r1, a5h << 32, r1, 0,     carry);
+                MP_ADD_CARRY_ZERO(r1, a5h << 32, r1, carry);
                 MP_ADD_CARRY(r2, a6,        r2, carry, carry);
                 MP_ADD_CARRY(r3, a7,        r3, carry, carry);
                 r4 += carry;
                 /* sum 2 */
-                MP_ADD_CARRY(r1, a6l,       r1, 0,     carry);
+                MP_ADD_CARRY_ZERO(r1, a6l,       r1, carry);
                 MP_ADD_CARRY(r2, a6h | a7l, r2, carry, carry);
                 MP_ADD_CARRY(r3, a7h,       r3, carry, carry);
                 r4 += carry;
-                MP_ADD_CARRY(r1, a6l,       r1, 0,     carry);
+                MP_ADD_CARRY_ZERO(r1, a6l,       r1, carry);
                 MP_ADD_CARRY(r2, a6h | a7l, r2, carry, carry);
                 MP_ADD_CARRY(r3, a7h,       r3, carry, carry);
                 r4 += carry;
 
                 /* sum 3 */
-                MP_ADD_CARRY(r0, a4,        r0, 0,     carry);
+                MP_ADD_CARRY_ZERO(r0, a4,        r0, carry);
                 MP_ADD_CARRY(r1, a5l >> 32, r1, carry, carry);
                 MP_ADD_CARRY(r2, 0,         r2, carry, carry);
                 MP_ADD_CARRY(r3, a7,        r3, carry, carry);
                 r4 += carry;
                 /* sum 4 */
-                MP_ADD_CARRY(r0, a4h | a5l,     r0, 0,     carry);
+                MP_ADD_CARRY_ZERO(r0, a4h | a5l,     r0, carry);
                 MP_ADD_CARRY(r1, a5h|(a6h<<32), r1, carry, carry);
                 MP_ADD_CARRY(r2, a7,            r2, carry, carry);
                 MP_ADD_CARRY(r3, a6h | a4l,     r3, carry, carry);
@@ -362,7 +360,7 @@
                 while (r4 > 0) {
                         mp_digit r4_long = r4;
                         mp_digit r4l = (r4_long << 32);
-                        MP_ADD_CARRY(r0, r4_long,      r0, 0,     carry);
+                        MP_ADD_CARRY_ZERO(r0, r4_long,      r0, carry);
                         MP_ADD_CARRY(r1, -r4l,         r1, carry, carry);
                         MP_ADD_CARRY(r2, MP_DIGIT_MAX, r2, carry, carry);
                         MP_ADD_CARRY(r3, r4l-r4_long-1,r3, carry, carry);
--- a/jdk/src/share/native/sun/security/ec/impl/ecp_384.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ecp_384.c	Wed Jul 05 17:35:13 2017 +0200
@@ -54,8 +54,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "ecp.h"
 #include "mpi.h"
 #include "mplogic.h"
--- a/jdk/src/share/native/sun/security/ec/impl/ecp_521.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ecp_521.c	Wed Jul 05 17:35:13 2017 +0200
@@ -50,12 +50,10 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "ecp.h"
 #include "mpi.h"
 #include "mplogic.h"
@@ -74,7 +72,7 @@
 {
         mp_err res = MP_OKAY;
         int a_bits = mpl_significant_bits(a);
-        int i;
+        unsigned int i;
 
         /* m1, m2 are statically-allocated mp_int of exactly the size we need */
         mp_int m1;
--- a/jdk/src/share/native/sun/security/ec/impl/ecp_aff.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ecp_aff.c	Wed Jul 05 17:35:13 2017 +0200
@@ -59,8 +59,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "ecp.h"
 #include "mplogic.h"
 #ifndef _KERNEL
--- a/jdk/src/share/native/sun/security/ec/impl/ecp_jac.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ecp_jac.c	Wed Jul 05 17:35:13 2017 +0200
@@ -59,8 +59,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "ecp.h"
 #include "mplogic.h"
 #ifndef _KERNEL
--- a/jdk/src/share/native/sun/security/ec/impl/ecp_jm.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ecp_jm.c	Wed Jul 05 17:35:13 2017 +0200
@@ -54,8 +54,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "ecp.h"
 #include "ecl-priv.h"
 #include "mplogic.h"
--- a/jdk/src/share/native/sun/security/ec/impl/ecp_mont.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/ecp_mont.c	Wed Jul 05 17:35:13 2017 +0200
@@ -54,8 +54,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 /* Uses Montgomery reduction for field arithmetic.  See mpi/mpmontg.c for
  * code implementation. */
 
--- a/jdk/src/share/native/sun/security/ec/impl/logtab.h	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/logtab.h	Wed Jul 05 17:35:13 2017 +0200
@@ -57,8 +57,6 @@
 #ifndef _LOGTAB_H
 #define _LOGTAB_H
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 const float s_logv_2[] = {
    0.000000000f, 0.000000000f, 1.000000000f, 0.630929754f,  /*  0  1  2  3 */
    0.500000000f, 0.430676558f, 0.386852807f, 0.356207187f,  /*  4  5  6  7 */
--- a/jdk/src/share/native/sun/security/ec/impl/mp_gf2m-priv.h	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/mp_gf2m-priv.h	Wed Jul 05 17:35:13 2017 +0200
@@ -58,8 +58,6 @@
 #ifndef _MP_GF2M_PRIV_H_
 #define _MP_GF2M_PRIV_H_
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "mpi-priv.h"
 
 extern const mp_digit mp_gf2m_sqr_tb[16];
--- a/jdk/src/share/native/sun/security/ec/impl/mp_gf2m.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/mp_gf2m.c	Wed Jul 05 17:35:13 2017 +0200
@@ -55,8 +55,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "mp_gf2m.h"
 #include "mp_gf2m-priv.h"
 #include "mplogic.h"
--- a/jdk/src/share/native/sun/security/ec/impl/mp_gf2m.h	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/mp_gf2m.h	Wed Jul 05 17:35:13 2017 +0200
@@ -58,8 +58,6 @@
 #ifndef _MP_GF2M_H_
 #define _MP_GF2M_H_
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "mpi.h"
 
 mp_err mp_badd(const mp_int *a, const mp_int *b, mp_int *c);
--- a/jdk/src/share/native/sun/security/ec/impl/mpi-config.h	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/mpi-config.h	Wed Jul 05 17:35:13 2017 +0200
@@ -57,8 +57,6 @@
 #ifndef _MPI_CONFIG_H
 #define _MPI_CONFIG_H
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 /* $Id: mpi-config.h,v 1.5 2004/04/25 15:03:10 gerv%gerv.net Exp $ */
 
 /*
--- a/jdk/src/share/native/sun/security/ec/impl/mpi-priv.h	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/mpi-priv.h	Wed Jul 05 17:35:13 2017 +0200
@@ -63,8 +63,6 @@
 #ifndef _MPI_PRIV_H
 #define _MPI_PRIV_H
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 /* $Id: mpi-priv.h,v 1.20 2005/11/22 07:16:43 relyea%netscape.com Exp $ */
 
 #include "mpi.h"
--- a/jdk/src/share/native/sun/security/ec/impl/mpi.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/mpi.c	Wed Jul 05 17:35:13 2017 +0200
@@ -54,12 +54,10 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 /* $Id: mpi.c,v 1.45 2006/09/29 20:12:21 alexei.volkov.bugs%sun.com Exp $ */
 
 #include "mpi-priv.h"
@@ -1148,7 +1146,7 @@
   mp_int   s, x;
   mp_err   res;
   mp_digit d;
-  int      dig, bit;
+  unsigned int      dig, bit;
 
   ARGCHK(a != NULL && b != NULL && c != NULL, MP_BADARG);
 
@@ -1523,7 +1521,7 @@
   mp_int   s, x, mu;
   mp_err   res;
   mp_digit d;
-  int      dig, bit;
+  unsigned int      dig, bit;
 
   ARGCHK(a != NULL && b != NULL && c != NULL, MP_BADARG);
 
@@ -2057,7 +2055,7 @@
 {
   mp_digit d;
   mp_size  n = 0;
-  int      ix;
+  unsigned int      ix;
 
   if (!mp || !MP_DIGITS(mp) || !mp_cmp_z(mp))
     return n;
@@ -2900,9 +2898,9 @@
 /* Allocate ni records of nb bytes each, and return a pointer to that     */
 void    *s_mp_alloc(size_t nb, size_t ni, int kmflag)
 {
-  mp_int *mp;
   ++mp_allocs;
 #ifdef _KERNEL
+  mp_int *mp;
   mp = kmem_zalloc(nb * ni, kmflag);
   if (mp != NULL)
     FLAG(mp) = kmflag;
@@ -3112,7 +3110,7 @@
 mp_err s_mp_mul_2(mp_int *mp)
 {
   mp_digit *pd;
-  int      ix, used;
+  unsigned int      ix, used;
   mp_digit kin = 0;
 
   /* Shift digits leftward by 1 bit */
@@ -4663,7 +4661,7 @@
 {
   char   ch;
 
-  if(val >= r)
+  if(val >= (unsigned int)r)
     return 0;
 
   ch = s_dmap_1[val];
@@ -4778,7 +4776,7 @@
 mp_to_unsigned_octets(const mp_int *mp, unsigned char *str, mp_size maxlen)
 {
   int  ix, pos = 0;
-  int  bytes;
+  unsigned int  bytes;
 
   ARGCHK(mp != NULL && str != NULL && !SIGN(mp), MP_BADARG);
 
@@ -4810,7 +4808,7 @@
 mp_to_signed_octets(const mp_int *mp, unsigned char *str, mp_size maxlen)
 {
   int  ix, pos = 0;
-  int  bytes;
+  unsigned int  bytes;
 
   ARGCHK(mp != NULL && str != NULL && !SIGN(mp), MP_BADARG);
 
@@ -4850,7 +4848,7 @@
 mp_to_fixlen_octets(const mp_int *mp, unsigned char *str, mp_size length)
 {
   int  ix, pos = 0;
-  int  bytes;
+  unsigned int  bytes;
 
   ARGCHK(mp != NULL && str != NULL && !SIGN(mp), MP_BADARG);
 
--- a/jdk/src/share/native/sun/security/ec/impl/mpi.h	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/mpi.h	Wed Jul 05 17:35:13 2017 +0200
@@ -60,8 +60,6 @@
 #ifndef _MPI_H
 #define _MPI_H
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 /* $Id: mpi.h,v 1.22 2004/04/27 23:04:36 gerv%gerv.net Exp $ */
 
 #include "mpi-config.h"
--- a/jdk/src/share/native/sun/security/ec/impl/mplogic.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/mplogic.c	Wed Jul 05 17:35:13 2017 +0200
@@ -56,8 +56,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 /* $Id: mplogic.c,v 1.15 2004/04/27 23:04:36 gerv%gerv.net Exp $ */
 
 #include "mpi-priv.h"
--- a/jdk/src/share/native/sun/security/ec/impl/mplogic.h	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/mplogic.h	Wed Jul 05 17:35:13 2017 +0200
@@ -59,8 +59,6 @@
 #ifndef _MPLOGIC_H
 #define _MPLOGIC_H
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 /* $Id: mplogic.h,v 1.7 2004/04/27 23:04:36 gerv%gerv.net Exp $ */
 
 #include "mpi.h"
--- a/jdk/src/share/native/sun/security/ec/impl/mpmontg.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/mpmontg.c	Wed Jul 05 17:35:13 2017 +0200
@@ -56,8 +56,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 /* $Id: mpmontg.c,v 1.20 2006/08/29 02:41:38 nelson%bolyard.com Exp $ */
 
 /* This file implements moduluar exponentiation using Montgomery's
--- a/jdk/src/share/native/sun/security/ec/impl/mpprime.h	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/mpprime.h	Wed Jul 05 17:35:13 2017 +0200
@@ -60,8 +60,6 @@
 #ifndef _MP_PRIME_H
 #define _MP_PRIME_H
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include "mpi.h"
 
 extern const int prime_tab_size;   /* number of primes available */
--- a/jdk/src/share/native/sun/security/ec/impl/oid.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/oid.c	Wed Jul 05 17:35:13 2017 +0200
@@ -50,12 +50,10 @@
  *
  *********************************************************************** */
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #include <sys/types.h>
 
 #ifndef _WIN32
@@ -433,8 +431,7 @@
 SECOID_FindOID(const SECItem *oid)
 {
     SECOidData *po;
-    SECOidData *ret;
-    int i;
+    SECOidData *ret = NULL;
 
     if (oid->len == 8) {
         if (oid->data[6] == 0x00) {
@@ -454,8 +451,6 @@
         po = &SECG_oids[oid->data[4]];
         if (memcmp(oid->data, po->oid.data, 5) == 0)
                 ret = po;
-    } else {
-        ret = NULL;
     }
     return(ret);
 }
--- a/jdk/src/share/native/sun/security/ec/impl/secitem.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/secitem.c	Wed Jul 05 17:35:13 2017 +0200
@@ -53,8 +53,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 /*
  * Support routines for SECItem data structure.
  *
--- a/jdk/src/share/native/sun/security/ec/impl/secoidt.h	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/native/sun/security/ec/impl/secoidt.h	Wed Jul 05 17:35:13 2017 +0200
@@ -57,8 +57,6 @@
 #ifndef _SECOIDT_H_
 #define _SECOIDT_H_
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 /*
  * secoidt.h - public data structures for ASN.1 OID functions
  *
--- a/jdk/src/share/sample/nio/file/AclEdit.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/sample/nio/file/AclEdit.java	Wed Jul 05 17:35:13 2017 +0200
@@ -239,7 +239,7 @@
 
         // read file's ACL
         AclFileAttributeView view =
-            file.getFileAttributeView(AclFileAttributeView.class);
+            Files.getFileAttributeView(file, AclFileAttributeView.class);
         if (view == null) {
             System.err.println("ACLs not supported on this platform");
             System.exit(-1);
--- a/jdk/src/share/sample/nio/file/Chmod.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/sample/nio/file/Chmod.java	Wed Jul 05 17:35:13 2017 +0200
@@ -264,11 +264,10 @@
     /**
      * Changes the permissions of the file using the given Changer.
      */
-    static void chmod(FileRef file, Changer changer) {
+    static void chmod(Path file, Changer changer) {
         try {
-            Set<PosixFilePermission> perms = Attributes
-                .readPosixFileAttributes(file).permissions();
-            Attributes.setPosixFilePermissions(file, changer.change(perms));
+            Set<PosixFilePermission> perms = Files.getPosixFilePermissions(file);
+            Files.setPosixFilePermissions(file, changer.change(perms));
         } catch (IOException x) {
             System.err.println(x);
         }
@@ -277,7 +276,7 @@
     /**
      * Changes the permission of each file and directory visited
      */
-    static class TreeVisitor implements FileVisitor<FileRef> {
+    static class TreeVisitor implements FileVisitor<Path> {
         private final Changer changer;
 
         TreeVisitor(Changer changer) {
@@ -285,26 +284,26 @@
         }
 
         @Override
-        public FileVisitResult preVisitDirectory(FileRef dir, BasicFileAttributes attrs) {
+        public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
             chmod(dir, changer);
             return CONTINUE;
         }
 
         @Override
-        public FileVisitResult visitFile(FileRef file, BasicFileAttributes attrs) {
+        public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
             chmod(file, changer);
             return CONTINUE;
         }
 
         @Override
-        public FileVisitResult postVisitDirectory(FileRef dir, IOException exc) {
+        public FileVisitResult postVisitDirectory(Path dir, IOException exc) {
             if (exc != null)
                 System.err.println("WARNING: " + exc);
             return CONTINUE;
         }
 
         @Override
-        public FileVisitResult visitFileFailed(FileRef file, IOException exc) {
+        public FileVisitResult visitFileFailed(Path file, IOException exc) {
             System.err.println("WARNING: " + exc);
             return CONTINUE;
         }
--- a/jdk/src/share/sample/nio/file/Copy.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/sample/nio/file/Copy.java	Wed Jul 05 17:35:13 2017 +0200
@@ -45,7 +45,7 @@
     /**
      * Returns {@code true} if okay to overwrite a  file ("cp -i")
      */
-    static boolean okayToOverwrite(FileRef file) {
+    static boolean okayToOverwrite(Path file) {
         String answer = System.console().readLine("overwrite %s (yes/no)? ", file);
         return (answer.equalsIgnoreCase("y") || answer.equalsIgnoreCase("yes"));
     }
@@ -59,9 +59,9 @@
         CopyOption[] options = (preserve) ?
             new CopyOption[] { COPY_ATTRIBUTES, REPLACE_EXISTING } :
             new CopyOption[] { REPLACE_EXISTING };
-        if (!prompt || target.notExists() || okayToOverwrite(target)) {
+        if (!prompt || Files.notExists(target) || okayToOverwrite(target)) {
             try {
-                source.copyTo(target, options);
+                Files.copy(source, target, options);
             } catch (IOException x) {
                 System.err.format("Unable to copy: %s: %s%n", source, x);
             }
@@ -93,7 +93,7 @@
 
             Path newdir = target.resolve(source.relativize(dir));
             try {
-                dir.copyTo(newdir, options);
+                Files.copy(dir, newdir, options);
             } catch (FileAlreadyExistsException x) {
                 // ignore
             } catch (IOException x) {
@@ -116,8 +116,8 @@
             if (exc == null && preserve) {
                 Path newdir = target.resolve(source.relativize(dir));
                 try {
-                    BasicFileAttributes attrs = Attributes.readBasicFileAttributes(dir);
-                    Attributes.setLastModifiedTime(newdir, attrs.lastModifiedTime());
+                    FileTime time = Files.getLastModifiedTime(dir);
+                    Files.setLastModifiedTime(newdir, time);
                 } catch (IOException x) {
                     System.err.format("Unable to copy all attributes to: %s: %s%n", newdir, x);
                 }
@@ -180,16 +180,11 @@
         Path target = Paths.get(args[argi]);
 
         // check if target is a directory
-        boolean isDir = false;
-        try {
-            isDir = Attributes.readBasicFileAttributes(target).isDirectory();
-        } catch (IOException x) {
-            // ignore (probably target does not exist)
-        }
+        boolean isDir = Files.isDirectory(target);
 
         // copy each source file/directory to target
         for (i=0; i<source.length; i++) {
-            Path dest = (isDir) ? target.resolve(source[i].getName()) : target;
+            Path dest = (isDir) ? target.resolve(source[i].getFileName()) : target;
 
             if (recursive) {
                 // follow links when copying files
@@ -198,13 +193,9 @@
                 Files.walkFileTree(source[i], opts, Integer.MAX_VALUE, tc);
             } else {
                 // not recursive so source must not be a directory
-                try {
-                    if (Attributes.readBasicFileAttributes(source[i]).isDirectory()) {
-                        System.err.format("%s: is a directory%n", source[i]);
-                        continue;
-                    }
-                } catch (IOException x) {
-                    // assume not directory
+                if (Files.isDirectory(source[i])) {
+                    System.err.format("%s: is a directory%n", source[i]);
+                    continue;
                 }
                 copyFile(source[i], dest, prompt, preserve);
             }
--- a/jdk/src/share/sample/nio/file/DiskUsage.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/sample/nio/file/DiskUsage.java	Wed Jul 05 17:35:13 2017 +0200
@@ -43,11 +43,9 @@
     static final long K = 1024;
 
     static void printFileStore(FileStore store) throws IOException {
-        FileStoreSpaceAttributes attrs = Attributes.readFileStoreSpaceAttributes(store);
-
-        long total = attrs.totalSpace() / K;
-        long used = (attrs.totalSpace() - attrs.unallocatedSpace()) / K;
-        long avail = attrs.usableSpace() / K;
+        long total = store.getTotalSpace() / K;
+        long used = (store.getTotalSpace() - store.getUnallocatedSpace()) / K;
+        long avail = store.getUsableSpace() / K;
 
         String s = store.toString();
         if (s.length() > 20) {
@@ -66,7 +64,7 @@
             }
         } else {
             for (String file: args) {
-                FileStore store = Paths.get(file).getFileStore();
+                FileStore store = Files.getFileStore(Paths.get(file));
                 printFileStore(store);
             }
         }
--- a/jdk/src/share/sample/nio/file/FileType.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/sample/nio/file/FileType.java	Wed Jul 05 17:35:13 2017 +0200
@@ -30,7 +30,6 @@
  */
 
 import java.nio.file.*;
-import java.nio.file.attribute.*;
 import java.io.IOException;
 
 public class FileType {
@@ -41,10 +40,8 @@
         }
         for (String arg: args) {
             Path file = Paths.get(arg);
-            BasicFileAttributes attrs = Attributes.readBasicFileAttributes(file);
-
             String type;
-            if (attrs.isDirectory()) {
+            if (Files.isDirectory(file)) {
                 type = "directory";
             } else {
                 type = Files.probeContentType(file);
--- a/jdk/src/share/sample/nio/file/WatchDir.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/sample/nio/file/WatchDir.java	Wed Jul 05 17:35:13 2017 +0200
@@ -58,7 +58,7 @@
     private void register(Path dir) throws IOException {
         WatchKey key = dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
         if (trace) {
-            FileRef prev = keys.get(key);
+            Path prev = keys.get(key);
             if (prev == null) {
                 System.out.format("register: %s\n", dir);
             } else {
@@ -147,7 +147,7 @@
                 // register it and its sub-directories
                 if (recursive && (kind == ENTRY_CREATE)) {
                     try {
-                        if (Attributes.readBasicFileAttributes(child, NOFOLLOW_LINKS).isDirectory()) {
+                        if (Files.isDirectory(child, NOFOLLOW_LINKS)) {
                             registerAll(child);
                         }
                     } catch (IOException x) {
--- a/jdk/src/share/sample/nio/file/Xdd.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/share/sample/nio/file/Xdd.java	Wed Jul 05 17:35:13 2017 +0200
@@ -58,14 +58,14 @@
             Paths.get(args[0]) : Paths.get(args[2]);
 
         // check that user defined attributes are supported by the file store
-        FileStore store = file.getFileStore();
+        FileStore store = Files.getFileStore(file);
         if (!store.supportsFileAttributeView(UserDefinedFileAttributeView.class)) {
             System.err.format("UserDefinedFileAttributeView not supported on %s\n", store);
             System.exit(-1);
 
         }
-        UserDefinedFileAttributeView view = file.
-            getFileAttributeView(UserDefinedFileAttributeView.class);
+        UserDefinedFileAttributeView view =
+            Files.getFileAttributeView(file, UserDefinedFileAttributeView.class);
 
         // list user defined attributes
         if (args.length == 1) {
--- a/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java	Wed Jul 05 17:35:13 2017 +0200
@@ -725,7 +725,21 @@
         XGlobalCursorManager.getCursorManager().updateCursorImmediately();
     }
 
-    public void pSetCursor(Cursor cursor) {
+    public final void pSetCursor(Cursor cursor) {
+        this.pSetCursor(cursor, true);
+    }
+
+    /*
+     * The method changes the cursor.
+     * @param cursor - a new cursor to change to.
+     * @param ignoreSubComponents - if {@code true} is passed then
+     *                              the new cursor will be installed on window.
+     *                              if {@code false} is passed then
+     *                              subsequent components will try to handle
+     *                              this request and install their cursor.
+     */
+    //ignoreSubComponents not used here
+    public void pSetCursor(Cursor cursor, boolean ignoreSubComponents) {
         XToolkit.awtLock();
         try {
             long xcursor = XGlobalCursorManager.getCursor(cursor);
--- a/jdk/src/solaris/classes/sun/awt/X11/XGlobalCursorManager.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XGlobalCursorManager.java	Wed Jul 05 17:35:13 2017 +0200
@@ -104,7 +104,9 @@
                     nativeContainer = new WeakReference<Component>(nc);
                 }
 
-                ((XComponentPeer)nc_peer).pSetCursor(cur);
+                //6431076. A subcomponents (a XTextArea in particular)
+                //may want to override the cursor over some of their parts.
+                ((XComponentPeer)nc_peer).pSetCursor(cur, false);
                 // in case of grab we do for Swing we need to update keep cursor updated
                 // (we don't need this in case of AWT menus).  Window Manager consider
                 // the grabber as a current window and use its cursor.  So we need to
--- a/jdk/src/solaris/classes/sun/awt/X11/XSelection.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XSelection.java	Wed Jul 05 17:35:13 2017 +0200
@@ -301,13 +301,8 @@
                 } finally {
                     XToolkit.awtUnlock();
                 }
-                if (!dataGetter.isExecuted()) {
-                    throw new IOException("Owner timed out");
-                }
 
-                if (dataGetter.isDisposed()) {
-                    throw new IOException("Owner failed to convert data");
-                }
+                validateDataGetter(dataGetter);
 
                 // Handle incremental transfer.
                 if (dataGetter.getActualType() ==
@@ -380,14 +375,7 @@
                                 XToolkit.awtUnlock();
                             }
 
-                            // The owner didn't respond - terminate the transfer.
-                            if (!incrDataGetter.isExecuted()) {
-                                throw new IOException("Owner timed out");
-                            }
-
-                            if (incrDataGetter.isDisposed()) {
-                                throw new IOException("Owner failed to convert data");
-                            }
+                            validateDataGetter(dataGetter);
 
                             if (incrDataGetter.getActualFormat() != 8) {
                                 throw new IOException("Unsupported data format: " +
@@ -445,6 +433,23 @@
         return data != null ? data : new byte[0];
     }
 
+    void validateDataGetter(WindowPropertyGetter propertyGetter)
+            throws IOException
+    {
+        // The order of checks is important because a property getter
+        // has not been executed in case of timeout as well as in case of
+        // changed selection owner.
+
+        if (propertyGetter.isDisposed()) {
+            throw new IOException("Owner failed to convert data");
+        }
+
+        // The owner didn't respond - terminate the transfer.
+        if (!propertyGetter.isExecuted()) {
+            throw new IOException("Owner timed out");
+        }
+    }
+
     // To be MT-safe this method should be called under awtLock.
     boolean isOwner() {
         return isOwner;
--- a/jdk/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java	Wed Jul 05 17:35:13 2017 +0200
@@ -175,6 +175,34 @@
         super.dispose();
     }
 
+
+    /*
+     * The method overrides one from XComponentPeer
+     * If ignoreSubComponents=={@code true} it calls super.
+     * If ignoreSubComponents=={@code false} it uses the XTextArea machinery
+     * to change cursor appropriately. In particular it changes the cursor to
+     * default if over scrollbars.
+     */
+    @Override
+    public void pSetCursor(Cursor cursor, boolean ignoreSubComponents) {
+        Point onScreen = getLocationOnScreen();
+        if (ignoreSubComponents ||
+            javaMouseEventHandler == null ||
+            onScreen == null)
+        {
+            super.pSetCursor(cursor, true);
+            return;
+        }
+
+        Point cursorPos = new Point();
+        ((XGlobalCursorManager)XGlobalCursorManager.getCursorManager()).getCursorPos(cursorPos);
+
+        Point localPoint = new Point(cursorPos.x - onScreen.x, cursorPos.y - onScreen.y );
+
+        javaMouseEventHandler.setPointerToUnderPoint(localPoint);
+        javaMouseEventHandler.setCursor();
+    }
+
     void setScrollBarVisibility() {
         int visibility = ((TextArea)target).getScrollbarVisibility();
         jtext.setLineWrap(false);
@@ -1264,13 +1292,13 @@
         void handle( MouseEvent event ) {
             if ( ! grabbed ) {
                 // dispatch() needs up-to-date pointer in ungrabbed case.
-                setPointerToUnderEventPoint( event );
+                setPointerToUnderPoint( event.getPoint() );
             }
             dispatch( event );
             boolean wasGrabbed = grabbed;
             grabbed_update( event );
             if ( wasGrabbed && ! grabbed ) {
-                setPointerToUnderEventPoint( event );
+                setPointerToUnderPoint( event.getPoint() );
             }
             setCursor();
         }
@@ -1338,7 +1366,7 @@
                 // 'target.getCursor()' is also applied from elsewhere
                 // (at least now), but only when mouse "entered", and
                 // before 'XTextAreaPeer.handleJavaMouseEvent' is invoked.
-                outer.pSetCursor( outer.target.getCursor() );
+                outer.pSetCursor( outer.target.getCursor(), true );
             }
             else {
                 // We can write here a more intelligent cursor selection
@@ -1346,7 +1374,7 @@
                 // However, I see no point in doing so now. But if you feel
                 // like implementing it, you'll probably need to introduce
                 // 'Pointer.Type.PANEL'.
-                outer.pSetCursor( outer.textPane.getCursor() );
+                outer.pSetCursor( outer.textPane.getCursor(), true );
             }
         }
 
@@ -1391,8 +1419,7 @@
             return l;
         }
 
-        private void setPointerToUnderEventPoint( MouseEvent event ) {
-            Point point = event.getPoint();
+        private void setPointerToUnderPoint( Point point ) {
             if ( outer.textPane.getViewport().getBounds().contains( point ) ) {
                 current.setText();
             }
--- a/jdk/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java	Wed Jul 05 17:35:13 2017 +0200
@@ -25,7 +25,7 @@
 
 package sun.nio.fs;
 
-import java.nio.file.FileRef;
+import java.nio.file.Path;
 import java.io.IOException;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
@@ -57,7 +57,7 @@
     }
 
     @Override
-    public String implProbeContentType(FileRef obj) throws IOException {
+    public String implProbeContentType(Path obj) throws IOException {
         if (!gioAvailable && !gnomeVfsAvailable)
             return null;
         if (!(obj instanceof UnixPath))
--- a/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java	Wed Jul 05 17:35:13 2017 +0200
@@ -67,19 +67,6 @@
     }
 
     @Override
-    public Object getAttribute(String attribute) throws IOException {
-        if (attribute.equals(READONLY_NAME))
-            return readAttributes().isReadOnly();
-        if (attribute.equals(ARCHIVE_NAME))
-            return readAttributes().isArchive();
-        if (attribute.equals(SYSTEM_NAME))
-            return readAttributes().isSystem();
-        if (attribute.equals(HIDDEN_NAME))
-            return readAttributes().isHidden();
-        return super.getAttribute(attribute);
-    }
-
-    @Override
     public void setAttribute(String attribute, Object value)
         throws IOException
     {
@@ -103,7 +90,7 @@
     }
 
     @Override
-    public Map<String,?> readAttributes(String[] attributes)
+    public Map<String,Object> readAttributes(String[] attributes)
         throws IOException
     {
         AttributesBuilder builder = AttributesBuilder.create(attributes);
--- a/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java	Wed Jul 05 17:35:13 2017 +0200
@@ -26,7 +26,6 @@
 package sun.nio.fs;
 
 import java.nio.file.*;
-import java.nio.file.attribute.*;
 import java.io.IOException;
 import java.util.*;
 import java.security.AccessController;
@@ -76,39 +75,14 @@
         }
     }
 
-    @Override
-    @SuppressWarnings("unchecked")
-    public <V extends FileAttributeView> V newFileAttributeView(Class<V> view,
-                                                                UnixPath file,
-                                                                LinkOption... options)
-    {
-        if (view == DosFileAttributeView.class)
-            return (V) new LinuxDosFileAttributeView(file, followLinks(options));
-        if (view == UserDefinedFileAttributeView.class)
-            return (V) new LinuxUserDefinedFileAttributeView(file, followLinks(options));
-        return super.newFileAttributeView(view, file, options);
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public DynamicFileAttributeView newFileAttributeView(String name,
-                                                         UnixPath file,
-                                                         LinkOption... options)
-    {
-        if (name.equals("dos"))
-            return new LinuxDosFileAttributeView(file, followLinks(options));
-        if (name.equals("user"))
-            return new LinuxUserDefinedFileAttributeView(file, followLinks(options));
-        return super.newFileAttributeView(name, file, options);
-    }
 
     // lazy initialization of the list of supported attribute views
     private static class SupportedFileFileAttributeViewsHolder {
         static final Set<String> supportedFileAttributeViews =
             supportedFileAttributeViews();
         private static Set<String> supportedFileAttributeViews() {
-            Set<String> result = new HashSet<String>();
-            result.addAll(UnixFileSystem.standardFileAttributeViews());
+            Set<String> result = new HashSet<>();
+            result.addAll(standardFileAttributeViews());
             // additional Linux-specific views
             result.add("dos");
             result.add("user");
@@ -130,7 +104,7 @@
      * Returns object to iterate over the mount entries in the given fstab file.
      */
     Iterable<UnixMountEntry> getMountEntries(String fstab) {
-        ArrayList<UnixMountEntry> entries = new ArrayList<UnixMountEntry>();
+        ArrayList<UnixMountEntry> entries = new ArrayList<>();
         try {
             long fp = setmntent(fstab.getBytes(), "r".getBytes());
             try {
@@ -159,10 +133,7 @@
         return getMountEntries("/etc/mtab");
     }
 
-    @Override
-    FileStore getFileStore(UnixPath path) throws IOException {
-        return new LinuxFileStore(path);
-    }
+
 
     @Override
     FileStore getFileStore(UnixMountEntry entry) throws IOException {
--- a/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystemProvider.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystemProvider.java	Wed Jul 05 17:35:13 2017 +0200
@@ -25,6 +25,10 @@
 
 package sun.nio.fs;
 
+import java.nio.file.*;
+import java.nio.file.attribute.*;
+import java.io.IOException;
+
 /**
  * Linux implementation of FileSystemProvider
  */
@@ -38,4 +42,58 @@
     LinuxFileSystem newFileSystem(String dir) {
         return new LinuxFileSystem(this, dir);
     }
+
+    @Override
+    LinuxFileStore getFileStore(UnixPath path) throws IOException {
+        return new LinuxFileStore(path);
+    }
+
+    @Override
+    @SuppressWarnings("unchecked")
+    public <V extends FileAttributeView> V getFileAttributeView(Path obj,
+                                                                Class<V> type,
+                                                                LinkOption... options)
+    {
+        if (type == DosFileAttributeView.class) {
+            return (V) new LinuxDosFileAttributeView(UnixPath.toUnixPath(obj),
+                                                     followLinks(options));
+        }
+        if (type == UserDefinedFileAttributeView.class) {
+            return (V) new LinuxUserDefinedFileAttributeView(UnixPath.toUnixPath(obj),
+                                                             followLinks(options));
+        }
+        return super.getFileAttributeView(obj, type, options);
+    }
+
+    @Override
+    public DynamicFileAttributeView getFileAttributeView(Path obj,
+                                                         String name,
+                                                         LinkOption... options)
+    {
+        if (name.equals("dos")) {
+            return new LinuxDosFileAttributeView(UnixPath.toUnixPath(obj),
+                                                 followLinks(options));
+        }
+        if (name.equals("user")) {
+            return new LinuxUserDefinedFileAttributeView(UnixPath.toUnixPath(obj),
+                                                         followLinks(options));
+        }
+        return super.getFileAttributeView(obj, name, options);
+    }
+
+    @Override
+    @SuppressWarnings("unchecked")
+    public <A extends BasicFileAttributes> A readAttributes(Path file,
+                                                            Class<A> type,
+                                                            LinkOption... options)
+        throws IOException
+    {
+        if (type == DosFileAttributes.class) {
+            DosFileAttributeView view =
+                getFileAttributeView(file, DosFileAttributeView.class, options);
+            return (A) view.readAttributes();
+        } else {
+            return super.readAttributes(file, type, options);
+        }
+    }
 }
--- a/jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java	Wed Jul 05 17:35:13 2017 +0200
@@ -63,7 +63,7 @@
 
     // Parses buffer as array of NULL-terminated C strings.
     private List<String> asList(long address, int size) {
-        final List<String> list = new ArrayList<String>();
+        List<String> list = new ArrayList<>();
         int start = 0;
         int pos = 0;
         while (pos < size) {
--- a/jdk/src/solaris/classes/sun/nio/fs/LinuxWatchService.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/classes/sun/nio/fs/LinuxWatchService.java	Wed Jul 05 17:35:13 2017 +0200
@@ -102,8 +102,8 @@
         // watch descriptor
         private volatile int wd;
 
-        LinuxWatchKey(LinuxWatchService watcher, int ifd, int wd) {
-            super(watcher);
+        LinuxWatchKey(UnixPath dir, LinuxWatchService watcher, int ifd, int wd) {
+            super(dir, watcher);
             this.ifd = ifd;
             this.wd = wd;
         }
@@ -266,7 +266,7 @@
             // ensure watch descriptor is in map
             LinuxWatchKey key = wdToKey.get(wd);
             if (key == null) {
-                key = new LinuxWatchKey(watcher, ifd, wd);
+                key = new LinuxWatchKey(dir, watcher, ifd, wd);
                 wdToKey.put(wd, key);
             }
             return key;
--- a/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java	Wed Jul 05 17:35:13 2017 +0200
@@ -198,7 +198,7 @@
      * Decode the buffer, returning an ACL
      */
     private static List<AclEntry> decode(long address, int n) {
-        ArrayList<AclEntry> acl = new ArrayList<AclEntry>(n);
+        ArrayList<AclEntry> acl = new ArrayList<>(n);
         for (int i=0; i<n; i++) {
             long offset = address + i*SIZEOF_ACE_T;
 
@@ -244,7 +244,7 @@
                     assert false;
             }
 
-            HashSet<AclEntryPermission> aceMask = new HashSet<AclEntryPermission>();
+            Set<AclEntryPermission> aceMask = EnumSet.noneOf(AclEntryPermission.class);
             if ((mask & ACE_READ_DATA) > 0)
                 aceMask.add(AclEntryPermission.READ_DATA);
             if ((mask & ACE_WRITE_DATA) > 0)
@@ -274,7 +274,7 @@
             if ((mask & ACE_SYNCHRONIZE) > 0)
                 aceMask.add(AclEntryPermission.SYNCHRONIZE);
 
-            HashSet<AclEntryFlag> aceFlags = new HashSet<AclEntryFlag>();
+            Set<AclEntryFlag> aceFlags = EnumSet.noneOf(AclEntryFlag.class);
             if ((flags & ACE_FILE_INHERIT_ACE) > 0)
                 aceFlags.add(AclEntryFlag.FILE_INHERIT);
             if ((flags & ACE_DIRECTORY_INHERIT_ACE) > 0)
--- a/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java	Wed Jul 05 17:35:13 2017 +0200
@@ -26,7 +26,6 @@
 package sun.nio.fs;
 
 import java.nio.file.*;
-import java.nio.file.attribute.*;
 import java.io.IOException;
 import java.util.*;
 import java.security.AccessController;
@@ -71,38 +70,14 @@
         }
     }
 
-    @Override
-    @SuppressWarnings("unchecked")
-    public <V extends FileAttributeView> V newFileAttributeView(Class<V> view,
-                                                                UnixPath file, LinkOption... options)
-    {
-        if (view == AclFileAttributeView.class)
-            return (V) new SolarisAclFileAttributeView(file, followLinks(options));
-        if (view == UserDefinedFileAttributeView.class) {
-            return(V) new SolarisUserDefinedFileAttributeView(file, followLinks(options));
-        }
-        return super.newFileAttributeView(view, file, options);
-    }
-
-    @Override
-    protected DynamicFileAttributeView newFileAttributeView(String name,
-                                                            UnixPath file,
-                                                            LinkOption... options)
-    {
-        if (name.equals("acl"))
-            return new SolarisAclFileAttributeView(file, followLinks(options));
-        if (name.equals("user"))
-            return new SolarisUserDefinedFileAttributeView(file, followLinks(options));
-        return super.newFileAttributeView(name, file, options);
-    }
 
     // lazy initialization of the list of supported attribute views
     private static class SupportedFileFileAttributeViewsHolder {
         static final Set<String> supportedFileAttributeViews =
             supportedFileAttributeViews();
         private static Set<String> supportedFileAttributeViews() {
-            Set<String> result = new HashSet<String>();
-            result.addAll(UnixFileSystem.standardFileAttributeViews());
+            Set<String> result = new HashSet<>();
+            result.addAll(standardFileAttributeViews());
             // additional Solaris-specific views
             result.add("acl");
             result.add("user");
@@ -126,7 +101,7 @@
      */
     @Override
     Iterable<UnixMountEntry> getMountEntries() {
-        ArrayList<UnixMountEntry> entries = new ArrayList<UnixMountEntry>();
+        ArrayList<UnixMountEntry> entries = new ArrayList<>();
         try {
             UnixPath mnttab = new UnixPath(this, "/etc/mnttab");
             long fp = fopen(mnttab, "r");
@@ -148,11 +123,6 @@
     }
 
     @Override
-    FileStore getFileStore(UnixPath path) throws IOException {
-        return new SolarisFileStore(path);
-    }
-
-    @Override
     FileStore getFileStore(UnixMountEntry entry) throws IOException {
         return new SolarisFileStore(this, entry);
     }
--- a/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystemProvider.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystemProvider.java	Wed Jul 05 17:35:13 2017 +0200
@@ -25,6 +25,10 @@
 
 package sun.nio.fs;
 
+import java.nio.file.*;
+import java.nio.file.attribute.*;
+import java.io.IOException;
+
 /**
  * Solaris implementation of FileSystemProvider
  */
@@ -38,4 +42,41 @@
     SolarisFileSystem newFileSystem(String dir) {
         return new SolarisFileSystem(this, dir);
     }
+
+    @Override
+    SolarisFileStore getFileStore(UnixPath path) throws IOException {
+        return new SolarisFileStore(path);
+    }
+
+
+    @Override
+    @SuppressWarnings("unchecked")
+    public <V extends FileAttributeView> V getFileAttributeView(Path obj,
+                                                                Class<V> type,
+                                                                LinkOption... options)
+    {
+        if (type == AclFileAttributeView.class) {
+            return (V) new SolarisAclFileAttributeView(UnixPath.toUnixPath(obj),
+                                                       followLinks(options));
+        }
+        if (type == UserDefinedFileAttributeView.class) {
+            return(V) new SolarisUserDefinedFileAttributeView(UnixPath.toUnixPath(obj),
+                                                              followLinks(options));
+        }
+        return super.getFileAttributeView(obj, type, options);
+    }
+
+    @Override
+    public DynamicFileAttributeView getFileAttributeView(Path obj,
+                                                         String name,
+                                                         LinkOption... options)
+    {
+        if (name.equals("acl"))
+            return new SolarisAclFileAttributeView(UnixPath.toUnixPath(obj),
+                                                   followLinks(options));
+        if (name.equals("user"))
+            return new SolarisUserDefinedFileAttributeView(UnixPath.toUnixPath(obj),
+                                                           followLinks(options));
+        return super.getFileAttributeView(obj, name, options);
+    }
 }
--- a/jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java	Wed Jul 05 17:35:13 2017 +0200
@@ -83,7 +83,7 @@
                 }
 
                 // read list of extended attributes
-                final List<String> list = new ArrayList<String>();
+                List<String> list = new ArrayList<>();
                 try {
                     byte[] name;
                     while ((name = readdir(dp)) != null) {
--- a/jdk/src/solaris/classes/sun/nio/fs/SolarisWatchService.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/classes/sun/nio/fs/SolarisWatchService.java	Wed Jul 05 17:35:13 2017 +0200
@@ -128,7 +128,6 @@
     private class SolarisWatchKey extends AbstractWatchKey
         implements DirectoryNode
     {
-        private final UnixPath dir;
         private final UnixFileKey fileKey;
 
         // pointer to native file_obj object
@@ -147,15 +146,14 @@
                         long object,
                         Set<? extends WatchEvent.Kind<?>> events)
         {
-            super(watcher);
-            this.dir = dir;
+            super(dir, watcher);
             this.fileKey = fileKey;
             this.object = object;
             this.events = events;
         }
 
-        UnixPath getFileRef() {
-            return dir;
+        UnixPath getDirectory() {
+            return (UnixPath)watchable();
         }
 
         UnixFileKey getFileKey() {
@@ -487,7 +485,7 @@
          */
         void processDirectoryEvents(SolarisWatchKey key, int mask) {
             if ((mask & (FILE_MODIFIED | FILE_ATTRIB)) != 0) {
-                registerChildren(key.getFileRef(), key,
+                registerChildren(key.getDirectory(), key,
                     key.events().contains(StandardWatchEventKind.ENTRY_CREATE));
             }
         }
@@ -524,7 +522,7 @@
                 boolean removed = true;
                 try {
                     UnixFileAttributes
-                        .get(key.getFileRef().resolve(node.name()), false);
+                        .get(key.getDirectory().resolve(node.name()), false);
                     removed = false;
                 } catch (UnixException x) { }
 
@@ -554,14 +552,14 @@
 
             DirectoryStream<Path> stream = null;
             try {
-                stream = dir.newDirectoryStream();
+                stream = Files.newDirectoryStream(dir);
             } catch (IOException x) {
                 // nothing we can do
                 return;
             }
             try {
                 for (Path entry: stream) {
-                    Path name = entry.getName();
+                    Path name = entry.getFileName();
 
                     // skip entry if already registered
                     if (parent.getChild(name) != null)
@@ -582,9 +580,9 @@
                     }
 
                     // create node
-                    EntryNode node = new EntryNode(object, entry.getName(), parent);
+                    EntryNode node = new EntryNode(object, entry.getFileName(), parent);
                     // tell the parent about it
-                    parent.addChild(entry.getName(), node);
+                    parent.addChild(entry.getFileName(), node);
                     object2Node.put(object, node);
                 }
             } catch (ConcurrentModificationException x) {
--- a/jdk/src/solaris/classes/sun/nio/fs/UnixCopyFile.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/classes/sun/nio/fs/UnixCopyFile.java	Wed Jul 05 17:35:13 2017 +0200
@@ -237,7 +237,7 @@
                 fo = open(target,
                            (O_WRONLY |
                             O_CREAT |
-                            O_TRUNC),
+                            O_EXCL),
                            attrs.mode());
             } catch (UnixException x) {
                 x.rethrowAsIOException(target);
@@ -435,10 +435,8 @@
                 if (targetAttrs.isDirectory() &&
                    (x.errno() == EEXIST || x.errno() == ENOTEMPTY))
                 {
-                    throw new FileAlreadyExistsException(
-                        source.getPathForExecptionMessage(),
-                        target.getPathForExecptionMessage(),
-                        x.getMessage());
+                    throw new DirectoryNotEmptyException(
+                        target.getPathForExecptionMessage());
                 }
                 x.rethrowAsIOException(target);
             }
@@ -556,10 +554,8 @@
                 if (targetAttrs.isDirectory() &&
                    (x.errno() == EEXIST || x.errno() == ENOTEMPTY))
                 {
-                    throw new FileAlreadyExistsException(
-                        source.getPathForExecptionMessage(),
-                        target.getPathForExecptionMessage(),
-                        x.getMessage());
+                    throw new DirectoryNotEmptyException(
+                        target.getPathForExecptionMessage());
                 }
                 x.rethrowAsIOException(target);
             }
--- a/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java	Wed Jul 05 17:35:13 2017 +0200
@@ -149,17 +149,6 @@
         }
 
         @Override
-        public Object getAttribute(String attribute) throws IOException {
-            if (attribute.equals(PERMISSIONS_NAME))
-                return readAttributes().permissions();
-            if (attribute.equals(OWNER_NAME))
-                return readAttributes().owner();
-            if (attribute.equals(GROUP_NAME))
-                return readAttributes().group();
-            return super.getAttribute(attribute);
-        }
-
-        @Override
         @SuppressWarnings("unchecked")
         public void setAttribute(String attribute, Object value)
             throws IOException
@@ -195,7 +184,7 @@
         }
 
         @Override
-        public Map<String,?> readAttributes(String[] attributes)
+        public Map<String,Object> readAttributes(String[] attributes)
             throws IOException
         {
             AttributesBuilder builder = AttributesBuilder.create(attributes);
@@ -308,27 +297,6 @@
         }
 
         @Override
-        public Object getAttribute(String attribute) throws IOException {
-            if (attribute.equals(MODE_NAME))
-                return readAttributes().mode();
-            if (attribute.equals(INO_NAME))
-                return readAttributes().ino();
-            if (attribute.equals(DEV_NAME))
-                return readAttributes().dev();
-            if (attribute.equals(RDEV_NAME))
-                return readAttributes().rdev();
-            if (attribute.equals(NLINK_NAME))
-                return readAttributes().nlink();
-            if (attribute.equals(UID_NAME))
-                return readAttributes().uid();
-            if (attribute.equals(GID_NAME))
-                return readAttributes().gid();
-            if (attribute.equals(CTIME_NAME))
-                return readAttributes().ctime();
-            return super.getAttribute(attribute);
-        }
-
-        @Override
         public void setAttribute(String attribute, Object value)
             throws IOException
         {
@@ -348,7 +316,7 @@
         }
 
         @Override
-        public Map<String,?> readAttributes(String[] attributes)
+        public Map<String,Object> readAttributes(String[] attributes)
             throws IOException
         {
             AttributesBuilder builder = AttributesBuilder.create(attributes);
--- a/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java	Wed Jul 05 17:35:13 2017 +0200
@@ -124,7 +124,7 @@
 
     @Override
     public FileTime creationTime() {
-        return null;
+        return lastModifiedTime();
     }
 
     @Override
@@ -194,7 +194,7 @@
     @Override
     public Set<PosixFilePermission> permissions() {
         int bits = (st_mode & UnixConstants.S_IAMB);
-        HashSet<PosixFilePermission> perms = new HashSet<PosixFilePermission>();
+        HashSet<PosixFilePermission> perms = new HashSet<>();
 
         if ((bits & UnixConstants.S_IRUSR) > 0)
             perms.add(PosixFilePermission.OWNER_READ);
--- a/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java	Wed Jul 05 17:35:13 2017 +0200
@@ -103,28 +103,50 @@
         return entry.isReadOnly();
     }
 
+    // uses statvfs to read the file system information
+    private UnixFileStoreAttributes readAttributes() throws IOException {
+        try {
+            return UnixFileStoreAttributes.get(file);
+        } catch (UnixException x) {
+            x.rethrowAsIOException(file);
+            return null;    // keep compile happy
+        }
+    }
+
     @Override
-    @SuppressWarnings("unchecked")
+    public long getTotalSpace() throws IOException {
+        UnixFileStoreAttributes attrs = readAttributes();
+        return attrs.blockSize() * attrs.totalBlocks();
+    }
+
+    @Override
+    public long getUsableSpace() throws IOException {
+       UnixFileStoreAttributes attrs = readAttributes();
+       return attrs.blockSize() * attrs.availableBlocks();
+    }
+
+    @Override
+    public long getUnallocatedSpace() throws IOException {
+        UnixFileStoreAttributes attrs = readAttributes();
+        return attrs.blockSize() * attrs.freeBlocks();
+    }
+
+    @Override
     public <V extends FileStoreAttributeView> V getFileStoreAttributeView(Class<V> view)
     {
         if (view == null)
             throw new NullPointerException();
-        if (view == FileStoreSpaceAttributeView.class)
-            return (V) new UnixFileStoreSpaceAttributeView(this);
         return (V) null;
     }
 
     @Override
     public Object getAttribute(String attribute) throws IOException {
-        if (attribute.equals("space:totalSpace"))
-            return new UnixFileStoreSpaceAttributeView(this)
-                .readAttributes().totalSpace();
-        if (attribute.equals("space:usableSpace"))
-            return new UnixFileStoreSpaceAttributeView(this)
-                 .readAttributes().usableSpace();
-        if (attribute.equals("space:unallocatedSpace"))
-            return new UnixFileStoreSpaceAttributeView(this)
-                 .readAttributes().unallocatedSpace();
+        if (attribute.equals("totalSpace"))
+            return getTotalSpace();
+        if (attribute.equals("usableSpace"))
+            return getUsableSpace();
+        if (attribute.equals("unallocatedSpace"))
+            return getUnallocatedSpace();
         throw new UnsupportedOperationException("'" + attribute + "' not recognized");
     }
 
@@ -181,50 +203,6 @@
         return sb.toString();
     }
 
-    private static class UnixFileStoreSpaceAttributeView
-        implements FileStoreSpaceAttributeView
-    {
-        private final UnixFileStore fs;
-
-        UnixFileStoreSpaceAttributeView(UnixFileStore fs) {
-            this.fs = fs;
-        }
-
-        @Override
-        public String name() {
-            return "space";
-        }
-
-        @Override
-        public FileStoreSpaceAttributes readAttributes()
-            throws IOException
-        {
-            UnixPath file = fs.file();
-            final UnixFileStoreAttributes attrs;
-            try {
-                attrs = UnixFileStoreAttributes.get(file);
-            } catch (UnixException x) {
-                x.rethrowAsIOException(file);
-                return null;    // keep compile happy
-            }
-
-            return new FileStoreSpaceAttributes() {
-                @Override
-                public long totalSpace() {
-                    return attrs.blockSize() * attrs.totalBlocks();
-                }
-                @Override
-                public long usableSpace() {
-                    return attrs.blockSize() * attrs.availableBlocks();
-                }
-                @Override
-                public long unallocatedSpace() {
-                    return attrs.blockSize() * attrs.freeBlocks();
-                }
-            };
-        }
-    }
-
     // -- fstypes.properties --
 
     private static final Object loadLock = new Object();
@@ -277,11 +255,8 @@
         String fstypes = System.getProperty("java.home") + "/lib/fstypes.properties";
         Path file = Paths.get(fstypes);
         try {
-            ReadableByteChannel rbc = file.newByteChannel();
-            try {
+            try (ReadableByteChannel rbc = Files.newByteChannel(file)) {
                 result.load(Channels.newReader(rbc, "UTF-8"));
-            } finally {
-                rbc.close();
             }
         } catch (IOException x) {
         }
--- a/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystem.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystem.java	Wed Jul 05 17:35:13 2017 +0200
@@ -98,6 +98,10 @@
         return false;
     }
 
+    static List<String> standardFileAttributeViews() {
+        return Arrays.asList("basic", "posix", "unix", "owner");
+    }
+
     @Override
     public final FileSystemProvider provider() {
         return provider;
@@ -169,12 +173,6 @@
     abstract Iterable<UnixMountEntry> getMountEntries();
 
     /**
-     * Returns a FileStore to represent the file system where the given file
-     * reside.
-     */
-    abstract FileStore getFileStore(UnixPath path) throws IOException;
-
-    /**
      * Returns a FileStore to represent the file system for the given mount
      * mount.
      */
@@ -264,7 +262,22 @@
     }
 
     @Override
-    public final UnixPath getPath(String path) {
+    public final Path getPath(String first, String... more) {
+        String path;
+        if (more.length == 0) {
+            path = first;
+        } else {
+            StringBuilder sb = new StringBuilder();
+            sb.append(first);
+            for (String segment: more) {
+                if (segment.length() > 0) {
+                    if (sb.length() > 0)
+                        sb.append('/');
+                    sb.append(segment);
+                }
+            }
+            path = sb.toString();
+        }
         return new UnixPath(this, path);
     }
 
@@ -300,77 +313,30 @@
     private static final String GLOB_SYNTAX = "glob";
     private static final String REGEX_SYNTAX = "regex";
 
-    protected boolean followLinks(LinkOption... options) {
-        boolean followLinks = true;
-        for (LinkOption option: options) {
-            if (option == LinkOption.NOFOLLOW_LINKS) {
-                followLinks = false;
-                continue;
-            }
-            if (option == null)
-                throw new NullPointerException();
-            throw new AssertionError("Should not get here");
-        }
-        return followLinks;
-    }
 
-    @SuppressWarnings("unchecked")
-    protected <V extends FileAttributeView> V newFileAttributeView(Class<V> view,
-                                                                   UnixPath file,
-                                                                   LinkOption... options)
-    {
-        if (view == null)
-            throw new NullPointerException();
-        boolean followLinks = followLinks(options);
-        Class<?> c = view;
-        if (c == BasicFileAttributeView.class)
-            return (V) UnixFileAttributeViews.createBasicView(file, followLinks);
-        if (c == PosixFileAttributeView.class)
-            return (V) UnixFileAttributeViews.createPosixView(file, followLinks);
-        if (c == FileOwnerAttributeView.class)
-            return (V) UnixFileAttributeViews.createOwnerView(file, followLinks);
-        return (V) null;
-    }
-
-    static List<String> standardFileAttributeViews() {
-        return Arrays.asList("basic", "posix", "unix", "owner");
-    }
-
-    protected DynamicFileAttributeView newFileAttributeView(String name,
-                                                            UnixPath file,
-                                                            LinkOption... options)
-    {
-        boolean followLinks = followLinks(options);
-        if (name.equals("basic"))
-            return UnixFileAttributeViews.createBasicView(file, followLinks);
-        if (name.equals("posix"))
-            return UnixFileAttributeViews.createPosixView(file, followLinks);
-        if (name.equals("unix"))
-            return UnixFileAttributeViews.createUnixView(file, followLinks);
-        if (name.equals("owner"))
-            return UnixFileAttributeViews.createOwnerView(file, followLinks);
-        return null;
-    }
 
     @Override
     public final UserPrincipalLookupService getUserPrincipalLookupService() {
-        return theLookupService;
+        return LookupService.instance;
     }
 
-    private static final UserPrincipalLookupService theLookupService =
-        new UserPrincipalLookupService() {
-            @Override
-            public UserPrincipal lookupPrincipalByName(String name)
-                throws IOException
-            {
-                return UnixUserPrincipals.lookupUser(name);
-            }
+    private static class LookupService {
+        static final UserPrincipalLookupService instance =
+            new UserPrincipalLookupService() {
+                @Override
+                public UserPrincipal lookupPrincipalByName(String name)
+                    throws IOException
+                {
+                    return UnixUserPrincipals.lookupUser(name);
+                }
 
-            @Override
-            public GroupPrincipal lookupPrincipalByGroupName(String group)
-                throws IOException
-            {
-                return UnixUserPrincipals.lookupGroup(group);
-            }
-        };
+                @Override
+                public GroupPrincipal lookupPrincipalByGroupName(String group)
+                    throws IOException
+                {
+                    return UnixUserPrincipals.lookupGroup(group);
+                }
+            };
+    }
+
 }
--- a/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java	Wed Jul 05 17:35:13 2017 +0200
@@ -27,21 +27,25 @@
 
 import java.nio.file.*;
 import java.nio.file.attribute.*;
-import java.nio.file.spi.FileSystemProvider;
 import java.nio.channels.*;
 import java.net.URI;
 import java.util.concurrent.ExecutorService;
 import java.io.IOException;
+import java.io.FilePermission;
 import java.util.*;
+import java.security.AccessController;
 
 import sun.nio.ch.ThreadPool;
+import sun.security.util.SecurityConstants;
+import static sun.nio.fs.UnixNativeDispatcher.*;
+import static sun.nio.fs.UnixConstants.*;
 
 /**
  * Base implementation of FileSystemProvider
  */
 
 public abstract class UnixFileSystemProvider
-    extends FileSystemProvider
+    extends AbstractFileSystemProvider
 {
     private static final String USER_DIR = "user.dir";
     private final UnixFileSystem theFileSystem;
@@ -93,7 +97,7 @@
         return UnixUriUtils.fromUri(theFileSystem, uri);
     }
 
-    protected UnixPath checkPath(Path obj) {
+    UnixPath checkPath(Path obj) {
         if (obj == null)
             throw new NullPointerException();
         if (!(obj instanceof UnixPath))
@@ -101,6 +105,76 @@
         return (UnixPath)obj;
     }
 
+    boolean followLinks(LinkOption... options) {
+        boolean followLinks = true;
+        for (LinkOption option: options) {
+            if (option == LinkOption.NOFOLLOW_LINKS) {
+                followLinks = false;
+                continue;
+            }
+            if (option == null)
+                throw new NullPointerException();
+            throw new AssertionError("Should not get here");
+        }
+        return followLinks;
+    }
+
+    @Override
+    @SuppressWarnings("unchecked")
+    public <V extends FileAttributeView> V getFileAttributeView(Path obj,
+                                                                Class<V> type,
+                                                                LinkOption... options)
+    {
+        UnixPath file = UnixPath.toUnixPath(obj);
+        boolean followLinks =  followLinks(options);
+        if (type == BasicFileAttributeView.class)
+            return (V) UnixFileAttributeViews.createBasicView(file, followLinks);
+        if (type == PosixFileAttributeView.class)
+            return (V) UnixFileAttributeViews.createPosixView(file, followLinks);
+        if (type == FileOwnerAttributeView.class)
+            return (V) UnixFileAttributeViews.createOwnerView(file, followLinks);
+        if (type == null)
+            throw new NullPointerException();
+        return (V) null;
+    }
+
+    @Override
+    @SuppressWarnings("unchecked")
+    public <A extends BasicFileAttributes> A readAttributes(Path file,
+                                                               Class<A> type,
+                                                               LinkOption... options)
+        throws IOException
+    {
+        Class<? extends BasicFileAttributeView> view;
+        if (type == BasicFileAttributes.class)
+            view = BasicFileAttributeView.class;
+        else if (type == PosixFileAttributes.class)
+            view = PosixFileAttributeView.class;
+        else if (type == null)
+            throw new NullPointerException();
+        else
+            throw new UnsupportedOperationException();
+        return (A) getFileAttributeView(file, view, options).readAttributes();
+    }
+
+    @Override
+    protected DynamicFileAttributeView getFileAttributeView(Path obj,
+                                                            String name,
+                                                            LinkOption... options)
+    {
+        UnixPath file = UnixPath.toUnixPath(obj);
+        boolean followLinks = followLinks(options);
+        if (name.equals("basic"))
+            return UnixFileAttributeViews.createBasicView(file, followLinks);
+        if (name.equals("posix"))
+            return UnixFileAttributeViews.createPosixView(file, followLinks);
+        if (name.equals("unix"))
+            return UnixFileAttributeViews.createUnixView(file, followLinks);
+        if (name.equals("owner"))
+            return UnixFileAttributeViews.createOwnerView(file, followLinks);
+        return null;
+    }
+
     @Override
     public FileChannel newFileChannel(Path obj,
                                       Set<? extends OpenOption> options,
@@ -136,4 +210,303 @@
             return null;
         }
     }
+
+
+    @Override
+    public SeekableByteChannel newByteChannel(Path obj,
+                                              Set<? extends OpenOption> options,
+                                              FileAttribute<?>... attrs)
+         throws IOException
+    {
+        UnixPath file = UnixPath.toUnixPath(obj);
+        int mode = UnixFileModeAttribute
+            .toUnixMode(UnixFileModeAttribute.ALL_READWRITE, attrs);
+        try {
+            return UnixChannelFactory.newFileChannel(file, options, mode);
+        } catch (UnixException x) {
+            x.rethrowAsIOException(file);
+            return null;  // keep compiler happy
+        }
+    }
+
+    @Override
+    boolean implDelete(Path obj, boolean failIfNotExists) throws IOException {
+        UnixPath file = UnixPath.toUnixPath(obj);
+        file.checkDelete();
+
+        // need file attributes to know if file is directory
+        UnixFileAttributes attrs = null;
+        try {
+            attrs = UnixFileAttributes.get(file, false);
+            if (attrs.isDirectory()) {
+                rmdir(file);
+            } else {
+                unlink(file);
+            }
+            return true;
+        } catch (UnixException x) {
+            // no-op if file does not exist
+            if (!failIfNotExists && x.errno() == ENOENT)
+                return false;
+
+            // DirectoryNotEmptyException if not empty
+            if (attrs != null && attrs.isDirectory() &&
+                (x.errno() == EEXIST || x.errno() == ENOTEMPTY))
+                throw new DirectoryNotEmptyException(file.getPathForExecptionMessage());
+
+            x.rethrowAsIOException(file);
+            return false;
+        }
+    }
+
+    @Override
+    public void copy(Path source, Path target, CopyOption... options)
+        throws IOException
+    {
+        UnixCopyFile.copy(UnixPath.toUnixPath(source),
+                          UnixPath.toUnixPath(target),
+                          options);
+    }
+
+    @Override
+    public void move(Path source, Path target, CopyOption... options)
+        throws IOException
+    {
+        UnixCopyFile.move(UnixPath.toUnixPath(source),
+                          UnixPath.toUnixPath(target),
+                          options);
+    }
+
+    @Override
+    public void checkAccess(Path obj, AccessMode... modes) throws IOException {
+        UnixPath file = UnixPath.toUnixPath(obj);
+        boolean e = false;
+        boolean r = false;
+        boolean w = false;
+        boolean x = false;
+
+        if (modes.length == 0) {
+            e = true;
+        } else {
+            for (AccessMode mode: modes) {
+                switch (mode) {
+                    case READ : r = true; break;
+                    case WRITE : w = true; break;
+                    case EXECUTE : x = true; break;
+                    default: throw new AssertionError("Should not get here");
+                }
+            }
+        }
+
+        int mode = 0;
+        if (e || r) {
+            file.checkRead();
+            mode |= (r) ? R_OK : F_OK;
+        }
+        if (w) {
+            file.checkWrite();
+            mode |= W_OK;
+        }
+        if (x) {
+            SecurityManager sm = System.getSecurityManager();
+            if (sm != null) {
+                // not cached
+                sm.checkExec(file.getPathForPermissionCheck());
+            }
+            mode |= X_OK;
+        }
+        try {
+            access(file, mode);
+        } catch (UnixException exc) {
+            exc.rethrowAsIOException(file);
+        }
+    }
+
+    @Override
+    public boolean isSameFile(Path obj1, Path obj2) throws IOException {
+        UnixPath file1 = UnixPath.toUnixPath(obj1);
+        if (file1.equals(obj2))
+            return true;
+        if (obj2 == null)
+            throw new NullPointerException();
+        if (!(obj2 instanceof UnixPath))
+            return false;
+        UnixPath file2 = (UnixPath)obj2;
+
+        // check security manager access to both files
+        file1.checkRead();
+        file2.checkRead();
+
+        UnixFileAttributes attrs1;
+        UnixFileAttributes attrs2;
+        try {
+             attrs1 = UnixFileAttributes.get(file1, true);
+        } catch (UnixException x) {
+            x.rethrowAsIOException(file1);
+            return false;    // keep compiler happy
+        }
+        try {
+            attrs2 = UnixFileAttributes.get(file2, true);
+        } catch (UnixException x) {
+            x.rethrowAsIOException(file2);
+            return false;    // keep compiler happy
+        }
+        return attrs1.isSameFile(attrs2);
+    }
+
+    @Override
+    public boolean isHidden(Path obj) {
+        UnixPath file = UnixPath.toUnixPath(obj);
+        file.checkRead();
+        UnixPath name = file.getFileName();
+        if (name == null)
+            return false;
+        return (name.asByteArray()[0] == '.');
+    }
+
+    /**
+     * Returns a FileStore to represent the file system where the given file
+     * reside.
+     */
+    abstract FileStore getFileStore(UnixPath path) throws IOException;
+
+    @Override
+    public FileStore getFileStore(Path obj) throws IOException {
+        UnixPath file = UnixPath.toUnixPath(obj);
+        SecurityManager sm = System.getSecurityManager();
+        if (sm != null) {
+            sm.checkPermission(new RuntimePermission("getFileStoreAttributes"));
+            file.checkRead();
+        }
+        return getFileStore(file);
+    }
+
+    @Override
+    public void createDirectory(Path obj, FileAttribute<?>... attrs)
+        throws IOException
+    {
+        UnixPath dir = UnixPath.toUnixPath(obj);
+        dir.checkWrite();
+
+        int mode = UnixFileModeAttribute
+            .toUnixMode(UnixFileModeAttribute.ALL_PERMISSIONS, attrs);
+        try {
+            mkdir(dir, mode);
+        } catch (UnixException x) {
+            x.rethrowAsIOException(dir);
+        }
+    }
+
+
+    @Override
+    public DirectoryStream<Path> newDirectoryStream(Path obj, DirectoryStream.Filter<? super Path> filter)
+        throws IOException
+    {
+        UnixPath dir = UnixPath.toUnixPath(obj);
+        dir.checkRead();
+        if (filter == null)
+            throw new NullPointerException();
+
+        // can't return SecureDirectoryStream on kernels that don't support
+        // openat, etc.
+        if (!supportsAtSysCalls()) {
+            try {
+                long ptr = opendir(dir);
+                return new UnixDirectoryStream(dir, ptr, filter);
+            } catch (UnixException x) {
+                if (x.errno() == ENOTDIR)
+                    throw new NotDirectoryException(dir.getPathForExecptionMessage());
+                x.rethrowAsIOException(dir);
+            }
+        }
+
+        // open directory and dup file descriptor for use by
+        // opendir/readdir/closedir
+        int dfd1 = -1;
+        int dfd2 = -1;
+        long dp = 0L;
+        try {
+            dfd1 = open(dir, O_RDONLY, 0);
+            dfd2 = dup(dfd1);
+            dp = fdopendir(dfd1);
+        } catch (UnixException x) {
+            if (dfd1 != -1)
+                UnixNativeDispatcher.close(dfd1);
+            if (dfd2 != -1)
+                UnixNativeDispatcher.close(dfd2);
+            if (x.errno() == UnixConstants.ENOTDIR)
+                throw new NotDirectoryException(dir.getPathForExecptionMessage());
+            x.rethrowAsIOException(dir);
+        }
+        return new UnixSecureDirectoryStream(dir, dp, dfd2, filter);
+    }
+
+    @Override
+    public void createSymbolicLink(Path obj1, Path obj2, FileAttribute<?>... attrs)
+        throws IOException
+    {
+        UnixPath link = UnixPath.toUnixPath(obj1);
+        UnixPath target = UnixPath.toUnixPath(obj2);
+
+        // no attributes supported when creating links
+        if (attrs.length > 0) {
+            UnixFileModeAttribute.toUnixMode(0, attrs);  // may throw NPE or UOE
+            throw new UnsupportedOperationException("Initial file attributes" +
+                "not supported when creating symbolic link");
+        }
+
+        // permission check
+        SecurityManager sm = System.getSecurityManager();
+        if (sm != null) {
+            sm.checkPermission(new LinkPermission("symbolic"));
+            link.checkWrite();
+        }
+
+        // create link
+        try {
+            symlink(target.asByteArray(), link);
+        } catch (UnixException x) {
+            x.rethrowAsIOException(link);
+        }
+    }
+
+    @Override
+    public void createLink(Path obj1, Path obj2) throws IOException {
+        UnixPath link = UnixPath.toUnixPath(obj1);
+        UnixPath existing = UnixPath.toUnixPath(obj2);
+
+        // permission check
+        SecurityManager sm = System.getSecurityManager();
+        if (sm != null) {
+            sm.checkPermission(new LinkPermission("hard"));
+            link.checkWrite();
+            existing.checkWrite();
+        }
+        try {
+            link(existing, link);
+        } catch (UnixException x) {
+            x.rethrowAsIOException(link, existing);
+        }
+    }
+
+    @Override
+    public Path readSymbolicLink(Path obj1) throws IOException {
+        UnixPath link = UnixPath.toUnixPath(obj1);
+        // permission check
+        SecurityManager sm = System.getSecurityManager();
+        if (sm != null) {
+            FilePermission perm = new FilePermission(link.getPathForPermissionCheck(),
+                SecurityConstants.FILE_READLINK_ACTION);
+            AccessController.checkPermission(perm);
+        }
+        try {
+            byte[] target = readlink(link);
+            return new UnixPath(link.getFileSystem(), target);
+        } catch (UnixException x) {
+           if (x.errno() == UnixConstants.EINVAL)
+                throw new NotLinkException(link.getPathForExecptionMessage());
+            x.rethrowAsIOException(link);
+            return null;    // keep compiler happy
+        }
+    }
 }
--- a/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java	Wed Jul 05 17:35:13 2017 +0200
@@ -27,15 +27,11 @@
 
 import java.nio.*;
 import java.nio.file.*;
-import java.nio.file.attribute.*;
 import java.nio.charset.*;
-import java.nio.channels.*;
-import java.security.AccessController;
 import java.io.*;
 import java.net.URI;
 import java.util.*;
 import java.lang.ref.SoftReference;
-import sun.security.util.SecurityConstants;
 
 import static sun.nio.fs.UnixNativeDispatcher.*;
 import static sun.nio.fs.UnixConstants.*;
@@ -79,8 +75,6 @@
     // removes redundant slashes and check input for invalid characters
     static String normalizeAndCheck(String input) {
         int n = input.length();
-        if (n == 0)
-            throw new InvalidPathException(input, "Path is empty");
         char prevChar = 0;
         for (int i=0; i < n; i++) {
             char c = input.charAt(i);
@@ -174,7 +168,13 @@
         if (getFileSystem().needToResolveAgainstDefaultDirectory()) {
             return resolve(getFileSystem().defaultDirectory(), path);
         } else {
-            return path;
+            if (!isEmpty()) {
+                return path;
+            } else {
+                // empty path case will access current directory
+                byte[] here = { '.' };
+                return here;
+            }
         }
     }
 
@@ -193,7 +193,7 @@
     }
 
     // Checks that the given file is a UnixPath
-    private UnixPath checkPath(FileRef obj) {
+    static UnixPath toUnixPath(Path obj) {
         if (obj == null)
             throw new NullPointerException();
         if (!(obj instanceof UnixPath))
@@ -209,12 +209,17 @@
             // count names
             count = 0;
             index = 0;
-            while (index < path.length) {
-                byte c = path[index++];
-                if (c != '/') {
-                    count++;
-                    while (index < path.length && path[index] != '/')
-                        index++;
+            if (isEmpty()) {
+                // empty path has one name
+                count = 1;
+            } else {
+                while (index < path.length) {
+                    byte c = path[index++];
+                    if (c != '/') {
+                        count++;
+                        while (index < path.length && path[index] != '/')
+                            index++;
+                    }
                 }
             }
 
@@ -239,6 +244,16 @@
         }
     }
 
+    // returns {@code true} if this path is an empty path
+    private boolean isEmpty() {
+        return path.length == 0;
+    }
+
+    // returns an empty path
+    private UnixPath emptyPath() {
+        return new UnixPath(getFileSystem(), new byte[0]);
+    }
+
     @Override
     public UnixFileSystem getFileSystem() {
         return fs;
@@ -246,7 +261,7 @@
 
     @Override
     public UnixPath getRoot() {
-        if (path[0] == '/') {
+        if (path.length > 0 && path[0] == '/') {
             return getFileSystem().rootDirectory();
         } else {
             return null;
@@ -254,14 +269,17 @@
     }
 
     @Override
-    public UnixPath getName() {
+    public UnixPath getFileName() {
         initOffsets();
 
         int count = offsets.length;
+
+        // no elements so no name
         if (count == 0)
-            return null;  // no elements so no name
+            return null;
 
-        if (count == 1 && path[0] != '/')
+        // one name element and no root component
+        if (count == 1 && path.length > 0 && path[0] != '/')
             return this;
 
         int lastOffset = offsets[count-1];
@@ -349,57 +367,58 @@
 
     @Override
     public boolean isAbsolute() {
-        return (path[0] == '/');
+        return (path.length > 0 && path[0] == '/');
     }
 
     // Resolve child against given base
     private static byte[] resolve(byte[] base, byte[] child) {
-        if (child[0] == '/')
+        int baseLength = base.length;
+        int childLength = child.length;
+        if (childLength == 0)
+            return base;
+        if (baseLength == 0 || child[0] == '/')
             return child;
         byte[] result;
-        if (base.length == 1 && base[0] == '/') {
-            result = new byte[child.length + 1];
+        if (baseLength == 1 && base[0] == '/') {
+            result = new byte[childLength + 1];
             result[0] = '/';
-            System.arraycopy(child, 0, result, 1, child.length);
+            System.arraycopy(child, 0, result, 1, childLength);
         } else {
-            result = new byte[base.length + 1 + child.length];
-            System.arraycopy(base, 0, result, 0, base.length);
+            result = new byte[baseLength + 1 + childLength];
+            System.arraycopy(base, 0, result, 0, baseLength);
             result[base.length] = '/';
-            System.arraycopy(child, 0, result,  base.length+1, child.length);
+            System.arraycopy(child, 0, result, baseLength+1, childLength);
         }
         return result;
     }
 
     @Override
     public UnixPath resolve(Path obj) {
-        if (obj == null)
-            return this;
-        byte[] other = checkPath(obj).path;
-        if (other[0] == '/')
+        byte[] other = toUnixPath(obj).path;
+        if (other.length > 0 && other[0] == '/')
             return ((UnixPath)obj);
         byte[] result = resolve(path, other);
         return new UnixPath(getFileSystem(), result);
     }
 
-    @Override
-    public UnixPath resolve(String other) {
-        return resolve(new UnixPath(getFileSystem(), other));
-    }
-
     UnixPath resolve(byte[] other) {
         return resolve(new UnixPath(getFileSystem(), other));
     }
 
     @Override
     public UnixPath relativize(Path obj) {
-        UnixPath other = checkPath(obj);
+        UnixPath other = toUnixPath(obj);
         if (other.equals(this))
-            return null;
+            return emptyPath();
 
         // can only relativize paths of the same type
         if (this.isAbsolute() != other.isAbsolute())
             throw new IllegalArgumentException("'other' is different type of Path");
 
+        // this path is the empty path
+        if (this.isEmpty())
+            return other;
+
         int bn = this.getNameCount();
         int cn = other.getNameCount();
 
@@ -419,14 +438,27 @@
             if (dotdots == 0)
                 return remainder;
 
+            // other is the empty path
+            boolean isOtherEmpty = other.isEmpty();
+
             // result is a  "../" for each remaining name in base
-            // followed by the remaining names in other
-            byte[] result = new byte[dotdots*3 + remainder.path.length];
+            // followed by the remaining names in other. If the remainder is
+            // the empty path then we don't add the final trailing slash.
+            int len = dotdots*3 + remainder.path.length;
+            if (isOtherEmpty) {
+                assert remainder.isEmpty();
+                len--;
+            }
+            byte[] result = new byte[len];
             int pos = 0;
             while (dotdots > 0) {
                 result[pos++] = (byte)'.';
                 result[pos++] = (byte)'.';
-                result[pos++] = (byte)'/';
+                if (isOtherEmpty) {
+                    if (dotdots > 1) result[pos++] = (byte)'/';
+                } else {
+                    result[pos++] = (byte)'/';
+                }
                 dotdots--;
             }
             System.arraycopy(remainder.path, 0, result, pos, remainder.path.length);
@@ -457,7 +489,7 @@
         int[] size = new int[count];                // length of name
         int remaining = count;                      // number of names remaining
         boolean hasDotDot = false;                  // has at least one ..
-        boolean isAbsolute = path[0] == '/';
+        boolean isAbsolute = isAbsolute();
 
         // first pass:
         //   1. compute length of names
@@ -542,7 +574,7 @@
 
         // corner case - all names removed
         if (remaining == 0) {
-            return isAbsolute ? getFileSystem().rootDirectory() : null;
+            return isAbsolute ? getFileSystem().rootDirectory() : emptyPath();
         }
 
         // compute length of result
@@ -574,7 +606,7 @@
 
     @Override
     public boolean startsWith(Path other) {
-        UnixPath that = checkPath(other);
+        UnixPath that = toUnixPath(other);
 
         // other path is longer
         if (that.path.length > path.length)
@@ -584,8 +616,9 @@
         int thatOffsetCount = that.getNameCount();
 
         // other path has no name elements
-        if (thatOffsetCount == 0 && this.isAbsolute())
-            return true;
+        if (thatOffsetCount == 0 && this.isAbsolute()) {
+            return that.isEmpty() ? false : true;
+        }
 
         // given path has more elements that this path
         if (thatOffsetCount > thisOffsetCount)
@@ -622,7 +655,7 @@
 
     @Override
     public boolean endsWith(Path other) {
-        UnixPath that = checkPath(other);
+        UnixPath that = toUnixPath(other);
 
         int thisLen = path.length;
         int thatLen = that.path.length;
@@ -631,6 +664,10 @@
         if (thatLen > thisLen)
             return false;
 
+        // other path is the empty path
+        if (thisLen > 0 && thatLen == 0)
+            return false;
+
         // other path is absolute so this path must be absolute
         if (that.isAbsolute() && !this.isAbsolute())
             return false;
@@ -721,32 +758,6 @@
         return stringValue;
     }
 
-    @Override
-    public Iterator<Path> iterator() {
-        initOffsets();
-        return new Iterator<Path>() {
-            int i = 0;
-            @Override
-            public boolean hasNext() {
-                return (i < offsets.length);
-            }
-            @Override
-            public Path next() {
-                if (i < offsets.length) {
-                    Path result = getName(i);
-                    i++;
-                    return result;
-                } else {
-                    throw new NoSuchElementException();
-                }
-            }
-            @Override
-            public void remove() {
-                throw new UnsupportedOperationException();
-            }
-        };
-    }
-
     // -- file operations --
 
     // package-private
@@ -770,7 +781,6 @@
         }
     }
 
-
     void checkRead() {
         SecurityManager sm = System.getSecurityManager();
         if (sm != null)
@@ -790,296 +800,6 @@
     }
 
     @Override
-    public FileStore getFileStore()
-        throws IOException
-    {
-        SecurityManager sm = System.getSecurityManager();
-        if (sm != null) {
-            sm.checkPermission(new RuntimePermission("getFileStoreAttributes"));
-            checkRead();
-        }
-        return getFileSystem().getFileStore(this);
-    }
-
-    @Override
-    public void checkAccess(AccessMode... modes) throws IOException {
-        boolean e = false;
-        boolean r = false;
-        boolean w = false;
-        boolean x = false;
-
-        if (modes.length == 0) {
-            e = true;
-        } else {
-            for (AccessMode mode: modes) {
-                switch (mode) {
-                    case READ : r = true; break;
-                    case WRITE : w = true; break;
-                    case EXECUTE : x = true; break;
-                    default: throw new AssertionError("Should not get here");
-                }
-            }
-        }
-
-        int mode = 0;
-        if (e || r) {
-            checkRead();
-            mode |= (r) ? R_OK : F_OK;
-        }
-        if (w) {
-            checkWrite();
-            mode |= W_OK;
-        }
-        if (x) {
-            SecurityManager sm = System.getSecurityManager();
-            if (sm != null) {
-                // not cached
-                sm.checkExec(getPathForPermissionCheck());
-            }
-            mode |= X_OK;
-        }
-        try {
-            access(this, mode);
-        } catch (UnixException exc) {
-            exc.rethrowAsIOException(this);
-        }
-    }
-
-    @Override
-    void implDelete(boolean failIfNotExists) throws IOException {
-        checkDelete();
-
-        // need file attributes to know if file is directory
-        UnixFileAttributes attrs = null;
-        try {
-            attrs = UnixFileAttributes.get(this, false);
-            if (attrs.isDirectory()) {
-                rmdir(this);
-            } else {
-                unlink(this);
-            }
-        } catch (UnixException x) {
-            // no-op if file does not exist
-            if (!failIfNotExists && x.errno() == ENOENT)
-                return;
-
-            // DirectoryNotEmptyException if not empty
-            if (attrs != null && attrs.isDirectory() &&
-                (x.errno() == EEXIST || x.errno() == ENOTEMPTY))
-                throw new DirectoryNotEmptyException(getPathForExecptionMessage());
-
-            x.rethrowAsIOException(this);
-        }
-    }
-
-    @Override
-    public DirectoryStream<Path> newDirectoryStream(DirectoryStream.Filter<? super Path> filter)
-        throws IOException
-    {
-        if (filter == null)
-            throw new NullPointerException();
-        checkRead();
-
-        // can't return SecureDirectoryStream on kernels that don't support
-        // openat, etc.
-        if (!supportsAtSysCalls()) {
-            try {
-                long ptr = opendir(this);
-                return new UnixDirectoryStream(this, ptr, filter);
-            } catch (UnixException x) {
-                if (x.errno() == ENOTDIR)
-                    throw new NotDirectoryException(getPathForExecptionMessage());
-                x.rethrowAsIOException(this);
-            }
-        }
-
-        // open directory and dup file descriptor for use by
-        // opendir/readdir/closedir
-        int dfd1 = -1;
-        int dfd2 = -1;
-        long dp = 0L;
-        try {
-            dfd1 = open(this, O_RDONLY, 0);
-            dfd2 = dup(dfd1);
-            dp = fdopendir(dfd1);
-        } catch (UnixException x) {
-            if (dfd1 != -1)
-                close(dfd1);
-            if (dfd2 != -1)
-                close(dfd2);
-            if (x.errno() == UnixConstants.ENOTDIR)
-                throw new NotDirectoryException(getPathForExecptionMessage());
-            x.rethrowAsIOException(this);
-        }
-        return new UnixSecureDirectoryStream(this, dp, dfd2, filter);
-    }
-
-    // invoked by AbstractPath#copyTo
-    @Override
-    public void implCopyTo(Path obj, CopyOption... options)
-        throws IOException
-    {
-        UnixPath target = (UnixPath)obj;
-        UnixCopyFile.copy(this, target, options);
-    }
-
-    @Override
-    public void implMoveTo(Path obj, CopyOption... options)
-        throws IOException
-    {
-        UnixPath target = (UnixPath)obj;
-        UnixCopyFile.move(this, target, options);
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public <V extends FileAttributeView> V
-        getFileAttributeView(Class<V> type, LinkOption... options)
-    {
-        FileAttributeView view = getFileSystem()
-            .newFileAttributeView(type, this, options);
-        if (view == null)
-            return null;
-        return (V) view;
-    }
-
-    @Override
-    public DynamicFileAttributeView getFileAttributeView(String name,
-                                                         LinkOption... options)
-    {
-        return getFileSystem().newFileAttributeView(name, this, options);
-    }
-
-    @Override
-    public Path createDirectory(FileAttribute<?>... attrs)
-        throws IOException
-    {
-        checkWrite();
-
-        int mode = UnixFileModeAttribute
-            .toUnixMode(UnixFileModeAttribute.ALL_PERMISSIONS, attrs);
-        try {
-            mkdir(this, mode);
-        } catch (UnixException x) {
-            x.rethrowAsIOException(this);
-        }
-        return this;
-    }
-
-    @Override
-    public SeekableByteChannel newByteChannel(Set<? extends OpenOption> options,
-                                              FileAttribute<?>... attrs)
-         throws IOException
-    {
-        int mode = UnixFileModeAttribute
-            .toUnixMode(UnixFileModeAttribute.ALL_READWRITE, attrs);
-        try {
-            return UnixChannelFactory.newFileChannel(this, options, mode);
-        } catch (UnixException x) {
-            x.rethrowAsIOException(this);
-            return null;  // keep compiler happy
-        }
-    }
-
-    @Override
-    public boolean isSameFile(Path obj) throws IOException {
-        if (this.equals(obj))
-            return true;
-        if (!(obj instanceof UnixPath))  // includes null check
-            return false;
-        UnixPath other = (UnixPath)obj;
-
-        // check security manager access to both files
-        this.checkRead();
-        other.checkRead();
-
-        UnixFileAttributes thisAttrs;
-        UnixFileAttributes otherAttrs;
-        try {
-             thisAttrs = UnixFileAttributes.get(this, true);
-        } catch (UnixException x) {
-            x.rethrowAsIOException(this);
-            return false;    // keep compiler happy
-        }
-        try {
-            otherAttrs = UnixFileAttributes.get(other, true);
-        } catch (UnixException x) {
-            x.rethrowAsIOException(other);
-            return false;    // keep compiler happy
-        }
-        return thisAttrs.isSameFile(otherAttrs);
-    }
-
-    @Override
-    public Path createSymbolicLink(Path obj, FileAttribute<?>... attrs)
-        throws IOException
-    {
-        UnixPath target = checkPath(obj);
-
-        // no attributes supported when creating links
-        if (attrs.length > 0) {
-            UnixFileModeAttribute.toUnixMode(0, attrs);  // may throw NPE or UOE
-            throw new UnsupportedOperationException("Initial file attributes" +
-                "not supported when creating symbolic link");
-        }
-
-        // permission check
-        SecurityManager sm = System.getSecurityManager();
-        if (sm != null) {
-            sm.checkPermission(new LinkPermission("symbolic"));
-            checkWrite();
-        }
-
-        // create link
-        try {
-            symlink(target.asByteArray(), this);
-        } catch (UnixException x) {
-            x.rethrowAsIOException(this);
-        }
-
-        return this;
-    }
-
-    @Override
-    public Path createLink(Path obj) throws IOException {
-        UnixPath existing = checkPath(obj);
-
-        // permission check
-        SecurityManager sm = System.getSecurityManager();
-        if (sm != null) {
-            sm.checkPermission(new LinkPermission("hard"));
-            this.checkWrite();
-            existing.checkWrite();
-        }
-        try {
-            link(existing, this);
-        } catch (UnixException x) {
-            x.rethrowAsIOException(this, existing);
-        }
-        return this;
-    }
-
-    @Override
-    public Path readSymbolicLink() throws IOException {
-        // permission check
-        SecurityManager sm = System.getSecurityManager();
-        if (sm != null) {
-            FilePermission perm = new FilePermission(getPathForPermissionCheck(),
-                SecurityConstants.FILE_READLINK_ACTION);
-            AccessController.checkPermission(perm);
-        }
-        try {
-            byte[] target = readlink(this);
-            return new UnixPath(getFileSystem(), target);
-        } catch (UnixException x) {
-           if (x.errno() == UnixConstants.EINVAL)
-                throw new NotLinkException(getPathForExecptionMessage());
-            x.rethrowAsIOException(this);
-            return null;    // keep compiler happy
-        }
-    }
-
-    @Override
     public UnixPath toAbsolutePath() {
         if (isAbsolute()) {
             return this;
@@ -1095,7 +815,7 @@
     }
 
     @Override
-    public UnixPath toRealPath(boolean resolveLinks) throws IOException {
+    public Path toRealPath(boolean resolveLinks) throws IOException {
         checkRead();
 
         UnixPath absolute = toAbsolutePath();
@@ -1112,8 +832,7 @@
 
         // if resolveLinks is false then eliminate "." and also ".."
         // where the previous element is not a link.
-        UnixPath root = getFileSystem().rootDirectory();
-        UnixPath result = root;
+        UnixPath result = fs.rootDirectory();
         for (int i=0; i<absolute.getNameCount(); i++) {
             UnixPath element = absolute.getName(i);
 
@@ -1134,7 +853,7 @@
                 if (!attrs.isSymbolicLink()) {
                     result = result.getParent();
                     if (result == null) {
-                        result = root;
+                        result = fs.rootDirectory();
                     }
                     continue;
                 }
@@ -1152,15 +871,6 @@
     }
 
     @Override
-    public boolean isHidden() {
-        checkRead();
-        UnixPath name = getName();
-        if (name == null)
-            return false;
-        return (name.asByteArray()[0] == '.');
-    }
-
-    @Override
     public URI toUri() {
         return UnixUriUtils.toUri(this);
     }
--- a/jdk/src/solaris/classes/sun/nio/fs/UnixSecureDirectoryStream.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/classes/sun/nio/fs/UnixSecureDirectoryStream.java	Wed Jul 05 17:35:13 2017 +0200
@@ -40,7 +40,7 @@
  */
 
 class UnixSecureDirectoryStream
-    extends SecureDirectoryStream<Path>
+    implements SecureDirectoryStream<Path>
 {
     private final UnixDirectoryStream ds;
     private final int dfd;
@@ -81,6 +81,20 @@
         return (UnixPath)obj;
     }
 
+    private boolean followLinks(LinkOption... options) {
+        boolean followLinks = true;
+        for (LinkOption option: options) {
+            if (option == LinkOption.NOFOLLOW_LINKS) {
+                followLinks = false;
+                continue;
+            }
+            if (option == null)
+                throw new NullPointerException();
+            throw new AssertionError("Should not get here");
+        }
+        return followLinks;
+    }
+
     /**
      * Opens sub-directory in this directory
      */
@@ -91,7 +105,7 @@
     {
         UnixPath file = getName(obj);
         UnixPath child = ds.directory().resolve(file);
-        boolean followLinks = file.getFileSystem().followLinks(options);
+        boolean followLinks = followLinks(options);
 
         // permission check using name resolved against original path of directory
         SecurityManager sm = System.getSecurityManager();
@@ -302,7 +316,7 @@
                                                                 LinkOption... options)
     {
         UnixPath file = getName(obj);
-        boolean followLinks = file.getFileSystem().followLinks(options);
+        boolean followLinks = followLinks(options);
         return getFileAttributeViewImpl(file, type, followLinks);
     }
 
@@ -336,7 +350,11 @@
         private void checkWriteAccess() {
             SecurityManager sm = System.getSecurityManager();
             if (sm != null) {
-                ds.directory().resolve(file).checkWrite();
+                if (file == null) {
+                    ds.directory().checkWrite();
+                } else {
+                    ds.directory().resolve(file).checkWrite();
+                }
             }
         }
 
--- a/jdk/src/solaris/classes/sun/nio/fs/UnixUriUtils.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/classes/sun/nio/fs/UnixUriUtils.java	Wed Jul 05 17:35:13 2017 +0200
@@ -25,8 +25,11 @@
 
 package sun.nio.fs;
 
+import java.nio.file.Path;
+import java.io.File;
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.util.Arrays;
 
 /**
  * Unix specific Path <--> URI conversion
@@ -38,7 +41,7 @@
     /**
      * Converts URI to Path
      */
-    static UnixPath fromUri(UnixFileSystem fs, URI uri) {
+    static Path fromUri(UnixFileSystem fs, URI uri) {
         if (!uri.isAbsolute())
             throw new IllegalArgumentException("URI is not absolute");
         if (uri.isOpaque())
@@ -53,22 +56,41 @@
         if (uri.getQuery() != null)
             throw new IllegalArgumentException("URI has a query component");
 
-        String path = uri.getPath();
-        if (path.equals(""))
+        // compatability with java.io.File
+        if (!uri.toString().startsWith("file:///"))
+            return new File(uri).toPath();
+
+        // transformation use raw path
+        String p = uri.getRawPath();
+        int len = p.length();
+        if (len == 0)
             throw new IllegalArgumentException("URI path component is empty");
-        if (path.endsWith("/") && (path.length() > 1)) {
-            // "/foo/" --> "/foo", but "/" --> "/"
-            path = path.substring(0, path.length() - 1);
-        }
 
-        // preserve bytes
-        byte[] result = new byte[path.length()];
-        for (int i=0; i<path.length(); i++) {
-            byte v = (byte)(path.charAt(i));
-            if (v == 0)
-                throw new IllegalArgumentException("Nul character not allowed");
-            result[i] = v;
+        // transform escaped octets and unescaped characters to bytes
+        if (p.endsWith("/") && len > 1)
+            len--;
+        byte[] result = new byte[len];
+        int rlen = 0;
+        int pos = 0;
+        while (pos < len) {
+            char c = p.charAt(pos++);
+            byte b;
+            if (c == '%') {
+                assert (pos+2) <= len;
+                char c1 = p.charAt(pos++);
+                char c2 = p.charAt(pos++);
+                b = (byte)((decode(c1) << 4) | decode(c2));
+                if (b == 0)
+                    throw new IllegalArgumentException("Nul character not allowed");
+            } else {
+                assert c < 0x80;
+                b = (byte)c;
+            }
+            result[rlen++] = b;
         }
+        if (rlen != result.length)
+            result = Arrays.copyOf(result, rlen);
+
         return new UnixPath(fs, result);
     }
 
@@ -86,7 +108,7 @@
             } else {
                sb.append('%');
                sb.append(hexDigits[(c >> 4) & 0x0f]);
-               sb.append(hexDigits[(c >> 0) & 0x0f]);
+               sb.append(hexDigits[(c) & 0x0f]);
             }
         }
 
@@ -164,6 +186,17 @@
         return false;
     }
 
+    // decode
+    private static int decode(char c) {
+        if ((c >= '0') && (c <= '9'))
+            return c - '0';
+        if ((c >= 'a') && (c <= 'f'))
+            return c - 'a' + 10;
+        if ((c >= 'A') && (c <= 'F'))
+            return c - 'A' + 10;
+        throw new AssertionError();
+    }
+
     // digit    = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" |
     //            "8" | "9"
     private static final long L_DIGIT = lowMask('0', '9');
--- a/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c	Wed Jul 05 17:35:13 2017 +0200
@@ -55,12 +55,23 @@
 
 #include "sun_nio_fs_UnixNativeDispatcher.h"
 
+/**
+ * Size of password or group entry when not available via sysconf
+ */
+#define ENT_BUF_SIZE   1024
+
 #define RESTARTABLE(_cmd, _result) do { \
   do { \
     _result = _cmd; \
   } while((_result == -1) && (errno == EINTR)); \
 } while(0)
 
+#define RESTARTABLE_RETURN_PTR(_cmd, _result) do { \
+  do { \
+    _result = _cmd; \
+  } while((_result == NULL) && (errno == EINTR)); \
+} while(0)
+
 static jfieldID attrs_st_mode;
 static jfieldID attrs_st_ino;
 static jfieldID attrs_st_dev;
@@ -858,37 +869,41 @@
 {
     jbyteArray result = NULL;
     int buflen;
+    char* pwbuf;
 
+    /* allocate buffer for password record */
     buflen = (int)sysconf(_SC_GETPW_R_SIZE_MAX);
-    if (buflen == -1) {
-        throwUnixException(env, errno);
+    if (buflen == -1)
+        buflen = ENT_BUF_SIZE;
+    pwbuf = (char*)malloc(buflen);
+    if (pwbuf == NULL) {
+        JNU_ThrowOutOfMemoryError(env, "native heap");
     } else {
-        char* pwbuf = (char*)malloc(buflen);
-        if (pwbuf == NULL) {
-            JNU_ThrowOutOfMemoryError(env, "native heap");
-        } else {
-            struct passwd pwent;
-            struct passwd* p;
-            int res = 0;
+        struct passwd pwent;
+        struct passwd* p = NULL;
+        int res = 0;
 
-#ifdef __solaris__
-            p = getpwuid_r((uid_t)uid, &pwent, pwbuf, (size_t)buflen);
-#else
-            res = getpwuid_r((uid_t)uid, &pwent, pwbuf, (size_t)buflen, &p);
-#endif
+        errno = 0;
+        #ifdef __solaris__
+            RESTARTABLE_RETURN_PTR(getpwuid_r((uid_t)uid, &pwent, pwbuf, (size_t)buflen), p);
+        #else
+            RESTARTABLE(getpwuid_r((uid_t)uid, &pwent, pwbuf, (size_t)buflen, &p), res);
+        #endif
 
-            if (res != 0 || p == NULL || p->pw_name == NULL || *(p->pw_name) == '\0') {
+        if (res != 0 || p == NULL || p->pw_name == NULL || *(p->pw_name) == '\0') {
+            /* not found or error */
+            if (errno != 0 && errno != ENOENT)
                 throwUnixException(env, errno);
-            } else {
-                jsize len = strlen(p->pw_name);
-                result = (*env)->NewByteArray(env, len);
-                if (result != NULL) {
-                    (*env)->SetByteArrayRegion(env, result, 0, len, (jbyte*)(p->pw_name));
-                }
+        } else {
+            jsize len = strlen(p->pw_name);
+            result = (*env)->NewByteArray(env, len);
+            if (result != NULL) {
+                (*env)->SetByteArrayRegion(env, result, 0, len, (jbyte*)(p->pw_name));
             }
-            free(pwbuf);
         }
+        free(pwbuf);
     }
+
     return result;
 }
 
@@ -898,36 +913,55 @@
 {
     jbyteArray result = NULL;
     int buflen;
+    int retry;
 
+    /* initial size of buffer for group record */
     buflen = (int)sysconf(_SC_GETGR_R_SIZE_MAX);
-    if (buflen == -1) {
-        throwUnixException(env, errno);
-    } else {
+    if (buflen == -1)
+        buflen = ENT_BUF_SIZE;
+
+    do {
+        struct group grent;
+        struct group* g = NULL;
+        int res = 0;
+
         char* grbuf = (char*)malloc(buflen);
         if (grbuf == NULL) {
             JNU_ThrowOutOfMemoryError(env, "native heap");
-        } else {
-            struct group grent;
-            struct group* g;
-            int res = 0;
+            return NULL;
+        }
+
+        errno = 0;
+        #ifdef __solaris__
+            RESTARTABLE_RETURN_PTR(getgrgid_r((gid_t)gid, &grent, grbuf, (size_t)buflen), g);
+        #else
+            RESTARTABLE(getgrgid_r((gid_t)gid, &grent, grbuf, (size_t)buflen, &g), res);
+        #endif
 
-#ifdef __solaris__
-            g = getgrgid_r((gid_t)gid, &grent, grbuf, (size_t)buflen);
-#else
-            res = getgrgid_r((gid_t)gid, &grent, grbuf, (size_t)buflen, &g);
-#endif
-            if (res != 0 || g == NULL || g->gr_name == NULL || *(g->gr_name) == '\0') {
-                throwUnixException(env, errno);
-            } else {
-                jsize len = strlen(g->gr_name);
-                result = (*env)->NewByteArray(env, len);
-                if (result != NULL) {
-                    (*env)->SetByteArrayRegion(env, result, 0, len, (jbyte*)(g->gr_name));
+        retry = 0;
+        if (res != 0 || g == NULL || g->gr_name == NULL || *(g->gr_name) == '\0') {
+            /* not found or error */
+            if (errno != 0 && errno != ENOENT) {
+                if (errno == ERANGE) {
+                    /* insufficient buffer size so need larger buffer */
+                    buflen += ENT_BUF_SIZE;
+                    retry = 1;
+                } else {
+                    throwUnixException(env, errno);
                 }
             }
-            free(grbuf);
+        } else {
+            jsize len = strlen(g->gr_name);
+            result = (*env)->NewByteArray(env, len);
+            if (result != NULL) {
+                (*env)->SetByteArrayRegion(env, result, 0, len, (jbyte*)(g->gr_name));
+            }
         }
-    }
+
+        free(grbuf);
+
+    } while (retry);
+
     return result;
 }
 
@@ -938,36 +972,37 @@
     jint uid = -1;
     int buflen;
     char* pwbuf;
-    struct passwd pwent;
-    struct passwd* p;
-    int res = 0;
-    const char* name = (const char*)jlong_to_ptr(nameAddress);
 
+    /* allocate buffer for password record */
     buflen = (int)sysconf(_SC_GETPW_R_SIZE_MAX);
-    if (buflen == -1) {
-        throwUnixException(env, errno);
-        return -1;
-    }
+    if (buflen == -1)
+        buflen = ENT_BUF_SIZE;
     pwbuf = (char*)malloc(buflen);
     if (pwbuf == NULL) {
         JNU_ThrowOutOfMemoryError(env, "native heap");
-        return -1;
-    }
+    } else {
+        struct passwd pwent;
+        struct passwd* p = NULL;
+        int res = 0;
+        const char* name = (const char*)jlong_to_ptr(nameAddress);
 
-#ifdef __solaris__
-    p = getpwnam_r(name, &pwent, pwbuf, (size_t)buflen);
-#else
-    res = getpwnam_r(name, &pwent, pwbuf, (size_t)buflen, &p);
-#endif
+        errno = 0;
+        #ifdef __solaris__
+            RESTARTABLE_RETURN_PTR(getpwnam_r(name, &pwent, pwbuf, (size_t)buflen), p);
+        #else
+            RESTARTABLE(getpwnam_r(name, &pwent, pwbuf, (size_t)buflen, &p), res);
+        #endif
 
-    if (res != 0 || p == NULL || p->pw_name == NULL || *(p->pw_name) == '\0') {
-        /* not found or error */
-    } else {
-        uid = p->pw_uid;
+        if (res != 0 || p == NULL || p->pw_name == NULL || *(p->pw_name) == '\0') {
+            /* not found or error */
+            if (errno != 0 && errno != ENOENT)
+                throwUnixException(env, errno);
+        } else {
+            uid = p->pw_uid;
+        }
+        free(pwbuf);
     }
 
-    free(pwbuf);
-
     return uid;
 }
 
@@ -976,36 +1011,52 @@
     jlong nameAddress)
 {
     jint gid = -1;
-    int buflen;
-    char* grbuf;
-    struct group grent;
-    struct group* g;
-    int res = 0;
-    const char* name = (const char*)jlong_to_ptr(nameAddress);
+    int buflen, retry;
 
+    /* initial size of buffer for group record */
     buflen = (int)sysconf(_SC_GETGR_R_SIZE_MAX);
-    if (buflen == -1) {
-        throwUnixException(env, errno);
-        return -1;
-    }
-    grbuf = (char*)malloc(buflen);
-    if (grbuf == NULL) {
-        JNU_ThrowOutOfMemoryError(env, "native heap");
-        return -1;
-    }
+    if (buflen == -1)
+        buflen = ENT_BUF_SIZE;
+
+    do {
+        struct group grent;
+        struct group* g = NULL;
+        int res = 0;
+        char *grbuf;
+        const char* name = (const char*)jlong_to_ptr(nameAddress);
+
+        grbuf = (char*)malloc(buflen);
+        if (grbuf == NULL) {
+            JNU_ThrowOutOfMemoryError(env, "native heap");
+            return -1;
+        }
 
-#ifdef __solaris__
-    g = getgrnam_r(name, &grent, grbuf, (size_t)buflen);
-#else
-    res = getgrnam_r(name, &grent, grbuf, (size_t)buflen, &g);
-#endif
+        errno = 0;
+        #ifdef __solaris__
+            RESTARTABLE_RETURN_PTR(getgrnam_r(name, &grent, grbuf, (size_t)buflen), g);
+        #else
+            RESTARTABLE(getgrnam_r(name, &grent, grbuf, (size_t)buflen, &g), res);
+        #endif
 
-    if (res != 0 || g == NULL || g->gr_name == NULL || *(g->gr_name) == '\0') {
-        /* not found or error */
-    } else {
-        gid = g->gr_gid;
-    }
-    free(grbuf);
+        retry = 0;
+        if (res != 0 || g == NULL || g->gr_name == NULL || *(g->gr_name) == '\0') {
+            /* not found or error */
+            if (errno != 0 && errno != ENOENT) {
+                if (errno == ERANGE) {
+                    /* insufficient buffer size so need larger buffer */
+                    buflen += ENT_BUF_SIZE;
+                    retry = 1;
+                } else {
+                    throwUnixException(env, errno);
+                }
+            }
+        } else {
+            gid = g->gr_gid;
+        }
+
+        free(grbuf);
+
+    } while (retry);
 
     return gid;
 }
--- a/jdk/src/windows/bin/java_md.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/bin/java_md.c	Wed Jul 05 17:35:13 2017 +0200
@@ -49,7 +49,6 @@
 static jboolean GetJVMPath(const char *jrepath, const char *jvmtype,
                            char *jvmpath, jint jvmpathsize);
 static jboolean GetJREPath(char *path, jint pathsize);
-static void EnsureJreInstallation(const char *jrepath);
 
 /* We supports warmup for UI stack that is performed in parallel
  * to VM initialization.
@@ -201,9 +200,6 @@
         exit(2);
     }
 
-    /* Do this before we read jvm.cfg and after jrepath is initialized */
-    EnsureJreInstallation(jrepath);
-
     /* Find the specified JVM type */
     if (ReadKnownVMs(jrepath, (char*)GetArch(), JNI_FALSE) < 1) {
         JLI_ReportErrorMessage(CFG_ERROR7);
@@ -296,68 +292,6 @@
     return JNI_TRUE;
 }
 
-/*
- * The preJVMStart is a function in the jkernel.dll, which
- * performs the final step of synthesizing back the decomposed
- * modules  (partial install) to the full JRE. Any tool which
- * uses the  JRE must peform this step to ensure the complete synthesis.
- * The EnsureJreInstallation function calls preJVMStart based on
- * the conditions outlined below, noting that the operation
- * will fail silently if any of conditions are not met.
- * NOTE: this call must be made before jvm.dll is loaded, or jvm.cfg
- * is read, since jvm.cfg will be modified by the preJVMStart.
- * 1. Are we on a supported platform.
- * 2. Find the location of the JRE or the Kernel JRE.
- * 3. check existence of JREHOME/lib/bundles
- * 4. check jkernel.dll and invoke the entry-point
- */
-typedef VOID (WINAPI *PREJVMSTART)();
-
-static void
-EnsureJreInstallation(const char* jrepath)
-{
-    HINSTANCE handle;
-    char tmpbuf[MAXPATHLEN];
-    PREJVMSTART PreJVMStart;
-    struct stat s;
-
-    /* Make sure the jrepath contains something */
-    if ((void*)jrepath[0] == NULL) {
-        return;
-    }
-    /* 32 bit windows only please */
-    if (JLI_StrCmp(GetArch(), "i386") != 0 ) {
-        return;
-    }
-    /* Does our bundle directory exist ? */
-    JLI_Snprintf(tmpbuf, sizeof(tmpbuf), "%s\\lib\\bundles", jrepath);
-    JLI_TraceLauncher("EnsureJreInstallation: %s\n", tmpbuf);
-    if (stat(tmpbuf, &s) != 0) {
-        return;
-    }
-    /* Does our jkernel dll exist ? */
-    JLI_Snprintf(tmpbuf, sizeof(tmpbuf), "%s\\bin\\jkernel.dll", jrepath);
-    if (stat(tmpbuf, &s) != 0) {
-        return;
-    }
-    /* The Microsoft C Runtime Library needs to be loaded first. */
-    if (!LoadMSVCRT()) {
-        return;
-    }
-    /* Load the jkernel.dll */
-    if ((handle = LoadLibrary(tmpbuf)) == 0) {
-        return;
-    }
-    /* Get the function address */
-    PreJVMStart = (PREJVMSTART)GetProcAddress(handle, "preJVMStart");
-    if (PreJVMStart == NULL) {
-        FreeLibrary(handle);
-        return;
-    }
-    PreJVMStart();
-    FreeLibrary(handle);
-    return;
-}
 
 /*
  * Find path to JRE based on .exe's location or registry settings.
--- a/jdk/src/windows/classes/java/net/PlainSocketImpl.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/classes/java/net/PlainSocketImpl.java	Wed Jul 05 17:35:13 2017 +0200
@@ -138,6 +138,9 @@
 
     protected synchronized void create(boolean stream) throws IOException {
         impl.create(stream);
+
+        // set fd to delegate's fd to be compatible with older releases
+        this.fd = impl.fd;
     }
 
     protected void connect(String host, int port)
@@ -166,7 +169,7 @@
         impl.doConnect(address, port, timeout);
     }
 
-     protected synchronized void bind(InetAddress address, int lport)
+    protected synchronized void bind(InetAddress address, int lport)
         throws IOException
     {
         impl.bind(address, lport);
@@ -174,9 +177,13 @@
 
     protected synchronized void accept(SocketImpl s) throws IOException {
         // pass in the real impl not the wrapper.
-        ((PlainSocketImpl)s).impl.address = new InetAddress();
-        ((PlainSocketImpl)s).impl.fd = new FileDescriptor();
-        impl.accept(((PlainSocketImpl)s).impl);
+        SocketImpl delegate = ((PlainSocketImpl)s).impl;
+        delegate.address = new InetAddress();
+        delegate.fd = new FileDescriptor();
+        impl.accept(delegate);
+
+        // set fd to delegate's fd to be compatible with older releases
+        s.fd = delegate.fd;
     }
 
     void setFileDescriptor(FileDescriptor fd) {
@@ -208,11 +215,21 @@
     }
 
     protected void close() throws IOException {
-        impl.close();
+        try {
+            impl.close();
+        } finally {
+            // set fd to delegate's fd to be compatible with older releases
+            this.fd = null;
+        }
     }
 
     void reset() throws IOException {
-        impl.reset();
+        try {
+            impl.reset();
+        } finally {
+            // set fd to delegate's fd to be compatible with older releases
+            this.fd = null;
+        }
     }
 
     protected void shutdownInput() throws IOException {
--- a/jdk/src/windows/classes/sun/awt/windows/awtLocalization_es.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/classes/sun/awt/windows/awtLocalization_es.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -7,4 +7,4 @@
 menuFont=SansSerif-plain-11
 
 # Value for "All files" for FileDialog
-allFiles=Todos los archivos
+allFiles=Todos los Archivos
--- a/jdk/src/windows/classes/sun/awt/windows/awtLocalization_ja.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/classes/sun/awt/windows/awtLocalization_ja.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -4,7 +4,7 @@
 #
 
 # Default font size for Menus and MenuItems
-menuFont=SansSerif-plain-12
+menuFont=SansSerif-plain-11
 
 # Value for "All files" for FileDialog
-allFiles=\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb
+allFiles=\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB
--- a/jdk/src/windows/classes/sun/awt/windows/awtLocalization_ko.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/classes/sun/awt/windows/awtLocalization_ko.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -4,7 +4,7 @@
 #
 
 # Default font size for Menus and MenuItems
-menuFont=SansSerif-plain-12
+menuFont=SansSerif-plain-11
 
 # Value for "All files" for FileDialog
-allFiles=\ubaa8\ub4e0 \ud30c\uc77c
+allFiles=\uBAA8\uB4E0 \uD30C\uC77C
--- a/jdk/src/windows/classes/sun/awt/windows/awtLocalization_pt_BR.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/classes/sun/awt/windows/awtLocalization_pt_BR.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -7,4 +7,4 @@
 menuFont=SansSerif-plain-11
 
 # Value for "All files" for FileDialog
-allFiles=Todos os arquivos
+allFiles=Todos os Arquivos
--- a/jdk/src/windows/classes/sun/awt/windows/awtLocalization_zh_CN.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/classes/sun/awt/windows/awtLocalization_zh_CN.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -4,7 +4,7 @@
 #
 
 # Default font size for Menus and MenuItems
-menuFont=SansSerif-plain-12
+menuFont=SansSerif-plain-11
 
 # Value for "All files" for FileDialog
-allFiles=\u6240\u6709\u6587\u4ef6
+allFiles=\u6240\u6709\u6587\u4EF6
--- a/jdk/src/windows/classes/sun/awt/windows/awtLocalization_zh_TW.properties	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/classes/sun/awt/windows/awtLocalization_zh_TW.properties	Wed Jul 05 17:35:13 2017 +0200
@@ -7,4 +7,4 @@
 menuFont=SansSerif-plain-12
 
 # Value for "All files" for FileDialog
-allFiles=\u6240\u6709\u6a94\u6848
+allFiles=\u6240\u6709\u6A94\u6848
--- a/jdk/src/windows/classes/sun/nio/fs/RegistryFileTypeDetector.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/classes/sun/nio/fs/RegistryFileTypeDetector.java	Wed Jul 05 17:35:13 2017 +0200
@@ -42,12 +42,12 @@
     }
 
     @Override
-    public String implProbeContentType(FileRef file) throws IOException {
+    public String implProbeContentType(Path file) throws IOException {
         if (!(file instanceof Path))
             return null;
 
         // get file extension
-        Path name = ((Path)file).getName();
+        Path name = file.getFileName();
         if (name == null)
             return null;
         String filename = name.toString();
--- a/jdk/src/windows/classes/sun/nio/fs/WindowsFileAttributeViews.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/classes/sun/nio/fs/WindowsFileAttributeViews.java	Wed Jul 05 17:35:13 2017 +0200
@@ -167,22 +167,6 @@
         }
 
         @Override
-        public Object getAttribute(String attribute) throws IOException {
-            if (attribute.equals(READONLY_NAME))
-                return readAttributes().isReadOnly();
-            if (attribute.equals(ARCHIVE_NAME))
-                return readAttributes().isArchive();
-            if (attribute.equals(SYSTEM_NAME))
-                return readAttributes().isSystem();
-            if (attribute.equals(HIDDEN_NAME))
-                return readAttributes().isHidden();
-            // implementation specific
-            if (attribute.equals(ATTRIBUTES_NAME))
-                return readAttributes().attributes();
-            return super.getAttribute(attribute);
-        }
-
-        @Override
         public void setAttribute(String attribute, Object value)
             throws IOException
         {
@@ -206,7 +190,7 @@
         }
 
         @Override
-        public Map<String,?> readAttributes(String[] attributes)
+        public Map<String,Object> readAttributes(String[] attributes)
             throws IOException
         {
             AttributesBuilder builder = AttributesBuilder.create(attributes);
--- a/jdk/src/windows/classes/sun/nio/fs/WindowsFileCopy.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/classes/sun/nio/fs/WindowsFileCopy.java	Wed Jul 05 17:35:13 2017 +0200
@@ -158,7 +158,7 @@
                     if (x.lastError() == ERROR_DIR_NOT_EMPTY ||
                         x.lastError() == ERROR_ALREADY_EXISTS)
                     {
-                        throw new FileAlreadyExistsException(
+                        throw new DirectoryNotEmptyException(
                             target.getPathForExceptionMessage());
                     }
                 }
@@ -369,7 +369,7 @@
                     if (x.lastError() == ERROR_DIR_NOT_EMPTY ||
                         x.lastError() == ERROR_ALREADY_EXISTS)
                     {
-                        throw new FileAlreadyExistsException(
+                        throw new DirectoryNotEmptyException(
                             target.getPathForExceptionMessage());
                     }
                 }
--- a/jdk/src/windows/classes/sun/nio/fs/WindowsFileStore.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/classes/sun/nio/fs/WindowsFileStore.java	Wed Jul 05 17:35:13 2017 +0200
@@ -117,28 +117,47 @@
         return ((volInfo.flags() & FILE_READ_ONLY_VOLUME) != 0);
     }
 
+    // read the free space info
+    private DiskFreeSpace readDiskFreeSpace() throws IOException {
+        try {
+            return GetDiskFreeSpaceEx(root);
+        } catch (WindowsException x) {
+            x.rethrowAsIOException(root);
+            return null;
+        }
+    }
+
     @Override
-    @SuppressWarnings("unchecked")
+    public long getTotalSpace() throws IOException {
+        return readDiskFreeSpace().totalNumberOfBytes();
+    }
+
+    @Override
+    public long getUsableSpace() throws IOException {
+        return readDiskFreeSpace().freeBytesAvailable();
+    }
+
+    @Override
+    public long getUnallocatedSpace() throws IOException {
+        return readDiskFreeSpace().freeBytesAvailable();
+    }
+
+    @Override
     public <V extends FileStoreAttributeView> V getFileStoreAttributeView(Class<V> type) {
         if (type == null)
             throw new NullPointerException();
-        if (type == FileStoreSpaceAttributeView.class)
-            return (V) new WindowsFileStoreAttributeView(this);
         return (V) null;
     }
 
     @Override
     public Object getAttribute(String attribute) throws IOException {
         // standard
-        if (attribute.equals("space:totalSpace"))
-            return new WindowsFileStoreAttributeView(this)
-                .readAttributes().totalSpace();
-        if (attribute.equals("space:usableSpace"))
-            return new WindowsFileStoreAttributeView(this)
-                 .readAttributes().usableSpace();
-        if (attribute.equals("space:unallocatedSpace"))
-            return new WindowsFileStoreAttributeView(this)
-                 .readAttributes().unallocatedSpace();
+        if (attribute.equals("totalSpace"))
+            return getTotalSpace();
+        if (attribute.equals("usableSpace"))
+            return getUsableSpace();
+        if (attribute.equals("unallocatedSpace"))
+            return getUnallocatedSpace();
         // windows specific for testing purposes
         if (attribute.equals("volume:vsn"))
             return volInfo.volumeSerialNumber();
@@ -202,48 +221,4 @@
         sb.append(")");
         return sb.toString();
     }
-
-    static class WindowsFileStoreAttributeView
-        implements FileStoreSpaceAttributeView
-    {
-        private final WindowsFileStore fs;
-
-        WindowsFileStoreAttributeView(WindowsFileStore fs) {
-            this.fs = fs;
-        }
-
-        @Override
-        public String name() {
-            return "space";
-        }
-
-        @Override
-        public FileStoreSpaceAttributes readAttributes()
-            throws IOException
-        {
-            // read the free space info
-            DiskFreeSpace info = null;
-            try {
-                info = GetDiskFreeSpaceEx(fs.root);
-            } catch (WindowsException x) {
-                x.rethrowAsIOException(fs.root);
-            }
-
-            final DiskFreeSpace result = info;
-            return new FileStoreSpaceAttributes() {
-                @Override
-                public long totalSpace() {
-                    return result.totalNumberOfBytes();
-                }
-                @Override
-                public long usableSpace() {
-                    return result.freeBytesAvailable();
-                }
-                @Override
-                public long unallocatedSpace() {
-                    return result.totalNumberOfFreeBytes();
-                }
-            };
-        }
-    }
  }
--- a/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java	Wed Jul 05 17:35:13 2017 +0200
@@ -127,7 +127,7 @@
         }
 
         // iterate over roots, ignoring those that the security manager denies
-        ArrayList<Path> result = new ArrayList<Path>();
+        ArrayList<Path> result = new ArrayList<>();
         SecurityManager sm = System.getSecurityManager();
         for (int i = 0; i <= 25; i++) {  // 0->A, 1->B, 2->C...
             if ((drives & (1 << i)) != 0) {
@@ -235,33 +235,50 @@
     }
 
     @Override
-    public Path getPath(String path) {
+    public final Path getPath(String first, String... more) {
+        String path;
+        if (more.length == 0) {
+            path = first;
+        } else {
+            StringBuilder sb = new StringBuilder();
+            sb.append(first);
+            for (String segment: more) {
+                if (segment.length() > 0) {
+                    if (sb.length() > 0)
+                        sb.append('\\');
+                    sb.append(segment);
+                }
+            }
+            path = sb.toString();
+        }
         return WindowsPath.parse(this, path);
     }
 
     @Override
     public UserPrincipalLookupService getUserPrincipalLookupService() {
-        return theLookupService;
+        return LookupService.instance;
     }
 
-    private static final UserPrincipalLookupService theLookupService =
-        new UserPrincipalLookupService() {
-            @Override
-            public UserPrincipal lookupPrincipalByName(String name)
-                throws IOException
-            {
-                return WindowsUserPrincipals.lookup(name);
-            }
-            @Override
-            public GroupPrincipal lookupPrincipalByGroupName(String group)
-                throws IOException
-            {
-                UserPrincipal user = WindowsUserPrincipals.lookup(group);
-                if (!(user instanceof GroupPrincipal))
-                    throw new UserPrincipalNotFoundException(group);
-                return (GroupPrincipal)user;
-            }
-        };
+    private static class LookupService {
+        static final UserPrincipalLookupService instance =
+            new UserPrincipalLookupService() {
+                @Override
+                public UserPrincipal lookupPrincipalByName(String name)
+                    throws IOException
+                {
+                    return WindowsUserPrincipals.lookup(name);
+                }
+                @Override
+                public GroupPrincipal lookupPrincipalByGroupName(String group)
+                    throws IOException
+                {
+                    UserPrincipal user = WindowsUserPrincipals.lookup(group);
+                    if (!(user instanceof GroupPrincipal))
+                        throw new UserPrincipalNotFoundException(group);
+                    return (GroupPrincipal)user;
+                }
+            };
+    }
 
     @Override
     public PathMatcher getPathMatcher(String syntaxAndInput) {
--- a/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystemProvider.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystemProvider.java	Wed Jul 05 17:35:13 2017 +0200
@@ -26,19 +26,25 @@
 package sun.nio.fs;
 
 import java.nio.file.*;
-import java.nio.file.spi.*;
 import java.nio.file.attribute.*;
 import java.nio.channels.*;
 import java.net.URI;
 import java.util.concurrent.ExecutorService;
-import java.io.IOException;
+import java.io.*;
 import java.util.*;
+import java.security.AccessController;
+import sun.misc.Unsafe;
+import sun.nio.ch.ThreadPool;
+import sun.security.util.SecurityConstants;
 
-import sun.nio.ch.ThreadPool;
+import static sun.nio.fs.WindowsNativeDispatcher.*;
+import static sun.nio.fs.WindowsConstants.*;
 
 public class WindowsFileSystemProvider
-    extends FileSystemProvider
+    extends AbstractFileSystemProvider
 {
+    private static final Unsafe unsafe = Unsafe.getUnsafe();
+
     private static final String USER_DIR = "user.dir";
     private final WindowsFileSystem theFileSystem;
 
@@ -143,4 +149,505 @@
                 sd.release();
         }
     }
+
+    private boolean followLinks(LinkOption... options) {
+        boolean followLinks = true;
+        for (LinkOption option: options) {
+            if (option == LinkOption.NOFOLLOW_LINKS) {
+                followLinks = false;
+                continue;
+            }
+            if (option == null)
+                throw new NullPointerException();
+            throw new AssertionError("Should not get here");
+        }
+        return followLinks;
+    }
+
+    @Override
+    @SuppressWarnings("unchecked")
+    public <V extends FileAttributeView> V
+        getFileAttributeView(Path obj, Class<V> view, LinkOption... options)
+    {
+        WindowsPath file = WindowsPath.toWindowsPath(obj);
+        if (view == null)
+            throw new NullPointerException();
+        boolean followLinks = followLinks(options);
+        if (view == BasicFileAttributeView.class)
+            return (V) WindowsFileAttributeViews.createBasicView(file, followLinks);
+        if (view == DosFileAttributeView.class)
+            return (V) WindowsFileAttributeViews.createDosView(file, followLinks);
+        if (view == AclFileAttributeView.class)
+            return (V) new WindowsAclFileAttributeView(file, followLinks);
+        if (view == FileOwnerAttributeView.class)
+            return (V) new FileOwnerAttributeViewImpl(
+                new WindowsAclFileAttributeView(file, followLinks));
+        if (view == UserDefinedFileAttributeView.class)
+            return (V) new WindowsUserDefinedFileAttributeView(file, followLinks);
+        return (V) null;
+    }
+
+    @Override
+    @SuppressWarnings("unchecked")
+    public <A extends BasicFileAttributes> A readAttributes(Path file,
+                                                            Class<A> type,
+                                                            LinkOption... options)
+        throws IOException
+    {
+        Class<? extends BasicFileAttributeView> view;
+        if (type == BasicFileAttributes.class)
+            view = BasicFileAttributeView.class;
+        else if (type == DosFileAttributes.class)
+            view = DosFileAttributeView.class;
+        else if (type == null)
+            throw new NullPointerException();
+        else
+            throw new UnsupportedOperationException();
+        return (A) getFileAttributeView(file, view, options).readAttributes();
+    }
+
+    @Override
+    public DynamicFileAttributeView getFileAttributeView(Path obj, String name, LinkOption... options) {
+        WindowsPath file = WindowsPath.toWindowsPath(obj);
+        boolean followLinks = followLinks(options);
+        if (name.equals("basic"))
+            return WindowsFileAttributeViews.createBasicView(file, followLinks);
+        if (name.equals("dos"))
+            return WindowsFileAttributeViews.createDosView(file, followLinks);
+        if (name.equals("acl"))
+            return new WindowsAclFileAttributeView(file, followLinks);
+        if (name.equals("owner"))
+            return new FileOwnerAttributeViewImpl(
+                new WindowsAclFileAttributeView(file, followLinks));
+        if (name.equals("user"))
+            return new WindowsUserDefinedFileAttributeView(file, followLinks);
+        return null;
+    }
+
+    @Override
+    public SeekableByteChannel newByteChannel(Path obj,
+                                              Set<? extends OpenOption> options,
+                                              FileAttribute<?>... attrs)
+         throws IOException
+    {
+        WindowsPath file = WindowsPath.toWindowsPath(obj);
+        WindowsSecurityDescriptor sd =
+            WindowsSecurityDescriptor.fromAttribute(attrs);
+        try {
+            return WindowsChannelFactory
+                .newFileChannel(file.getPathForWin32Calls(),
+                                file.getPathForPermissionCheck(),
+                                options,
+                                sd.address());
+        } catch (WindowsException x) {
+            x.rethrowAsIOException(file);
+            return null;  // keep compiler happy
+        } finally {
+            sd.release();
+        }
+    }
+
+    @Override
+    boolean implDelete(Path obj, boolean failIfNotExists) throws IOException {
+        WindowsPath file = WindowsPath.toWindowsPath(obj);
+        file.checkDelete();
+
+        WindowsFileAttributes attrs = null;
+        try {
+             // need to know if file is a directory or junction
+             attrs = WindowsFileAttributes.get(file, false);
+             if (attrs.isDirectory() || attrs.isDirectoryLink()) {
+                RemoveDirectory(file.getPathForWin32Calls());
+             } else {
+                DeleteFile(file.getPathForWin32Calls());
+             }
+             return true;
+        } catch (WindowsException x) {
+
+            // no-op if file does not exist
+            if (!failIfNotExists &&
+                (x.lastError() == ERROR_FILE_NOT_FOUND ||
+                 x.lastError() == ERROR_PATH_NOT_FOUND)) return false;
+
+            if (attrs != null && attrs.isDirectory()) {
+                // ERROR_ALREADY_EXISTS is returned when attempting to delete
+                // non-empty directory on SAMBA servers.
+                if (x.lastError() == ERROR_DIR_NOT_EMPTY ||
+                    x.lastError() == ERROR_ALREADY_EXISTS)
+                {
+                    throw new DirectoryNotEmptyException(
+                        file.getPathForExceptionMessage());
+                }
+            }
+            x.rethrowAsIOException(file);
+            return false;
+        }
+    }
+
+    @Override
+    public void copy(Path source, Path target, CopyOption... options)
+        throws IOException
+    {
+        WindowsFileCopy.copy(WindowsPath.toWindowsPath(source),
+                             WindowsPath.toWindowsPath(target),
+                             options);
+    }
+
+    @Override
+    public void move(Path source, Path target, CopyOption... options)
+        throws IOException
+    {
+        WindowsFileCopy.move(WindowsPath.toWindowsPath(source),
+                             WindowsPath.toWindowsPath(target),
+                             options);
+    }
+
+    /**
+     * Returns buffer with SID_AND_ATTRIBUTES structure representing the user
+     * associated with the current thread access token.
+     * FIXME - this should be cached.
+     */
+    private static NativeBuffer getUserInfo(WindowsPath file) throws IOException {
+        try {
+            long hToken = WindowsSecurity.processTokenWithQueryAccess;
+            int size = GetTokenInformation(hToken, TokenUser, 0L, 0);
+            assert size > 0;
+
+            NativeBuffer buffer = NativeBuffers.getNativeBuffer(size);
+            try {
+                int newsize = GetTokenInformation(hToken, TokenUser,
+                                                  buffer.address(), size);
+                if (newsize != size)
+                    throw new AssertionError();
+                return buffer;
+            } catch (WindowsException x) {
+                buffer.release();
+                throw x;
+            }
+        } catch (WindowsException x) {
+            throw new IOException(x.getMessage());
+        }
+    }
+
+    /**
+     * Reads the file ACL and return the effective access as ACCESS_MASK
+     */
+    private static int getEffectiveAccess(WindowsPath file) throws IOException {
+        // read security descriptor continaing ACL (symlinks are followed)
+        String target = WindowsLinkSupport.getFinalPath(file, true);
+        NativeBuffer aclBuffer = WindowsAclFileAttributeView
+            .getFileSecurity(target, DACL_SECURITY_INFORMATION);
+
+        // retrieves DACL from security descriptor
+        long pAcl = GetSecurityDescriptorDacl(aclBuffer.address());
+
+        // Use GetEffectiveRightsFromAcl to get effective access to file
+        try {
+            NativeBuffer userBuffer = getUserInfo(file);
+            try {
+                try {
+                    // SID_AND_ATTRIBUTES->pSid
+                    long pSid = unsafe.getAddress(userBuffer.address());
+                    long pTrustee = BuildTrusteeWithSid(pSid);
+                    try {
+                        return GetEffectiveRightsFromAcl(pAcl, pTrustee);
+                    } finally {
+                        LocalFree(pTrustee);
+                    }
+                } catch (WindowsException x) {
+                    throw new IOException("Unable to get effective rights from ACL: " +
+                        x.getMessage());
+                }
+            } finally {
+                userBuffer.release();
+            }
+        } finally {
+            aclBuffer.release();
+        }
+    }
+
+    @Override
+    public void checkAccess(Path obj, AccessMode... modes) throws IOException {
+        WindowsPath file = WindowsPath.toWindowsPath(obj);
+        // if no access modes then simply file attributes
+        if (modes.length == 0) {
+            file.checkRead();
+            try {
+                WindowsFileAttributes.get(file, true);
+            } catch (WindowsException exc) {
+                exc.rethrowAsIOException(file);
+            }
+            return;
+        }
+
+        boolean r = false;
+        boolean w = false;
+        boolean x = false;
+        for (AccessMode mode: modes) {
+            switch (mode) {
+                case READ : r = true; break;
+                case WRITE : w = true; break;
+                case EXECUTE : x = true; break;
+                default: throw new AssertionError("Should not get here");
+            }
+        }
+
+        int mask = 0;
+        if (r) {
+            file.checkRead();
+            mask |= FILE_READ_DATA;
+        }
+        if (w) {
+            file.checkWrite();
+            mask |= FILE_WRITE_DATA;
+        }
+        if (x) {
+            SecurityManager sm = System.getSecurityManager();
+            if (sm != null)
+                sm.checkExec(file.getPathForPermissionCheck());
+            mask |= FILE_EXECUTE;
+        }
+
+        if ((getEffectiveAccess(file) & mask) == 0)
+            throw new AccessDeniedException(
+                file.getPathForExceptionMessage(), null,
+                "Effective permissions does not allow requested access");
+
+        // for write access we neeed to check if the DOS readonly attribute
+        // and if the volume is read-only
+        if (w) {
+            try {
+                WindowsFileAttributes attrs = WindowsFileAttributes.get(file, true);
+                if (!attrs.isDirectory() && attrs.isReadOnly())
+                    throw new AccessDeniedException(
+                        file.getPathForExceptionMessage(), null,
+                        "DOS readonly attribute is set");
+            } catch (WindowsException exc) {
+                exc.rethrowAsIOException(file);
+            }
+
+            if (WindowsFileStore.create(file).isReadOnly()) {
+                throw new AccessDeniedException(
+                    file.getPathForExceptionMessage(), null, "Read-only file system");
+            }
+            return;
+        }
+    }
+
+    @Override
+    public boolean isSameFile(Path obj1, Path obj2) throws IOException {
+        WindowsPath file1 = WindowsPath.toWindowsPath(obj1);
+        if (file1.equals(obj2))
+            return true;
+        if (obj2 == null)
+            throw new NullPointerException();
+        if (!(obj2 instanceof WindowsPath))
+            return false;
+        WindowsPath file2 = (WindowsPath)obj2;
+
+        // check security manager access to both files
+        file1.checkRead();
+        file2.checkRead();
+
+        // open both files and see if they are the same
+        long h1 = 0L;
+        try {
+            h1 = file1.openForReadAttributeAccess(true);
+        } catch (WindowsException x) {
+            x.rethrowAsIOException(file1);
+        }
+        try {
+            WindowsFileAttributes attrs1 = null;
+            try {
+                attrs1 = WindowsFileAttributes.readAttributes(h1);
+            } catch (WindowsException x) {
+                x.rethrowAsIOException(file1);
+            }
+            long h2 = 0L;
+            try {
+                h2 = file2.openForReadAttributeAccess(true);
+            } catch (WindowsException x) {
+                x.rethrowAsIOException(file2);
+            }
+            try {
+                WindowsFileAttributes attrs2 = null;
+                try {
+                    attrs2 = WindowsFileAttributes.readAttributes(h2);
+                } catch (WindowsException x) {
+                    x.rethrowAsIOException(file2);
+                }
+                return WindowsFileAttributes.isSameFile(attrs1, attrs2);
+            } finally {
+                CloseHandle(h2);
+            }
+        } finally {
+            CloseHandle(h1);
+        }
+    }
+
+    @Override
+    public boolean isHidden(Path obj) throws IOException {
+        WindowsPath file = WindowsPath.toWindowsPath(obj);
+        file.checkRead();
+        WindowsFileAttributes attrs = null;
+        try {
+            attrs = WindowsFileAttributes.get(file, true);
+        } catch (WindowsException x) {
+            x.rethrowAsIOException(file);
+        }
+        // DOS hidden attribute not meaningful when set on directories
+        if (attrs.isDirectory())
+            return false;
+        return attrs.isHidden();
+    }
+
+    @Override
+    public FileStore getFileStore(Path obj) throws IOException {
+        WindowsPath file = WindowsPath.toWindowsPath(obj);
+        SecurityManager sm = System.getSecurityManager();
+        if (sm != null) {
+            sm.checkPermission(new RuntimePermission("getFileStoreAttributes"));
+            file.checkRead();
+        }
+        return WindowsFileStore.create(file);
+    }
+
+
+    @Override
+    public void createDirectory(Path obj, FileAttribute<?>... attrs)
+        throws IOException
+    {
+        WindowsPath dir = WindowsPath.toWindowsPath(obj);
+        dir.checkWrite();
+        WindowsSecurityDescriptor sd = WindowsSecurityDescriptor.fromAttribute(attrs);
+        try {
+            CreateDirectory(dir.getPathForWin32Calls(), sd.address());
+        } catch (WindowsException x) {
+            x.rethrowAsIOException(dir);
+        } finally {
+            sd.release();
+        }
+    }
+
+    @Override
+    public DirectoryStream<Path> newDirectoryStream(Path obj, DirectoryStream.Filter<? super Path> filter)
+        throws IOException
+    {
+        WindowsPath dir = WindowsPath.toWindowsPath(obj);
+        dir.checkRead();
+        if (filter == null)
+            throw new NullPointerException();
+        return new WindowsDirectoryStream(dir, filter);
+    }
+
+    @Override
+    public void createSymbolicLink(Path obj1, Path obj2, FileAttribute<?>... attrs)
+        throws IOException
+    {
+        WindowsPath link = WindowsPath.toWindowsPath(obj1);
+        WindowsPath target = WindowsPath.toWindowsPath(obj2);
+
+        if (!link.getFileSystem().supportsLinks()) {
+            throw new UnsupportedOperationException("Symbolic links not supported "
+                + "on this operating system");
+        }
+
+        // no attributes allowed
+        if (attrs.length > 0) {
+            WindowsSecurityDescriptor.fromAttribute(attrs);  // may throw NPE or UOE
+            throw new UnsupportedOperationException("Initial file attributes" +
+                "not supported when creating symbolic link");
+        }
+
+        // permission check
+        SecurityManager sm = System.getSecurityManager();
+        if (sm != null) {
+            sm.checkPermission(new LinkPermission("symbolic"));
+            link.checkWrite();
+        }
+
+        /**
+         * Throw I/O exception for the drive-relative case because Windows
+         * creates a link with the resolved target for this case.
+         */
+        if (target.type() == WindowsPathType.DRIVE_RELATIVE) {
+            throw new IOException("Cannot create symbolic link to working directory relative target");
+        }
+
+        /*
+         * Windows treates symbolic links to directories differently than it
+         * does to other file types. For that reason we need to check if the
+         * target is a directory (or a directory junction).
+         */
+        WindowsPath resolvedTarget;
+        if (target.type() == WindowsPathType.RELATIVE) {
+            WindowsPath parent = link.getParent();
+            resolvedTarget = (parent == null) ? target : parent.resolve(target);
+        } else {
+            resolvedTarget = link.resolve(target);
+        }
+        int flags = 0;
+        try {
+            WindowsFileAttributes wattrs = WindowsFileAttributes.get(resolvedTarget, false);
+            if (wattrs.isDirectory() || wattrs.isDirectoryLink())
+                flags |= SYMBOLIC_LINK_FLAG_DIRECTORY;
+        } catch (WindowsException x) {
+            // unable to access target so assume target is not a directory
+        }
+
+        // create the link
+        try {
+            CreateSymbolicLink(link.getPathForWin32Calls(),
+                               WindowsPath.addPrefixIfNeeded(target.toString()),
+                               flags);
+        } catch (WindowsException x) {
+            if (x.lastError() == ERROR_INVALID_REPARSE_DATA) {
+                x.rethrowAsIOException(link, target);
+            } else {
+                x.rethrowAsIOException(link);
+            }
+        }
+    }
+
+    @Override
+    public void createLink(Path obj1, Path obj2) throws IOException {
+        WindowsPath link = WindowsPath.toWindowsPath(obj1);
+        WindowsPath existing = WindowsPath.toWindowsPath(obj2);
+
+        // permission check
+        SecurityManager sm = System.getSecurityManager();
+        if (sm != null) {
+            sm.checkPermission(new LinkPermission("hard"));
+            link.checkWrite();
+            existing.checkWrite();
+        }
+
+        // create hard link
+        try {
+            CreateHardLink(link.getPathForWin32Calls(),
+                           existing.getPathForWin32Calls());
+        } catch (WindowsException x) {
+            x.rethrowAsIOException(link, existing);
+        }
+    }
+
+    @Override
+    public Path readSymbolicLink(Path obj1) throws IOException {
+        WindowsPath link = WindowsPath.toWindowsPath(obj1);
+        WindowsFileSystem fs = link.getFileSystem();
+        if (!fs.supportsLinks()) {
+            throw new UnsupportedOperationException("symbolic links not supported");
+        }
+
+        // permission check
+        SecurityManager sm = System.getSecurityManager();
+        if (sm != null) {
+            FilePermission perm = new FilePermission(link.getPathForPermissionCheck(),
+                SecurityConstants.FILE_READLINK_ACTION);
+            AccessController.checkPermission(perm);
+        }
+
+        String target = WindowsLinkSupport.readLink(link);
+        return WindowsPath.createFromNormalizedPath(fs, target);
+    }
 }
--- a/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java	Wed Jul 05 17:35:13 2017 +0200
@@ -27,18 +27,13 @@
 
 import java.nio.file.*;
 import java.nio.file.attribute.*;
-import java.nio.channels.*;
 import java.io.*;
 import java.net.URI;
-import java.security.AccessController;
 import java.util.*;
 import java.lang.ref.WeakReference;
 
 import com.sun.nio.file.ExtendedWatchEventModifier;
 
-import sun.security.util.SecurityConstants;
-import sun.misc.Unsafe;
-
 import static sun.nio.fs.WindowsNativeDispatcher.*;
 import static sun.nio.fs.WindowsConstants.*;
 
@@ -47,7 +42,6 @@
  */
 
 class WindowsPath extends AbstractPath {
-    private static final Unsafe unsafe = Unsafe.getUnsafe();
 
     // The maximum path that does not require long path prefix. On Windows
     // the maximum path is 260 minus 1 (NUL) but for directories it is 260
@@ -229,6 +223,8 @@
         // Relative path ("foo" for example)
         if (type == WindowsPathType.RELATIVE) {
             String defaultDirectory = getFileSystem().defaultDirectory();
+            if (isEmpty())
+                return defaultDirectory;
             if (defaultDirectory.endsWith("\\")) {
                 return defaultDirectory + path;
             } else {
@@ -286,7 +282,7 @@
     }
 
     // Add long path prefix to path if required
-    private static String addPrefixIfNeeded(String path) {
+    static String addPrefixIfNeeded(String path) {
         if (path.length() > 248) {
             if (path.startsWith("\\\\")) {
                 path = "\\\\?\\UNC" + path.substring(1, path.length());
@@ -304,10 +300,22 @@
 
     // -- Path operations --
 
+    private boolean isEmpty() {
+        return path.length() == 0;
+    }
+
+    private WindowsPath emptyPath() {
+        return new WindowsPath(getFileSystem(), WindowsPathType.RELATIVE, "", "");
+    }
+
     @Override
-    public Path getName() {
+    public Path getFileName() {
+        int len = path.length();
+        // represents empty path
+        if (len == 0)
+            return this;
         // represents root component only
-        if (root.length() == path.length())
+        if (root.length() == len)
             return null;
         int off = path.lastIndexOf('\\');
         if (off < root.length())
@@ -340,6 +348,11 @@
     }
 
     // package-private
+    WindowsPathType type() {
+        return type;
+    }
+
+    // package-private
     boolean isUnc() {
         return type == WindowsPathType.UNC;
     }
@@ -355,7 +368,7 @@
         return type == WindowsPathType.ABSOLUTE || type == WindowsPathType.UNC;
     }
 
-    private WindowsPath checkPath(FileRef path) {
+    static WindowsPath toWindowsPath(Path path) {
         if (path == null)
             throw new NullPointerException();
         if (!(path instanceof WindowsPath)) {
@@ -366,9 +379,9 @@
 
     @Override
     public WindowsPath relativize(Path obj) {
-        WindowsPath other = checkPath(obj);
+        WindowsPath other = toWindowsPath(obj);
         if (this.equals(other))
-            return null;
+            return emptyPath();
 
         // can only relativize paths of the same type
         if (this.type != other.type)
@@ -410,7 +423,7 @@
     @Override
     public Path normalize() {
         final int count = getNameCount();
-        if (count == 0)
+        if (count == 0 || isEmpty())
             return this;
 
         boolean[] ignore = new boolean[count];      // true => ignore name
@@ -488,7 +501,7 @@
 
         // corner case - all names removed
         if (remaining == 0) {
-            return getRoot();
+            return (root.length() == 0) ? emptyPath() : getRoot();
         }
 
         // re-constitute the path from the remaining names.
@@ -497,7 +510,7 @@
             result.append(root);
         for (int i=0; i<count; i++) {
             if (!ignore[i]) {
-                result.append(getName(i).toString());
+                result.append(getName(i));
                 result.append("\\");
             }
         }
@@ -509,9 +522,9 @@
 
     @Override
     public WindowsPath resolve(Path obj) {
-        if (obj == null)
+        WindowsPath other = toWindowsPath(obj);
+        if (other.isEmpty())
             return this;
-        WindowsPath other = checkPath(obj);
         if (other.isAbsolute())
             return other;
 
@@ -559,27 +572,27 @@
         }
     }
 
-    @Override
-    public WindowsPath resolve(String other) {
-        return resolve(getFileSystem().getPath(other));
-    }
-
     // generate offset array
     private void initOffsets() {
         if (offsets == null) {
-            ArrayList<Integer> list = new ArrayList<Integer>();
-            int start = root.length();
-            int off = root.length();
-            while (off < path.length()) {
-                if (path.charAt(off) != '\\') {
-                    off++;
-                } else {
+            ArrayList<Integer> list = new ArrayList<>();
+            if (isEmpty()) {
+                // empty path considered to have one name element
+                list.add(0);
+            } else {
+                int start = root.length();
+                int off = root.length();
+                while (off < path.length()) {
+                    if (path.charAt(off) != '\\') {
+                        off++;
+                    } else {
+                        list.add(start);
+                        start = ++off;
+                    }
+                }
+                if (start != off)
                     list.add(start);
-                    start = ++off;
-                }
             }
-            if (start != off)
-                list.add(start);
             synchronized (this) {
                 if (offsets == null)
                     offsets = list.toArray(new Integer[list.size()]);
@@ -633,11 +646,16 @@
 
     @Override
     public boolean startsWith(Path obj) {
-        WindowsPath other = checkPath(obj);
+        WindowsPath other = toWindowsPath(obj);
 
         // if this path has a root component the given path's root must match
-        if (!this.root.equalsIgnoreCase(other.root))
+        if (!this.root.equalsIgnoreCase(other.root)) {
             return false;
+        }
+
+        // empty path starts with itself
+        if (other.isEmpty())
+            return this.isEmpty();
 
         // roots match so compare elements
         int thisCount = getNameCount();
@@ -657,13 +675,18 @@
 
     @Override
     public boolean endsWith(Path obj) {
-        WindowsPath other = checkPath(obj);
+        WindowsPath other = toWindowsPath(obj);
 
         // other path is longer
-        if (other.path.length() > path.length()) {
+        if (other.path.length() > this.path.length()) {
             return false;
         }
 
+        // empty path ends in itself
+        if (other.isEmpty()) {
+            return this.isEmpty();
+        }
+
         int thisCount = this.getNameCount();
         int otherCount = other.getNameCount();
 
@@ -742,31 +765,6 @@
         return path;
     }
 
-    @Override
-    public Iterator<Path> iterator() {
-        return new Iterator<Path>() {
-            private int i = 0;
-            @Override
-            public boolean hasNext() {
-                return (i < getNameCount());
-            }
-            @Override
-            public Path next() {
-                if (i < getNameCount()) {
-                    Path result = getName(i);
-                    i++;
-                    return result;
-                } else {
-                    throw new NoSuchElementException();
-                }
-            }
-            @Override
-            public void remove() {
-                throw new UnsupportedOperationException();
-            }
-        };
-    }
-
     // -- file operations --
 
     // package-private
@@ -806,453 +804,6 @@
     }
 
     @Override
-    public FileStore getFileStore()
-        throws IOException
-    {
-        SecurityManager sm = System.getSecurityManager();
-        if (sm != null) {
-            sm.checkPermission(new RuntimePermission("getFileStoreAttributes"));
-            checkRead();
-        }
-        return WindowsFileStore.create(this);
-    }
-
-    /**
-     * Returns buffer with SID_AND_ATTRIBUTES structure representing the user
-     * associated with the current thread access token.
-     * FIXME - this should be cached.
-     */
-    private NativeBuffer getUserInfo() throws IOException {
-        try {
-            long hToken = WindowsSecurity.processTokenWithQueryAccess;
-            int size = GetTokenInformation(hToken, TokenUser, 0L, 0);
-            assert size > 0;
-
-            NativeBuffer buffer = NativeBuffers.getNativeBuffer(size);
-            try {
-                int newsize = GetTokenInformation(hToken, TokenUser,
-                                                  buffer.address(), size);
-                if (newsize != size)
-                    throw new AssertionError();
-                return buffer;
-            } catch (WindowsException x) {
-                buffer.release();
-                throw x;
-            }
-        } catch (WindowsException x) {
-            throw new IOException(x.getMessage());
-        }
-    }
-
-    /**
-     * Reads the file ACL and return the effective access as ACCESS_MASK
-     */
-    private int getEffectiveAccess() throws IOException {
-        // read security descriptor continaing ACL (symlinks are followed)
-        String target = WindowsLinkSupport.getFinalPath(this, true);
-        NativeBuffer aclBuffer = WindowsAclFileAttributeView
-            .getFileSecurity(target, DACL_SECURITY_INFORMATION);
-
-        // retrieves DACL from security descriptor
-        long pAcl = GetSecurityDescriptorDacl(aclBuffer.address());
-
-        // Use GetEffectiveRightsFromAcl to get effective access to file
-        try {
-            NativeBuffer userBuffer = getUserInfo();
-            try {
-                try {
-                    // SID_AND_ATTRIBUTES->pSid
-                    long pSid = unsafe.getAddress(userBuffer.address());
-                    long pTrustee = BuildTrusteeWithSid(pSid);
-                    try {
-                        return GetEffectiveRightsFromAcl(pAcl, pTrustee);
-                    } finally {
-                        LocalFree(pTrustee);
-                    }
-                } catch (WindowsException x) {
-                    throw new IOException("Unable to get effective rights from ACL: " +
-                        x.getMessage());
-                }
-            } finally {
-                userBuffer.release();
-            }
-        } finally {
-            aclBuffer.release();
-        }
-    }
-
-    @Override
-    public void checkAccess(AccessMode... modes) throws IOException {
-        // if no access modes then simply file attributes
-        if (modes.length == 0) {
-            checkRead();
-            try {
-                WindowsFileAttributes.get(this, true);
-            } catch (WindowsException exc) {
-                exc.rethrowAsIOException(this);
-            }
-            return;
-        }
-
-        boolean r = false;
-        boolean w = false;
-        boolean x = false;
-        for (AccessMode mode: modes) {
-            switch (mode) {
-                case READ : r = true; break;
-                case WRITE : w = true; break;
-                case EXECUTE : x = true; break;
-                default: throw new AssertionError("Should not get here");
-            }
-        }
-
-        int mask = 0;
-        if (r) {
-            checkRead();
-            mask |= FILE_READ_DATA;
-        }
-        if (w) {
-            checkWrite();
-            mask |= FILE_WRITE_DATA;
-        }
-        if (x) {
-            SecurityManager sm = System.getSecurityManager();
-            if (sm != null)
-                sm.checkExec(getPathForPermissionCheck());
-            mask |= FILE_EXECUTE;
-        }
-
-        if ((getEffectiveAccess() & mask) == 0)
-            throw new AccessDeniedException(
-                this.getPathForExceptionMessage(), null,
-                "Effective permissions does not allow requested access");
-
-        // for write access we neeed to check if the DOS readonly attribute
-        // and if the volume is read-only
-        if (w) {
-            try {
-                WindowsFileAttributes attrs = WindowsFileAttributes.get(this, true);
-                if (!attrs.isDirectory() && attrs.isReadOnly())
-                    throw new AccessDeniedException(
-                        this.getPathForExceptionMessage(), null,
-                        "DOS readonly attribute is set");
-            } catch (WindowsException exc) {
-                exc.rethrowAsIOException(this);
-            }
-
-            if (WindowsFileStore.create(this).isReadOnly()) {
-                throw new AccessDeniedException(
-                    this.getPathForExceptionMessage(), null, "Read-only file system");
-            }
-            return;
-        }
-    }
-
-    @Override
-    void implDelete(boolean failIfNotExists) throws IOException {
-        checkDelete();
-
-        WindowsFileAttributes attrs = null;
-        try {
-             // need to know if file is a directory or junction
-             attrs = WindowsFileAttributes.get(this, false);
-             if (attrs.isDirectory() || attrs.isDirectoryLink()) {
-                RemoveDirectory(getPathForWin32Calls());
-             } else {
-                DeleteFile(getPathForWin32Calls());
-             }
-        } catch (WindowsException x) {
-
-            // no-op if file does not exist
-            if (!failIfNotExists &&
-                (x.lastError() == ERROR_FILE_NOT_FOUND ||
-                 x.lastError() == ERROR_PATH_NOT_FOUND)) return;
-
-            if (attrs != null && attrs.isDirectory()) {
-                // ERROR_ALREADY_EXISTS is returned when attempting to delete
-                // non-empty directory on SAMBA servers.
-                if (x.lastError() == ERROR_DIR_NOT_EMPTY ||
-                    x.lastError() == ERROR_ALREADY_EXISTS)
-                {
-                    throw new DirectoryNotEmptyException(
-                        getPathForExceptionMessage());
-                }
-            }
-            x.rethrowAsIOException(this);
-        }
-    }
-
-    @Override
-    public DirectoryStream<Path> newDirectoryStream(DirectoryStream.Filter<? super Path> filter)
-        throws IOException
-    {
-        checkRead();
-        if (filter == null)
-            throw new NullPointerException();
-        return new WindowsDirectoryStream(this, filter);
-    }
-
-    @Override
-    public void implCopyTo(Path obj, CopyOption... options) throws IOException {
-        WindowsPath target = (WindowsPath)obj;
-        WindowsFileCopy.copy(this, target, options);
-    }
-
-    @Override
-    public void implMoveTo(Path obj, CopyOption... options) throws IOException {
-        WindowsPath target = (WindowsPath)obj;
-        WindowsFileCopy.move(this, target, options);
-    }
-
-    private boolean followLinks(LinkOption... options) {
-        boolean followLinks = true;
-        for (LinkOption option: options) {
-            if (option == LinkOption.NOFOLLOW_LINKS) {
-                followLinks = false;
-                continue;
-            }
-            if (option == null)
-                throw new NullPointerException();
-            throw new AssertionError("Should not get here");
-        }
-        return followLinks;
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public <V extends FileAttributeView> V
-        getFileAttributeView(Class<V> view, LinkOption... options)
-    {
-        if (view == null)
-            throw new NullPointerException();
-        boolean followLinks = followLinks(options);
-        if (view == BasicFileAttributeView.class)
-            return (V) WindowsFileAttributeViews.createBasicView(this, followLinks);
-        if (view == DosFileAttributeView.class)
-            return (V) WindowsFileAttributeViews.createDosView(this, followLinks);
-        if (view == AclFileAttributeView.class)
-            return (V) new WindowsAclFileAttributeView(this, followLinks);
-        if (view == FileOwnerAttributeView.class)
-            return (V) new FileOwnerAttributeViewImpl(
-                new WindowsAclFileAttributeView(this, followLinks));
-        if (view == UserDefinedFileAttributeView.class)
-            return (V) new WindowsUserDefinedFileAttributeView(this, followLinks);
-        return (V) null;
-    }
-
-    @Override
-    public DynamicFileAttributeView getFileAttributeView(String name, LinkOption... options) {
-        boolean followLinks = followLinks(options);
-        if (name.equals("basic"))
-            return WindowsFileAttributeViews.createBasicView(this, followLinks);
-        if (name.equals("dos"))
-            return WindowsFileAttributeViews.createDosView(this, followLinks);
-        if (name.equals("acl"))
-            return new WindowsAclFileAttributeView(this, followLinks);
-        if (name.equals("owner"))
-            return new FileOwnerAttributeViewImpl(
-                new WindowsAclFileAttributeView(this, followLinks));
-        if (name.equals("user"))
-            return new WindowsUserDefinedFileAttributeView(this, followLinks);
-        return null;
-    }
-
-    @Override
-    public WindowsPath createDirectory(FileAttribute<?>... attrs)
-        throws IOException
-    {
-        checkWrite();
-        WindowsSecurityDescriptor sd = WindowsSecurityDescriptor.fromAttribute(attrs);
-        try {
-            CreateDirectory(getPathForWin32Calls(), sd.address());
-        } catch (WindowsException x) {
-            x.rethrowAsIOException(this);
-        } finally {
-            sd.release();
-        }
-        return this;
-    }
-
-    @Override
-    public SeekableByteChannel newByteChannel(Set<? extends OpenOption> options,
-                                              FileAttribute<?>... attrs)
-         throws IOException
-    {
-        WindowsSecurityDescriptor sd =
-            WindowsSecurityDescriptor.fromAttribute(attrs);
-        try {
-            return WindowsChannelFactory
-                .newFileChannel(getPathForWin32Calls(),
-                                getPathForPermissionCheck(),
-                                options,
-                                sd.address());
-        } catch (WindowsException x) {
-            x.rethrowAsIOException(this);
-            return null;  // keep compiler happy
-        } finally {
-            sd.release();
-        }
-    }
-
-    @Override
-    public boolean isSameFile(Path obj) throws IOException {
-        if (this.equals(obj))
-            return true;
-        if (!(obj instanceof WindowsPath))  // includes null check
-            return false;
-        WindowsPath other = (WindowsPath)obj;
-
-        // check security manager access to both files
-        this.checkRead();
-        other.checkRead();
-
-        // open both files and see if they are the same
-        long h1 = 0L;
-        try {
-            h1 = this.openForReadAttributeAccess(true);
-        } catch (WindowsException x) {
-            x.rethrowAsIOException(this);
-        }
-        try {
-            WindowsFileAttributes attrs1 = null;
-            try {
-                attrs1 = WindowsFileAttributes.readAttributes(h1);
-            } catch (WindowsException x) {
-                x.rethrowAsIOException(this);
-            }
-            long h2 = 0L;
-            try {
-                h2 = other.openForReadAttributeAccess(true);
-            } catch (WindowsException x) {
-                x.rethrowAsIOException(other);
-            }
-            try {
-                WindowsFileAttributes attrs2 = null;
-                try {
-                    attrs2 = WindowsFileAttributes.readAttributes(h2);
-                } catch (WindowsException x) {
-                    x.rethrowAsIOException(other);
-                }
-                return WindowsFileAttributes.isSameFile(attrs1, attrs2);
-            } finally {
-                CloseHandle(h2);
-            }
-        } finally {
-            CloseHandle(h1);
-        }
-    }
-
-    @Override
-    public WindowsPath createSymbolicLink(Path obj, FileAttribute<?>... attrs)
-        throws IOException
-    {
-        if (!getFileSystem().supportsLinks()) {
-            throw new UnsupportedOperationException("Symbolic links not supported "
-                + "on this operating system");
-        }
-
-        WindowsPath target = checkPath(obj);
-
-        // no attributes allowed
-        if (attrs.length > 0) {
-            WindowsSecurityDescriptor.fromAttribute(attrs);  // may throw NPE or UOE
-            throw new UnsupportedOperationException("Initial file attributes" +
-                "not supported when creating symbolic link");
-        }
-
-        // permission check
-        SecurityManager sm = System.getSecurityManager();
-        if (sm != null) {
-            sm.checkPermission(new LinkPermission("symbolic"));
-            this.checkWrite();
-        }
-
-        /**
-         * Throw I/O exception for the drive-relative case because Windows
-         * creates a link with the resolved target for this case.
-         */
-        if (target.type == WindowsPathType.DRIVE_RELATIVE) {
-            throw new IOException("Cannot create symbolic link to working directory relative target");
-        }
-
-        /*
-         * Windows treates symbolic links to directories differently than it
-         * does to other file types. For that reason we need to check if the
-         * target is a directory (or a directory junction).
-         */
-        WindowsPath resolvedTarget;
-        if (target.type == WindowsPathType.RELATIVE) {
-            WindowsPath parent = getParent();
-            resolvedTarget = (parent == null) ? target : parent.resolve(target);
-        } else {
-            resolvedTarget = resolve(target);
-        }
-        int flags = 0;
-        try {
-            WindowsFileAttributes wattrs = WindowsFileAttributes.get(resolvedTarget, false);
-            if (wattrs.isDirectory() || wattrs.isDirectoryLink())
-                flags |= SYMBOLIC_LINK_FLAG_DIRECTORY;
-        } catch (WindowsException x) {
-            // unable to access target so assume target is not a directory
-        }
-
-        // create the link
-        try {
-            CreateSymbolicLink(getPathForWin32Calls(),
-                               addPrefixIfNeeded(target.toString()),
-                               flags);
-        } catch (WindowsException x) {
-            if (x.lastError() == ERROR_INVALID_REPARSE_DATA) {
-                x.rethrowAsIOException(this, target);
-            } else {
-                x.rethrowAsIOException(this);
-            }
-        }
-        return this;
-    }
-
-    @Override
-    public Path createLink(Path obj) throws IOException {
-        WindowsPath existing = checkPath(obj);
-
-        // permission check
-        SecurityManager sm = System.getSecurityManager();
-        if (sm != null) {
-            sm.checkPermission(new LinkPermission("hard"));
-            this.checkWrite();
-            existing.checkWrite();
-        }
-
-        // create hard link
-        try {
-            CreateHardLink(this.getPathForWin32Calls(),
-                           existing.getPathForWin32Calls());
-        } catch (WindowsException x) {
-            x.rethrowAsIOException(this, existing);
-        }
-
-        return this;
-    }
-
-    @Override
-    public WindowsPath readSymbolicLink() throws IOException {
-        if (!getFileSystem().supportsLinks()) {
-            throw new UnsupportedOperationException("symbolic links not supported");
-        }
-
-        // permission check
-        SecurityManager sm = System.getSecurityManager();
-        if (sm != null) {
-            FilePermission perm = new FilePermission(getPathForPermissionCheck(),
-                SecurityConstants.FILE_READLINK_ACTION);
-            AccessController.checkPermission(perm);
-        }
-
-        String target = WindowsLinkSupport.readLink(this);
-        return createFromNormalizedPath(getFileSystem(), target);
-    }
-
-    @Override
     public URI toUri() {
         return WindowsUriSupport.toUri(this);
     }
@@ -1283,21 +834,6 @@
     }
 
     @Override
-    public boolean isHidden() throws IOException {
-        checkRead();
-        WindowsFileAttributes attrs = null;
-        try {
-            attrs = WindowsFileAttributes.get(this, true);
-        } catch (WindowsException x) {
-            x.rethrowAsIOException(this);
-        }
-        // DOS hidden attribute not meaningful when set on directories
-        if (attrs.isDirectory())
-            return false;
-        return attrs.isHidden();
-    }
-
-    @Override
     public WatchKey register(WatchService watcher,
                              WatchEvent.Kind<?>[] events,
                              WatchEvent.Modifier... modifiers)
--- a/jdk/src/windows/classes/sun/nio/fs/WindowsPathParser.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/classes/sun/nio/fs/WindowsPathParser.java	Wed Jul 05 17:35:13 2017 +0200
@@ -74,8 +74,6 @@
      * Parses the given input as a Windows path
      */
     static Result parse(String input) {
-        if (input == null || input.length() == 0)
-            throw new InvalidPathException(input, "Empty or null path");
         return parse(input, true);
     }
 
@@ -135,7 +133,7 @@
             }
         }
         if (off == 0) {
-            if (isSlash(input.charAt(0))) {
+            if (len > 0 && isSlash(input.charAt(0))) {
                 type = WindowsPathType.DIRECTORY_RELATIVE;
                 root = "\\";
             } else {
--- a/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java	Wed Jul 05 17:35:13 2017 +0200
@@ -214,7 +214,7 @@
 
         // map flags
         byte aceFlags = unsafe.getByte(aceAddress + OFFSETOF_FLAGS);
-        Set<AclEntryFlag> flags = new HashSet<AclEntryFlag>();
+        Set<AclEntryFlag> flags = EnumSet.noneOf(AclEntryFlag.class);
         if ((aceFlags & OBJECT_INHERIT_ACE) != 0)
             flags.add(AclEntryFlag.FILE_INHERIT);
         if ((aceFlags & CONTAINER_INHERIT_ACE) != 0)
@@ -226,7 +226,7 @@
 
         // map access mask
         int mask = unsafe.getInt(aceAddress + OFFSETOF_ACCESS_MASK);
-        Set<AclEntryPermission> perms = new HashSet<AclEntryPermission>();
+        Set<AclEntryPermission> perms = EnumSet.noneOf(AclEntryPermission.class);
         if ((mask & FILE_READ_DATA) > 0)
             perms.add(AclEntryPermission.READ_DATA);
         if ((mask & FILE_WRITE_DATA) > 0)
@@ -378,7 +378,7 @@
             AclInformation aclInfo = GetAclInformation(aclAddress);
             aceCount = aclInfo.aceCount();
         }
-        ArrayList<AclEntry> result = new ArrayList<AclEntry>(aceCount);
+        ArrayList<AclEntry> result = new ArrayList<>(aceCount);
 
         // decode each of the ACEs to AclEntry objects
         for (int i=0; i<aceCount; i++) {
--- a/jdk/src/windows/classes/sun/nio/fs/WindowsUserDefinedFileAttributeView.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/classes/sun/nio/fs/WindowsUserDefinedFileAttributeView.java	Wed Jul 05 17:35:13 2017 +0200
@@ -65,7 +65,7 @@
 
     // enumerates the file streams using FindFirstStream/FindNextStream APIs.
     private List<String> listUsingStreamEnumeration() throws IOException {
-        List<String> list = new ArrayList<String>();
+        List<String> list = new ArrayList<>();
         try {
             FirstStream first = FindFirstStream(file.getPathForWin32Calls());
             if (first != null) {
@@ -114,7 +114,7 @@
         NativeBuffer buffer = null;
 
         // result with names of alternative data streams
-        final List<String> list = new ArrayList<String>();
+        final List<String> list = new ArrayList<>();
 
         try {
             buffer = NativeBuffers.getNativeBuffer(BUFFER_SIZE);
@@ -216,7 +216,7 @@
         // wrap with channel
         FileChannel fc = null;
         try {
-            Set<OpenOption> opts = new HashSet<OpenOption>();
+            Set<OpenOption> opts = new HashSet<>();
             opts.add(READ);
             if (!followLinks)
                 opts.add(WindowsChannelFactory.OPEN_REPARSE_POINT);
@@ -243,7 +243,7 @@
         // wrap with channel
         FileChannel fc = null;
         try {
-            Set<OpenOption> opts = new HashSet<OpenOption>();
+            Set<OpenOption> opts = new HashSet<>();
             opts.add(READ);
             if (!followLinks)
                 opts.add(WindowsChannelFactory.OPEN_REPARSE_POINT);
@@ -298,7 +298,7 @@
             x.rethrowAsIOException(file);
         }
         try {
-            Set<OpenOption> opts = new HashSet<OpenOption>();
+            Set<OpenOption> opts = new HashSet<>();
             if (!followLinks)
                 opts.add(WindowsChannelFactory.OPEN_REPARSE_POINT);
             opts.add(CREATE);
--- a/jdk/src/windows/classes/sun/nio/fs/WindowsWatchService.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/classes/sun/nio/fs/WindowsWatchService.java	Wed Jul 05 17:35:13 2017 +0200
@@ -106,8 +106,11 @@
         // completion key (used to map I/O completion to WatchKey)
         private int completionKey;
 
-        WindowsWatchKey(AbstractWatchService watcher, FileKey fileKey) {
-            super(watcher);
+        WindowsWatchKey(Path dir,
+                        AbstractWatchService watcher,
+                        FileKey fileKey)
+        {
+            super(dir, watcher);
             this.fileKey = fileKey;
         }
 
@@ -405,7 +408,7 @@
                 WindowsWatchKey watchKey;
                 if (existing == null) {
                     // not registered so create new watch key
-                    watchKey = new WindowsWatchKey(watcher, fk)
+                    watchKey = new WindowsWatchKey(dir, watcher, fk)
                         .init(handle, events, watchSubtree, buffer, countAddress,
                               overlappedAddress, completionKey);
                     // map file key to watch key
--- a/jdk/src/windows/native/java/io/WinNTFileSystem_md.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/native/java/io/WinNTFileSystem_md.c	Wed Jul 05 17:35:13 2017 +0200
@@ -220,19 +220,19 @@
         /*we estimate the max length of memory needed as
           "currentDir. length + pathname.length"
          */
-        int len = wcslen(path);
+        int len = (int)wcslen(path);
         len += currentDirLength(path, len);
         if (len  > MAX_PATH_LENGTH - 1) {
             WCHAR *cp = (WCHAR*)malloc(len * sizeof(WCHAR));
             if (cp != NULL) {
                 if (wcanonicalize(path, cp, len) >= 0) {
-                    rv = (*env)->NewString(env, cp, wcslen(cp));
+                    rv = (*env)->NewString(env, cp, (jsize)wcslen(cp));
                 }
                 free(cp);
             }
         } else
         if (wcanonicalize(path, canonicalPath, MAX_PATH_LENGTH) >= 0) {
-            rv = (*env)->NewString(env, canonicalPath, wcslen(canonicalPath));
+            rv = (*env)->NewString(env, canonicalPath, (jsize)wcslen(canonicalPath));
         }
     } END_UNICODE_STRING(env, path);
     if (rv == NULL) {
@@ -251,14 +251,14 @@
     WCHAR canonicalPath[MAX_PATH_LENGTH];
     WITH_UNICODE_STRING(env, canonicalPrefixString, canonicalPrefix) {
         WITH_UNICODE_STRING(env, pathWithCanonicalPrefixString, pathWithCanonicalPrefix) {
-            int len = wcslen(canonicalPrefix) + MAX_PATH;
+            int len = (int)wcslen(canonicalPrefix) + MAX_PATH;
             if (len > MAX_PATH_LENGTH) {
                 WCHAR *cp = (WCHAR*)malloc(len * sizeof(WCHAR));
                 if (cp != NULL) {
                     if (wcanonicalizeWithPrefix(canonicalPrefix,
                                                 pathWithCanonicalPrefix,
                                                 cp, len) >= 0) {
-                      rv = (*env)->NewString(env, cp, wcslen(cp));
+                      rv = (*env)->NewString(env, cp, (jsize)wcslen(cp));
                     }
                     free(cp);
                 }
@@ -266,7 +266,7 @@
             if (wcanonicalizeWithPrefix(canonicalPrefix,
                                         pathWithCanonicalPrefix,
                                         canonicalPath, MAX_PATH_LENGTH) >= 0) {
-                rv = (*env)->NewString(env, canonicalPath, wcslen(canonicalPath));
+                rv = (*env)->NewString(env, canonicalPath, (jsize)wcslen(canonicalPath));
             }
         } END_UNICODE_STRING(env, pathWithCanonicalPrefix);
     } END_UNICODE_STRING(env, canonicalPrefix);
@@ -358,7 +358,7 @@
         } else { /* pagefile.sys is a special case */
             if (GetLastError() == ERROR_SHARING_VIOLATION) {
                 rv = java_io_FileSystem_BA_EXISTS;
-                if ((pathlen = wcslen(pathbuf)) >= SPECIALFILE_NAMELEN &&
+                if ((pathlen = (jint)wcslen(pathbuf)) >= SPECIALFILE_NAMELEN &&
                     (_wcsicmp(pathbuf + pathlen - SPECIALFILE_NAMELEN,
                               L"pagefile.sys") == 0) ||
                     (_wcsicmp(pathbuf + pathlen - SPECIALFILE_NAMELEN,
@@ -625,7 +625,7 @@
     }
 
     /* Remove trailing space chars from directory name */
-    len = wcslen(search_path);
+    len = (int)wcslen(search_path);
     while (search_path[len-1] == ' ') {
         len--;
     }
@@ -668,7 +668,7 @@
                                 || !wcscmp(find_data.cFileName, L".."))
            continue;
         name = (*env)->NewString(env, find_data.cFileName,
-                                 wcslen(find_data.cFileName));
+                                 (jsize)wcslen(find_data.cFileName));
         if (name == NULL)
             return NULL; // error;
         if (len == maxlen) {
@@ -819,7 +819,7 @@
     jchar *pf = p;
     if (p == NULL) return NULL;
     if (iswalpha(*p) && (p[1] == L':')) p += 2;
-    ret = (*env)->NewString(env, p, wcslen(p));
+    ret = (*env)->NewString(env, p, (jsize)wcslen(p));
     free (pf);
     return ret;
 }
--- a/jdk/src/windows/native/java/io/canonicalize_md.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/native/java/io/canonicalize_md.c	Wed Jul 05 17:35:13 2017 +0200
@@ -479,7 +479,7 @@
         assert(*src == L'\\');        /* Invariant */
         *p = L'\0';            /* Temporarily clear separator */
 
-        if ((pathlen = wcslen(path)) > MAX_PATH - 1) {
+        if ((pathlen = (int)wcslen(path)) > MAX_PATH - 1) {
             pathbuf = getPrefixed(path, pathlen);
             h = FindFirstFileW(pathbuf, &fd);    /* Look up prefix */
             free(pathbuf);
@@ -538,7 +538,7 @@
     dend = dst + size;   /* Don't go to or past here */
 
 
-    if ((pathlen=wcslen(pathWithCanonicalPrefix)) > MAX_PATH - 1) {
+    if ((pathlen=(int)wcslen(pathWithCanonicalPrefix)) > MAX_PATH - 1) {
         pathbuf = getPrefixed(pathWithCanonicalPrefix, pathlen);
         h = FindFirstFileW(pathbuf, &fd);    /* Look up prefix */
         free(pathbuf);
--- a/jdk/src/windows/native/java/io/io_util_md.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/native/java/io/io_util_md.c	Wed Jul 05 17:35:13 2017 +0200
@@ -104,7 +104,7 @@
         else return 0; /* invalid drive name. */
         dir = currentDir(di);
         if (dir != NULL){
-            dirlen = wcslen(dir);
+            dirlen = (int)wcslen(dir);
             free(dir);
         }
         return dirlen;
@@ -115,7 +115,7 @@
             int dirlen = -1;
             dir = _wgetcwd(NULL, MAX_PATH);
             if (dir != NULL) {
-                curDirLenCached = wcslen(dir);
+                curDirLenCached = (int)wcslen(dir);
                 free(dir);
             }
         }
@@ -165,7 +165,7 @@
     int max_path = 248; /* CreateDirectoryW() has the limit of 248 */
 
     WITH_UNICODE_STRING(env, path, ps) {
-        pathlen = wcslen(ps);
+        pathlen = (int)wcslen(ps);
         if (pathlen != 0) {
             if (pathlen > 2 &&
                 (ps[0] == L'\\' && ps[1] == L'\\' ||   //UNC
--- a/jdk/src/windows/native/sun/jkernel/DownloadDialog.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,894 +0,0 @@
-/*
- * Copyright (c) 2008, 2010, 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.
- */
-
-#if _MSC_VER > 1000
-#pragma once
-#endif // _MSC_VER > 1000
-
-#define STRICT
-#ifndef _WIN32_WINNT
-/* REMIND : 0x500 means Windows 2000 .. seems like we can update
- * for Windows XP when we move the SDK and build platform
- */
-#define _WIN32_WINNT 0x0500
-#endif
-#define _ATL_APARTMENT_THREADED
-
-#include <atlbase.h>
-//You may derive a class from CComModule and use it if you want to override
-//something, but do not change the name of _Module
-extern CComModule _Module;
-#include <atlcom.h>
-#include <atlwin.h>
-
-#include <atlhost.h>
-#include <commdlg.h>
-#include <commctrl.h>
-#include <windowsx.h>
-#include <urlmon.h>
-#include <wininet.h>
-#include <shellapi.h>
-#include <time.h>
-#include <math.h>
-#include <stdio.h>
-#include <jni.h>
-
-#include "DownloadDialog.h"
-
-#define UPDATE_INTERVAL 500
-#define INITIAL_DELAY 2000
-#define POST_DELAY 1000
-
-/////////////////////////////////////////////////////////////////////////////
-// CDownloadDialog
-
-typedef BOOL (WINAPI * InitCommonControlsType)();
-
-CDownloadDialog::CDownloadDialog()
-{
-    m_numDownloadThreadsRunning = 0;
-
-    m_destroyWindowTimerStarted = FALSE;
-    m_pszFileName = NULL;
-    m_jvm = NULL;
-
-    m_ulProgress = 0;
-    m_ulProgressMax = 0;
-    m_iProgressFactor = 0;
-    m_iMaxProgressFactor = 1;
-
-
-    m_hCancelEvent = ::CreateEvent(NULL, TRUE, FALSE, NULL);
-    m_hDownloadThreadExitEvent = ::CreateEvent(NULL, TRUE, FALSE, NULL);
-    m_hDialogInitializedEvent = ::CreateEvent(NULL, TRUE, FALSE, NULL);
-
-    // Load up commctrl.dll
-    // Loading dll dynamically we can use latest available version
-    // (i.e. latest native components and extended API)
-    HMODULE hModComCtl32 = ::LoadLibrary(TEXT("comctl32.dll"));
-    if (hModComCtl32 != NULL) {
-        /* Initialize controls to ensure proper appearance */
-        InitCommonControlsType fn_InitCommonControls = (InitCommonControlsType)
-            ::GetProcAddress(hModComCtl32, "InitCommonControls");
-        fn_InitCommonControls();
-
-        /* MessageBox replacement introduced in Vista */
-        taskDialogFn = (TaskDialogIndirectFn)
-            ::GetProcAddress(hModComCtl32, "TaskDialogIndirect");
-    }
-}
-
-
-CDownloadDialog::~CDownloadDialog()
-{
-    ::CloseHandle(m_hCancelEvent);
-    ::CloseHandle(m_hDownloadThreadExitEvent);
-    ::CloseHandle(m_hDialogInitializedEvent);
-}
-
-void CDownloadDialog::addToTotalContentLength(DWORD contentLength) {
-     __try
-    {
-        m_csDownload.Lock();
-        if (m_ulProgressMax == 0) {
-            // first download this session, initialize start time
-            time(&m_startTime);
-        }
-
-        m_ulProgressMax = m_ulProgressMax + contentLength;
-        logProgress();
-    }
-    __finally
-    {
-        m_csDownload.Unlock();
-    }
-}
-
-
-
-void CDownloadDialog::initDialogText(LPCTSTR downloadURL, LPCTSTR bundleName) {
-
-    // reset status text
-    HWND hStatusWnd = GetDlgItem(IDC_TIME_REMAINING);
-    ::SetWindowText(hStatusWnd, "");
-
-    // reset progress bar
-    HWND hProgressWnd = GetDlgItem(IDC_DOWNLOAD_PROGRESS);
-
-    ::PostMessage(hProgressWnd, PBM_SETPOS, (WPARAM) 0, NULL);
-
-    m_hMastheadFont = NULL;
-    m_hDialogFont = NULL;
-    m_hSixPointFont = NULL;
-
-    m_hMemDC = NULL;
-
-    TCHAR szDownloadText[BUFFER_SIZE];
-
-    HWND hWndDownloadText = GetDlgItem(IDC_DOWNLOAD_TEXT);
-    ::LoadString(_Module.GetModuleInstance(), IDS_DOWNLOAD_TEXT, szDownloadText, BUFFER_SIZE);
-    ::SetWindowText(hWndDownloadText, szDownloadText);
-
-    TCHAR szMasthead[BUFFER_SIZE];
-
-    HWND hWndMastheadText = GetDlgItem(IDC_MASTHEAD_TEXT);
-    ::LoadString(_Module.GetModuleInstance(), IDS_DOWNLOAD, szMasthead, BUFFER_SIZE);
-    ::SetWindowText(hWndMastheadText, szMasthead);
-
-
-}
-
-BOOL CDownloadDialog::isDownloading() {
-    return m_numDownloadThreadsRunning > 0;
-}
-
-
-void CDownloadDialog::bundleInstallStart() {
-    __try
-    {
-        m_csNumDownloadThreads.Lock();
-        m_numDownloadThreadsRunning++;
-        // another download request has came in, kill the destroyWindowTimer
-        KillTimer(destroyWindowTimerID);
-        m_destroyWindowTimerStarted = FALSE;
-    }
-    __finally
-    {
-        m_csNumDownloadThreads.Unlock();
-    }
-}
-
-void CDownloadDialog::bundleInstallComplete() {
-    __try
-    {
-        m_csNumDownloadThreads.Lock();
-        m_numDownloadThreadsRunning = max(m_numDownloadThreadsRunning - 1, 0);
-        if (m_numDownloadThreadsRunning == 0) {
-            m_ulProgress = m_ulProgressMax;
-            logProgress();
-        }
-        // Signal main thread
-        ::SetEvent(m_hDownloadThreadExitEvent);
-    }
-    __finally
-    {
-        m_csNumDownloadThreads.Unlock();
-    }
-}
-
-
-//=--------------------------------------------------------------------------=
-// CDownloadDialog::OnInitDialog
-//=--------------------------------------------------------------------------=
-// Message handler for WM_INITDIALOG
-//
-// Parameters:
-//      uMsg        Windows Message
-//      wParam      WPARAM
-//      lParam      LPARAM
-//      bHandled    FALSE if not handled
-//
-// Output:
-//      LRESULT
-//
-// Notes:
-//
-LRESULT CDownloadDialog::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
-{
-     __try
-    {
-        m_csDownload.Lock();
-    }
-    __finally
-    {
-        m_csDownload.Unlock();
-    }
-    // Set timer
-    SetTimer(iTimerID, UPDATE_INTERVAL);
-
-    m_hMastheadFont = NULL;
-    m_hDialogFont = NULL;
-    m_hSixPointFont = NULL;
-    m_feedbackOnCancel = TRUE;
-
-    m_hMemDC = NULL;
-
-    TCHAR szDownloadText[BUFFER_SIZE];
-
-    HWND hWndDownloadText = GetDlgItem(IDC_DOWNLOAD_TEXT);
-    ::LoadString(_Module.GetModuleInstance(), IDS_DOWNLOAD_TEXT, szDownloadText, BUFFER_SIZE);
-    ::SetWindowText(hWndDownloadText, szDownloadText);
-
-    TCHAR szMasthead[BUFFER_SIZE];
-
-    HWND hWndMastheadText = GetDlgItem(IDC_MASTHEAD_TEXT);
-    ::LoadString(_Module.GetModuleInstance(), IDS_DOWNLOAD, szMasthead, BUFFER_SIZE);
-    ::SetWindowText(hWndMastheadText, szMasthead);
-
-    HICON javaCupIcon = ::LoadIcon(_Module.GetModuleInstance(), MAKEINTRESOURCE(IDI_JAVA));
-    SetIcon(javaCupIcon, FALSE);
-
-    ::SetEvent(m_hDialogInitializedEvent);
-
-    return 0;  // do not set initial focus to cancel button
-}
-
-
-//=--------------------------------------------------------------------------=
-// CDownloadDialog::OnOK
-//=--------------------------------------------------------------------------=
-// Message handler for WM_COMMAND with IDOK
-//
-// Parameters:
-//      wNotifyCode Notify Code
-//      wID         ID of control
-//      hWndCtl     HWND of control
-//      bHandled    FALSE if not handled
-//
-// Output:
-//      LRESULT
-//
-// Notes:
-//
-LRESULT CDownloadDialog::OnOK(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
-{
-    // do nothing for now
-    return 0;
-}
-
-
-
-//=--------------------------------------------------------------------------=
-// CDownloadDialog::OnCancel
-//=--------------------------------------------------------------------------=
-// Message handler for WM_COMMAND with IDCANCEL
-//
-// Parameters:
-//      wNotifyCode Notify Code
-//      wID         ID of control
-//      hWndCtl     HWND of control
-//      bHandled    FALSE if not handled
-//
-// Output:
-//      LRESULT
-//
-// Notes:
-//
-LRESULT CDownloadDialog::OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
-{
-    // Disable window first to avoid any keyboard input
-    EnableWindow(FALSE);
-
-    if (m_feedbackOnCancel) {
-      int r = SafeMessageBox(IDS_DOWNLOAD_CANCEL_MESSAGE,
-                       IDS_DOWNLOAD_CANCEL_INSTRUCTION,
-                       IDS_DOWNLOAD_CANCEL_CAPTION,
-                       DIALOG_WARNING_CANCELOK,
-                       NULL, NULL);
-      if (!::IsWindow(hWndCtl)) {
-         /* It is possible that download was finished and download
-            window hidden by the time user close this message box.
-            If such case we should simply return. */
-         return 0;
-      }
-      if (r == IDCANCEL) {
-        EnableWindow(TRUE);
-        return 0;
-      }
-    }
-
-    __try
-    {
-        m_csDownload.Lock();
-        // if we are downloading, signal download thread to stop downloading
-        if (m_numDownloadThreadsRunning > 0) {
-            SetEvent(m_hCancelEvent);
-        }
-    }
-    __finally
-    {
-        m_csDownload.Unlock();
-    }
-
-    // Kill timer
-    KillTimer(iTimerID);
-    KillTimer(destroyWindowTimerID);
-
-    FreeGDIResources();
-
-    // Destroy dialog
-    EndDialog(wID);
-
-    return 0;
-}
-
-void CDownloadDialog::destroyDialog() {
-    m_feedbackOnCancel = FALSE;
-    ::PostMessage(m_hWnd, WM_COMMAND, IDCANCEL, NULL);
-}
-
-
-void CDownloadDialog::delayedDoModal() {
-     __try
-    {
-         __try
-        {
-            m_csMessageBox.Lock();
-            m_dialogUp = true;
-            Sleep(INITIAL_DELAY);
-        }
-        __finally
-        {
-            m_csMessageBox.Unlock();
-        }
-
-        if (isDownloading())
-            DoModal();
-    }
-    __finally
-    {
-        m_dialogUp = false;
-    }
-}
-
-
-//=--------------------------------------------------------------------------=
-// CDownloadDialog::SafeMessageBox
-//=--------------------------------------------------------------------------=
-// Helper method that uses best availble API to show native error/information
-// dialog. In particular, it uses TaskDialog if availble (Vista specific)
-// and MessageBox otherwise.
-//
-// It also ensures that the message box is always displayed on top of
-// the progress dialog instead of underneath
-//
-
-//helper structures to define XP vs Vista style differences
-static TASKDIALOG_COMMON_BUTTON_FLAGS vistaDialogButtons[] = {
-    TDCBF_RETRY_BUTTON | TDCBF_CANCEL_BUTTON,
-    TDCBF_OK_BUTTON | TDCBF_CANCEL_BUTTON
-};
-static PCWSTR vistaIcons[] = {
-    TD_ERROR_ICON,
-    TD_WARNING_ICON
-};
-
-static UINT xpStyle[] = {
-    MB_ICONERROR | MB_RETRYCANCEL,
-    MB_ICONWARNING | MB_OKCANCEL | MB_DEFBUTTON2
-};
-
-int CDownloadDialog::SafeMessageBox(UINT details, UINT mainInstruction, UINT caption, DialogType type, LPCWSTR instructionArg, LPCWSTR detailsArg) {
-    WCHAR textCaption[BUFFER_SIZE+1];
-    WCHAR textDetails[BUFFER_SIZE+1];
-    WCHAR textInstruction[BUFFER_SIZE+1];
-    WCHAR tmpBuffer[BUFFER_SIZE+1];
-
-    /* make sure buffers are terminated */
-    textCaption[BUFFER_SIZE] = textDetails[BUFFER_SIZE] = 0;
-    textInstruction[BUFFER_SIZE] = tmpBuffer[BUFFER_SIZE] = 0;
-
-    if (detailsArg != NULL) {
-        ::LoadStringW(_Module.GetResourceInstance(),
-                 details,
-                 tmpBuffer,
-                 BUFFER_SIZE);
-        _snwprintf(textDetails, BUFFER_SIZE, tmpBuffer, detailsArg);
-    } else {
-        ::LoadStringW(_Module.GetResourceInstance(),
-                 details,
-                 textDetails,
-                 BUFFER_SIZE);
-    }
-
-    if (instructionArg != NULL) {
-        ::LoadStringW(_Module.GetResourceInstance(),
-                 mainInstruction,
-                 tmpBuffer,
-                 BUFFER_SIZE);
-        _snwprintf(textInstruction, BUFFER_SIZE, tmpBuffer, instructionArg);
-     } else {
-        ::LoadStringW(_Module.GetResourceInstance(),
-                 mainInstruction,
-                 textInstruction,
-                 BUFFER_SIZE);
-     }
-
-    ::LoadStringW(_Module.GetResourceInstance(),
-                 caption,
-                 textCaption,
-                 BUFFER_SIZE);
-
-    __try
-    {
-        m_csMessageBox.Lock();
-        if (m_dialogUp) {
-            waitUntilInitialized();
-        }
-        /* If TaskDialog availble - use it! */
-        if (taskDialogFn != NULL) {
-              TASKDIALOGCONFIG tc = { 0 };
-              int nButton;
-
-              tc.cbSize = sizeof(tc);
-              tc.hwndParent = ::IsWindow(m_hWnd) ? m_hWnd : NULL;
-              tc.dwCommonButtons = vistaDialogButtons[type];
-              tc.pszWindowTitle = textCaption;
-              tc.pszMainInstruction = textInstruction;
-              tc.pszContent = textDetails;
-              tc.pszMainIcon = vistaIcons[type];
-              /* workaround: we need to make sure Cancel is default
-                             for this type of Dialog */
-              if (type == DIALOG_WARNING_CANCELOK) {
-                  tc.nDefaultButton = IDCANCEL;
-              }
-
-              taskDialogFn(&tc, &nButton, NULL, NULL);
-              return nButton;
-        } else { /* default: use MessageBox */
-            /* Note that MessageBox API expects content as single string
-               and therefore we need to concatenate instruction
-               and details as 2 paragraphs.
-
-               The only exception is empty instruction. */
-            if (wcslen(textInstruction) > 0) {
-                wcsncat(textInstruction, L"\n\n",
-                        BUFFER_SIZE - wcslen(textInstruction));
-            }
-            wcsncat(textInstruction, textDetails,
-                    BUFFER_SIZE - wcslen(textInstruction));
-
-            return ::MessageBoxW(::IsWindow(m_hWnd) ? m_hWnd : NULL,
-                textInstruction, textCaption, xpStyle[type]);
-        }
-    }
-    __finally
-    {
-        m_csMessageBox.Unlock();
-    }
-}
-
-
-//=--------------------------------------------------------------------------=
-// CDownloadDialog::OnTimer
-//=--------------------------------------------------------------------------=
-// Message handler for WM_TIMER
-//
-// Parameters:
-//      uMsg        Windows Message
-//      wParam      WPARAM
-//      lParam      LPARAM
-//      bHandled    FALSE if not handled
-//
-// Output:
-//      LRESULT
-//
-// Notes:
-//
-LRESULT CDownloadDialog::OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
-{
-    if (destroyWindowTimerID == (int)wParam) {
-        KillTimer(destroyWindowTimerID);
-        m_destroyWindowTimerStarted = FALSE;
-        m_ulProgressMax = max(0, m_ulProgressMax - m_ulProgress);
-        logProgress();
-        m_ulProgress = 0;
-        logProgress();
-        m_feedbackOnCancel = FALSE;
-        ::PostMessage(m_hWnd, WM_COMMAND, IDCANCEL, NULL);
-    }
-
-    if (iTimerID == (int)wParam)
-    {
-
-        __try
-        {
-            m_csDownload.Lock();
-
-            HWND hStatusWnd = GetDlgItem(IDC_TIME_REMAINING);
-            HWND hProgressWnd = GetDlgItem(IDC_DOWNLOAD_PROGRESS);
-
-            if (m_ulProgress && m_ulProgressMax)
-            {
-                ::PostMessage(hProgressWnd, PBM_SETPOS,
-                     (WPARAM) (m_ulProgress * 100
-                        / m_ulProgressMax), NULL);
-
-                time_t currentTime;
-                time(&currentTime);
-
-                double elapsed_time = difftime(currentTime, m_startTime);
-                double remain_time = (elapsed_time / m_ulProgress) *
-                                      (m_ulProgressMax - m_ulProgress);
-                int hr = 0, min = 0;
-
-                if (remain_time > 60 * 60)
-                {
-                    hr = int(remain_time / (60 * 60));
-                    remain_time = remain_time - hr * 60 * 60;
-                }
-
-                if (remain_time > 60)
-                {
-                    min = int(remain_time / 60);
-                    remain_time = remain_time - min * 60;
-                }
-
-                TCHAR szBuffer[BUFFER_SIZE];
-                TCHAR szTimeBuffer[BUFFER_SIZE];
-
-                if (hr > 0)
-                {
-                    if (hr > 1)
-                        LoadString(_Module.GetResourceInstance(), IDS_HOURSMINUTESECOND,
-                                   szTimeBuffer, BUFFER_SIZE);
-                    else
-                        LoadString(_Module.GetResourceInstance(), IDS_HOURMINUTESECOND,
-                                   szTimeBuffer, BUFFER_SIZE);
-
-                    sprintf(szBuffer, szTimeBuffer, hr, min, remain_time);
-                }
-                else
-                {
-                    if (min > 0)
-                    {
-                        LoadString(_Module.GetResourceInstance(), IDS_MINUTESECOND,
-                                   szTimeBuffer, BUFFER_SIZE);
-                        sprintf(szBuffer, szTimeBuffer, min, remain_time);
-
-                    }
-                    else
-                    {
-                        LoadString(_Module.GetResourceInstance(), IDS_SECOND,
-                                   szTimeBuffer, BUFFER_SIZE);
-                        sprintf(szBuffer, szTimeBuffer, remain_time);
-
-                    }
-                }
-
-                if (m_ulProgress == m_ulProgressMax) {
-                    // download is done, unpacking bundle now, and waiting
-                    // for another download to take place
-                    ::LoadString(_Module.GetResourceInstance(),
-                            IDS_DOWNLOAD_UNPACKING, szBuffer, BUFFER_SIZE);
-                    __try
-                    {
-                        m_csNumDownloadThreads.Lock();
-                        // both download and unpacking is done, start
-                        // timer to destroy the progress window in 500ms
-                        if (!m_destroyWindowTimerStarted &&
-                               m_numDownloadThreadsRunning == 0) {
-                            SetTimer(destroyWindowTimerID, POST_DELAY);
-                            m_destroyWindowTimerStarted = TRUE;
-                        }
-                    }
-                    __finally
-                    {
-                        m_csNumDownloadThreads.Unlock();
-                    }
-                }
-
-                // Update status message
-                ::SetWindowText(hStatusWnd, szBuffer);
-            }
-        }
-        __finally
-        {
-           m_csDownload.Unlock();
-        }
-    }
-
-    return 0;
-}
-
-// Message handler for WM_ONCTLCOLORSTATIC.
-// this message is sent each time a static control is drawn.
-// we get the Control ID and then set background color and font
-// as appropriate for that control.
-LRESULT CDownloadDialog::OnCtlColorStatic(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
-{
-    HDC hdc = (HDC) wParam;
-    HWND hwnd = (HWND) lParam;
-
-    int DlgCtrlID = ::GetDlgCtrlID(hwnd);
-
-    if (DlgCtrlID == IDC_DOWNLOAD_TEXT )
-    {
-        if (m_hDialogFont == NULL)
-        {
-            m_hDialogFont = CreateDialogFont(hdc, TEXT("MS Shell Dlg"), 8);
-        }
-
-        ::SelectObject(hdc, m_hDialogFont);
-        return 0;
-    }
-    else if (DlgCtrlID == IDC_TIME_REMAINING)
-    {
-        if (m_hSixPointFont == NULL)
-        {
-            m_hSixPointFont = CreateDialogFont(hdc, TEXT("MS Shell Dlg"), 8);
-        }
-
-        ::SelectObject(hdc, m_hSixPointFont);
-        return 0;
-    }
-    else if (DlgCtrlID == IDC_MASTHEAD_TEXT)
-    {
-        if (m_hMastheadFont == NULL)
-        {
-            m_hMastheadFont = CreateDialogFont(hdc, TEXT("MS Shell Dlg"), 12, 1);
-        }
-
-        ::SelectObject(hdc, m_hMastheadFont);
-        return (LRESULT) GetStockObject(WHITE_BRUSH);
-    }
-    else if (DlgCtrlID == IDC_DOWNLOAD_MASTHEAD)
-    {
-        if (m_hMemDC == NULL)
-        {
-            m_hBitmap = LoadBitmap(_Module.GetModuleInstance(),
-                                   MAKEINTRESOURCE(IDI_MASTHEAD));
-            GetObject(m_hBitmap, sizeof(BITMAP), &m_bmMasthead);
-            m_hMemDC = CreateCompatibleDC(NULL);
-            SelectObject(m_hMemDC, m_hBitmap);
-        }
-
-        RECT rect;
-        ::GetClientRect(hwnd, &rect);
-
-        StretchBlt(hdc, rect.left, rect.top, (rect.right - rect.left), (rect.bottom - rect.top),
-                   m_hMemDC, 0, 0, m_bmMasthead.bmWidth, m_bmMasthead.bmHeight, SRCCOPY);
-
-        return (LRESULT) GetStockObject(NULL_BRUSH);
-    }
-
-
-    return 0;
-}
-
-
-//=--------------------------------------------------------------------------=
-// CDownloadDialog::OnStartBinding
-//=--------------------------------------------------------------------------=
-// Called when download is started
-//
-// Parameters:
-//
-// Output:
-//      HRESULT
-//
-// Notes:
-//
-STDMETHODIMP CDownloadDialog::OnStartBinding()
-{
-    __try
-    {
-        m_csDownload.Lock();
-        time(&m_startTime);
-    }
-    __finally
-    {
-        m_csDownload.Unlock();
-    }
-
-    return S_OK;
-}
-
-
-//=--------------------------------------------------------------------------=
-// CDownloadDialog::OnProgress
-//=--------------------------------------------------------------------------=
-// Called when download is in progress
-//
-// Parameters: ULONG ulProgress
-//
-// Output:
-//      HRESULT
-//
-// Notes:
-//
-STDMETHODIMP CDownloadDialog::OnProgress(ULONG ulProgress)
-{
-    __try
-    {
-        m_csDownload.Lock();
-        m_ulProgress = m_ulProgress + ulProgress;
-        logProgress();
-
-    }
-    __finally
-    {
-        m_csDownload.Unlock();
-    }
-
-    return S_OK;
-}
-
-void CDownloadDialog::decrementProgressMax(ULONG contentLength, ULONG readSoFar) {
-    __try
-    {
-        m_csDownload.Lock();
-        m_ulProgressMax = m_ulProgressMax - contentLength;
-        m_ulProgress = m_ulProgress - readSoFar;
-        logProgress();
-    }
-    __finally
-    {
-        m_csDownload.Unlock();
-    }
-
-}
-
-void CDownloadDialog::waitUntilInitialized() {
-    // wait until download progress dialog is initialized and ready to show
-    WaitForSingleObject(m_hDialogInitializedEvent, INFINITE);
-    ResetEvent(m_hDialogInitializedEvent);
-
-}
-
-// Check if download has been cancelled
-BOOL CDownloadDialog::isDownloadCancelled() {
-    if (WAIT_OBJECT_0 == WaitForSingleObject(m_hCancelEvent, 0)) {
-        return TRUE;
-    }
-    return FALSE;
-}
-
-
-
-// Create the fonts we need for the download and
-// install UE
-HFONT CDownloadDialog::CreateDialogFont(HDC hdc, LPCTSTR lpszFaceName, int ptSize, int isBold)
-{
-    POINT pt;
-    FLOAT cxDPI, cyDPI;
-    HFONT hFont;
-    LOGFONT lf;
-
-    int iDeciPtWidth = 0;
-    int iDeciPtHeight = 10 * ptSize;
-
-    int iSavedDC = SaveDC(hdc);
-
-    SetGraphicsMode (hdc, GM_ADVANCED);
-    ModifyWorldTransform(hdc, NULL, MWT_IDENTITY);
-    SetViewportOrgEx (hdc, 0,0, NULL);
-    SetWindowOrgEx (hdc, 0,0, NULL);
-
-    cxDPI = (FLOAT) GetDeviceCaps(hdc, LOGPIXELSX);
-    cyDPI = (FLOAT) GetDeviceCaps(hdc, LOGPIXELSY);
-
-    pt.x = (int) (iDeciPtWidth * cxDPI / 72);
-    pt.y = (int) (iDeciPtHeight * cyDPI / 72);
-
-    DPtoLP(hdc, &pt, 1);
-
-    lf.lfHeight = - (int) (fabs ((double) pt.y) / 10.0 + 0.5);
-    lf.lfWidth = 0;
-    lf.lfEscapement = 0;
-    lf.lfOrientation = 0;
-    lf.lfWeight = (isBold > 0) ? FW_BOLD : 0;
-    lf.lfItalic = 0;
-    lf.lfUnderline = 0;
-    lf.lfStrikeOut = 0;
-    lf.lfCharSet = 0;
-    lf.lfOutPrecision = 0;
-    lf.lfClipPrecision = 0;
-    lf.lfQuality = 0;
-    lf.lfPitchAndFamily = 0;
-
-    TCHAR szLocaleData[BUFFER_SIZE];
-    GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SENGCOUNTRY,
-                  szLocaleData, BUFFER_SIZE);
-
-    if (strncmp(szLocaleData, "Japan", 5) == 0) {
-        // need special font for _ja locale
-        strcpy (lf.lfFaceName, TEXT("MS UI Gothic"));
-    } else {
-        strcpy (lf.lfFaceName, lpszFaceName);
-    }
-
-    hFont = CreateFontIndirect(&lf);
-
-    RestoreDC (hdc, iSavedDC);
-    return hFont;
-}
-
-void CDownloadDialog::FreeGDIResources ()
-{
-    ::DeleteObject(m_hMastheadFont);
-    m_hMastheadFont = NULL;
-
-    ::DeleteObject(m_hDialogFont);
-    m_hDialogFont = NULL;
-
-    ::DeleteObject(m_hSixPointFont);
-    m_hSixPointFont = NULL;
-
-    ::DeleteObject(m_hBitmap);
-    m_hBitmap = NULL;
-
-    ::DeleteDC(m_hMemDC);
-    m_hMemDC = NULL;
-}
-
-
-JNIEnv* CDownloadDialog::getJNIEnv() {
-    if (m_jvm == NULL)
-        return NULL;
-    JNIEnv *env;
-    m_jvm->AttachCurrentThread((void**) &env, NULL);
-    return env;
-}
-
-
-void CDownloadDialog::log(char *msg) {
-    JNIEnv *env = getJNIEnv();
-    if (env != NULL) {
-        jclass dm = env->FindClass("sun/jkernel/DownloadManager");
-        if (dm == NULL) {
-            printf("Cound not find class sun.jkernel.DownloadManager\n");
-            return;
-        }
-        jmethodID log = env->GetStaticMethodID(dm, "log", "(Ljava/lang/String;)V");
-        if (log == NULL) {
-            printf("Could not find method sun.jkernel.DownloadManager.log(String)\n");
-            return;
-        }
-        jstring string = env->NewStringUTF(msg);
-        if (string == NULL) {
-            printf("Error creating log string\n");
-            return;
-        }
-        env->CallStaticVoidMethod(dm, log, string);
-    }
-}
-
-
-void CDownloadDialog::logProgress() {
-    char msg[256];
-    sprintf(msg, "Progress: %d / %d", m_ulProgress, m_ulProgressMax);
-    log(msg);
-}
--- a/jdk/src/windows/native/sun/jkernel/DownloadDialog.h	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,329 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-//
-// DownloadDialog.h : Declaration of the CDownloadDialog
-//
-
-#ifndef __DOWNLOADDIALOG_H_
-#define __DOWNLOADDIALOG_H_
-
-#include "resource.h"       // main symbols
-#include <time.h>
-#include "jni.h"
-
-#ifndef BUFFER_SIZE
-#define BUFFER_SIZE 2048
-#endif
-
-#define iTimerID    1000
-#define destroyWindowTimerID    2000
-
-#define E_JDHELPER_TIMEOUT               12002
-#define E_JDHELPER_NAME_NOT_RESOLVED     12007
-#define E_JDHELPER_CANNOT_CONNECT        12029
-
-/* Following lines were copied from the new version of commctrl.h
-   These definitions are not available in default version of
-   this header file in VS 2003 but they are needed to use
-   new Vista task dialog API.
-*/
-#ifndef TD_ERROR_ICON
-
-/* These modifiers have sense with new VS only,
-   reset them to get code to compile */
-#define __in
-#define __in_opt
-#define __out_opt
-
-#ifdef _WIN32
-#include <pshpack1.h>
-#endif
-
-
-typedef HRESULT (CALLBACK *PFTASKDIALOGCALLBACK)(HWND hwnd, __in UINT msg, __in WPARAM wParam, __in LPARAM lParam, __in LONG_PTR lpRefData);
-
-enum _TASKDIALOG_FLAGS
-{
-    TDF_ENABLE_HYPERLINKS               = 0x0001,
-    TDF_USE_HICON_MAIN                  = 0x0002,
-    TDF_USE_HICON_FOOTER                = 0x0004,
-    TDF_ALLOW_DIALOG_CANCELLATION       = 0x0008,
-    TDF_USE_COMMAND_LINKS               = 0x0010,
-    TDF_USE_COMMAND_LINKS_NO_ICON       = 0x0020,
-    TDF_EXPAND_FOOTER_AREA              = 0x0040,
-    TDF_EXPANDED_BY_DEFAULT             = 0x0080,
-    TDF_VERIFICATION_FLAG_CHECKED       = 0x0100,
-    TDF_SHOW_PROGRESS_BAR               = 0x0200,
-    TDF_SHOW_MARQUEE_PROGRESS_BAR       = 0x0400,
-    TDF_CALLBACK_TIMER                  = 0x0800,
-    TDF_POSITION_RELATIVE_TO_WINDOW     = 0x1000,
-    TDF_RTL_LAYOUT                      = 0x2000,
-    TDF_NO_DEFAULT_RADIO_BUTTON         = 0x4000,
-    TDF_CAN_BE_MINIMIZED                = 0x8000
-};
-typedef int TASKDIALOG_FLAGS;                         // Note: _TASKDIALOG_FLAGS is an int
-
-typedef enum _TASKDIALOG_MESSAGES
-{
-    TDM_NAVIGATE_PAGE                   = WM_USER+101,
-    TDM_CLICK_BUTTON                    = WM_USER+102, // wParam = Button ID
-    TDM_SET_MARQUEE_PROGRESS_BAR        = WM_USER+103, // wParam = 0 (nonMarque) wParam != 0 (Marquee)
-    TDM_SET_PROGRESS_BAR_STATE          = WM_USER+104, // wParam = new progress state
-    TDM_SET_PROGRESS_BAR_RANGE          = WM_USER+105, // lParam = MAKELPARAM(nMinRange, nMaxRange)
-    TDM_SET_PROGRESS_BAR_POS            = WM_USER+106, // wParam = new position
-    TDM_SET_PROGRESS_BAR_MARQUEE        = WM_USER+107, // wParam = 0 (stop marquee), wParam != 0 (start marquee), lparam = speed (milliseconds between repaints)
-    TDM_SET_ELEMENT_TEXT                = WM_USER+108, // wParam = element (TASKDIALOG_ELEMENTS), lParam = new element text (LPCWSTR)
-    TDM_CLICK_RADIO_BUTTON              = WM_USER+110, // wParam = Radio Button ID
-    TDM_ENABLE_BUTTON                   = WM_USER+111, // lParam = 0 (disable), lParam != 0 (enable), wParam = Button ID
-    TDM_ENABLE_RADIO_BUTTON             = WM_USER+112, // lParam = 0 (disable), lParam != 0 (enable), wParam = Radio Button ID
-    TDM_CLICK_VERIFICATION              = WM_USER+113, // wParam = 0 (unchecked), 1 (checked), lParam = 1 (set key focus)
-    TDM_UPDATE_ELEMENT_TEXT             = WM_USER+114, // wParam = element (TASKDIALOG_ELEMENTS), lParam = new element text (LPCWSTR)
-    TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE = WM_USER+115, // wParam = Button ID, lParam = 0 (elevation not required), lParam != 0 (elevation required)
-    TDM_UPDATE_ICON                     = WM_USER+116  // wParam = icon element (TASKDIALOG_ICON_ELEMENTS), lParam = new icon (hIcon if TDF_USE_HICON_* was set, PCWSTR otherwise)
-} TASKDIALOG_MESSAGES;
-
-typedef enum _TASKDIALOG_NOTIFICATIONS
-{
-    TDN_CREATED                         = 0,
-    TDN_NAVIGATED                       = 1,
-    TDN_BUTTON_CLICKED                  = 2,            // wParam = Button ID
-    TDN_HYPERLINK_CLICKED               = 3,            // lParam = (LPCWSTR)pszHREF
-    TDN_TIMER                           = 4,            // wParam = Milliseconds since dialog created or timer reset
-    TDN_DESTROYED                       = 5,
-    TDN_RADIO_BUTTON_CLICKED            = 6,            // wParam = Radio Button ID
-    TDN_DIALOG_CONSTRUCTED              = 7,
-    TDN_VERIFICATION_CLICKED            = 8,             // wParam = 1 if checkbox checked, 0 if not, lParam is unused and always 0
-    TDN_HELP                            = 9,
-    TDN_EXPANDO_BUTTON_CLICKED          = 10            // wParam = 0 (dialog is now collapsed), wParam != 0 (dialog is now expanded)
-} TASKDIALOG_NOTIFICATIONS;
-
-typedef struct _TASKDIALOG_BUTTON
-{
-    int     nButtonID;
-    PCWSTR  pszButtonText;
-} TASKDIALOG_BUTTON;
-
-typedef enum _TASKDIALOG_ELEMENTS
-{
-    TDE_CONTENT,
-    TDE_EXPANDED_INFORMATION,
-    TDE_FOOTER,
-    TDE_MAIN_INSTRUCTION
-} TASKDIALOG_ELEMENTS;
-
-typedef enum _TASKDIALOG_ICON_ELEMENTS
-{
-    TDIE_ICON_MAIN,
-    TDIE_ICON_FOOTER
-} TASKDIALOG_ICON_ELEMENTS;
-
-#define TD_WARNING_ICON         MAKEINTRESOURCEW(-1)
-#define TD_ERROR_ICON           MAKEINTRESOURCEW(-2)
-#define TD_INFORMATION_ICON     MAKEINTRESOURCEW(-3)
-#define TD_SHIELD_ICON          MAKEINTRESOURCEW(-4)
-
-
-enum _TASKDIALOG_COMMON_BUTTON_FLAGS
-{
-    TDCBF_OK_BUTTON            = 0x0001, // selected control return value IDOK
-    TDCBF_YES_BUTTON           = 0x0002, // selected control return value IDYES
-    TDCBF_NO_BUTTON            = 0x0004, // selected control return value IDNO
-    TDCBF_CANCEL_BUTTON        = 0x0008, // selected control return value IDCANCEL
-    TDCBF_RETRY_BUTTON         = 0x0010, // selected control return value IDRETRY
-    TDCBF_CLOSE_BUTTON         = 0x0020  // selected control return value IDCLOSE
-};
-typedef int TASKDIALOG_COMMON_BUTTON_FLAGS;           // Note: _TASKDIALOG_COMMON_BUTTON_FLAGS is an int
-
-typedef struct _TASKDIALOGCONFIG
-{
-    UINT        cbSize;
-    HWND        hwndParent;
-    HINSTANCE   hInstance;                              // used for MAKEINTRESOURCE() strings
-    TASKDIALOG_FLAGS                dwFlags;            // TASKDIALOG_FLAGS (TDF_XXX) flags
-    TASKDIALOG_COMMON_BUTTON_FLAGS  dwCommonButtons;    // TASKDIALOG_COMMON_BUTTON (TDCBF_XXX) flags
-    PCWSTR      pszWindowTitle;                         // string or MAKEINTRESOURCE()
-    union
-    {
-        HICON   hMainIcon;
-        PCWSTR  pszMainIcon;
-    };
-    PCWSTR      pszMainInstruction;
-    PCWSTR      pszContent;
-    UINT        cButtons;
-    const TASKDIALOG_BUTTON  *pButtons;
-    int         nDefaultButton;
-    UINT        cRadioButtons;
-    const TASKDIALOG_BUTTON  *pRadioButtons;
-    int         nDefaultRadioButton;
-    PCWSTR      pszVerificationText;
-    PCWSTR      pszExpandedInformation;
-    PCWSTR      pszExpandedControlText;
-    PCWSTR      pszCollapsedControlText;
-    union
-    {
-        HICON   hFooterIcon;
-        PCWSTR  pszFooterIcon;
-    };
-    PCWSTR      pszFooter;
-    PFTASKDIALOGCALLBACK pfCallback;
-    LONG_PTR    lpCallbackData;
-    UINT        cxWidth;                                // width of the Task Dialog's client area in DLU's. If 0, Task Dialog will calculate the ideal width.
-} TASKDIALOGCONFIG;
-
-WINCOMMCTRLAPI HRESULT WINAPI TaskDialogIndirect(const TASKDIALOGCONFIG *pTaskConfig, __out_opt int *pnButton, __out_opt int *pnRadioButton, __out_opt BOOL *pfVerificationFlagChecked);
-WINCOMMCTRLAPI HRESULT WINAPI TaskDialog(__in_opt HWND hwndParent, __in_opt HINSTANCE hInstance, __in_opt PCWSTR pszWindowTitle, __in_opt PCWSTR pszMainInstruction, __in_opt PCWSTR pszContent, TASKDIALOG_COMMON_BUTTON_FLAGS dwCommonButtons, __in_opt PCWSTR pszIcon, __out_opt int *pnButton);
-
-#ifdef _WIN32
-#include <poppack.h>
-#endif
-
-#endif /* end of copy from commctrl.h */
-
-typedef HRESULT (WINAPI *TaskDialogIndirectFn) (const TASKDIALOGCONFIG *pTaskConfig, __out_opt int *pnButton, __out_opt int *pnRadioButton, __out_opt BOOL *pfVerificationFlagChecked);
-
-typedef enum {
-    DIALOG_ERROR_RETRYCANCEL = 0,
-    DIALOG_WARNING_CANCELOK
-} DialogType;
-
-
-/////////////////////////////////////////////////////////////////////////////
-// CDownloadDialog
-class CDownloadDialog :
-        public CAxDialogImpl<CDownloadDialog>
-{
-public:
-        CDownloadDialog();
-        ~CDownloadDialog();
-
-        enum { IDD = IDD_DOWNLOAD_DIALOG };
-
-BEGIN_MSG_MAP(CDownloadDialog)
-        MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
-        MESSAGE_HANDLER(WM_TIMER, OnTimer)
-        MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnCtlColorStatic)
-        COMMAND_ID_HANDLER(IDOK, OnOK)
-        COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
-END_MSG_MAP()
-
-        LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
-        LRESULT OnOK(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
-        LRESULT OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
-        LRESULT OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
-        LRESULT OnCtlColorStatic(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
-
-        STDMETHODIMP OnStartBinding();
-
-        STDMETHODIMP OnProgress(ULONG ulProgress);
-
-        void initDialogText(LPCTSTR pszDownloadURL, LPCTSTR pszBundleName);
-
-        BOOL isDownloading();
-        BOOL isDownloadCancelled();
-
-        void addToTotalContentLength(DWORD contentLength);
-
-        void decrementProgressMax(ULONG contentLength, ULONG readSoFar);
-
-        void bundleInstallStart();
-        void bundleInstallComplete();
-
-        void waitUntilInitialized();
-
-        void log(char *msg);
-        void logProgress();
-
-        void setFile(LPCTSTR pszFileName)
-        {
-            m_pszFileName = pszFileName;
-        }
-
-        void setURL(LPCTSTR pszURL)
-        {
-            m_pszURL = pszURL;
-        }
-
-        void setNameText(LPTSTR pszNameText)
-        {
-            m_pszNameText = pszNameText;
-        }
-
-
-        JNIEnv* getJNIEnv();
-
-
-        void setJavaVM(JavaVM *jvm)
-        {
-            m_jvm = jvm;
-        }
-
-
-        HRESULT DownloadConfiguration(LPTSTR pszConfigURL, LPTSTR pszConfigFile);
-
-        void delayedDoModal();
-
-        int SafeMessageBox(UINT details, UINT mainInstruction, UINT caption,
-                           DialogType type, LPCWSTR instructionArg = NULL,
-                           LPCWSTR detailsArg = NULL);
-
-        void destroyDialog();
-
-    private:
-
-        HFONT CreateDialogFont (HDC hdc, LPCTSTR lpszFaceName, int ptSize, int isBold = 0);
-        void  FreeGDIResources ();
-
-        BOOL                    m_feedbackOnCancel;
-        TaskDialogIndirectFn    taskDialogFn;
-        LPCTSTR                 m_pszFileName;
-        LPCTSTR                 m_pszURL;
-        time_t                  m_startTime;
-        ULONG                   m_ulProgress;
-        ULONG                   m_ulProgressMax;
-        int                     m_iProgressFactor;
-        int                     m_iMaxProgressFactor;
-        int                     m_numDownloadThreadsRunning;
-        BOOL            m_destroyWindowTimerStarted;
-        volatile BOOL           m_dialogUp;
-        CComAutoCriticalSection m_csDownload;
-        CComAutoCriticalSection m_csNumDownloadThreads;
-        HANDLE                  m_hCancelEvent;
-        HANDLE                  m_hDownloadThreadExitEvent;
-        HANDLE                  m_hDialogInitializedEvent;
-        HFONT                   m_hMastheadFont;
-        HFONT                   m_hDialogFont;
-        HFONT                   m_hSixPointFont;
-        LPTSTR                  m_pszNameText;
-        BITMAP                  m_bmMasthead;
-        HBITMAP                 m_hBitmap;
-        HDC                     m_hMemDC;
-        TCHAR                   m_szUrlPath[BUFFER_SIZE];
-        TCHAR                   m_szHostName[BUFFER_SIZE];
-        JavaVM*                 m_jvm;
-        CComAutoCriticalSection m_csMessageBox;
-};
-
-#endif //__DOWNLOADDIALOG_H_
--- a/jdk/src/windows/native/sun/jkernel/DownloadHelper.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,655 +0,0 @@
-/*
- * Copyright (c) 2008, 2010, 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.
- */
-
-#if _MSC_VER > 1000
-#pragma once
-#endif // _MSC_VER > 1000
-
-#define STRICT
-#ifndef _WIN32_WINNT
-/* REMIND : 0x500 means Windows 2000 .. seems like we can update
- * for Windows XP when we move the SDK and build platform
- */
-#define _WIN32_WINNT 0x0500
-#endif
-#define _ATL_APARTMENT_THREADED
-
-
-#include <atlbase.h>
-//You may derive a class from CComModule and use it if you want to override
-//something, but do not change the name of _Module
-extern CComModule _Module;
-#include <atlcom.h>
-#include <atlwin.h>
-
-#include <atlhost.h>
-#include <commdlg.h>
-#include <commctrl.h>
-#include <windowsx.h>
-#include <urlmon.h>
-#include <wininet.h>
-#include <shellapi.h>
-#include <time.h>
-#include <math.h>
-#include <stdio.h>
-
-#include <jni.h>
-
-#include "resource.h"       // main symbols
-#include "DownloadHelper.h"
-
-DownloadHelper::DownloadHelper() {
-
-    m_showProgressDialog = TRUE;
-    m_pszURL = NULL;
-    m_pszFileName = NULL;
-    m_pszNameText = NULL;
-}
-
-DownloadHelper::~DownloadHelper() {
-
-}
-
-HRESULT DownloadHelper::doDownload() {
-    return DownloadFile(m_pszURL, m_pszFileName, FALSE, m_showProgressDialog);
-}
-
-HRESULT DownloadHelper::DownloadFile(const TCHAR* szURL,
-        const TCHAR* szLocalFile, BOOL bResumable, BOOL bUIFeedback) {
-    HINTERNET hOpen = NULL;
-    HINTERNET hConnect = NULL;
-    HINTERNET hRequest = NULL;
-    HANDLE hFile = INVALID_HANDLE_VALUE;
-    DWORD dwDownloadError = 0;
-    DWORD nContentLength = 0;
-
-    /* Some of error messages use drive letter.
-       Result is something like "(C:)".
-       NB: Parentheses are added here because in some other places
-           we same message but can not provide disk label info */
-    TCHAR drivePath[5];
-    /* assuming szLocalFile is not NULL */
-    _sntprintf(drivePath, 5, "(%c:)", szLocalFile[0]);
-    WCHAR* wName = CT2CW(drivePath);
-
-    __try {
-        m_csDownload.Lock();
-
-        time(&m_startTime);
-
-    }
-    __finally {
-        m_csDownload.Unlock();
-    }
-
-    __try {
-        // block potential security hole
-        if (strstr(szURL, TEXT("file://")) != NULL) {
-            dwDownloadError = 1;
-            __leave;
-        }
-
-        HWND hProgressInfo = NULL;
-        TCHAR szStatus[BUFFER_SIZE];
-
-        if (bUIFeedback) {
-            // init download dialg text
-            m_dlg->initDialogText(m_pszURL, m_pszNameText);
-        }
-
-        // Open Internet Call
-        hOpen = ::InternetOpen("deployHelper", INTERNET_OPEN_TYPE_PRECONFIG,
-                NULL, NULL, NULL);
-
-        if (hOpen == NULL) {
-            dwDownloadError = 1;
-            __leave;
-        }
-
-        // URL components
-        URL_COMPONENTS url_components;
-        ::ZeroMemory(&url_components, sizeof(URL_COMPONENTS));
-
-        TCHAR szHostName[BUFFER_SIZE], szUrlPath[BUFFER_SIZE],
-                szExtraInfo[BUFFER_SIZE];
-        url_components.dwStructSize = sizeof(URL_COMPONENTS);
-        url_components.lpszHostName = szHostName;
-        url_components.dwHostNameLength = BUFFER_SIZE;
-        url_components.nPort = NULL;
-        url_components.lpszUrlPath = szUrlPath;
-        url_components.dwUrlPathLength = BUFFER_SIZE;
-        url_components.lpszExtraInfo = szExtraInfo;
-        url_components.dwExtraInfoLength = BUFFER_SIZE;
-
-        // Crack the URL into pieces
-        ::InternetCrackUrl(szURL, lstrlen(szURL), NULL, &url_components);
-
-        // Open Internet Connection
-        hConnect = ::InternetConnect(hOpen, url_components.lpszHostName,
-                url_components.nPort, "", "", INTERNET_SERVICE_HTTP, NULL,
-                NULL);
-
-        if (hConnect == NULL) {
-            dwDownloadError = 1;
-            __leave;
-        }
-
-        // Determine the relative URL path by combining
-        // Path and ExtraInfo
-        char szURL[4096];
-
-        if (url_components.dwUrlPathLength !=  0)
-            lstrcpy(szURL, url_components.lpszUrlPath);
-        else
-            lstrcpy(szURL, "/");
-
-        if (url_components.dwExtraInfoLength != 0)
-            lstrcat(szURL, url_components.lpszExtraInfo);
-
-        BOOL bRetryHttpRequest = FALSE;
-        int numberOfRetry = 0;
-        long secondsToWait = 60;
-
-        do {
-            bRetryHttpRequest = FALSE;
-
-            // Make a HTTP GET request
-            hRequest = ::HttpOpenRequest(hConnect, "GET", szURL, "HTTP/1.1",
-                    "", NULL,
-                    INTERNET_FLAG_KEEP_CONNECTION | INTERNET_FLAG_DONT_CACHE,
-                    0);
-
-            if (hRequest == NULL) {
-                dwDownloadError = 1;
-                __leave;
-            }
-
-            // Create or open existing destination file
-            hFile = ::CreateFile(szLocalFile, GENERIC_WRITE, 0, NULL,
-                    OPEN_ALWAYS, FILE_ATTRIBUTE_ARCHIVE, NULL);
-
-            if (hFile == INVALID_HANDLE_VALUE) {
-                if (bUIFeedback) {
-                    if (IDRETRY == m_dlg->SafeMessageBox(
-                                            IDS_DISK_WRITE_ERROR,
-                                            IDS_DISK_WRITE_ERROR_CAPTION,
-                                            IDS_ERROR_CAPTION,
-                                            DIALOG_ERROR_RETRYCANCEL,
-                                            wName)) {
-                         bRetryHttpRequest = TRUE;
-                         continue;
-                    }
-                }
-                dwDownloadError = 1;
-                __leave;
-            }
-            DWORD fileSize = GetFileSize(hFile, NULL);
-
-            // Check if resumable download is enabled
-            if (bResumable == FALSE) {
-                // Start from scratch
-                fileSize = 0;
-            }
-
-            FILETIME tWrite;
-            BOOL rangereq = FALSE;
-            if ((fileSize != 0) && (fileSize != 0xFFFFFFFF) &&
-                    GetFileTime(hFile, NULL, NULL, &tWrite)) {
-                char szHead[100];
-                SYSTEMTIME tLocal;
-                char buf[INTERNET_RFC1123_BUFSIZE];
-
-                FileTimeToSystemTime(&tWrite, &tLocal);
-                InternetTimeFromSystemTime(&tLocal, INTERNET_RFC1123_FORMAT,
-                        buf, INTERNET_RFC1123_BUFSIZE);
-                sprintf(szHead, "Range: bytes=%d-\r\nIf-Range: %s\r\n",
-                        fileSize, buf);
-                HttpAddRequestHeaders(hRequest, szHead, lstrlen(szHead),
-                        HTTP_ADDREQ_FLAG_ADD|HTTP_ADDREQ_FLAG_REPLACE);
-                rangereq = TRUE;
-            }
-
-            // This is a loop to handle various potential error when the
-            // connection is made
-            BOOL bCont = TRUE;
-
-            while ((FALSE == ::HttpSendRequest(hRequest, NULL, NULL, NULL, NULL))
-            && bCont ) {
-                // We might have an invalid CA.
-                DWORD dwErrorCode = GetLastError();
-
-                switch(dwErrorCode) {
-                    case E_JDHELPER_TIMEOUT:
-                    case E_JDHELPER_NAME_NOT_RESOLVED:
-                    case E_JDHELPER_CANNOT_CONNECT: {
-                        bCont = FALSE;
-                        // Display the information dialog
-                        if (bUIFeedback) {
-                            // decrement download counter to prevent progress
-                            // dialog from popping up while the message box is
-                            // up
-                            m_dlg->bundleInstallComplete();
-                            if (dwErrorCode == E_JDHELPER_TIMEOUT) {
-                                bRetryHttpRequest =
-                                    (IDRETRY == m_dlg->SafeMessageBox(
-                                       IDS_HTTP_STATUS_REQUEST_TIMEOUT,
-                                       IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT,
-                                       IDS_ERROR_CAPTION,
-                                       DIALOG_ERROR_RETRYCANCEL));
-                            } else {
-                                bRetryHttpRequest =
-                                    (IDRETRY == m_dlg->SafeMessageBox(
-                                       IDS_HTTP_STATUS_SERVER_NOT_REACHABLE,
-                                       IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE,
-                                       IDS_ERROR_CAPTION,
-                                       DIALOG_ERROR_RETRYCANCEL));
-                            }
-                            // re-increment counter because it will be decremented
-                            // again upon return
-                            m_dlg->bundleInstallStart();
-                            bCont = bRetryHttpRequest;
-                        }
-                        break;
-                    }
-                    case ERROR_INTERNET_INVALID_CA:
-                    case ERROR_INTERNET_SEC_CERT_CN_INVALID:
-                    case ERROR_INTERNET_SEC_CERT_DATE_INVALID:
-                    case ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR:
-                    case ERROR_INTERNET_INCORRECT_PASSWORD:
-                    case ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED:
-                    default: {
-                        // Unless the user agrees to continue, we just
-                        // abandon now !
-                        bCont = FALSE;
-
-                        // Make sure to test the return code from
-                        // InternetErrorDlg user may click OK or Cancel. In
-                        // case of Cancel, request should not be resubmitted
-                        if (bUIFeedback) {
-                            if (ERROR_SUCCESS == ::InternetErrorDlg(
-                                    NULL, hRequest,
-                                    dwErrorCode,
-                                    FLAGS_ERROR_UI_FILTER_FOR_ERRORS |
-                                    FLAGS_ERROR_UI_FLAGS_GENERATE_DATA |
-                                    FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS,
-                                    NULL))
-                                bCont = TRUE;
-                        }
-                    }
-                }
-            }
-
-            if (bCont == FALSE) {
-                // User has denied the request
-                dwDownloadError = 1;
-                __leave;
-            }
-
-            //
-            // Read HTTP status code
-            //
-            DWORD dwErrorCode = GetLastError();
-            DWORD dwStatus=0;
-            DWORD dwStatusSize = sizeof(DWORD);
-
-            if (FALSE == ::HttpQueryInfo(hRequest, HTTP_QUERY_FLAG_NUMBER |
-                    HTTP_QUERY_STATUS_CODE, &dwStatus, &dwStatusSize, NULL)) {
-                dwErrorCode = GetLastError();
-            }
-
-            bCont = TRUE;
-            while ((dwStatus == HTTP_STATUS_PROXY_AUTH_REQ ||
-                    dwStatus == HTTP_STATUS_DENIED) &&
-                    bCont) {
-                int result = ::InternetErrorDlg(GetDesktopWindow(), hRequest, ERROR_INTERNET_INCORRECT_PASSWORD,
-                        FLAGS_ERROR_UI_FILTER_FOR_ERRORS |
-                        FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS |
-                        FLAGS_ERROR_UI_FLAGS_GENERATE_DATA,
-                        NULL);
-                if (ERROR_CANCELLED == result) {
-                    bCont = FALSE;
-                }
-                else {
-                    ::HttpSendRequest(hRequest, NULL, 0, NULL, 0);
-
-                    // Reset buffer length
-                    dwStatusSize = sizeof(DWORD);
-
-                    ::HttpQueryInfo(hRequest, HTTP_QUERY_FLAG_NUMBER |
-                            HTTP_QUERY_STATUS_CODE, &dwStatus, &dwStatusSize,
-                            NULL);
-                }
-            }
-
-            if (dwStatus == HTTP_STATUS_OK ||
-                    dwStatus == HTTP_STATUS_PARTIAL_CONTENT) {
-                // Determine content length, so we may show the progress bar
-                // meaningfully
-                //
-                nContentLength = 0;
-                DWORD nLengthSize = sizeof(DWORD);
-                ::HttpQueryInfo(hRequest,
-                        HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER,
-                        &nContentLength, &nLengthSize, NULL);
-
-                if (nContentLength <= 0) {
-                    // If can't estimate content length, estimate it
-                    // to be 6MB
-                    nContentLength = 15000000;
-                }
-                else if (rangereq && (fileSize != 0) &&
-                        (nContentLength == fileSize)) {
-                    // If the file is already downloaded completely and then
-                    // we send a range request, the whole file is sent instead
-                    // of nothing. So avoid downloading again.
-                    // Some times return value is 206, even when whole file
-                    // is sent. So check if "Content-range:" is present in the
-                    // reply
-                    char buffer[256];
-                    DWORD length = sizeof(buffer);
-                    if(!HttpQueryInfo(hRequest, HTTP_QUERY_CONTENT_RANGE,
-                            buffer, &length, NULL)) {
-                        if(HttpQueryInfo(hRequest, HTTP_QUERY_LAST_MODIFIED,
-                                buffer, &length, NULL)) {
-                            SYSTEMTIME systime;
-                            FILETIME filtime;
-                            InternetTimeToSystemTime(buffer, &systime, NULL);
-                            SystemTimeToFileTime(&systime, &filtime);
-                            if ((CompareFileTime(&tWrite, &filtime)) == 1) {
-                                // no need to download
-                                dwDownloadError = 0;
-                                __leave;
-                            }
-                        }
-                        else {
-                            ::SetFilePointer(hFile, 0, 0, FILE_BEGIN);
-                            ::SetEndOfFile(hFile); // truncate the file
-                        }
-                    }
-
-                }
-
-                TCHAR szBuffer[8096];
-                DWORD dwBufferSize = 8096;
-
-                // Read from HTTP connection and write into
-                // destination file
-                //
-                DWORD nRead = 0;
-                DWORD dwTotalRead = 0;
-                BOOL bCancel = FALSE;
-
-                if (dwStatus == HTTP_STATUS_PARTIAL_CONTENT) {
-                    // If we are using resumable download, fake
-                    // start time so it looks like we have begun
-                    // the download several minutes again.
-                    //
-                    m_startTime = m_startTime - 100;
-
-                    ::SetFilePointer(hFile, 0, 0, FILE_END); // seek to end
-                }
-                else {
-                    ::SetFilePointer(hFile, 0, 0, FILE_BEGIN);
-                    ::SetEndOfFile(hFile); // truncate the file
-                }
-
-                do {
-                    nRead=0;
-
-                    if (::InternetReadFile(hRequest, szBuffer, dwBufferSize,
-                            &nRead)) {
-                        if (nRead) {
-                            DWORD dwNumberOfBytesWritten = NULL;
-
-                            BOOL ret = WriteFile(hFile, szBuffer, nRead,
-                                    &dwNumberOfBytesWritten, NULL);
-
-                            if (!ret) {
-                                // WriteFile failed
-                                if (bUIFeedback) {
-                                    if (GetLastError() == ERROR_DISK_FULL) {
-                                       bRetryHttpRequest =
-                                            (IDRETRY == m_dlg->SafeMessageBox(
-                                            IDS_DISK_FULL_ERROR,
-                                            IDS_DISK_FULL_ERROR_CAPTION,
-                                            IDS_ERROR_CAPTION,
-                                            DIALOG_ERROR_RETRYCANCEL,
-                                            wName));
-                                    } else {
-                                        bRetryHttpRequest =
-                                            (IDRETRY == m_dlg->SafeMessageBox(
-                                            IDS_DISK_WRITE_ERROR,
-                                            IDS_DISK_WRITE_ERROR_CAPTION,
-                                            IDS_ERROR_CAPTION,
-                                            DIALOG_ERROR_RETRYCANCEL,
-                                            wName));
-                                    }
-                                    if (!bRetryHttpRequest) {
-                                        dwDownloadError = 1;
-                                        break;
-                                    }
-                                }
-                                continue;
-                            }
-                        }
-
-                        dwTotalRead += nRead;
-
-                        // update download progress dialog
-                        m_dlg->OnProgress(nRead);
-                        // Check if download has been cancelled
-                        if (m_dlg->isDownloadCancelled()) {
-                            m_dlg->decrementProgressMax(nContentLength,
-                                    dwTotalRead);
-                            bCancel = TRUE;
-                            break;
-                        }
-
-                    }
-                    else {
-                        bCancel = TRUE;
-                        break;
-                    }
-                }
-                while (nRead);
-
-
-                if (bCancel) {
-                    // User has cancelled the operation or InternetRead failed
-                    // don't do return here, we need to cleanup
-                    dwDownloadError = 1;
-                    __leave;
-                }
-            }
-            else if (dwStatus == 416 && (fileSize != 0) &&
-                    (fileSize != 0xFFFFFFFF)) {
-                // This error could be returned, When the full file exists
-                // and a range request is sent with range beyond filessize.
-                // The best way to fix this is in future is, to send HEAD
-                // request and get filelength before sending range request.
-                dwDownloadError = 0;
-                __leave;
-            }
-            else if (dwStatus == 403) { // Forbidden from Akamai means we need to get a new download token
-                JNIEnv *env = m_dlg->getJNIEnv();
-                jclass exceptionClass = env->FindClass("java/net/HttpRetryException");
-                if (exceptionClass == NULL) {
-                    /* Unable to find the exception class, give up. */
-                    __leave;
-                }
-                jmethodID constructor;
-                constructor = env->GetMethodID(exceptionClass,
-                               "<init>", "(Ljava/lang/String;I)V");
-                if (constructor != NULL) {
-                    jobject exception = env->NewObject(exceptionClass,
-                            constructor, env->NewStringUTF("Forbidden"),
-                            403);
-                    env->Throw((jthrowable) exception);
-                }
-                __leave;
-            }
-            else if(dwStatus >= 400 && dwStatus < 600) {
-                /* NB: Following case seems to be never used!
-
-                   HTTP_STATUS_FORBIDDEN is the same as 403 and
-                   403 was specially handled few lines above! */
-                if (dwStatus == HTTP_STATUS_FORBIDDEN) {
-                    if (bUIFeedback) {
-                        bRetryHttpRequest = (IDRETRY == m_dlg->SafeMessageBox(
-                                            IDS_HTTP_STATUS_FORBIDDEN,
-                                            IDS_HTTP_INSTRUCTION_FORBIDDEN,
-                                            IDS_ERROR_CAPTION,
-                                            DIALOG_ERROR_RETRYCANCEL,
-                                            L"403"));
-                    }
-                }
-                else if (dwStatus == HTTP_STATUS_SERVER_ERROR) {
-                    if (bUIFeedback) {
-                       bRetryHttpRequest = (IDRETRY == m_dlg->SafeMessageBox(
-                                            IDS_HTTP_STATUS_SERVER_ERROR,
-                                            IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR,
-                                            IDS_ERROR_CAPTION,
-                                            DIALOG_ERROR_RETRYCANCEL,
-                                            L"500"));
-                    }
-                }
-                else if (dwStatus == HTTP_STATUS_SERVICE_UNAVAIL) {
-                    if (numberOfRetry < 5) {
-                        // If the server is busy, automatically retry
-
-                        // We wait couple seconds before retry to avoid
-                        // congestion
-                        for (long i = (long) secondsToWait; i >= 0; i--) {
-                            // Update status
-                            if (bUIFeedback) {
-                                char szBuffer[BUFFER_SIZE];
-                                ::LoadString(_Module.GetResourceInstance(),
-                                        IDS_DOWNLOAD_STATUS_RETRY, szStatus,
-                                        BUFFER_SIZE);
-                                wsprintf(szBuffer, szStatus, i);
-
-                                ::SetWindowText(hProgressInfo, szBuffer);
-                            }
-
-                            // Sleep 1 second
-                            ::Sleep(1000);
-                        }
-
-                        // We use a semi-binary backoff algorithm to
-                        // determine seconds to wait
-                        numberOfRetry += 1;
-                        secondsToWait = secondsToWait + 30;
-                        bRetryHttpRequest = TRUE;
-
-                        continue;
-                    }
-                    else {
-                        if (bUIFeedback) {
-                            bRetryHttpRequest = (IDRETRY == m_dlg->SafeMessageBox(
-                                            IDS_HTTP_STATUS_SERVICE_UNAVAIL,
-                                            IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL,
-                                            IDS_ERROR_CAPTION,
-                                            DIALOG_ERROR_RETRYCANCEL,
-                                            L"503"));
-
-                            if (bRetryHttpRequest) {
-                                numberOfRetry = 0;
-                                secondsToWait = 60;
-                                continue;
-                            }
-                        }
-                    }
-                }
-                else {
-                    if (bUIFeedback) {
-                        WCHAR szBuffer[10];
-                        _snwprintf(szBuffer, 10, L"%d", dwStatus);
-                        bRetryHttpRequest = (IDRETRY == m_dlg->SafeMessageBox(
-                                            IDS_HTTP_STATUS_OTHER,
-                                            IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR,
-                                            IDS_ERROR_CAPTION,
-                                            DIALOG_ERROR_RETRYCANCEL,
-                                            szBuffer));
-                    }
-                }
-                if (!bRetryHttpRequest) {
-                    dwDownloadError = 1;
-                }
-            }
-            else {
-                if (bUIFeedback) {
-                    WCHAR szBuffer[10];
-                    _snwprintf(szBuffer, 10, L"%d", dwStatus);
-                    bRetryHttpRequest = (IDRETRY == m_dlg->SafeMessageBox(
-                                            IDS_HTTP_STATUS_OTHER,
-                                            IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR,
-                                            IDS_ERROR_CAPTION,
-                                            DIALOG_ERROR_RETRYCANCEL,
-                                            szBuffer));
-                }
-                if (!bRetryHttpRequest) {
-                    dwDownloadError = 1;
-                }
-            }
-
-
-
-            // Close HTTP request
-            //
-            // This is necessary if the HTTP request
-            // is retried
-            if (hRequest)
-                ::InternetCloseHandle(hRequest);
-            if (hFile != INVALID_HANDLE_VALUE) {
-                ::CloseHandle(hFile);
-                hFile = INVALID_HANDLE_VALUE;
-            }
-        }
-        while (bRetryHttpRequest);
-    }
-    __finally {
-        if (hRequest)
-            ::InternetCloseHandle(hRequest);
-
-        if (hConnect)
-            ::InternetCloseHandle(hConnect);
-
-        if (hOpen)
-            ::InternetCloseHandle(hOpen);
-
-        if (hFile != INVALID_HANDLE_VALUE)
-            ::CloseHandle(hFile);
-    }
-
-
-
-    // Exit dialog
-    if (dwDownloadError == 0) {
-        return S_OK;
-    } else {
-        DeleteFile(szLocalFile);
-        return E_FAIL;
-    }
-}
--- a/jdk/src/windows/native/sun/jkernel/DownloadHelper.h	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-#ifndef BUFFER_SIZE
-#define BUFFER_SIZE 2048
-#endif
-
-#define E_JDHELPER_TIMEOUT               12002
-#define E_JDHELPER_NAME_NOT_RESOLVED     12007
-#define E_JDHELPER_CANNOT_CONNECT        12029
-
-#include <jni.h>
-#include "DownloadDialog.h"
-
-class DownloadHelper {
-public:
-    DownloadHelper();
-    ~DownloadHelper();
-
-    HRESULT doDownload();
-
-    void setFile(LPCTSTR pszFileName) {
-        m_pszFileName = pszFileName;
-    }
-
-    void setURL(LPCTSTR pszURL) {
-        m_pszURL = pszURL;
-    }
-
-    void setNameText(LPTSTR pszNameText) {
-        m_pszNameText = pszNameText;
-    }
-
-    void setShowProgressDialog(BOOL showProgress) {
-        m_showProgressDialog = showProgress;
-    }
-
-    void setDownloadDialog(CDownloadDialog* dialog) {
-        m_dlg = dialog;
-    }
-
-    void setJavaVM(JavaVM *jvm) {
-        m_jvm = jvm;
-    }
-
-private:
-    HRESULT DownloadFile(const TCHAR* szURL, const TCHAR* szLocalFile,
-            BOOL bResumable, BOOL bUIFeedback);
-
-    BOOL m_showProgressDialog;
-    LPCTSTR m_pszURL;
-    LPCTSTR m_pszFileName;
-    LPTSTR m_pszNameText;
-    time_t m_startTime;
-    CComAutoCriticalSection m_csDownload;
-    CDownloadDialog* m_dlg;
-    JavaVM* m_jvm;
-};
Binary file jdk/src/windows/native/sun/jkernel/graphics/bullet.bmp has changed
Binary file jdk/src/windows/native/sun/jkernel/graphics/cautionshield32.bmp has changed
Binary file jdk/src/windows/native/sun/jkernel/graphics/java-icon.ico has changed
Binary file jdk/src/windows/native/sun/jkernel/graphics/masthead.bmp has changed
Binary file jdk/src/windows/native/sun/jkernel/graphics/warningmasthead.bmp has changed
--- a/jdk/src/windows/native/sun/jkernel/kernel.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1621 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-#define _WIN32_WINNT 0x0500
-#define WINVER 0x0500
-
-#include "stdafx.h"
-#include <shlobj.h>
-#include <atlbase.h>
-#include <locale.h>
-
-CComModule _Module;
-
-#include <atlwin.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include "Windows.h"
-#include "WinNT.h"
-#include <shellapi.h>
-#include "DownloadDialog.h"
-#include "DownloadHelper.h"
-#include "kernel.h"
-#include "sun_jkernel_DownloadManager.h"
-#include "sun_jkernel_Bundle.h"
-#include "sun_jkernel_Mutex.h"
-#include "sun_jkernel_BackgroundDownloader.h"
-#include <stdio.h>
-#include <windows.h>
-#include <conio.h>
-#include <tchar.h>
-#include <tchar.h>
-#include <sddl.h>
-#include <Aclapi.h>
-#include <strsafe.h>
-
-BOOL IsPlatformWindowsVista();
-
-#define BUFSIZE 4096
-
-#define JBROKERPIPE           "\\\\.\\pipe\\jbrokerpipe"
-#define JREMAINKEY              "SOFTWARE\\JavaSoft\\Java Runtime Environment"
-#define JRE_VERSION_REGISTRY_KEY    JREMAINKEY "\\" VERSION
-#define ReleaseAndClose(mutex) \
-        if (mutex != NULL) { \
-            ReleaseMutex(mutex);  \
-            CloseHandle(mutex); \
-            mutex = NULL; \
-        }
-
-#define KERNEL_DEBUG false
-
-// used to inform kernel that we believe it is running in high integrity
-#define JBROKER_KEY "-Dkernel.spawned.from.jbroker=true -Dkernel.background.download=false"
-
-// this is only available on Vista SDK, hard code it here for now
-#define LABEL_SECURITY_INFORMATION (0x00000010L)
-
-// The LABEL_SECURITY_INFORMATION SDDL SACL to be set for low integrity
-LPCSTR LOW_INTEGRITY_SDDL_SACL = "S:(ML;;NW;;;LW)";
-
-CDownloadDialog dlg;
-BOOL createDialog = TRUE;
-
-CComAutoCriticalSection m_csCreateDialog;
-
-typedef BOOL (WINAPI *LPFNInitializeSecurityDescriptor)(
-        PSECURITY_DESCRIPTOR pSecurityDescriptor, DWORD dwRevision);
-typedef BOOL (WINAPI *LPFNSetSecurityDescriptorDacl)(
-        PSECURITY_DESCRIPTOR pSecurityDescriptor, BOOL bDaclPresent, PACL pDacl,
-        BOOL bDaclDefaulted);
-
-typedef BOOL (WINAPI *LPFNConvertStringSecurityDescriptorToSecurityDescriptorA)(
-        LPCSTR StringSecurityDescriptor, DWORD StringSDRevision,
-        PSECURITY_DESCRIPTOR* SecurityDescriptor,
-        PULONG SecurityDescriptorSize);
-
-typedef BOOL (WINAPI *LPFNGetSecurityDescriptorSacl)(
-        PSECURITY_DESCRIPTOR pSecurityDescriptor, LPBOOL lpbSaclPresent,
-        PACL* pSacl, LPBOOL lpbSaclDefaulted);
-
-typedef DWORD (WINAPI *LPFNSetSecurityInfo)(HANDLE handle,
-        SE_OBJECT_TYPE ObjectType, SECURITY_INFORMATION SecurityInfo,
-        PSID psidOwner, PSID psidGroup, PACL pDacl, PACL pSacl);
-
-BOOL APIENTRY DllMain( HANDLE hModule,
-                       DWORD  ul_reason_for_call,
-                       LPVOID lpReserved
-                     )
-{
-    return TRUE;
-}
-
-char* getStringPlatformChars(JNIEnv* env, jstring jstr) {
-    char *result = NULL;
-    size_t len;
-    const jchar* utf16 = env->GetStringChars(jstr, NULL);
-    len = wcstombs(NULL, (const wchar_t*)utf16, env->GetStringLength(jstr) * 4) + 1;
-    if (len == -1)
-        return NULL;
-    result = (char*) malloc(len);
-    if (wcstombs(result, (const wchar_t*)utf16, len) == -1)
-        return NULL;
-    env->ReleaseStringChars(jstr, utf16);
-    return result;
-}
-
-bool SetObjectToLowIntegrity ( HANDLE hObject,
-        SE_OBJECT_TYPE type = SE_KERNEL_OBJECT ) {
-
-    bool bRet = false;
-    DWORD dwErr = ERROR_SUCCESS;
-    PSECURITY_DESCRIPTOR pSD = NULL;
-    PACL pSacl = NULL;
-    BOOL fSaclPresent = FALSE;
-    BOOL fSaclDefaulted = FALSE;
-
-    // initialize function pointers
-    HMODULE hModule = LoadLibrary("Advapi32.dll");
-
-    // ConvertStringSecurityDescriptorToSecurityDescriptorA
-    LPFNConvertStringSecurityDescriptorToSecurityDescriptorA
-            lpfnConvertStringSecurityDescriptorToSecurityDescriptorA =
-            (LPFNConvertStringSecurityDescriptorToSecurityDescriptorA)GetProcAddress(
-            hModule,
-            "ConvertStringSecurityDescriptorToSecurityDescriptorA");
-
-    // GetSecurityDescriptorSacl
-    LPFNGetSecurityDescriptorSacl lpfnGetSecurityDescriptorSacl =
-            (LPFNGetSecurityDescriptorSacl)GetProcAddress(hModule,
-            "GetSecurityDescriptorSacl");
-
-    // SetSecurityInfo
-    LPFNSetSecurityInfo lpfnSetSecurityInfo =
-            (LPFNSetSecurityInfo)GetProcAddress(hModule,
-            "SetSecurityInfo");
-
-    if (lpfnConvertStringSecurityDescriptorToSecurityDescriptorA == NULL ||
-            lpfnGetSecurityDescriptorSacl == NULL ||
-            lpfnSetSecurityInfo == NULL) {
-        if (KERNEL_DEBUG) {
-            printf("Fail to initialize function pointer\n");
-        }
-        FreeLibrary(hModule);
-        return FALSE;
-    }
-
-    // Set object to lower integrity
-    if ( lpfnConvertStringSecurityDescriptorToSecurityDescriptorA(
-            LOW_INTEGRITY_SDDL_SACL, SDDL_REVISION_1, &pSD, NULL ) ) {
-        if ( lpfnGetSecurityDescriptorSacl(
-                pSD, &fSaclPresent, &pSacl, &fSaclDefaulted ) ) {
-            dwErr = lpfnSetSecurityInfo(
-                    hObject, type, LABEL_SECURITY_INFORMATION,
-                    NULL, NULL, NULL, pSacl );
-
-            bRet = (ERROR_SUCCESS == dwErr);
-        }
-
-        LocalFree( pSD );
-    }
-
-    FreeLibrary(hModule);
-    return bRet;
-}
-
-
-JNIEXPORT jlong JNICALL Java_sun_jkernel_Mutex_createNativeMutex
-                                (JNIEnv *env , jclass cls, jstring id) {
-    SECURITY_ATTRIBUTES sa;
-    PSECURITY_DESCRIPTOR pSD = NULL;
-    BOOL saInitialized = FALSE;
-
-    // initialize function pointers
-    HMODULE hModule = LoadLibrary("Advapi32.dll");
-
-    // InitializeSecurityDescriptor
-    LPFNInitializeSecurityDescriptor lpfnInitializeSecurityDescriptor =
-            (LPFNInitializeSecurityDescriptor)GetProcAddress(hModule,
-            "InitializeSecurityDescriptor");
-
-    // SetSecurityDescriptorDacl
-    LPFNSetSecurityDescriptorDacl lpfnSetSecurityDescriptorDacl =
-            (LPFNSetSecurityDescriptorDacl)GetProcAddress(hModule,
-            "SetSecurityDescriptorDacl");
-
-    if (lpfnInitializeSecurityDescriptor != NULL &&
-            lpfnSetSecurityDescriptorDacl != NULL) {
-
-        // Initialize a security descriptor.
-        pSD = (PSECURITY_DESCRIPTOR) LocalAlloc(LPTR,
-                SECURITY_DESCRIPTOR_MIN_LENGTH);
-        if (NULL == pSD) {
-            if (KERNEL_DEBUG) {
-                printf("LocalAlloc Error %u\n", GetLastError());
-            }
-            FreeLibrary(hModule);
-            return NULL;
-        }
-
-        if (!lpfnInitializeSecurityDescriptor(pSD,
-                SECURITY_DESCRIPTOR_REVISION)) {
-            if (KERNEL_DEBUG) {
-                printf("InitializeSecurityDescriptor Error %u\n", GetLastError());
-            }
-            FreeLibrary(hModule);
-            return NULL;
-
-        }
-        // Add the ACL to the security descriptor.
-        if (!lpfnSetSecurityDescriptorDacl(pSD,
-                TRUE,     // bDaclPresent flag
-                NULL,     // NULL DACL is assigned to the security descriptor,
-                // which allows all access to the object.
-                // This is to allow the mutex to be accessbile by
-                // all users;  The background downloader launched
-                // by the installer will be running as SYSTEM user;
-                // while other java process started by the current
-                // user will be running as the current username.
-                FALSE))   // not a default DACL
-        {
-            if (KERNEL_DEBUG) {
-                printf("SetSecurityDescriptorDacl Error %u\n",
-                        GetLastError());
-            }
-            FreeLibrary(hModule);
-            return NULL;
-        }
-
-        // Initialize a security attributes structure.
-        sa.nLength = sizeof (SECURITY_ATTRIBUTES);
-        sa.lpSecurityDescriptor = pSD;
-        sa.bInheritHandle = FALSE;
-
-        saInitialized = TRUE;
-        FreeLibrary(hModule);
-    }
-
-    HANDLE m = CreateMutex(saInitialized ? &sa : NULL, FALSE,
-            (LPCSTR) getStringPlatformChars(env, id));
-    if (m == NULL) {
-        if (KERNEL_DEBUG) {
-            printf("CreateMutex Error %u\n", GetLastError());
-        }
-    }
-
-    // set the mutex object to low integrity on vista, so the mutex
-    // can be accessed by different integrity level
-    if (IsPlatformWindowsVista()) {
-        if (!SetObjectToLowIntegrity(m)) {
-            if (KERNEL_DEBUG) {
-                printf("Fail to set Mutex object to low integrity\n");
-            }
-        }
-    }
-    return (jlong)m ;
-}
-
-
-HANDLE getMutexHandle(JNIEnv *env, jobject mutex) {
-    jfieldID handle = env->GetFieldID(env->GetObjectClass(mutex), "handle", "J");
-    return (HANDLE) env->GetLongField(mutex, handle);
-}
-
-JNIEXPORT jboolean JNICALL Java_sun_jkernel_Mutex_acquire__I
-                                (JNIEnv *env, jobject mutex, jint timeout) {
-    HANDLE hmutex = getMutexHandle(env, mutex);
-    if (hmutex != NULL) {
-        int result = WaitForSingleObject(hmutex, timeout);
-        if (result == WAIT_ABANDONED)
-            result = WaitForSingleObject(hmutex, timeout);
-        return (result == WAIT_OBJECT_0);
-    }
-    else
-        return false;
-}
-
-void ThrowByName(JNIEnv *env, const char *name, const char *msg) {
-    jclass cls = env->FindClass(name);
-    /* if cls is NULL, an exception has already been thrown */
-    if (cls != NULL) {
-        env->ThrowNew(cls, msg);
-    }
-    /* free the local ref */
-    env->DeleteLocalRef(cls);
-}
-
-JNIEXPORT void JNICALL Java_sun_jkernel_Mutex_acquire__
-        (JNIEnv *env, jobject mutex) {
-    if (!Java_sun_jkernel_Mutex_acquire__I(env, mutex, INFINITE)) {
-        // failed to acquire mutex, most likely because it was already disposed
-        ThrowByName(env, "java/lang/IllegalStateException",
-                "error acquiring mutex");
-    }
-}
-
-JNIEXPORT void JNICALL Java_sun_jkernel_Mutex_release
-                                (JNIEnv *env, jobject mutex) {
-    HANDLE hmutex = getMutexHandle(env, mutex);
-    if (hmutex != NULL)
-        ReleaseMutex(hmutex);
-    else
-        ThrowByName(env, "java/lang/IllegalStateException",
-                "releasing disposed mutex");
-}
-
-JNIEXPORT void JNICALL Java_sun_jkernel_Mutex_destroyNativeMutex
-        (JNIEnv *env, jobject mutex) {
-    HANDLE hmutex = getMutexHandle(env, mutex);
-    if (hmutex != NULL) {
-        Java_sun_jkernel_Mutex_release(env, mutex);
-        CloseHandle(hmutex);
-    }
-}
-
-void createDownloadWindowProc(LPVOID lpParameter) {
-    CDownloadDialog* pDlg = (CDownloadDialog *) lpParameter;
-
-    pDlg->delayedDoModal();
-
-    // dialog destroyed, need to create a new one next time
-    createDialog = TRUE;
-}
-
-
-void createDownloadWindow(LPVOID lpParameter) {
-    // Create a new thread for download window
-    DWORD dwThreadId = NULL;
-    ::CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) createDownloadWindowProc, lpParameter, 0, &dwThreadId);
-}
-
-JNIEXPORT void JNICALL Java_sun_jkernel_DownloadManager_bundleInstallComplete
-    (JNIEnv *env, jclass dm) {
-    dlg.bundleInstallComplete();
-}
-
-JNIEXPORT void JNICALL Java_sun_jkernel_DownloadManager_bundleInstallStart
-    (JNIEnv *env, jclass dm) {
-
-    dlg.bundleInstallStart();
-}
-
-typedef HRESULT (WINAPI *LPFNIEIsProtectedModeProcess)(BOOL *pbResult);
-
-BOOL isRunningIEProtectedMode() {
-
-    HMODULE hModule = NULL;
-    LPFNIEIsProtectedModeProcess lpfnIEIsProtectedModeProcess;
-
-    __try {
-        hModule = LoadLibrary("ieframe.dll");
-        if (hModule != NULL) {
-
-            lpfnIEIsProtectedModeProcess = (LPFNIEIsProtectedModeProcess)
-                GetProcAddress(hModule, "IEIsProtectedModeProcess");
-
-            if (lpfnIEIsProtectedModeProcess != NULL) {
-                BOOL bProtectedMode = FALSE;
-                HRESULT hr = lpfnIEIsProtectedModeProcess(&bProtectedMode);
-                if ( SUCCEEDED(hr) && bProtectedMode ) {
-                    // IE is running in protected mode
-                    return TRUE;
-                } else {
-                    // IE isn't running in protected mode
-                    return FALSE;
-                }
-            }
-        }
-    } __finally {
-        if (hModule != NULL) {
-            FreeLibrary(hModule);
-        }
-    }
-    return FALSE;
-}
-
-/* Return TRUE if current running platform is Windows Vista, FALSE otherwise */
-BOOL IsPlatformWindowsVista() {
-    static BOOL initialized = FALSE;
-    static BOOL isVista = FALSE;
-    OSVERSIONINFO  osvi;
-
-    if (initialized) {
-        return isVista;
-    }
-
-    // Initialize the OSVERSIONINFO structure.
-    ZeroMemory( &osvi, sizeof( osvi ) );
-    osvi.dwOSVersionInfoSize = sizeof( osvi );
-
-    GetVersionEx( &osvi );  // Assume this function succeeds.
-
-    if ( osvi.dwPlatformId == VER_PLATFORM_WIN32_NT &&
-        osvi.dwMajorVersion == 6 ) {
-        isVista = TRUE;
-    } else {
-        isVista = FALSE;
-    }
-
-    initialized = TRUE;
-
-    return isVista;
-}
-
-JNIEXPORT jboolean  JNICALL Java_sun_jkernel_DownloadManager_isIEProtectedMode
-    (JNIEnv *env, jclass dm) {
-
-    if (isRunningIEProtectedMode()) {
-        return TRUE;
-    }
-    return FALSE;
-}
-
-JNIEXPORT jboolean JNICALL Java_sun_jkernel_DownloadManager_isWindowsVista
-    (JNIEnv *env, jclass dm) {
-
-    if (IsPlatformWindowsVista()) {
-        return TRUE;
-    }
-    return FALSE;
-}
-
-int sendMessageToBroker(const char * message) {
-        char ackString[1024];
-        HANDLE hp = INVALID_HANDLE_VALUE;
-
-        while (hp == INVALID_HANDLE_VALUE) {
-            hp = CreateNamedPipe(_T(JBROKERPIPE),
-                    PIPE_ACCESS_DUPLEX | FILE_FLAG_FIRST_PIPE_INSTANCE ,
-                    PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT,
-                    1, // number of pipes that can exist
-                    1024, // output buffer
-                    1024, // input buffer
-                    0, // timeout
-                    NULL); // security attributes
-
-            if (hp == INVALID_HANDLE_VALUE) {
-                DWORD err = GetLastError();
-                // we only allow one instance of the pipe; if the instance
-                // already exists, we will get ERROR_ACCESS_DENIED, which means
-                // some other process is using the pipe, so let's try again
-                if (err != ERROR_ACCESS_DENIED && err != ERROR_PIPE_BUSY) {
-                    // create pipe failed
-                    return 0;
-                }
-                // pipe instance might be in use, keep trying
-            }
-        }
-
-        // Wait for the client to connect; if it succeeds,
-        // the function returns a nonzero value. If the function
-        // returns zero, GetLastError returns ERROR_PIPE_CONNECTED.
-        BOOL fConnected = ConnectNamedPipe(hp, NULL) ?
-                TRUE : (GetLastError() == ERROR_PIPE_CONNECTED);
-
-        if (fConnected)
-        {
-                // Send message to the pipe server.
-                DWORD cbWritten;
-
-                BOOL fSuccess = WriteFile(
-                        hp,                  // pipe handle
-                        message,             // message
-                        (strlen(message)+1)*sizeof(char), // message length
-                        &cbWritten,             // bytes written
-                        NULL);                  // not overlapped
-
-                if (!fSuccess)
-                {
-                        // WriteFile failed
-                        CloseHandle(hp);
-                        return 0;
-                }
-
-                // wait for ack from server
-                DWORD cbRead;
-                TCHAR chBuf[BUFSIZE];
-
-                do
-                {
-                        // Read from the pipe.
-                        fSuccess = ReadFile(
-                                hp,    // pipe handle
-                                chBuf,    // buffer to receive reply
-                                BUFSIZE*sizeof(TCHAR),  // size of buffer
-                                &cbRead,  // number of bytes read
-                                NULL);    // not overlapped
-
-                        if (! fSuccess && GetLastError() != ERROR_MORE_DATA)
-                                break;
-
-                        sprintf(ackString, "%s", chBuf);
-
-
-                } while (!fSuccess);  // repeat loop if ERROR_MORE_DATA
-        }
-
-        CloseHandle(hp);
-
-        if (strcmp(ackString, "SUCCESS") == 0) {
-                // server completed move command successfully
-                return 1;
-        }
-
-        return 0;
-}
-
-int sendMoveMessageToBroker(const char * fromPath, const char * userHome) {
-    // Send move message
-    char * movecmd = "MOVEFILE";
-
-    char * msg = (char*)malloc((strlen(fromPath) + strlen(movecmd) +
-            strlen(userHome) + 3) * sizeof(char));
-
-    sprintf(msg, "%s*%s*%s", movecmd, fromPath, userHome);
-
-    return sendMessageToBroker(msg);
-}
-
-int sendMoveDirMessageToBroker(const char * fromPath, const char * userHome) {
-        // Send move dir message
-    char * movecmd = "MOVEDIR";
-
-    char * msg = (char*)malloc((strlen(fromPath) + strlen(movecmd) +
-            strlen(userHome) + 3) * sizeof(char));
-
-    sprintf(msg, "%s*%s*%s", movecmd, fromPath, userHome);
-
-    return sendMessageToBroker(msg);
-}
-
-
-int sendKillMessageToBroker() {
-        // Send move message
-        char * killcmd = "KILLBROKER";
-        return sendMessageToBroker(killcmd);
-}
-
-
-int sendPerformCompletionMessageToBroker(const char *javaHome) {
-    const char *cmd = "PERFORMCOMPLETION";
-
-    int result = sendMessageToBroker(cmd);
-
-    if (result)
-        sendKillMessageToBroker();
-    return result;
-}
-
-int getConstantInt(JNIEnv *env, jclass cls, const char *name) {
-    jfieldID handle = env->GetStaticFieldID(cls, name, "I");
-    return env->GetStaticIntField(cls, handle);
-}
-
-JNIEXPORT void JNICALL Java_sun_jkernel_DownloadManager_displayError
-        (JNIEnv *env, jclass dm, jint code, jstring arg) {
-    int messageId = IDS_FATAL_ERROR;
-    int titleId = IDS_ERROR_CAPTION;
-    if (code == getConstantInt(env, dm, "ERROR_MALFORMED_BUNDLE_PROPERTIES"))
-        messageId = IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES;
-    else if (code == getConstantInt(env, dm, "ERROR_DOWNLOADING_BUNDLE_PROPERTIES"))
-        messageId = IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES;
-    else if (code == getConstantInt(env, dm, "ERROR_MALFORMED_URL"))
-        messageId = IDS_ERROR_MALFORMED_URL;
-    char message[BUFFER_SIZE];
-    char rawMessage[BUFFER_SIZE];
-    char title[BUFFER_SIZE];
-    ::LoadString(_Module.GetModuleInstance(), titleId, title, BUFFER_SIZE);
-    ::LoadString(_Module.GetModuleInstance(), messageId, rawMessage, BUFFER_SIZE);
-    if (arg != NULL) {
-        char *chars = getStringPlatformChars(env, arg);
-        sprintf(message, rawMessage, chars);
-    }
-    else
-        strcpy(message, rawMessage);
-
-    MessageBox(NULL, message, title, MB_OK|MB_TASKMODAL);
-}
-
-JNIEXPORT jboolean JNICALL Java_sun_jkernel_DownloadManager_askUserToRetryDownloadOrQuit
-        (JNIEnv *env, jclass dm, jint code) {
-
-        int ret;
-        if (code == getConstantInt(env, dm, "ERROR_DISK_FULL")) {
-           ret = dlg.SafeMessageBox(IDS_DISK_FULL_ERROR,
-                                    IDS_DISK_FULL_ERROR_CAPTION,
-                                    IDS_ERROR_CAPTION,
-                                    DIALOG_ERROR_RETRYCANCEL);
-        } else {
-           ret = dlg.SafeMessageBox(IDS_DOWNLOAD_RETRY_TEXT,
-                                    IDS_DOWNLOAD_RETRY,
-                                    IDS_ERROR_CAPTION,
-                                    DIALOG_ERROR_RETRYCANCEL);
-        }
-        if (ret != IDRETRY) {
-                // user choose to exit, return 0
-                return JNI_FALSE;
-        }
-
-        // return 1 (retry the download)
-        return JNI_TRUE;
-}
-
-JNIEXPORT void JNICALL Java_sun_jkernel_DownloadManager_startBackgroundDownloadWithBrokerImpl
-(JNIEnv *env, jclass dm, jstring command) {
-
-        char* szCommand = getStringPlatformChars(env, command);
-
-        // Send createprocess message
-        char * createproccmd = "STARTBACKGROUNDDOWNLOAD";
-
-        char * msg = (char*)malloc((strlen(createproccmd) + strlen(szCommand) + 2) * sizeof(char));
-
-        sprintf(msg, "%s*%s", createproccmd, szCommand);
-
-        sendMessageToBroker(msg);
-
-        free(szCommand);
-}
-
-
-void getParent(TCHAR *path, TCHAR *dest) {
-    char* lastSlash = max(strrchr(path, '\\'), strrchr(path, '/'));
-    if (lastSlash == NULL) {
-        *dest = NULL;
-        return;
-    }
-    if (path != dest)
-        strcpy(dest, path);
-    *lastSlash = NULL;
-}
-
-
-bool createProcess(const TCHAR *path, const TCHAR *args) {
-    SHELLEXECUTEINFOA shInfo;
-
-    shInfo.cbSize = sizeof(SHELLEXECUTEINFOA);
-    shInfo.fMask = 0;
-    shInfo.hwnd = NULL;
-    shInfo.lpVerb = "runas";
-    shInfo.lpFile = path;
-    shInfo.lpParameters = args;
-    shInfo.lpDirectory = NULL;
-    shInfo.nShow = SW_NORMAL;
-    shInfo.hInstApp = NULL;
-
-    int result = (int) ::ShellExecuteExA(&shInfo);
-    // ShellExecute is documented to return >32 on success, but I'm consistently
-    // getting a return of 1 despite obviously successful results.  1 is not a
-    // documented return code from ShellExecute, and this may have something to
-    // do with the fact that we're using an undocumented verb in the first place
-    // ("runas").
-    return result > 32 || result == 1;
-}
-
-
-bool launchJBroker(const char *szJavaHome) {
-        char szPath[2048];
-        wsprintf(szPath, "%s\\bin\\jbroker.exe", szJavaHome);
-    return createProcess(szPath, NULL);
-}
-
-
-JNIEXPORT jboolean JNICALL Java_sun_jkernel_DownloadManager_launchJBroker
-(JNIEnv *env, jclass dm, jstring javaHomePath) {
-        char* szJavaHome = getStringPlatformChars(env, javaHomePath);
-    bool result = launchJBroker(szJavaHome);
-        free(szJavaHome);
-    return result ? TRUE : FALSE;
-}
-
-
-bool isJBrokerRunning() {
-        HANDLE hMutex = NULL;
-        DWORD ret = 0;
-
-        if (isRunningIEProtectedMode()) {
-
-                // check if jbroker process is running
-                // Use OpenMutex since we have limited access rights.
-                // CreateMutex function will fail with ERROR_ACCESS_DENIED in protected mode
-                hMutex = OpenMutex(SYNCHRONIZE, FALSE, "SunJavaBrokerMutex");
-
-                ret = ::GetLastError();
-
-                if (hMutex != NULL) {
-                        CloseHandle(hMutex);
-                }
-
-                if (ret == ERROR_FILE_NOT_FOUND)
-                {
-                        // jbroker not running yet, launch it
-                        return FALSE;
-                }
-
-                return TRUE;
-
-        } else {
-                hMutex = ::CreateMutex(NULL, TRUE, "SunJavaBrokerMutex");
-
-                if ( (hMutex == NULL) || (::GetLastError() == ERROR_ALREADY_EXISTS)) {
-                        // jbroker already running
-                        if (hMutex != NULL) ::CloseHandle(hMutex);
-                        return TRUE;
-                }
-
-                if (hMutex != NULL) ::CloseHandle(hMutex);
-
-                return FALSE;
-        }
-}
-
-
-JNIEXPORT jboolean JNICALL Java_sun_jkernel_DownloadManager_isJBrokerRunning
-(JNIEnv *env, jclass dm) {
-    return isJBrokerRunning() ? TRUE : FALSE;
-}
-
-
-JNIEXPORT jboolean JNICALL Java_sun_jkernel_DownloadManager_moveDirWithBrokerImpl
-    (JNIEnv *env, jclass dm, jstring fromPath, jstring userHome) {
-
-    char* fromPathChars = getStringPlatformChars(env, fromPath);
-
-    char* userHomeChars = getStringPlatformChars(env, userHome);
-
-    int ret = sendMoveDirMessageToBroker(fromPathChars, userHomeChars);
-
-    free(fromPathChars);
-
-    free(userHomeChars);
-
-    if (ret == 0) {
-        return FALSE;
-    }
-    return TRUE;
-}
-
-JNIEXPORT jboolean JNICALL Java_sun_jkernel_DownloadManager_moveFileWithBrokerImpl
-    (JNIEnv *env, jclass dm, jstring fromPath, jstring userHome) {
-
-    char* fromPathChars = getStringPlatformChars(env, fromPath);
-
-    char* userHomeChars = getStringPlatformChars(env, userHome);
-
-    int ret = sendMoveMessageToBroker(fromPathChars, userHomeChars);
-
-    free(fromPathChars);
-
-    free(userHomeChars);
-
-    if (ret == 0) {
-        return FALSE;
-    }
-    return TRUE;
-}
-
-/**
- * Throw an exception with the last Windows error code if available.
- */
-
-void ThrowByNameWithLastError(JNIEnv *env, char *exception, char* msg) {
-    char fullMsg[1024] = {0};
-    if (StringCbPrintf(fullMsg, 1024, "%s. Windows error: %d\n",
-        msg, GetLastError()) != S_OK) {
-
-        // Formatting failed: fall back to msg w/o error code
-        ThrowByName(env, exception, msg);
-    } else {
-        ThrowByName(env, exception, fullMsg);
-    }
-}
-
-/**
- * Common code for "extra" compression or uncompression. If extra code
- * not available do nothing but return false. If available, return true
- * after locating the extra compression library at ".." and the defined
- * path relative to the native library containing this method's code.
- * If enabled, compress or uncompress the srcPath file into destpath,
- * throwing exceptions for errors (see JNI routine docs below for details).
- */
-
-jboolean extraCommon(BOOL docompress,
-        JNIEnv *env, jclass dm, jstring srcPath, jstring destPath) {
-#ifdef EXTRA_COMP_INSTALL_PATH
-    const char *operation = (docompress == true) ? "e" : "d";
-
-    // This should be shared with the deploy tree and should be defined
-    // in an implementation like LzmaAlone.h. However the deploy build
-    // doesn't exit yet wrt to this function pointer type.
-
-    typedef int (*EXTRACOMPTRTYPE) (int, const char**);
-
-    // Function pointer for invoking the encoder/decoder (uncompressor)
-    static volatile EXTRACOMPTRTYPE mptr = NULL;
-    // Volatile boolean becomes true when mptr init is finished
-
-// Stringifier macros to get the relative library path
-
-#define K_STRING(x) #x
-#define K_GETSTRING(x) K_STRING(x)
-
-    char *srcPathChars = getStringPlatformChars(env, srcPath);
-
-    if (srcPathChars == NULL) {
-        // TODO (for all throw calls). If the class&method are *reliably*
-        // reported to the user these message prefixes are silly.
-        ThrowByName(env, "java/io/IOException",
-            "Bundle.uncompress: GetStringPlatformChars failed");
-        return true;
-    }
-
-    char *destPathChars = getStringPlatformChars(env, destPath);
-    if (destPathChars == NULL) {
-        free(srcPathChars);
-        ThrowByName(env, "java/io/IOException",
-            "Bundle.uncompress: GetStringPlatformChars failed");
-        return true;
-    }
-    if (KERNEL_DEBUG) {
-        printf("LZMA: %s %s to %s\n", operation, srcPathChars, destPathChars);
-    }
-
-
-    // This loop avoids a lot of repetitious code for exception handling.
-    // If any loops are put inside this one be careful to properly
-    // handle exceptions within the inner loops.
-
-    do {
-
-        if (mptr == NULL) {
-
-            // Need to locate and link to the extra compression lib, which
-            // has a pathname relative to the directory containing the library
-            // containing this code, which is assumed to be one directory
-            // "below" the JRE base path. That is, the JRE base path is
-            // assumed to be ".." from the path of this library and then
-            // EXTRA_COMP_INSTALL_PATH from the JRE base path is expected to
-            // be the compression lib path.
-            // But this code is defensive and tries not to fail if the
-            // currently executing library is in ".". It will fail in a
-            // case like this if the extra compression lib path isn't
-            // "./EXTRA_CMP_INSTALL_PATH" (or just "EXTRA_CMP_INSTALL_PATH").
-            // Use macro magic to get the path macro as a string value.
-
-            const char *libRelativePath = K_GETSTRING(EXTRA_COMP_INSTALL_PATH);
-
-            // The max length the base JRE path can be to safely concatenate
-            // libRelativePath, a (possible) separator, and a null terminator.
-            int jreMaxPathLength = MAX_PATH - sizeof(libRelativePath) - 2;
-
-            TCHAR extraLibPath[MAX_PATH] = {0};
-            HMODULE kernel = GetModuleHandle("jkernel");
-            if (kernel != NULL) {
-                DWORD result = GetModuleFileName(kernel, extraLibPath,
-                    MAX_PATH-1);
-                if (result > 0) {
-                    // remove the name of this library (and maybe a
-                    // separator)
-                    getParent(extraLibPath, extraLibPath);
-                    if (extraLibPath[0] != NULL) {
-                        // There was a directory containing the library
-                        // (probably "<something or nothing\\>bin"), so
-                        // remove that to go up to the assumed JRE base path
-                        getParent(extraLibPath, extraLibPath);
-                    } else {
-                        ThrowByName(env, "java/io/IOException",
-                            "bundle uncompression: expected lib path component not found");
-                        break;
-                    }
-                    // This is effectively an assertion that the concat
-                    // below cannot overflow
-                    if (extraLibPath[0] != NULL) {
-                        // Current dir is not ".", so add a separator
-                        strcat(extraLibPath, "\\");
-                    }
-                    if ((strlen(extraLibPath) + 1) > jreMaxPathLength) {
-                        ThrowByName(env, "java/io/IOException",
-                            "bundle uncompression: JRE base pathname too long");
-                        break;
-                    }
-                    strcat(extraLibPath, libRelativePath);
-                } else {
-                    ThrowByName(env, "java/io/IOException",
-                        "bundle uncompression: GetModuleFileName failed");
-                    break;
-                }
-            } else {
-                ThrowByNameWithLastError(env, "java/io/IOException",
-                   "bundle uncompression: GetModuleHandle failed");
-                break;
-            }
-
-            // Load the library and develop a pointer to the decoder routine
-
-            if (KERNEL_DEBUG) {
-                printf("bundle uncompression: extra library path %s\n",
-                    extraLibPath);
-            }
-
-            HMODULE handle = LoadLibrary(extraLibPath);
-            if (handle == NULL) {
-                ThrowByNameWithLastError(env, "java/io/IOException",
-                    "bundle uncompression: LoadLibrary failed");
-                break;
-            }
-
-            // find the extra uncompression routine
-
-            mptr = (EXTRACOMPTRTYPE) GetProcAddress(handle,
-                "ExtraCompressionMain");
-
-            if (mptr == NULL) {
-                ThrowByNameWithLastError(env, "java/io/IOException",
-                    "bundle uncompression: GetProcAddress failed");
-                break;
-            }
-        }
-
-        // Create the arguments for the decoder
-        // Decoder options must go *between* the "d" argument and the
-        // source path arguments and don't forget to keep the 1st arg to
-        // (*mptr) the same as the number of elements of args.
-        const char *args[] = {
-            "", // the shared lib makes no attempt access it's "command name"
-            operation,
-
-            // Special decoder/encoder switch strings would go here
-
-            // For example: "-d24", to set the dictionary size to 16MB
-
-            "-q", // Suppress banner msg output
-
-            // No special option switch strings after here
-
-            srcPathChars,
-            destPathChars
-        };
-        int argc = sizeof(args) / sizeof(const char *);
-        if ((*mptr)(argc, args) != 0) {
-            if (KERNEL_DEBUG) {
-                printf("uncompress lib call failed with args: ");
-                for (int i = 0; i < argc; i++) {
-                    printf("%s", args[i]);
-                }
-                printf("\n");
-            }
-            ThrowByName(env, "java/io/IOException",
-                "bundle uncompression: uncompression failed");
-            break;
-        }
-    } while (false);
-
-    free(srcPathChars);
-    free(destPathChars);
-    return TRUE;
-#else
-    if (KERNEL_DEBUG) {
-        printf("LZMA not compiled in!\n");
-    }
-
-    return FALSE;
-#endif // EXTRA_COMP_INSTALL_PATH
-}
-
-/**
- * Compress file sourcePath with "extra" algorithm (e.g. 7-Zip LZMA)
- * if available, put the compressed data into file destPath and
- * return true. If extra compression is not available do nothing
- * with destPath and return false;
- * @param srcPath the path of the uncompressed file
- * @param destPath the path of the compressed file, if used
- * @return true if the extra algorithm was used and destPath created
- *
- * @throws IOException if the extra compression code should be available
- *     but cannot be located or linked to, the destination file already
- *     exists or cannot be opened for writing, or the compression fails
- */
-JNIEXPORT jboolean JNICALL Java_sun_jkernel_Bundle_extraCompress
-        (JNIEnv *env, jclass dm, jstring srcPath, jstring destPath) {
-    return extraCommon(true, env, dm, srcPath, destPath);
-}
-
-/**
- * Uncompress file sourcePath with "extra" algorithm (e.g. 7-Zip LZMA)
- * if available, put the uncompressed data into file destPath and
- * return true. If if the extra algorithm is not available, leave the
- * destination path unchanged and return false;
- * @param srcPath the path of the file having extra compression
- * @param destPath the path of the uncompressed file
- * @return true if the extra algorithm was used
- *
- * @throws IOException if the extra uncompression code should be available
- *     but cannot be located or linked to, the destination file already
- *     exists or cannot be opened for writing, or the uncompression fails
- */
-
-JNIEXPORT jboolean JNICALL Java_sun_jkernel_Bundle_extraUncompress
-        (JNIEnv *env, jclass dm, jstring srcPath, jstring destPath) {
-    return extraCommon(false, env, dm, srcPath, destPath);
-}
-
-
-JNIEXPORT void JNICALL Java_sun_jkernel_DownloadManager_addToTotalDownloadSize
-    (JNIEnv *env, jclass dm, jint size) {
-    dlg.addToTotalContentLength(size);
-}
-
-JNIEXPORT void JNICALL Java_sun_jkernel_DownloadManager_downloadFromURLImpl
-    (JNIEnv *env, jclass dm, jstring url, jobject file, jstring name,
-        jboolean showProgress) {
-    jclass object = env->FindClass("java/lang/Object");
-    jmethodID toString = env->GetMethodID(object, "toString", "()Ljava/lang/String;");
-    jstring urlString = (jstring) env->CallObjectMethod(url, toString);
-    char* urlChars = getStringPlatformChars(env, urlString);
-    if (KERNEL_DEBUG) {
-        printf("Kernel downloadFromURL: %s\n", urlChars);
-    }
-    jstring fileString = (jstring) env->CallObjectMethod(file, toString);
-    char* fileChars = getStringPlatformChars(env, fileString);
-    char* nameChars = getStringPlatformChars(env, name);
-
-    JavaVM *jvm;
-    env->GetJavaVM(&jvm);
-
-    __try
-    {
-
-        m_csCreateDialog.Lock();
-        if (createDialog && showProgress) {
-            // create download progress dialog in a new thread
-            dlg.setJavaVM(jvm);
-            createDownloadWindow(&dlg);
-            createDialog = FALSE;
-        }
-
-    }
-    __finally
-    {
-        m_csCreateDialog.Unlock();
-    }
-
-    DownloadHelper dh;
-
-    dh.setJavaVM(jvm);
-    dh.setURL(urlChars);
-    dh.setFile(fileChars);
-    dh.setNameText((char*) nameChars);
-    dh.setShowProgressDialog(showProgress);
-    dh.setDownloadDialog(&dlg);
-
-    if (dh.doDownload() != S_OK) {
-        // remove incomplete file
-        int ret = DeleteFile(fileChars);
-    }
-
-    free(urlChars);
-    free(fileChars);
-    free(nameChars);
-}
-
-
-void error(char* msg) {
-    MessageBox(NULL, msg, "Java Error", MB_OK);
-}
-
-
-// Replace the dest file with the src file.  Returns zero on success, Windows
-// error code otherwise.
-int replace(TCHAR* fullDest, TCHAR* fullSrc) {
-    struct _stat stat;
-    int result = _stat(fullSrc, &stat);
-    if (result == 0) {
-        DeleteFile(fullDest);
-        if (MoveFile(fullSrc, fullDest))
-            return 0;
-        else
-            return GetLastError();
-    }
-    else
-        return ENOENT; // src file not found
-}
-
-
-// Replace the dest file with the src file, where both paths are relative to
-// the specified root.  Returns zero on success, Windows error code otherwise.
-int replaceRelative(TCHAR* root, TCHAR* dest, TCHAR* src) {
-    TCHAR fullDest[MAX_PATH];
-    TCHAR fullSrc[MAX_PATH];
-    strcpy(fullDest, root);
-    strcat(fullDest, dest);
-    strcpy(fullSrc, root);
-    strcat(fullSrc, src);
-    return replace(fullDest, fullSrc);
-}
-
-
-// Atomically deletes a file tree.  Returns zero on success, Windows
-// error code otherwise.
-int deleteAll(TCHAR* root) {
-    TCHAR tmp[MAX_PATH];
-    if (strlen(root) + 5 > MAX_PATH)
-        return ERROR_BUFFER_OVERFLOW;
-    strcpy(tmp, root);
-    strcat(tmp, ".tmp");
-    struct _stat stat;
-    int result = _stat(tmp, &stat);
-    if (result == 0) {
-        result = !deleteAll(tmp);
-        if (result)
-            return result;
-    }
-    if (!MoveFile(root, tmp))
-        return GetLastError();
-    struct _SHFILEOPSTRUCTA fileOp;
-    memset(&fileOp, NULL, sizeof(fileOp));
-    fileOp.wFunc = FO_DELETE;
-    TCHAR pFrom[MAX_PATH + 1];
-    strcpy(pFrom, tmp);
-    pFrom[strlen(pFrom) + 1] = NULL; // extra null to signify that there is only one file in the list
-    fileOp.pFrom = pFrom;
-    fileOp.fFlags = FOF_NOCONFIRMATION | FOF_SILENT | FOF_NOERRORUI;
-    return SHFileOperation(&fileOp);
-}
-
-
-// moves all file with "wait='true'" specified in bundles.xml into their final
-// locations.  These files are stored under lib/bundles/tmp, e.g. lib/meta-index
-// is stored at lib/bundles/tmp/lib/meta-index.
-// relativePath is the current relative path we are searching (e.g. "lib" for the
-// example above), which begins as the empty string.
-int moveDelayedFiles(TCHAR* javaHome, TCHAR* relativePath) {
-    TCHAR src[MAX_PATH];
-    TCHAR* tmp = "lib\\bundles\\tmp";
-    if (strlen(javaHome) + strlen(relativePath) + strlen(tmp) > MAX_PATH) {
-        error("Path too long.");
-        return ERROR_BUFFER_OVERFLOW;
-    }
-    strcpy(src, javaHome);
-    strcat(src, tmp);
-    if (relativePath[0] != NULL) {
-        strcat(src, "\\");
-        strcat(src, relativePath);
-    }
-
-    struct _stat stat;
-    int result = _stat(src, &stat);
-    if (result == 0) {
-        if (stat.st_mode & _S_IFDIR) { // is a directory, loop through contents
-            strcat(src, "\\*");
-            struct _WIN32_FIND_DATAA file;
-            HANDLE findHandle = FindFirstFile(src, &file);
-            if (findHandle != INVALID_HANDLE_VALUE) {
-                do {
-                    if (file.cFileName[0] != '.') {
-                        char child[MAX_PATH];
-                        strcpy(child, relativePath);
-                        strcat(child, "\\");
-                        strcat(child, file.cFileName);
-                        moveDelayedFiles(javaHome, child);
-                    }
-                }
-                while (FindNextFile(findHandle, &file) != 0);
-                FindClose(findHandle);
-            }
-        }
-        else { // normal file, move into place
-            if (strcmp(relativePath, "\\finished")) {
-                TCHAR dest[MAX_PATH];
-                strcpy(dest, javaHome);
-                strcat(dest, relativePath);
-
-                DeleteFile(dest); // just in case; ignore failures
-                if (MoveFile(src, dest))
-                    return 0;
-                else
-                    return GetLastError();
-            }
-        }
-    }
-    return result;
-}
-
-
-// activates Class Data Sharing
-void activateCDS(const char *javaHome) {
-    char java[MAX_PATH];
-    strcpy(java, javaHome);
-    strcat(java, "bin\\javaw.exe");
-
-    STARTUPINFO si;
-    PROCESS_INFORMATION pi;
-    ZeroMemory(&si, sizeof(si));
-    si.cb = sizeof(si);
-    ZeroMemory(&pi, sizeof(pi));
-    const char *args = " -Xshare:dump";
-    const int argLength = 13;
-    char commandLine[MAX_PATH + argLength + 2];
-    strcpy(commandLine, "\"");
-    strcat(commandLine, java);
-    strcat(commandLine, "\"");
-    strcat(commandLine, args);
-    if (KERNEL_DEBUG)
-        printf("Exec: %s\n", commandLine);
-    if (CreateProcess(java, commandLine, NULL, NULL, FALSE, 0,
-            NULL, NULL, &si, &pi)) {
-        CloseHandle(pi.hProcess);
-        CloseHandle(pi.hThread);
-    }
-    else
-        printf("Error initializing Class Data Sharing: %d", GetLastError());
-}
-
-typedef BOOL (*LPFNInstallJQS)();
-
-// activates the Java Quickstart Service
-void activateJQS(HMODULE hModule) {
-    LPFNInstallJQS lpfnInstallJQS;
-
-    if (hModule != NULL) {
-        lpfnInstallJQS = (LPFNInstallJQS)GetProcAddress(hModule, "InstallJQS");
-        if (lpfnInstallJQS != NULL) {
-            if ((lpfnInstallJQS)() == false && KERNEL_DEBUG) {
-                printf("InstallJQS returned FALSE\n");
-            }
-        }
-    }
-}
-
-// determines JAVA_HOME and stores it in the specified buffer.  Returns true on success.
-BOOL getJavaHome(char* buffer, int bufferSize) {
-    HMODULE kernel = GetModuleHandle("jkernel");
-    if (kernel != NULL) {
-        DWORD result = GetModuleFileName(kernel, buffer, bufferSize);
-        if (result > 0) {
-            getParent(buffer, buffer); // remove "jkernel.dll"
-            if (buffer[0] != NULL)
-                getParent(buffer, buffer); // remove "bin"
-            if (buffer[0] != NULL) {
-                strcat(buffer, "\\");
-                return TRUE;
-            }
-        }
-    }
-    return FALSE;
-}
-
-typedef unsigned int (WINAPI *LPFNPostPing)(LPVOID err);
-HANDLE PostPing(HMODULE hModule, char* fname, DWORD err)
-{
-    LPFNPostPing lpfnPostPing;
-    HANDLE hThread = NULL;
-    lpfnPostPing = (LPFNPostPing)GetProcAddress(hModule, fname);
-    if (lpfnPostPing != NULL) {
-        printf("############# ERROR CODE: %d\n", err);
-        hThread = (HANDLE)_beginthreadex(NULL, 0, lpfnPostPing,
-                                             (LPVOID)err, 0, NULL);
-        if (hThread == NULL)
-            lpfnPostPing((LPVOID)err);
-    }
-    return hThread;
-}
-
-void postPingAndWait(char* fname, DWORD err) {
-    TCHAR path[MAX_PATH];
-    if (getJavaHome(path, MAX_PATH)) {
-        strcat(path, "bin\\regutils.dll");
-        HANDLE hThread = NULL;
-        HMODULE hModule = LoadLibrary(path);
-        if (hModule != NULL) {
-            hThread = PostPing(hModule, fname, err);
-            if (hThread != NULL) {
-                DWORD dwRet = 0;
-                WaitForSingleObject(hThread, 60*1000);
-                GetExitCodeThread(hThread, &dwRet);
-                CloseHandle(hThread);
-            }
-        }
-    }
-    else
-        printf("error determining JAVA_HOME for ping\n");
-}
-
-JNIEXPORT void JNICALL Java_sun_jkernel_DownloadManager_postDownloadError
-        (JNIEnv *env, jclass dm, jint error) {
-    postPingAndWait("PostKernelDLComp", error);
-}
-
-JNIEXPORT void JNICALL Java_sun_jkernel_DownloadManager_postDownloadComplete
-        (JNIEnv *env, jclass dm) {
-    Java_sun_jkernel_DownloadManager_postDownloadError(env, dm, ERROR_SUCCESS);
-}
-
-bool spawnedFromJBroker() {
-    return strstr(GetCommandLine(), JBROKER_KEY) != NULL;
-}
-
-
-// Determines if we have sufficient access to go ahead and perform completion.
-// This is true either if we are not on Vista (in which case we can't elevate
-// privileges anyway and have to hope for the best) or if we are on Vista and
-// running at High integrity level.
-bool highIntegrity() {
-    if (!IsPlatformWindowsVista())
-        return TRUE;
-    else {
-        // directly determining this would require access to Vista-specific
-        // APIs, which aren't supported by our current build configurations.
-        // Instead we look for the presence of a flag on the command line to
-        // indicate that we were launched by the jbroker process.  This is
-        // actually safer, as it prevents us from re-launching another JRE in
-        // the event that we somehow didn't end up with high integrity.
-        return spawnedFromJBroker();
-    }
-}
-
-JNIEXPORT jint JNICALL Java_sun_jkernel_DownloadManager_getCurrentProcessId
-        (JNIEnv *env, jclass dm) {
-    return (jint) GetCurrentProcessId();
-}
-
-JNIEXPORT jstring JNICALL Java_sun_jkernel_DownloadManager_getVisitorId0
-        (JNIEnv *env, jclass dm) {
-    CRegKey swKey, jsKey, juKey, pKey;
-    if (swKey.Open(HKEY_LOCAL_MACHINE, "SOFTWARE", KEY_READ) != ERROR_SUCCESS){
-        return NULL;
-    }
-
-    if (jsKey.Open(swKey, "JavaSoft", KEY_READ) != ERROR_SUCCESS){
-        return NULL;
-    }
-
-    if (juKey.Open(jsKey, "Java Update", KEY_READ) != ERROR_SUCCESS){
-        return NULL;
-    }
-
-    if (pKey.Open(juKey, "Policy", KEY_READ) != ERROR_SUCCESS){
-        return NULL;
-    }
-
-    DWORD dwCount = BUFSIZE;
-    char* keyValue = new char[BUFSIZE];
-    if (pKey.QueryValue(keyValue, "VisitorId", &dwCount) != ERROR_SUCCESS){
-        return NULL;
-    }
-    jstring visitorId = env->NewStringUTF(keyValue);
-
-    return visitorId;
-}
-
-
-JNIEXPORT jstring JNICALL Java_sun_jkernel_DownloadManager_getUrlFromRegistry
-        (JNIEnv *env, jclass dm) {
-
-    CRegKey swKey, jsKey;
-    if (swKey.Open(HKEY_LOCAL_MACHINE, "SOFTWARE", KEY_READ) != ERROR_SUCCESS){
-        return NULL;
-    }
-
-    if (jsKey.Open(swKey, "JavaSoft", KEY_READ) != ERROR_SUCCESS){
-        return NULL;
-    }
-
-    DWORD dwCount = BUFSIZE;
-        char * keyValue = new char[BUFSIZE];
-    if (jsKey.QueryValue(keyValue, "KernelDownloadUrl", &dwCount) != ERROR_SUCCESS){
-        return NULL;
-    }
-
-    jstring downloadKeyValue = env->NewStringUTF(keyValue);
-
-    return downloadKeyValue;
-}
-
-
-
-jboolean getBooleanRegistryKey(char *name, jboolean defaultValue) {
-    // Check DWORD registry key
-    // HKEY_LOCAL_MACHINE/Software/JavaSoft/<name>
-
-    CRegKey swKey, jsKey;
-    if (swKey.Open(HKEY_LOCAL_MACHINE, "SOFTWARE", KEY_READ) != ERROR_SUCCESS){
-        return NULL;
-    }
-
-    if (jsKey.Open(swKey, "JavaSoft", KEY_READ) != ERROR_SUCCESS){
-        return NULL;
-    }
-
-    DWORD dwValue = 0;
-    if (jsKey.QueryValue(dwValue, name) != ERROR_SUCCESS){
-
-        // Key does not exist, will return default value
-        return defaultValue;
-    }
-
-    return dwValue != 0;
-}
-
-
-JNIEXPORT jboolean JNICALL Java_sun_jkernel_BackgroundDownloader_getBackgroundDownloadKey
-        (JNIEnv *env, jclass dm) {
-    return getBooleanRegistryKey("KernelBackgroundDownload", TRUE);
-}
-
-
-JNIEXPORT jboolean JNICALL Java_sun_jkernel_DownloadManager_getDebugKey
-        (JNIEnv *env, jclass dm) {
-    return getBooleanRegistryKey("KernelDebug", FALSE);
-}
-
-
-// Called by the launcher before the JVM starts.  If all kernel bundles have been
-// downloaded, this function performs various post-download cleanups such as
-// moving the merged rt.jar into place.  At the end of cleanup, the JRE should
-// be indistinguishable from the non-kernel JRE.
-void preJVMStart() {
-    char rawMsg[BUFFER_SIZE];
-    char msg[BUFFER_SIZE];
-    HMODULE kernel = GetModuleHandle("jkernel");
-    if (kernel != NULL) {
-        TCHAR javaHome[MAX_PATH];
-        DWORD result = GetModuleFileName(kernel, javaHome, MAX_PATH);
-        if (result > 0) {
-            getParent(javaHome, javaHome); // remove "jkernel.dll"
-            if (javaHome[0] != NULL)
-                getParent(javaHome, javaHome); // remove "bin"
-            if (javaHome[0] != NULL) {
-                // should now be pointing to correct java.home
-                strcat(javaHome, "\\");
-                bool jbroker = spawnedFromJBroker();
-                HANDLE file;
-                TCHAR rt[MAX_PATH];
-                strcpy(rt, javaHome);
-                strcat(rt, "lib\\rt.jar");
-                HANDLE startMutex = CreateMutex(NULL, FALSE, "jvmStart");
-                if (!jbroker) { // else mutex is already held by the pre-jbroker JVM
-                    if (KERNEL_DEBUG)
-                        printf("Locking startMutex\n");
-                    WaitForSingleObject(startMutex, INFINITE);
-                    if (KERNEL_DEBUG)
-                        printf("Locked startMutex\n");
-                    // open rt.jar for reading.  This prevents other JREs from being
-                    // able to acquire a write lock on rt.jar, which is used as a test
-                    // to ensure that no other JREs are running.
-                    // The failure to close the file handle is intentional -- if we
-                    // close it, there will be a brief window between the close and
-                    // when the JRE reopens it during which another jre could get
-                    // a write lock on it, hosing us.
-                    file = CreateFile(rt, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL);
-                    if (file == INVALID_HANDLE_VALUE) {
-                        ReleaseAndClose(startMutex);
-                        return;
-                    }
-                    if (KERNEL_DEBUG)
-                        printf("Opened rt.jar for reading\n");
-                }
-                TCHAR finished[MAX_PATH];
-                TCHAR* finishedPath = "lib\\bundles\\tmp\\finished";
-                if (strlen(javaHome) + strlen(finishedPath) < MAX_PATH) {
-                    strcpy(finished, javaHome);
-                    strcat(finished, finishedPath);
-                    struct _stat finishedStat;
-                    result = _stat(finished, &finishedStat);
-                    if (result == 0) { // JRE has been fully downloaded but not yet cleaned up
-                        if (KERNEL_DEBUG)
-                            printf("Beginning completion.\n");
-                        if (!jbroker)
-                            CloseHandle(file);
-                        if (highIntegrity()) {
-                            // attempt to open rt.jar for exclusive write access -- if this succeeds,
-                            // we know no other JREs are running
-                            file = CreateFile(rt, GENERIC_WRITE, NULL, NULL, OPEN_EXISTING, NULL, NULL);
-                            if (file == INVALID_HANDLE_VALUE) {
-                                // must be another JRE running...
-                                ReleaseAndClose(startMutex);
-                                return;
-                            }
-                            if (KERNEL_DEBUG)
-                                printf("Opened rt.jar for writing.\n");
-                            CloseHandle(file);
-                            if (KERNEL_DEBUG)
-                                printf("Closed rt.jar.\n");
-                            int result = replaceRelative(javaHome, "lib\\rt.jar",
-                                    "lib\\bundles\\tmp\\merged-rt.jar");
-                            if (result != 0 && result != ENOENT) {
-                                ::LoadString(_Module.GetModuleInstance(), IDS_FILE_UPDATE_ERROR, rawMsg, BUFFER_SIZE);
-                                wsprintf(msg, rawMsg, javaHome, "lib\\rt.jar");
-                                error(msg);
-                                ReleaseAndClose(startMutex);
-                                return;
-                            }
-                            result = replaceRelative(javaHome, "lib\\resources.jar",
-                                    "lib\\bundles\\tmp\\merged-resources.jar");
-                            if (result != 0 && result != ENOENT) {
-                                ::LoadString(_Module.GetModuleInstance(), IDS_FILE_UPDATE_ERROR, rawMsg, BUFFER_SIZE);
-                                wsprintf(msg, rawMsg, javaHome, "lib\\resources.jar");
-                                error(msg);
-                                ReleaseAndClose(startMutex);
-                                return;
-                            }
-
-                            TCHAR bundles[MAX_PATH];
-                            strcpy(bundles, javaHome);
-                            strcat(bundles, "lib\\bundles");
-                            if (moveDelayedFiles(javaHome, "")) {
-                                ::LoadString(_Module.GetModuleInstance(), IDS_FILE_UPDATE_ERROR, msg, BUFFER_SIZE);
-                                error(msg);
-                                ReleaseAndClose(startMutex);
-                                return;
-                            }
-
-                            TCHAR kernel[MAX_PATH];
-                            strcpy(kernel, javaHome);
-                            strcat(kernel, "bin\\kernel");
-                            result = deleteAll(kernel);
-                            if (result != 0 && result != ENOENT) {
-                                ::LoadString(_Module.GetModuleInstance(), IDS_FILE_DELETE_ERROR, rawMsg, BUFFER_SIZE);
-                                wsprintf(msg, rawMsg, kernel);
-                                error(msg);
-                                ReleaseAndClose(startMutex);
-                                return;
-                            }
-
-                            if (deleteAll(bundles)) {
-                                // fail silently, CR #6643218
-                                printf("deleteAll failed!\n");
-                                ReleaseAndClose(startMutex);
-                                return;
-                            }
-
-                            TCHAR kernelMap[MAX_PATH];
-                            strcpy(kernelMap, javaHome);
-                            strcat(kernelMap, "lib\\kernel.map");
-                            result = deleteAll(kernelMap);
-                            if (result != 0 && result != ENOENT) {
-                                ::LoadString(_Module.GetModuleInstance(), IDS_FILE_DELETE_ERROR, rawMsg, BUFFER_SIZE);
-                                wsprintf(msg, rawMsg, kernelMap);
-                                error(msg);
-                                ReleaseAndClose(startMutex);
-                                return;
-                            }
-
-                            strcpy(rt, javaHome);
-                            strcat(rt, "bin\\regutils.dll");
-                            HANDLE hThread = NULL;
-                            HMODULE hModule = LoadLibrary(rt);
-                            if (hModule != NULL)
-                                hThread = PostPing(hModule, "PostKernelComp", ERROR_SUCCESS);
-                            if (KERNEL_DEBUG)
-                                printf("Activating JQS.\n");
-                            activateJQS(hModule);
-
-                            if (KERNEL_DEBUG)
-                                printf("Activating CDS.\n");
-                            activateCDS(javaHome);
-
-                            if (hThread != NULL) {
-                                DWORD dwRet = 0;
-                                WaitForSingleObject(hThread, 60*1000);
-                                GetExitCodeThread(hThread, &dwRet);
-                                CloseHandle(hThread);
-                            }
-                            if (hModule != NULL)
-                                FreeLibrary(hModule);
-                        } else {
-                            bool jbroker = isJBrokerRunning();
-                            if (!jbroker) {
-                                // remove trailing slash
-                                javaHome[strlen(javaHome) - 1] = 0;
-                                jbroker = launchJBroker(javaHome);
-                                if (!jbroker) {
-                                    ::LoadString(_Module.GetModuleInstance(),
-                                                IDS_JBROKER_ERROR,
-                                                msg,
-                                                BUFFER_SIZE);
-                                    error(msg);
-                                }
-                            }
-                            if (jbroker)
-                                sendPerformCompletionMessageToBroker(javaHome);
-                        }
-                    }
-                }
-                if (KERNEL_DEBUG)
-                    printf("Releasing startMutex.\n");
-                ReleaseAndClose(startMutex);
-            } else {
-                ::LoadString(_Module.GetModuleInstance(), IDS_JAVA_HOME_ERROR, msg, BUFFER_SIZE);
-                error(msg);
-            }
-        } else {
-            ::LoadString(_Module.GetModuleInstance(), IDS_KERNEL_HOME_ERROR, msg, BUFFER_SIZE);
-            error(msg);
-        }
-    } else {
-        ::LoadString(_Module.GetModuleInstance(), IDS_KERNEL_HOME_ERROR, msg, BUFFER_SIZE);
-        error(msg);
-    }
-}
--- a/jdk/src/windows/native/sun/jkernel/kernel.def	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-;
-; Copyright 2008 - 2009 Sun Microsystems, Inc.  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.
-;
-
-LIBRARY jkernel
-EXPORTS
-   preJVMStart @1
--- a/jdk/src/windows/native/sun/jkernel/kernel.h	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-void preJVMStart();
--- a/jdk/src/windows/native/sun/jkernel/kernel.rc	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,210 +0,0 @@
-/*
- * Copyright (c) 2008, 2010, 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.
- */
-#include "version.rc"
-
-#include "resource.h"
-#define APSTUDIO_READONLY_SYMBOLS
-#include "afxres.h"
-#undef APSTUDIO_READONLY_SYMBOLS
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Icon
-//
-IDI_JAVA                ICON      DISCARDABLE     "graphics\\java-icon.ico"
-IDI_MASTHEAD            BITMAP    DISCARDABLE     "graphics\\masthead.bmp"
-
-/////////////////////////////////////////////////////////////////////////////
-// Include foreign resources
-/////////////////////////////////////////////////////////////////////////////
-
-/////////////////////////////////////////////////////////////////////////////
-// Japanese resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)
-#ifdef _WIN32
-LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
-#pragma code_page(932)
-#endif //_WIN32
-#include "kernel_ja.rc"
-#endif	  // Japanese resources
-/////////////////////////////////////////////////////////////////////////////
-
-/////////////////////////////////////////////////////////////////////////////
-// Chinese (P.R.C.) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
-#ifdef _WIN32
-LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
-#pragma code_page(936)
-#endif //_WIN32
-#include "kernel_zh.rc"
-#endif	  // Chinese (P.R.C.) resources
-/////////////////////////////////////////////////////////////////////////////
-
-/////////////////////////////////////////////////////////////////////////////
-// Korean resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)
-#ifdef _WIN32
-LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
-#pragma code_page(949)
-#endif //_WIN32
-#include "kernel_ko.rc"
-#endif	  // Korean resources
-/////////////////////////////////////////////////////////////////////////////
-
-/////////////////////////////////////////////////////////////////////////////
-// Chinese (Taiwan) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHT)
-#ifdef _WIN32
-LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
-#pragma code_page(950)
-#endif //_WIN32
-#include "kernel_zh_TW.rc"
-#endif	  // Chinese (Taiwan) resources
-/////////////////////////////////////////////////////////////////////////////
-
-/////////////////////////////////////////////////////////////////////////////
-// German (Germany) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)
-#ifdef _WIN32
-LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
-#pragma code_page(1252)
-#endif //_WIN32
-#include "kernel_de.rc"
-#endif	  // German (Germany) resources
-/////////////////////////////////////////////////////////////////////////////
-
-/////////////////////////////////////////////////////////////////////////////
-// Spanish (Castilian) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ESP)
-#ifdef _WIN32
-LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
-#pragma code_page(1252)
-#endif //_WIN32
-#include "kernel_es.rc"
-#endif	  // Spanish (Castilian) resources
-/////////////////////////////////////////////////////////////////////////////
-
-/////////////////////////////////////////////////////////////////////////////
-// French (France) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA)
-#ifdef _WIN32
-LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
-#pragma code_page(1252)
-#endif //_WIN32
-#include "kernel_fr.rc"
-#endif	  // French (France) resources
-/////////////////////////////////////////////////////////////////////////////
-
-/////////////////////////////////////////////////////////////////////////////
-// Italian (Italy) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ITA)
-#ifdef _WIN32
-LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
-#pragma code_page(1252)
-#endif //_WIN32
-#include "kernel_it.rc"
-#endif	  // Italian (Italy) resources
-/////////////////////////////////////////////////////////////////////////////
-
-/////////////////////////////////////////////////////////////////////////////
-// Swedish resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_SVE)
-#ifdef _WIN32
-LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
-#pragma code_page(1252)
-#endif //_WIN32
-#include "kernel_sv.rc"
-#endif	  // Swedish resources
-/////////////////////////////////////////////////////////////////////////////
-
-/////////////////////////////////////////////////////////////////////////////
-// Brazilian Portuguese resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_PTB)
-#ifdef _WIN32
-LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
-#pragma code_page(1252)
-#endif //_WIN32
-#include "kernel_pt_BR.rc"
-#endif    // Brazilian Portuguese resources
-/////////////////////////////////////////////////////////////////////////////
-
-/////////////////////////////////////////////////////////////////////////////
-// English (U.S.) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-#ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-#pragma code_page(1252)
-#endif //_WIN32
-#include "kernel_en.rc"
-#endif	  // English resources
-
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE DISCARDABLE 
-BEGIN
-    "resource.h\0"
-END
-
-2 TEXTINCLUDE DISCARDABLE 
-BEGIN
-    "#include ""afxres.h""\r\n"
-    "\0"
-END
-
-3 TEXTINCLUDE DISCARDABLE 
-BEGIN
-    "\r\n"
-    "\0"
-END
-
-#endif    // APSTUDIO_INVOKED
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif    // not APSTUDIO_INVOKED
--- a/jdk/src/windows/native/sun/jkernel/kernel_de.rc	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 340, 120
-STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | 
-    WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "Zusätzliche Komponenten erforderlich"
-EXSTYLE WS_EX_APPWINDOW
-FONT 8, "MS Sans Serif"
-BEGIN
-    LTEXT           "", IDC_DOWNLOAD_MASTHEAD, 0, 0, 340, 39
-    LTEXT           "", IDC_MASTHEAD_TEXT, 60, 4, 220, 30
-    CONTROL         "", IDC_STATIC,"Static", SS_BLACKFRAME | SS_SUNKEN,
-                    0, 39, 340, 1
-    LTEXT           "", IDC_DOWNLOAD_TEXT, 12, 60, 316, 20
-    LTEXT           "", IDC_TIME_REMAINING, 12, 90, 316, 10
-    CONTROL         "Progress1",1006,"msctls_progress32",PBS_SMOOTH,
-                    12, 100, 265, 14
-    PUSHBUTTON	    "Abbrechen",  2, 285, 100, 46, 14
-END
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO DISCARDABLE 
-BEGIN
-    105, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 236
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 63
-    END
-END
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// String Table
-//
-
-STRINGTABLE DISCARDABLE 
-BEGIN
-    IDS_DOWNLOAD_CANCEL_MESSAGE   "Wenn Sie die Installation zusätzlicher Komponenten, die für die Anwendung erforderlich sind, abbrechen, wird die Anwendung möglicherweise geschlossen.\n\nMöchten Sie die Installation zusätzlicher Komponenten wirklich abbrechen?"
-    IDS_DOWNLOAD_CANCEL_CAPTION   "Abbrechen - Zusätzliche Komponenten"
-    IDS_DOWNLOAD_CANCEL_INSTRUCTION   ""
-    IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT      "Verbindungszeitüberschreitung"
-    IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE "Internetverbindung kann nicht hergestellt werden"
-    IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR        "Serverfehler (Fehler %s)"
-    IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL      "Der Dienst nicht verfügbar (Fehler %s)"
-    IDS_HTTP_INSTRUCTION_FORBIDDEN            "Zugriff verweigert oder verboten (Fehler %s)"
-    IDS_HTTP_STATUS_OTHER                     "Bei der Anfrage ist ein Fehler aufgetreten. Möchten Sie die Anfrage wiederholen?"
-
-// HTTP status code
-    IDS_HTTP_STATUS_REQUEST_TIMEOUT "Während der Server auf die Anforderung wartete, kam es zu einer Zeitüberschreitung."
-    IDS_HTTP_STATUS_FORBIDDEN		"Der Server hat die Anforderung verstanden, verweigert jedoch deren Ausführung."
-    IDS_HTTP_STATUS_SERVER_ERROR	"Der Server stieß auf eine unerwartete Bedingung, die das Ausführen der Anforderung verhinderte."
-    IDS_HTTP_STATUS_SERVICE_UNAVAIL	"Der Dienst ist vorübergehend überlastet."
-
-
-    IDS_DOWNLOAD_STATUS_RETRY		"Server beschäftigt. Erneuter Versuch in %ld Sekunden ..."
-
-    IDS_ERROR_CAPTION               "Fehler - Java Kernel"
-    IDS_HOURSMINUTESECOND	    "Verbleibende Zeit (geschätzt): %d Stunden, %d Minuten und %.0f Sekunden"
-    IDS_HOURMINUTESECOND	    "Verbleibende Zeit (geschätzt): %d Stunde, %d Minuten und %.0f Sekunden"
-    IDS_MINUTESECOND 		    "Verbleibende Zeit (geschätzt): %d Minuten %.0f Sekunden"
-    IDS_SECOND                      "Verbleibende Zeit (geschätzt): %.0f Sekunden"
-    IDS_DISK_FULL_ERROR_CAPTION     "Festplatte voll"
-    IDS_DISK_FULL_ERROR             "Java Kernel konnte erforderliche Komponenten nicht herunterladen, da der Datenträger voll ist.  Noch einmal versuchen?"
-    IDS_DISK_WRITE_ERROR_CAPTION    "Fehler beim Schreiben auf Datenträger"
-    IDS_DISK_WRITE_ERROR            "Java Kernel hat beim Schreiben uf den Datenträger einen Fehler verursacht  Noch einmal versuchen?"
-    IDS_HTTP_STATUS_SERVER_NOT_REACHABLE "Java Kernel kann aufgrund der aktuellen Internetverbindungseinstellungen Ihres Systems nicht fortfahren.  Überprüfen Sie in der Windows-Systemsteuerung unter 'Internetoptionen -> Verbindungen' die Einstellungen und Proxy-Angaben."
-
-    IDS_DOWNLOAD_RETRY             "Downloadfehler"
-    IDS_DOWNLOAD_RETRY_TEXT        "Beim Herunterladen einiger benötigter Komponenten ist ein Fehler aufgetreten. Möchten Sie noch einmal versuchen, diese Komponenten herunterzuladen?"
-
-    IDS_DOWNLOAD                   "Zusätzliche Komponenten werden installiert."
-    IDS_DOWNLOAD_UNPACKING         "Entpacken des Pakets"
-    IDS_DOWNLOAD_TEXT              "Die Java-Anwendung wird starten, sobald zusätzliche Komponenten heruntergeladen und installiert sind."
-    
-    IDS_FILE_UPDATE_ERROR          "Beim Aktualisieren von %s%s ist ein Fehler aufgetreten."
-    IDS_FILE_DELETE_ERROR          "Beim Entfernen von %s ist ein Fehler aufgetreten."
-    IDS_JAVA_HOME_ERROR            "Java-Verzeichnis kann nicht ermittelt werden."
-    IDS_KERNEL_HOME_ERROR          "Pfad der jkernel.dll kann nicht ermittelt werden."
-    IDS_JBROKER_ERROR              "jbroker.exe kann nicht gestartet werden."
-    IDS_FATAL_ERROR                "Java konnte einige erforderliche Komponenten nicht herunterladen.  Das Programm wird geschlossen."
-    IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES "Java konnte keine Verbindung zum Downloadserver herstellen.  Das Programm wird geschlossen."
-    IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES "Bei der Verbindung mit dem Downloadserver ist ein Fehler aufgetreten.  Das Programm wird geschlossen."
-    IDS_ERROR_MALFORMED_URL "Java konnte von URL '%s' keinen Dowload ausführen.  Das Programm wird geschlossen."
-END
--- a/jdk/src/windows/native/sun/jkernel/kernel_en.rc	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,122 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 340, 120
-STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | 
-    WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "Additional Components Needed"
-EXSTYLE WS_EX_APPWINDOW
-FONT 8, "MS Sans Serif"
-BEGIN
-    LTEXT           "", IDC_DOWNLOAD_MASTHEAD, 0, 0, 340, 39
-    LTEXT           "", IDC_MASTHEAD_TEXT, 60, 14, 200, 12
-    CONTROL         "", IDC_STATIC,"Static", SS_BLACKFRAME | SS_SUNKEN,
-                    0, 39, 340, 1
-    LTEXT           "", IDC_DOWNLOAD_TEXT, 12, 60, 316, 20
-    LTEXT           "", IDC_TIME_REMAINING, 12, 90, 316, 10
-    CONTROL         "Progress1",1006,"msctls_progress32",PBS_SMOOTH,
-                    12, 100, 265, 14
-    PUSHBUTTON	    "Cancel",  2, 285, 100, 46, 14
-END
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO DISCARDABLE 
-BEGIN
-    105, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 236
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 63
-    END
-END
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// String Table
-//
-
-STRINGTABLE DISCARDABLE 
-BEGIN
-    IDS_DOWNLOAD_CANCEL_MESSAGE   "Canceling the installation of additional components which the application needs may cause the application to exit.\n\nAre you sure you want to cancel the installation of additional components?"
-    IDS_DOWNLOAD_CANCEL_CAPTION   "Cancel - Additional Components"
-    IDS_DOWNLOAD_CANCEL_INSTRUCTION   ""
-    IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT      "Connection Timed Out"
-    IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE "Unable to connect to the Internet"
-    IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR        "Server error (Error %s)"
-    IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL      "Service Unavailable (Error %s)"
-    IDS_HTTP_INSTRUCTION_FORBIDDEN            "Access Denied or Forbidden (Error %s)"
-    IDS_HTTP_STATUS_OTHER                     "An error has occured during this request. Do you want to try the request again?"
-
-// HTTP status code
-    IDS_HTTP_STATUS_REQUEST_TIMEOUT "The server used to download the requested components is not responding and the connection has timed out. Do you want to try to connect again?"
-    IDS_HTTP_STATUS_FORBIDDEN		"You do not have permission to access the server to download the components requested by the application. Retry your access to the server?"
-    IDS_HTTP_STATUS_SERVER_ERROR	"An error occured on the server and it could not complete the request. Do you want to try the request again?"
-    IDS_HTTP_STATUS_SERVICE_UNAVAIL	"The requested service is temporarily unavailable. Do you want to try the request again?"
-
-
-    IDS_DOWNLOAD_STATUS_RETRY		"Server is currently busy, retry in %ld seconds ..."
-  
-    IDS_ERROR_CAPTION               "Java Installer"
-    IDS_HOURSMINUTESECOND	    "Estimated time remaining: %d hours %d minutes %.0f seconds"
-    IDS_HOURMINUTESECOND	    "Estimated time remaining: %d hour %d minutes %.0f seconds"
-    IDS_MINUTESECOND 		    "Estimated time remaining: %d minutes %.0f seconds"
-    IDS_SECOND                      "Estimated time remaining: %.0f seconds"
-    IDS_DISK_FULL_ERROR_CAPTION     "Disk Full %s"
-    IDS_DISK_FULL_ERROR             "There is not enough space on the disk to download the requested components. Clear space on the disk and then Retry."
-    IDS_DISK_WRITE_ERROR_CAPTION    "Can't write to the disk %s"
-    IDS_DISK_WRITE_ERROR            "An error occurred during writing to the disk. Please check that the disk is not write protected."
-    IDS_HTTP_STATUS_SERVER_NOT_REACHABLE "Java cannot connect to the Internet. Please check that the Internet Connection settings are correct (these can be found in the Windows Control Panel under Internet Options > Connection) and that your firewall allows java.exe to access the Internet."
-
-    IDS_DOWNLOAD_RETRY             "Download error"
-    IDS_DOWNLOAD_RETRY_TEXT        "An error occurred during the download of some requested components. Do you want to try the download of these components again?"
-
-    IDS_DOWNLOAD                   "Installing Additional Components"
-    IDS_DOWNLOAD_UNPACKING         "Unpacking bundle"
-    IDS_DOWNLOAD_TEXT              "The Java application will start when additional components that it requires are downloaded and installed."
-    
-    IDS_FILE_UPDATE_ERROR          "An error occurred while updating %s%s."
-    IDS_FILE_DELETE_ERROR          "An error occurred while removing %s."
-    IDS_JAVA_HOME_ERROR            "Unable to determine Java home directory."
-    IDS_KERNEL_HOME_ERROR          "Unable to determine path to jkernel.dll."
-    IDS_JBROKER_ERROR              "Unable to launch jbroker.exe."
-    IDS_FATAL_ERROR                "Java was unable to download required components.  The program will now exit."
-    IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES "Java was unable to communicate with the download server.  The program will now exit."
-    IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES "Java encountered an error communicating with the download server.  The program will now exit."
-    IDS_ERROR_MALFORMED_URL "Java was unable to download from the URL '%s'.  The program will now exit."
-END
--- a/jdk/src/windows/native/sun/jkernel/kernel_es.rc	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 340, 120
-STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | 
-    WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "Componentes adicionales necesarios"
-EXSTYLE WS_EX_APPWINDOW
-FONT 8, "MS Sans Serif"
-BEGIN
-    LTEXT           "", IDC_DOWNLOAD_MASTHEAD, 0, 0, 340, 39
-    LTEXT           "", IDC_MASTHEAD_TEXT, 60, 8, 225, 20
-    CONTROL         "", IDC_STATIC,"Static", SS_BLACKFRAME | SS_SUNKEN,
-                    0, 39, 340, 1
-    LTEXT           "", IDC_DOWNLOAD_TEXT, 12, 60, 316, 20
-    LTEXT           "", IDC_TIME_REMAINING, 12, 90, 316, 10
-    CONTROL         "Progress1",1006,"msctls_progress32",PBS_SMOOTH,
-                    12, 100, 265, 14
-    PUSHBUTTON	    "Cancelar",  2, 285, 100, 46, 14
-END
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO DISCARDABLE 
-BEGIN
-    105, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 236
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 63
-    END
-END
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// String Table
-//
-
-STRINGTABLE DISCARDABLE 
-BEGIN
-    IDS_DOWNLOAD_CANCEL_MESSAGE   "Cancelar la instalación de los componentes adicionales que necesita la aplicación puede hacer que se cierre la aplicación.\n\n¿Seguro que desea cancelar la instalación de componentes adicionales?"
-    IDS_DOWNLOAD_CANCEL_CAPTION   "Cancelar - Componentes adicionales"
-    IDS_DOWNLOAD_CANCEL_INSTRUCTION   ""
-    IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT      "Se ha agotado el tiempo de espera de la conexión"
-    IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE "No es posible conectarse a Internet"
-    IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR        "Ha habido un error en el servidor (error %s)"
-    IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL      "El servicio no está disponible (error %s)"
-    IDS_HTTP_INSTRUCTION_FORBIDDEN            "El acceso se ha denegado o está prohibido (error %s)"
-    IDS_HTTP_STATUS_OTHER                     "Ha habido un error en el transcurso de esta solicitud. ¿Desea ejecutar de nuevo la solicitud?"
-
-// HTTP status code
-    IDS_HTTP_STATUS_REQUEST_TIMEOUT "El servidor ha agotado el tiempo de espera de la solicitud."
-    IDS_HTTP_STATUS_FORBIDDEN		"El servidor ha podido interpretar la solicitud, pero la rechaza."
-    IDS_HTTP_STATUS_SERVER_ERROR	"El servidor ha encontrado una condición inesperada que le ha impedido satisfacer la solicitud."
-    IDS_HTTP_STATUS_SERVICE_UNAVAIL	"El servicio está temporalmente sobrecargado."
-
-
-    IDS_DOWNLOAD_STATUS_RETRY		"El servidor está ocupado en este momento, se volverá a intentar la conexión en %ld segundos..."
-
-    IDS_ERROR_CAPTION               "Error - Java Kernel"
-    IDS_HOURSMINUTESECOND	    "Tiempo restante estimado: %d horas %d minutos %.0f segundos"
-    IDS_HOURMINUTESECOND	    "Tiempo restante estimado: %d hora %d minutos %.0f segundos"
-    IDS_MINUTESECOND 		    "Tiempo restante estimado: %d minutos %.0f segundos"
-    IDS_SECOND                      "Tiempo restante estimado: %.0f segundos"
-    IDS_DISK_FULL_ERROR_CAPTION     "Disco lleno"
-    IDS_DISK_FULL_ERROR             "Java Kernel no puede descargar los componentes necesarios porque el disco está lleno.  ¿Desea volver a intentarlo?"
-    IDS_DISK_WRITE_ERROR_CAPTION    "Error de escritura en disco"
-    IDS_DISK_WRITE_ERROR            "Se ha producido un error cuando Java Kernel intentaba escribir en el disco.  ¿Desea volver a intentarlo?"
-    IDS_HTTP_STATUS_SERVER_NOT_REACHABLE "Java Kernel no puede continuar con la configuración actual de conexión a Internet del sistema.  En el Panel de control de Windows, compruebe Opciones de Internet -> Conexiones para verificar que la información de la configuración y de proxy sea la correcta."
-
-    IDS_DOWNLOAD_RETRY             "Error de descarga"
-    IDS_DOWNLOAD_RETRY_TEXT        "Se ha producido un error durante la descarga de algunos componentes solicitados. ¿Quiere volver a intentar descargar estos componentes?"
-
-    IDS_DOWNLOAD                   "Instalación de componentes adicionales"
-	IDS_DOWNLOAD_UNPACKING         "Desempaquetando paquete"
-    IDS_DOWNLOAD_TEXT              "La aplicación Java se iniciará cuando los componentes adicionales necesarios se hayan descargado e instalado."
-    
-    IDS_FILE_UPDATE_ERROR          "Se ha producido un error al actualizar %s%s."
-    IDS_FILE_DELETE_ERROR          "Se ha producido un error al eliminar %s."
-    IDS_JAVA_HOME_ERROR            "Imposible determinar el directorio de inicio Java."
-    IDS_KERNEL_HOME_ERROR          "Imposible determinar la ruta a jkernel.dll."
-    IDS_JBROKER_ERROR              "Imposible iniciar jbroker.exe."
-    IDS_FATAL_ERROR                "Java no ha podido descargar los componentes necesarios.  El programa se cerrará."
-    IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES "Java no ha podido comunicarse con el servidor de descarga.  El programa se cerrará."
-    IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES "Se ha producido un error en la comunicación entre Java y el servidor de descarga.  El programa se cerrará."
-    IDS_ERROR_MALFORMED_URL "Java no ha podido realizar la descarga desde el URL '%s'.  El programa se cerrará."
-END
--- a/jdk/src/windows/native/sun/jkernel/kernel_fr.rc	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 340, 120
-STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | 
-    WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "Composants supplémentaires requis"
-EXSTYLE WS_EX_APPWINDOW
-FONT 8, "MS Sans Serif"
-BEGIN
-    LTEXT           "", IDC_DOWNLOAD_MASTHEAD, 0, 0, 340, 39
-    LTEXT           "", IDC_MASTHEAD_TEXT, 60, 4, 220, 30
-    CONTROL         "", IDC_STATIC,"Static", SS_BLACKFRAME | SS_SUNKEN,
-                    0, 39, 340, 1
-    LTEXT           "", IDC_DOWNLOAD_TEXT, 12, 60, 316, 20
-    LTEXT           "", IDC_TIME_REMAINING, 12, 90, 316, 10
-    CONTROL         "Progress1",1006,"msctls_progress32",PBS_SMOOTH,
-                    12, 100, 265, 14
-    PUSHBUTTON	    "Annuler",  2, 285, 100, 46, 14
-END
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO DISCARDABLE 
-BEGIN
-    105, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 236
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 63
-    END
-END
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// String Table
-//
-
-STRINGTABLE DISCARDABLE 
-BEGIN
-    IDS_DOWNLOAD_CANCEL_MESSAGE   "L'annulation de l'installation de composants supplémentaires nécessaires à l'application risque d'entraîner la fermeture de celle-ci.\n\nVoulez-vous vraiment annuler l'installation des composants supplémentaires ?"
-    IDS_DOWNLOAD_CANCEL_CAPTION   "Annuler : composants supplémentaires"
-    IDS_DOWNLOAD_CANCEL_INSTRUCTION   ""
-    IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT      "Délai de connexion dépassé"
-    IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE "Connexion à Internet impossible"
-    IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR        "Erreur de serveur (erreur %s)"
-    IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL      "Service non disponible (erreur %s)"
-    IDS_HTTP_INSTRUCTION_FORBIDDEN            "Accès refusé ou interdit (erreur %s)"
-    IDS_HTTP_STATUS_OTHER                     "Une erreur s'est produite lors de cette demande. Voulez-vous effectuer à nouveau la demande ?"
-
-// HTTP status code
-    IDS_HTTP_STATUS_REQUEST_TIMEOUT "Temporisation du serveur lors de l'attente de la requête."
-    IDS_HTTP_STATUS_FORBIDDEN		"Le serveur a compris la requête mais refuse de la satisfaire."
-    IDS_HTTP_STATUS_SERVER_ERROR	"Le serveur a rencontré une condition inattendue l'empêchant de satisfaire la requête."
-    IDS_HTTP_STATUS_SERVICE_UNAVAIL	"Le service est temporairement surchargé."
-
-
-    IDS_DOWNLOAD_STATUS_RETRY		"Le serveur est occupé ; veuillez réessayer dans %ld secondes..."
-
-    IDS_ERROR_CAPTION               "Erreur - Java Kernel"
-    IDS_HOURSMINUTESECOND	    "Temps restant prévu : %d heures %d minutes %.0f secondes"
-    IDS_HOURMINUTESECOND	    "Temps restant prévu : %d heure %d minutes %.0f secondes"
-    IDS_MINUTESECOND 		    "Temps restant prévu : %d minutes %.0f secondes"
-    IDS_SECOND                      "Temps restant prévu : %.0f secondes"
-    IDS_DISK_FULL_ERROR_CAPTION     "Disque saturé"
-    IDS_DISK_FULL_ERROR             "En raison de la saturation du disque, Java Kernel n'a pas été en mesure de télécharger les composants requis.  Voulez-vous réessayer ?"
-    IDS_DISK_WRITE_ERROR_CAPTION    "Erreur d'écriture sur le disque"
-    IDS_DISK_WRITE_ERROR            "Java Kernel a rencontré une erreur lors de l'écriture sur le disque.  Voulez-vous réessayer ?"
-    IDS_HTTP_STATUS_SERVER_NOT_REACHABLE "Java Kernel ne peut pas s'exécuter avec les paramètres de connexion Internet actuels de votre système.  Dans le Panneau de configuration de Windows, cliquez sur Options Internet -> Connexions pour vérifier les paramètres et informations de proxy."
-
-    IDS_DOWNLOAD_RETRY             "Erreur de téléchargement"
-    IDS_DOWNLOAD_RETRY_TEXT        "Une erreur s'est produite lors du téléchargement de certains composants requis. Souhaitez-vous réessayer de télécharger ces composants ?"
-
-    IDS_DOWNLOAD                   "Installation de composants supplémentaires"
-	IDS_DOWNLOAD_UNPACKING         "Décompression du bundle"
-    IDS_DOWNLOAD_TEXT              "L'application Java démarre lorsque des composants supplémentaires requis sont téléchargés et installés."
-    
-    IDS_FILE_UPDATE_ERROR          "Une erreur s'est produite lors de la mise à jour de %s%s."
-    IDS_FILE_DELETE_ERROR          "Une erreur s'est produite lors de la suppression de %s."
-    IDS_JAVA_HOME_ERROR            "Le répertoire d'accueil Java est introuvable."
-    IDS_KERNEL_HOME_ERROR          "Le chemin de jkernel.dll est introuvable."
-    IDS_JBROKER_ERROR              "Impossible de lancer jbroker.exe."
-    IDS_FATAL_ERROR                "Java n'a pas été en mesure de télécharger les composants requis.  Fermeture imminente du programme."
-    IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES "Java n'a pas été en mesure de communiquer avec le serveur de téléchargement.  Fermeture imminente du programme."
-    IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES "Java a rencontré une erreur lors de la communication avec le serveur de téléchargement.  Fermeture imminente du programme."
-    IDS_ERROR_MALFORMED_URL "Java n'a pas été en mesure de réaliser le téléchargement à partir de l'URL '%s'.  Fermeture imminente du programme."
-END
--- a/jdk/src/windows/native/sun/jkernel/kernel_it.rc	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 340, 120
-STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | 
-    WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "Componenti aggiuntivi richiesti"
-EXSTYLE WS_EX_APPWINDOW
-FONT 8, "MS Sans Serif"
-BEGIN
-    LTEXT           "", IDC_DOWNLOAD_MASTHEAD, 0, 0, 340, 39
-    LTEXT           "", IDC_MASTHEAD_TEXT, 60, 4, 220, 30
-    CONTROL         "", IDC_STATIC,"Static", SS_BLACKFRAME | SS_SUNKEN,
-                    0, 39, 340, 1
-    LTEXT           "", IDC_DOWNLOAD_TEXT, 12, 60, 316, 20
-    LTEXT           "", IDC_TIME_REMAINING, 12, 90, 316, 10
-    CONTROL         "Progress1",1006,"msctls_progress32",PBS_SMOOTH,
-                    12, 100, 265, 14
-    PUSHBUTTON	    "Annulla",  2, 285, 100, 46, 14
-END
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO DISCARDABLE 
-BEGIN
-    105, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 236
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 63
-    END
-END
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// String Table
-//
-
-STRINGTABLE DISCARDABLE 
-BEGIN
-    IDS_DOWNLOAD_CANCEL_MESSAGE   "Se si annulla l'installazione di componenti aggiuntivi necessari per l'applicazione, quest'ultima potrebbe chiudersi.\n\nAnnullare l'installazione di componenti aggiuntivi?"
-    IDS_DOWNLOAD_CANCEL_CAPTION   "Annulla - Componenti aggiuntivi"
-    IDS_DOWNLOAD_CANCEL_INSTRUCTION   ""
-    IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT      "Timeout della connessione"
-    IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE "Impossibile stabilire una connessione a Internet"
-    IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR        "Errore del server (errore %s)"
-    IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL      "Servizio non disponibile (errore %s)"
-    IDS_HTTP_INSTRUCTION_FORBIDDEN            "Accesso negato o vietato (errore %s)"
-    IDS_HTTP_STATUS_OTHER                     "Errore durante la richiesta. Provare a reinviare la richiesta?"
-
-// HTTP status code
-    IDS_HTTP_STATUS_REQUEST_TIMEOUT "Tempo scaduto del server in attesa della richiesta."
-    IDS_HTTP_STATUS_FORBIDDEN		"Il server ha ricevuto la richiesta ma non ne consente l'elaborazione."
-    IDS_HTTP_STATUS_SERVER_ERROR	"Il server ha rilevato una condizione imprevista che ha impedito di soddisfare la richiesta."
-    IDS_HTTP_STATUS_SERVICE_UNAVAIL	"Il servizio è temporaneamente sovraccarico."
-
-
-    IDS_DOWNLOAD_STATUS_RETRY		"Server occupato, riprovare tra %ld secondi..."
-
-    IDS_ERROR_CAPTION               "Errore - Java Kernel"
-    IDS_HOURSMINUTESECOND	    "Tempo rimanente previsto: %d ore %d minuti %.0f secondi"
-    IDS_HOURMINUTESECOND	    "Tempo rimanente previsto: %d ora %d minuti %.0f secondi"
-    IDS_MINUTESECOND 		    "Tempo rimanente previsto: %d minuti %.0f secondi"
-    IDS_SECOND                      "Tempo rimanente previsto: %.0f secondi"
-    IDS_DISK_FULL_ERROR_CAPTION     "Disco pieno"
-    IDS_DISK_FULL_ERROR             "Java Kernel non ha effettuato il download dei componenti necessari perché il disco è pieno.  Riprovare?"
-    IDS_DISK_WRITE_ERROR_CAPTION    "Errore di scrittura sul disco"
-    IDS_DISK_WRITE_ERROR            "Java Kernel ha rilevato un errore durante la scrittura sul disco.  Riprovare?"
-    IDS_HTTP_STATUS_SERVER_NOT_REACHABLE "Non è possibile utilizzare Java Kernel con le impostazioni di connessione Internet attive nel sistema.  Nel Pannello di controllo di Windows, selezionare Opzioni Internet -> Connessioni per controllare che le impostazioni e le informazioni sul proxy siano corrette."
-
-    IDS_DOWNLOAD_RETRY             "Errore di download"
-    IDS_DOWNLOAD_RETRY_TEXT        "Si è verificato un errore durante il download di alcuni componenti richiesti. Ritentare il download di tali componenti?"
-
-    IDS_DOWNLOAD                   "Installazione di componenti aggiuntivi in corso"
-	IDS_DOWNLOAD_UNPACKING         "Decompressione del bundle in corso"
-    IDS_DOWNLOAD_TEXT              "L'applicazione Java verrà avviata dopo il download e l'installazione dei componenti richiesti."
-    
-    IDS_FILE_UPDATE_ERROR          "Errore durante l'aggiornamento di %s%s."
-    IDS_FILE_DELETE_ERROR          "Errore durante la rimozione di %s."
-    IDS_JAVA_HOME_ERROR            "Impossibile determinare la directory home di Java."
-    IDS_KERNEL_HOME_ERROR          "Impossibile determinare il percorso di jkernel.dll."
-    IDS_JBROKER_ERROR              "Impossibile avviare jbroker.exe."
-    IDS_FATAL_ERROR                "Java non è in grado di scaricare i componenti necessari. Il programma verrà terminato."
-    IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES "Java non è in grado di comunicare con il server di download. Il programma verrà terminato."
-    IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES "Java ha rilevato un errore durante la comunicazione con il server di download. Il programma verrà terminato."
-    IDS_ERROR_MALFORMED_URL "Java non è in grado di eseguire il download dall'URL '%s'. Il programma verrà terminato."
-END
--- a/jdk/src/windows/native/sun/jkernel/kernel_ja.rc	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 340, 120
-STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | 
-    WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "’ljÁƒRƒ“ƒ|[ƒlƒ“ƒg‚ª•K—v"
-EXSTYLE WS_EX_APPWINDOW
-FONT 10, "MS UI Gothic"
-BEGIN
-    LTEXT           "", IDC_DOWNLOAD_MASTHEAD, 0, 0, 340, 39
-    LTEXT           "", IDC_MASTHEAD_TEXT, 60, 14, 200, 12
-    CONTROL         "", IDC_STATIC,"Static", SS_BLACKFRAME | SS_SUNKEN,
-                    0, 39, 340, 1
-    LTEXT           "", IDC_DOWNLOAD_TEXT, 12, 60, 316, 20
-    LTEXT           "", IDC_TIME_REMAINING, 12, 90, 316, 10
-    CONTROL         "Progress1",1006,"msctls_progress32",PBS_SMOOTH,
-                    12, 100, 265, 14
-    PUSHBUTTON	    "ŽæÁ‚µ",  2, 285, 100, 46, 14
-END
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO DISCARDABLE 
-BEGIN
-    105, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 236
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 63
-    END
-END
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// String Table
-//
-
-STRINGTABLE DISCARDABLE 
-BEGIN
-    IDS_DOWNLOAD_CANCEL_MESSAGE   "ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ª•K—v‚Æ‚·‚é’ljÁƒRƒ“ƒ|[ƒlƒ“ƒg‚̃Cƒ“ƒXƒg[ƒ‹‚ðƒLƒƒƒ“ƒZƒ‹‚·‚é‚ÆAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªI—¹‚·‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B\n\n’ljÁƒRƒ“ƒ|[ƒlƒ“ƒg‚̃Cƒ“ƒXƒg[ƒ‹‚ðƒLƒƒƒ“ƒZƒ‹‚µ‚Ä‚æ‚낵‚¢‚Å‚·‚©H"
-    IDS_DOWNLOAD_CANCEL_CAPTION   "ƒLƒƒƒ“ƒZƒ‹ - ’ljÁƒRƒ“ƒ|[ƒlƒ“ƒg"
-    IDS_DOWNLOAD_CANCEL_INSTRUCTION   ""
-    IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT      "Ú‘±‚ªƒ^ƒCƒ€ƒAƒEƒg‚µ‚Ü‚µ‚½"
-    IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE "ƒCƒ“ƒ^[ƒlƒbƒg‚ÉÚ‘±‚Å‚«‚Ü‚¹‚ñ"
-    IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR        "ƒT[ƒo[ƒGƒ‰[ (ƒGƒ‰[ %s)"
-    IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL      "ƒT[ƒrƒX—˜—p•s‰Â (ƒGƒ‰[ %s)"
-    IDS_HTTP_INSTRUCTION_FORBIDDEN            "ƒAƒNƒZƒX‚ª‹‘”Û‚Ü‚½‚Í‹ÖŽ~‚³‚ê‚Ä‚¢‚Ü‚· (ƒGƒ‰[ %s)"
-    IDS_HTTP_STATUS_OTHER                     "‚±‚Ì—v‹‚̈—’†‚ɃGƒ‰[‚ª”­¶‚µ‚Ü‚µ‚½B—v‹‚ðÄŽŽs‚µ‚Ü‚·‚©?"
-
-// HTTP status code
-    IDS_HTTP_STATUS_REQUEST_TIMEOUT "—v‹‚ð‘Ò‹@’†‚ɃT[ƒo[‚ªƒ^ƒCƒ€ƒAƒEƒg‚µ‚Ü‚µ‚½B"
-    IDS_HTTP_STATUS_FORBIDDEN		"ƒT[ƒo[‚ÍA—v‹‚ð”FŽ¯‚µ‚Ä‚¢‚Ü‚·‚ªAŽÀs‚ð‹‘”Û‚µ‚Ä‚¢‚Ü‚·B"
-    IDS_HTTP_STATUS_SERVER_ERROR	"ƒT[ƒo[‚ÍA—v‹‚ÌŽÀs‚ð–W‚°‚é—\Šú‚µ‚È‚¢ó‹µ‚É‘˜‹ö‚µ‚Ü‚µ‚½B"
-    IDS_HTTP_STATUS_SERVICE_UNAVAIL	"ƒT[ƒrƒX‚ªˆêŽž“I‚ɃI[ƒo[ƒ[ƒh‚µ‚Ä‚¢‚Ü‚·B"
-
-
-    IDS_DOWNLOAD_STATUS_RETRY		"ƒT[ƒo[‚ÍŒ»ÝƒrƒW[‚Å‚·B%ld •bŒã‚ÉÄŽŽs‚µ‚Ü‚· ..."
-
-    IDS_ERROR_CAPTION               "ƒGƒ‰[ - Java ƒJ[ƒlƒ‹"
-    IDS_HOURSMINUTESECOND	    "—\‘zŽc‚莞ŠÔ: %d ŽžŠÔ %d •ª %.0f •b"
-    IDS_HOURMINUTESECOND	    "—\‘zŽc‚莞ŠÔ: %d ŽžŠÔ %d •ª %.0f •b"
-    IDS_MINUTESECOND 		    "—\‘zŽc‚莞ŠÔ: %d •ª %.0f •b"
-    IDS_SECOND                      "—\‘zŽc‚莞ŠÔ: %.0f •b"
-    IDS_DISK_FULL_ERROR_CAPTION     "ƒfƒBƒXƒN‚ª‚¢‚Á‚Ï‚¢‚Å‚·"
-    IDS_DISK_FULL_ERROR             "ƒfƒBƒXƒN‚ª‚¢‚Á‚Ï‚¢‚Ì‚½‚ßAJava ƒJ[ƒlƒ‹‚ª•K—v‚ȃRƒ“ƒ|[ƒlƒ“ƒg‚ðƒ_ƒEƒ“ƒ[ƒh‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B‚à‚¤ˆê“xŽŽ‚µ‚Ü‚·‚©?"
-    IDS_DISK_WRITE_ERROR_CAPTION    "ƒfƒBƒXƒN‘‚«ž‚݃Gƒ‰["
-    IDS_DISK_WRITE_ERROR            "Java ƒJ[ƒlƒ‹‚ªƒfƒBƒXƒN‚Ö‚Ì‘‚«ž‚ÝŽž‚ɃGƒ‰[‚ðŒŸo‚µ‚Ü‚µ‚½B‚à‚¤ˆê“xŽŽ‚µ‚Ü‚·‚©?"
-    IDS_HTTP_STATUS_SERVER_NOT_REACHABLE "Java ƒJ[ƒlƒ‹‚ÍA‚¨Žg‚¢‚̃VƒXƒeƒ€‚ÌŒ»Ý‚̃Cƒ“ƒ^[ƒlƒbƒgÚ‘±Ý’è‚Å‚Í“®ì‚µ‚Ü‚¹‚ñBWindows ‚̃Rƒ“ƒgƒ[ƒ‹ƒpƒlƒ‹‚ÅAuƒCƒ“ƒ^[ƒlƒbƒgƒIƒvƒVƒ‡ƒ“v -> uÚ‘±v‚ð‘I‘ð‚µ‚ÄAݒ肨‚æ‚уvƒƒLƒVî•ñ‚ª³‚µ‚¢‚±‚Æ‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B"
-
-    IDS_DOWNLOAD_RETRY             "ƒ_ƒEƒ“ƒ[ƒhƒGƒ‰["
-    IDS_DOWNLOAD_RETRY_TEXT        "—v‹‚³‚ꂽƒRƒ“ƒ|[ƒlƒ“ƒg‚̈ꕔ‚ðƒ_ƒEƒ“ƒ[ƒh’†‚ɃGƒ‰[‚ª”­¶‚µ‚Ü‚µ‚½B‚±‚ê‚ç‚̃Rƒ“ƒ|[ƒlƒ“ƒg‚̃_ƒEƒ“ƒ[ƒh‚ðÄ“xŽŽ‚Ý‚Ü‚·‚© ?"
-
-    IDS_DOWNLOAD                   "’ljÁƒRƒ“ƒ|[ƒlƒ“ƒg‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚¢‚Ü‚·"
-	IDS_DOWNLOAD_UNPACKING         "ƒoƒ“ƒhƒ‹‚ð“WŠJ‚µ‚Ä‚¢‚Ü‚·"
-    IDS_DOWNLOAD_TEXT              "Java ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÍA•K{‚̒ljÁƒRƒ“ƒ|[ƒlƒ“ƒg‚̃_ƒEƒ“ƒ[ƒh‚¨‚æ‚уCƒ“ƒXƒg[ƒ‹Œã‚É‹N“®‚µ‚Ü‚·B"
-    
-    IDS_FILE_UPDATE_ERROR          "%s%s ‚ÌXV’†‚ɃGƒ‰[‚ª”­¶‚µ‚Ü‚µ‚½B"
-    IDS_FILE_DELETE_ERROR          "%s ‚Ì휒†‚ɃGƒ‰[‚ª”­¶‚µ‚Ü‚µ‚½B"
-    IDS_JAVA_HOME_ERROR            "Java ƒz[ƒ€ƒfƒBƒŒƒNƒgƒŠ‚ð”»’è‚Å‚«‚Ü‚¹‚ñB"
-    IDS_KERNEL_HOME_ERROR          "jkernel.dll ‚̃pƒX‚ð”»’è‚Å‚«‚Ü‚¹‚ñB"
-    IDS_JBROKER_ERROR              "jbroker.exe ‚ð‹N“®‚Å‚«‚Ü‚¹‚ñB"
-    IDS_FATAL_ERROR                "Java ‚ª•K—v‚ȃRƒ“ƒ|[ƒlƒ“ƒg‚ðƒ_ƒEƒ“ƒ[ƒh‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½BƒvƒƒOƒ‰ƒ€‚ÍI—¹‚µ‚Ü‚·B"
-    IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES "Java ‚ªƒ_ƒEƒ“ƒ[ƒhƒT[ƒo[‚Æ’ÊM‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½BƒvƒƒOƒ‰ƒ€‚ÍI—¹‚µ‚Ü‚·B"
-    IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES "Java ‚ªƒ_ƒEƒ“ƒ[ƒhƒT[ƒo[‚Æ‚Ì’ÊM’†‚ɃGƒ‰[‚ðŒŸo‚µ‚Ü‚µ‚½BƒvƒƒOƒ‰ƒ€‚ÍI—¹‚µ‚Ü‚·B"
-    IDS_ERROR_MALFORMED_URL "Java ‚ª URL '%s' ‚©‚çƒ_ƒEƒ“ƒ[ƒh‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½BƒvƒƒOƒ‰ƒ€‚ÍI—¹‚µ‚Ü‚·B"
-END
--- a/jdk/src/windows/native/sun/jkernel/kernel_ko.rc	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 340, 120
-STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | 
-    WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "Ãß°¡ ±¸¼º ¿ä¼Ò ÇÊ¿ä"
-EXSTYLE WS_EX_APPWINDOW
-FONT 8, "MS Sans Serif"
-BEGIN
-    LTEXT           "", IDC_DOWNLOAD_MASTHEAD, 0, 0, 340, 39
-    LTEXT           "", IDC_MASTHEAD_TEXT, 60, 14, 200, 12
-    CONTROL         "", IDC_STATIC,"Static", SS_BLACKFRAME | SS_SUNKEN,
-                    0, 39, 340, 1
-    LTEXT           "", IDC_DOWNLOAD_TEXT, 12, 60, 316, 20
-    LTEXT           "", IDC_TIME_REMAINING, 12, 90, 316, 10
-    CONTROL         "Progress1",1006,"msctls_progress32",PBS_SMOOTH,
-                    12, 100, 265, 14
-    PUSHBUTTON	    "Ãë¼Ò",  2, 285, 100, 46, 14
-END
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO DISCARDABLE 
-BEGIN
-    105, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 236
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 63
-    END
-END
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// String Table
-//
-
-STRINGTABLE DISCARDABLE 
-BEGIN
-    IDS_DOWNLOAD_CANCEL_MESSAGE   "ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ ÇÊ¿äÇÑ Ãß°¡ ±¸¼º ¿ä¼ÒÀÇ ¼³Ä¡¸¦ Ãë¼ÒÇϸé ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ Á¾·áµÉ ¼ö ÀÖ½À´Ï´Ù.\n\nÃß°¡ ±¸¼º ¿ä¼ÒÀÇ ¼³Ä¡¸¦ Ãë¼ÒÇϽðڽÀ´Ï±î?"
-    IDS_DOWNLOAD_CANCEL_CAPTION   "Ãë¼Ò - Ãß°¡ ±¸¼º ¿ä¼Ò"
-    IDS_DOWNLOAD_CANCEL_INSTRUCTION   ""
-    IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT      "¿¬°á ½Ã°£ ÃÊ°ú"
-    IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE "ÀÎÅͳݿ¡ ¿¬°áÇÒ ¼ö ¾ø½À´Ï´Ù."
-    IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR        "¼­¹ö ¿À·ù(¿À·ù %s)"
-    IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL      "¼­ºñ½º¸¦ »ç¿ëÇÒ ¼ö ¾øÀ½(¿À·ù %s)"
-    IDS_HTTP_INSTRUCTION_FORBIDDEN            "¾×¼¼½º°¡ °ÅºÎµÇ¾ú°Å³ª ±ÝÁöµÊ(¿À·ù %s)"
-    IDS_HTTP_STATUS_OTHER                     "ÀÌ ¿äû µ¿¾È ¿À·ù°¡ ¹ß»ýÇß½À´Ï´Ù. ¿äûÀ» ´Ù½Ã ½ÃµµÇϽðڽÀ´Ï±î?"
-
-// HTTP status code
-    IDS_HTTP_STATUS_REQUEST_TIMEOUT "¼­¹ö°¡ ¿äûÀ» ±â´Ù¸®´Â µ¿¾È ½Ã°£ÀÌ ÃÊ°úµÇ¾ú½À´Ï´Ù."
-    IDS_HTTP_STATUS_FORBIDDEN		"¼­¹ö°¡ ¿äûÀ» ÀÌÇØÇßÁö¸¸ ÀÌÇàÇϱ⸦ °ÅºÎÇÕ´Ï´Ù."
-    IDS_HTTP_STATUS_SERVER_ERROR	"¼­¹ö¿¡¼­ ¿äû ÀÌÇàÀ» ¹æÇØÇÏ´Â ¿¹»óÄ¡ ¸øÇÑ Á¶°ÇÀÌ ¹ß°ßµÇ¾ú½À´Ï´Ù."
-    IDS_HTTP_STATUS_SERVICE_UNAVAIL	"¼­¹ö°¡ ÀϽÃÀûÀ¸·Î °úºÎÇϵǾú½À´Ï´Ù."
-
-
-    IDS_DOWNLOAD_STATUS_RETRY		"ÇöÀç ¼­¹ö°¡ »ç¿ë ÁßÀ̹ǷΠ%ldÃÊ ÈÄ¿¡ ´Ù½Ã ½ÃµµÇϽʽÿÀ."
-
-    IDS_ERROR_CAPTION               "¿À·ù - Java Ä¿³Î"
-    IDS_HOURSMINUTESECOND	    "¿¹»óµÈ ³²Àº ½Ã°£: %d½Ã°£ %dºÐ %.0fÃÊ"
-    IDS_HOURMINUTESECOND	    "¿¹»óµÈ ³²Àº ½Ã°£: %d½Ã°£ %dºÐ %.0fÃÊ"
-    IDS_MINUTESECOND 		    "¿¹»óµÈ ³²Àº ½Ã°£: %dºÐ %.0fÃÊ"
-    IDS_SECOND                      "¿¹»óµÈ ³²Àº ½Ã°£: %.0fÃÊ"
-    IDS_DISK_FULL_ERROR_CAPTION     "µð½ºÅ©°¡ °¡µæ Âü"
-    IDS_DISK_FULL_ERROR             "µð½ºÅ©°¡ °¡µæ Â÷¼­ Java Kernel¿¡¼­ ÇÊ¿äÇÑ ±¸¼º ¿ä¼Ò¸¦ ´Ù¿î·ÎµåÇÏÁö ¸øÇß½À´Ï´Ù. ´Ù½Ã ½ÃµµÇϽðڽÀ´Ï±î?"
-    IDS_DISK_WRITE_ERROR_CAPTION    "µð½ºÅ© ¾²±â ¿À·ù"
-    IDS_DISK_WRITE_ERROR            "µð½ºÅ©¿¡ ¾²´Â µ¿¾È Java Kernel¿¡¼­ ¿À·ù°¡ ¹ß»ýÇß½À´Ï´Ù. ´Ù½Ã ½ÃµµÇϽðڽÀ´Ï±î?"
-    IDS_HTTP_STATUS_SERVER_NOT_REACHABLE "½Ã½ºÅÛÀÇ ÇöÀç ÀÎÅÍ³Ý ¿¬°á ¼³Á¤À¸·Î´Â Java KernelÀ» °è¼ÓÇÒ ¼ö ¾ø½À´Ï´Ù.  Windows Á¦¾îÆÇ¿¡¼­ ÀÎÅÍ³Ý ¿É¼Ç -> ¿¬°áÀ» ¼±ÅÃÇÏ¿© ¼³Á¤ ¹× ÇÁ·Ï½Ã Á¤º¸°¡ ¿Ã¹Ù¸¥Áö È®ÀÎÇϽʽÿÀ."
-
-    IDS_DOWNLOAD_RETRY             "´Ù¿î·Îµå ¿À·ù"
-    IDS_DOWNLOAD_RETRY_TEXT        "¿äûµÈ ±¸¼º ¿ä¼Ò¸¦ ´Ù¿î·ÎµåÇÏ´Â µ¿¾È ¿À·ù°¡ ¹ß»ýÇß½À´Ï´Ù. ÀÌ ±¸¼º ¿ä¼Ò¸¦ ´Ù½Ã ´Ù¿î·ÎµåÇϽðڽÀ´Ï±î?"
-
-    IDS_DOWNLOAD                   "Ãß°¡ ±¸¼º ¿ä¼Ò ¼³Ä¡"
-	IDS_DOWNLOAD_UNPACKING         "¹øµé ¾ÐÃà Ç®±â"
-    IDS_DOWNLOAD_TEXT              "ÇÊ¿äÇÑ Ãß°¡ ±¸¼º ¿ä¼Ò°¡ ´Ù¿î·ÎµåµÇ¾î ¼³Ä¡µÇ¸é Java ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ½ÃÀ۵˴ϴÙ."
-    
-    IDS_FILE_UPDATE_ERROR          "%s%sÀ»(¸¦) ¾÷µ¥ÀÌÆ®ÇÏ´Â µ¿¾È ¿À·ù°¡ ¹ß»ýÇß½À´Ï´Ù."
-    IDS_FILE_DELETE_ERROR          "%sÀ»(¸¦) Á¦°ÅÇÏ´Â µ¿¾È ¿À·ù°¡ ¹ß»ýÇß½À´Ï´Ù."
-    IDS_JAVA_HOME_ERROR            "Java Ȩ µð·ºÅ丮¸¦ È®ÀÎÇÒ ¼ö ¾ø½À´Ï´Ù."
-    IDS_KERNEL_HOME_ERROR          "jkernel.dllÀÇ °æ·Î¸¦ È®ÀÎÇÒ ¼ö ¾ø½À´Ï´Ù."
-    IDS_JBROKER_ERROR              "jbroker.exe¸¦ ½ÃÀÛÇÒ ¼ö ¾ø½À´Ï´Ù."
-    IDS_FATAL_ERROR                "ÇÊ¿äÇÑ ±¸¼º ¿ä¼Ò¸¦ ´Ù¿î·ÎµåÇÏÁö ¸øÇß½À´Ï´Ù.  ÇÁ·Î±×·¥ÀÌ Á¾·áµË´Ï´Ù."
-    IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES "´Ù¿î·Îµå ¼­¹ö¿Í Åë½ÅÇÏÁö ¸øÇß½À´Ï´Ù.  ÇÁ·Î±×·¥ÀÌ Á¾·áµË´Ï´Ù."
-    IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES "´Ù¿î·Îµå ¼­¹ö¿ÍÀÇ Åë½Å ¿À·ù°¡ ¹ß»ýÇß½À´Ï´Ù.  ÇÁ·Î±×·¥ÀÌ Á¾·áµË´Ï´Ù."
-    IDS_ERROR_MALFORMED_URL "URL '%s'¿¡¼­ ´Ù¿î·ÎµåÇÏÁö ¸øÇß½À´Ï´Ù.  ÇÁ·Î±×·¥ÀÌ Á¾·áµË´Ï´Ù."
-END
--- a/jdk/src/windows/native/sun/jkernel/kernel_pt_BR.rc	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +0,0 @@
-/*
- * Copyright (c) 2008, 2010, 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.
- */
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_DOWNLOAD_DIALOG DIALOGEX 0,0,340,120
-STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | 
-    WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "Componentes adicionais necessários"
-EXSTYLE WS_EX_APPWINDOW
-FONT 8, "MS Sans Serif"
-BEGIN
-    LTEXT           "", IDC_DOWNLOAD_MASTHEAD,0,0,340,39
-    LTEXT           "", IDC_MASTHEAD_TEXT,60,8,225,12
-    CONTROL         "", IDC_STATIC,"Static", SS_BLACKFRAME | SS_SUNKEN,0,39,340,1
-    LTEXT           "", IDC_DOWNLOAD_TEXT,12,60,316,20
-    LTEXT           "", IDC_TIME_REMAINING,12,90,316,10
-    CONTROL         "Progress1",1006,"msctls_progress32",PBS_SMOOTH,12,100,265,14
-    PUSHBUTTON	    "Cancelar",  2,285,100,46,14
-END
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO DISCARDABLE 
-BEGIN
-    105, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 236
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 63
-    END
-END
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// String Table
-//
-
-STRINGTABLE DISCARDABLE 
-BEGIN
-    IDS_DOWNLOAD_CANCEL_MESSAGE   "O cancelamento da instalação dos componentes adicionais necessários ao aplicativo pode fazer com que o aplicativo se feche.\n\nTem certeza que deseja cancelar a instalação dos componentes adicionais?"
-    IDS_DOWNLOAD_CANCEL_CAPTION   "Cancelar - Componentes adicionais"
-    IDS_DOWNLOAD_CANCEL_INSTRUCTION   ""
-    IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT      "Tempo limite de conexão excedido"
-    IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE "Não é possível se conectar à Internet"
-    IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR        "Erro de servidor (Erro %s)"
-    IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL      "Serviço não disponível (Erro %s)"
-    IDS_HTTP_INSTRUCTION_FORBIDDEN            "Acesso negado ou proibido (Erro %s)"
-    IDS_HTTP_STATUS_OTHER                     "Ocorreu um erro durante esta solicitação. Deseja tentar a solicitação novamente?"
-
-// HTTP status code
-    IDS_HTTP_STATUS_REQUEST_TIMEOUT "O servidor usado para baixar os componentes necessários não está respondendo e o tempo limite da conexão foi excedido. Deseja tentar se conectar novamente?"
-    IDS_HTTP_STATUS_FORBIDDEN		"Você não tem permissão para acessar o servidor para baixar os componentes necessários ao aplicativo. Tentar acessar o servidor novamente?"
-    IDS_HTTP_STATUS_SERVER_ERROR	"Ocorreu um erro no servidor e não foi possível concluir a solicitação. Deseja tentar a solicitação novamente?"
-    IDS_HTTP_STATUS_SERVICE_UNAVAIL	"O serviço solicitado não está disponível temporariamente. Deseja tentar a solicitação novamente?"
-
-
-    IDS_DOWNLOAD_STATUS_RETRY		"O servidor está ocupado atualmente, tente novamente em %ld segundos ..."
-  
-    IDS_ERROR_CAPTION               "Instalador Java"
-    IDS_HOURSMINUTESECOND	    "Tempo restante estimado: %d horas %d minutos %.0f segundos"
-    IDS_HOURMINUTESECOND	    "Tempo restante estimado: %d hora %d minutos %.0f segundos"
-    IDS_MINUTESECOND 		    "Tempo restante estimado: %d minutos %.0f segundos"
-    IDS_SECOND                      "Tempo restante estimado: %.0f segundos"
-    IDS_DISK_FULL_ERROR_CAPTION     "Disco cheio %s"
-    IDS_DISK_FULL_ERROR             "Não há espaço em disco suficiente para baixar os componentes solicitados. Libere espaço em disco e, a seguir, tente novamente."
-    IDS_DISK_WRITE_ERROR_CAPTION    "Não é possível gravar no disco %s"
-    IDS_DISK_WRITE_ERROR            "Ocorreu um erro durante a gravação no disco. Verifique se o disco não está protegido contra gravação."
-    IDS_HTTP_STATUS_SERVER_NOT_REACHABLE "O Java não pode se conectar à Internet. Verifique se as configurações de conexão à Internet estão corretas (isso pode ser encontrado no painel de controle do Windows em Opções de Internet > Conexão) e se o firewall permite que java.exe acesse a Internet."
-
-    IDS_DOWNLOAD_RETRY             "Erro de download"
-    IDS_DOWNLOAD_RETRY_TEXT        "Ocorreu um erro durante o download de alguns componentes solicitados. Deseja tentar o download destes componentes novamente?"
-
-    IDS_DOWNLOAD                   "Instalando componentes adicionais"
-    IDS_DOWNLOAD_UNPACKING         "Descompactando pacotes"
-    IDS_DOWNLOAD_TEXT              "O aplicativo Java se iniciará quando os componentes adicionais que ele precisa tiverem sido baixados e instalados."
-    
-    IDS_FILE_UPDATE_ERROR          "Ocorreu um erro durante a atualização de %s%s."
-    IDS_FILE_DELETE_ERROR          "Ocorreu um erro durante a remoção de %s%s."
-    IDS_JAVA_HOME_ERROR            "Não é possível determinar o diretório base Java."
-    IDS_KERNEL_HOME_ERROR          "Não é possível determinar o caminho para o jkernel.dll."
-    IDS_JBROKER_ERROR              "Não é possível iniciar jbroker.exe"
-    IDS_FATAL_ERROR                "O Java não pôde baixar os componentes necessários. O programa se fechará agora."
-    IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES "O Java não pôde estabelecer comunicação com o servidor de downloads. O programa se fechará agora."
-    IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES "O Java encontrou um erro ao estabelecer comunicação com o servidor de downloads. O programa se fechará agora."
-    IDS_ERROR_MALFORMED_URL "O Java não pôde baixar da URL '%s'. O programa se fechará agora."
-END
--- a/jdk/src/windows/native/sun/jkernel/kernel_sv.rc	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 340, 120
-STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | 
-    WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "Ytterligare komponenter behövs"
-EXSTYLE WS_EX_APPWINDOW
-FONT 8, "MS Sans Serif"
-BEGIN
-    LTEXT           "", IDC_DOWNLOAD_MASTHEAD, 0, 0, 340, 39
-    LTEXT           "", IDC_MASTHEAD_TEXT, 60, 14, 200, 12
-    CONTROL         "", IDC_STATIC,"Static", SS_BLACKFRAME | SS_SUNKEN,
-                    0, 39, 340, 1
-    LTEXT           "", IDC_DOWNLOAD_TEXT, 12, 60, 316, 20
-    LTEXT           "", IDC_TIME_REMAINING, 12, 90, 316, 10
-    CONTROL         "Progress1",1006,"msctls_progress32",PBS_SMOOTH,
-                    12, 100, 265, 14
-    PUSHBUTTON	    "Avbryt",  2, 285, 100, 46, 14
-END
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO DISCARDABLE 
-BEGIN
-    105, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 236
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 63
-    END
-END
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// String Table
-//
-
-STRINGTABLE DISCARDABLE 
-BEGIN
-    IDS_DOWNLOAD_CANCEL_MESSAGE   "Programmet kan avslutas om du avbryter installationen av ytterligare komponenter som är nödvändiga för programmet.\n\nVill du avbryta installationen av ytterligare komponenter?"
-    IDS_DOWNLOAD_CANCEL_CAPTION   "Avbryt - Ytterligare komponenter"
-    IDS_DOWNLOAD_CANCEL_INSTRUCTION   ""
-    IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT      "Anslutningen avbröts på grund av timeout"
-    IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE "Det går inte att ansluta till Internet."
-    IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR        "Serverfel (Fel %s)"
-    IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL      "Tjänsten är inte tillgänglig (Fel %s)"
-    IDS_HTTP_INSTRUCTION_FORBIDDEN            "Åtkomst nekad eller förbjuden (Fel %s)"
-    IDS_HTTP_STATUS_OTHER                     "Ett fel inträffade i samband med begäran. Vill du försöka skicka begäran igen?"
-
-// HTTP status code
-    IDS_HTTP_STATUS_REQUEST_TIMEOUT "Ett tidsfel inträffade medan servern väntade på begäran."
-    IDS_HTTP_STATUS_FORBIDDEN		"Servern förstod begäran men vägrar uppfylla den."
-    IDS_HTTP_STATUS_SERVER_ERROR	"Ett oväntat tillstånd som innebär att begäran inte kan uppfyllas påträffades."
-    IDS_HTTP_STATUS_SERVICE_UNAVAIL	"Tjänsten är tillfälligt överbelastad."
-
-
-    IDS_DOWNLOAD_STATUS_RETRY		"Servern är upptagen för närvarande. Försök igen om %ld sekund(er) ..."
-
-    IDS_ERROR_CAPTION               "Fel - Java Kernel"
-    IDS_HOURSMINUTESECOND	    "Återstående tid: %d timmar %d minuter %.0f sekunder"
-    IDS_HOURMINUTESECOND	    "Återstående tid: %d timme %d minuter %.0f sekunder"
-    IDS_MINUTESECOND 		    "Återstående tid: %d minuter %.0f sekunder"
-    IDS_SECOND                      "Återstående tid: %.0f sekunder"
-    IDS_DISK_FULL_ERROR_CAPTION     "Disken är full"
-    IDS_DISK_FULL_ERROR             "Java Kernel kunde inte ladda ned nödvändiga komponenter därför att disken är full.  Försöka igen?"
-    IDS_DISK_WRITE_ERROR_CAPTION    "Fel vid skrivning till disk"
-    IDS_DISK_WRITE_ERROR            "Java Kernel stötte på ett fel vid skrivning till disken.  Försöka igen?"
-    IDS_HTTP_STATUS_SERVER_NOT_REACHABLE "Java Kernel kan inte fortsätta med systemets aktuella inställningar för Internetanslutning.  Öppna Kontrollpanelen, Internet-alternativ > Anslutningar och kontrollera att inställningarna och proxyinformationen stämmer."
-
-    IDS_DOWNLOAD_RETRY             "Nedladdningsfel"
-    IDS_DOWNLOAD_RETRY_TEXT        "Ett fel uppstod under nedladdning av vissa begärda komponenter. Vill du försöka ladda ned dessa komponenter igen?"
-
-    IDS_DOWNLOAD                   "Ytterligare komponenter installeras"
-	IDS_DOWNLOAD_UNPACKING         "Uppackning av paket"
-    IDS_DOWNLOAD_TEXT              "Java-applikationen startar när ytterligare komponenter som krävs är nedladdade och installerade."
-    
-    IDS_FILE_UPDATE_ERROR          "Ett fel uppstod när %s%s uppdaterades."
-    IDS_FILE_DELETE_ERROR          "Ett fel uppstod när %s skulle tas bort."
-    IDS_JAVA_HOME_ERROR            "Det går inte att avgöra Javas hemkatalog"
-    IDS_KERNEL_HOME_ERROR          "Det går inte att avgöra sökvägen till jkernell.dll."
-    IDS_JBROKER_ERROR              "Det går inte att starta jbroker.exe."
-    IDS_FATAL_ERROR                "Det gick inte att ladda ned de nödvändiga komponenterna med Java.  Programmet avslutas."
-    IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES "Det gick inte att upprätta någon kommunikation mellan Java och nedladdningsservern.  Programmet avslutas."
-    IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES "Det uppstod ett fel i kommunikationen mellan Java och nedladdningsservern.  Programmet avslutas."
-    IDS_ERROR_MALFORMED_URL "Det gick inte att ladda ned från webbadressen '%s'.  Programmet avslutas."
-END
--- a/jdk/src/windows/native/sun/jkernel/kernel_zh.rc	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 340, 120
-STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | 
-    WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "ËùÐèµÄÆäËû×é¼þ"
-EXSTYLE WS_EX_APPWINDOW
-FONT 8, "MS Sans Serif"
-BEGIN
-    LTEXT           "", IDC_DOWNLOAD_MASTHEAD, 0, 0, 340, 39
-    LTEXT           "", IDC_MASTHEAD_TEXT, 60, 14, 200, 12
-    CONTROL         "", IDC_STATIC,"Static", SS_BLACKFRAME | SS_SUNKEN,
-                    0, 39, 340, 1
-    LTEXT           "", IDC_DOWNLOAD_TEXT, 12, 60, 316, 20
-    LTEXT           "", IDC_TIME_REMAINING, 12, 90, 316, 10
-    CONTROL         "Progress1",1006,"msctls_progress32",PBS_SMOOTH,
-                    12, 100, 265, 14
-    PUSHBUTTON	    "È¡Ïû",  2, 285, 100, 46, 14
-END
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO DISCARDABLE 
-BEGIN
-    105, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 236
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 63
-    END
-END
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// String Table
-//
-
-STRINGTABLE DISCARDABLE 
-BEGIN
-    IDS_DOWNLOAD_CANCEL_MESSAGE   "È¡Ïû°²×°Ó¦ÓóÌÐòËùÐèµÄ¶îÍâ×é¼þ¿ÉÄܻᵼÖ¸ÃÓ¦ÓóÌÐòÍ˳ö¡£\n\nÊÇ·ñÈ·¶¨ÒªÈ¡Ïû°²×°¶îÍâ×é¼þ£¿"
-    IDS_DOWNLOAD_CANCEL_CAPTION   "È¡Ïû - ¶îÍâ×é¼þ"
-    IDS_DOWNLOAD_CANCEL_INSTRUCTION   ""
-    IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT      "Á¬½ÓÒѳ¬Ê±"
-    IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE "ÎÞ·¨Á¬½Óµ½ Internet"
-    IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR        "·þÎñÆ÷´íÎ󣨴íÎó %s£©"
-    IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL      "·þÎñ²»¿ÉÓ㨴íÎó %s£©"
-    IDS_HTTP_INSTRUCTION_FORBIDDEN            "¾Ü¾ø·ÃÎÊ»ò½ûÖ¹·ÃÎÊ£¨´íÎó %s£©"
-    IDS_HTTP_STATUS_OTHER                     "ÔÚ´ËÇëÇóÆÚ¼ä³öÏÖ´íÎó¡£ÄúÊÇ·ñÒªÖØÊÔÇëÇó£¿"
-
-// HTTP status code
-    IDS_HTTP_STATUS_REQUEST_TIMEOUT "·þÎñÆ÷µÈ´ýÇëÇóʱ³¬Ê±¡£"
-    IDS_HTTP_STATUS_FORBIDDEN		"·þÎñÆ÷ÒѽÓÊÜÇëÇ󣬵«¾Ü¾øÖ´ÐС£"
-    IDS_HTTP_STATUS_SERVER_ERROR	"·þÎñÆ÷Óöµ½ÒâÍâÇé¿ö£¬ÎÞ·¨Íê³ÉÇëÇó¡£"
-    IDS_HTTP_STATUS_SERVICE_UNAVAIL	"·þÎñÔÝʱ¹ýÔØ¡£"
-
-
-    IDS_DOWNLOAD_STATUS_RETRY		"·þÎñÆ÷Õý棬ÇëÔÚ %ld ÃëºóÖØÊÔ..."
-
-    IDS_ERROR_CAPTION               "´íÎó - Java Kernel"
-    IDS_HOURSMINUTESECOND	    "¹À¼ÆÊ£Óàʱ¼ä:%d Сʱ %d ·ÖÖÓ %.0f Ãë"
-    IDS_HOURMINUTESECOND	    "¹À¼ÆÊ£Óàʱ¼ä:%d Сʱ  %d ·ÖÖÓ %.0f Ãë"
-    IDS_MINUTESECOND 		    "¹À¼ÆÊ£Óàʱ¼ä:%d ·ÖÖÓ %.0f Ãë"
-    IDS_SECOND                      "¹À¼ÆÊ£Óàʱ¼ä:%.0f Ãë"
-    IDS_DISK_FULL_ERROR_CAPTION     "´ÅÅÌÒÑÂú"
-    IDS_DISK_FULL_ERROR             "ÓÉÓÚ´ÅÅÌÒÑÂú£¬Java Kernel ÎÞ·¨ÏÂÔØËùÐèµÄ×é¼þ¡£ÊÇ·ñÖØÊÔ£¿"
-    IDS_DISK_WRITE_ERROR_CAPTION    "´ÅÅÌдÈë´íÎó"
-    IDS_DISK_WRITE_ERROR            "ÔÚÏò´ÅÅÌÖ´ÐÐдÈë²Ù×÷ʱ Java Kernel Óöµ½´íÎó¡£ÊÇ·ñÖØÊÔ£¿"
-    IDS_HTTP_STATUS_SERVER_NOT_REACHABLE "ÔÚʹÓÃϵͳµ±Ç°µÄ Internet Á¬½ÓÉèÖõÄÇé¿öÏ£¬Java Kernel ÎÞ·¨¼ÌÐøÖ´ÐС£ÔÚ Windows""¿ØÖÆÃæ°å""ÖУ¬Çë¼ì²é""Internet Ñ¡Ïî""->""Á¬½Ó""ÒÔÈ·±£ÉèÖúʹúÀíÐÅÏ¢ÕýÈ·¡£"
-
-    IDS_DOWNLOAD_RETRY             "ÏÂÔØ´íÎó"
-    IDS_DOWNLOAD_RETRY_TEXT        "ÔÚÏÂÔØijЩÇëÇóµÄ×é¼þÆڼ䷢Éú´íÎó¡£ÊÇ·ñÒªÔÙÊÔÒ»´ÎÏÂÔØÕâЩ×é¼þ£¿"
-
-    IDS_DOWNLOAD                   "°²×°ÆäËû×é¼þ"
-	IDS_DOWNLOAD_UNPACKING         "ÕýÔÚ½âѹËõ°ü"
-    IDS_DOWNLOAD_TEXT              "ÏÂÔز¢°²×° Java Ó¦ÓóÌÐòËùÐèµÄÆäËû×é¼þºó£¬¸ÃÓ¦ÓóÌÐò½«Æô¶¯¡£"
-    
-    IDS_FILE_UPDATE_ERROR          "¸üР%s%s ʱ·¢Éú´íÎó¡£"
-    IDS_FILE_DELETE_ERROR          "ɾ³ý %s ʱ·¢Éú´íÎó¡£"
-    IDS_JAVA_HOME_ERROR            "ÎÞ·¨È·¶¨ Java Ö÷Ŀ¼¡£"
-    IDS_KERNEL_HOME_ERROR          "ÎÞ·¨È·¶¨ jkernel.dll µÄ·¾¶¡£"
-    IDS_JBROKER_ERROR              "ÎÞ·¨Æô¶¯ jbroker.exe¡£"
-    IDS_FATAL_ERROR                "Java ÎÞ·¨ÏÂÔØËùÐèµÄ×é¼þ¡£ÏÖÔÚ³ÌÐò½«Í˳ö¡£"
-    IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES "Java ÎÞ·¨ÓëÏÂÔØ·þÎñÆ÷½øÐÐͨÐÅ¡£ÏÖÔÚ³ÌÐò½«Í˳ö¡£"
-    IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES "Java ÔÚÓëÏÂÔØ·þÎñÆ÷½øÐÐͨÐÅʱÓöµ½´íÎó¡£ÏÖÔÚ³ÌÐò½«Í˳ö¡£"
-    IDS_ERROR_MALFORMED_URL "Java ÎÞ·¨´Ó URL '%s' Ö´ÐÐÏÂÔØ¡£ÏÖÔÚ³ÌÐò½«Í˳ö¡£"
-END
--- a/jdk/src/windows/native/sun/jkernel/kernel_zh_TW.rc	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_DOWNLOAD_DIALOG DIALOGEX 0, 0, 340, 120
-STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | 
-    WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "©Ò»Ýªº¨ä¥L¤¸¥ó"
-EXSTYLE WS_EX_APPWINDOW
-FONT 8, "MS Sans Serif"
-BEGIN
-    LTEXT           "", IDC_DOWNLOAD_MASTHEAD, 0, 0, 340, 39
-    LTEXT           "", IDC_MASTHEAD_TEXT, 60, 14, 200, 12
-    CONTROL         "", IDC_STATIC,"Static", SS_BLACKFRAME | SS_SUNKEN,
-                    0, 39, 340, 1
-    LTEXT           "", IDC_DOWNLOAD_TEXT, 12, 60, 316, 20
-    LTEXT           "", IDC_TIME_REMAINING, 12, 90, 316, 10
-    CONTROL         "Progress1",1006,"msctls_progress32",PBS_SMOOTH,
-                    12, 100, 265, 14
-    PUSHBUTTON	    "¨ú®ø",  2, 285, 100, 46, 14
-END
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO DISCARDABLE 
-BEGIN
-    105, DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 236
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 63
-    END
-END
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// String Table
-//
-
-STRINGTABLE DISCARDABLE 
-BEGIN
-    IDS_DOWNLOAD_CANCEL_MESSAGE   "¨ú®ø¦w¸ËÀ³¥Îµ{¦¡©Ò»Ýªº¨ä¥L¤¸¥ó¡A¥i¯à·|¾É­PÀ³¥Îµ{¦¡µ²§ô¡C\n\n±z½T©w­n¨ú®ø¦w¸Ë¨ä¥L¤¸¥ó¡H"
-    IDS_DOWNLOAD_CANCEL_CAPTION   "¨ú®ø - ¨ä¥L¤¸¥ó"
-    IDS_DOWNLOAD_CANCEL_INSTRUCTION   ""
-    IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT      "³s½u¹O®É"
-    IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE "µLªk³s½u¦Üºô»Úºô¸ô"
-    IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR        "¦øªA¾¹¿ù»~ (¿ù»~ %s)"
-    IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL      "µLªk¨Ï¥ÎªA°È (¿ù»~ %s)"
-    IDS_HTTP_INSTRUCTION_FORBIDDEN            "©Úµ´©Î¸T¤î¦s¨ú (¿ù»~ %s)"
-    IDS_HTTP_STATUS_OTHER                     "¦b¦¹½Ð¨D´Á¶¡µo¥Í¿ù»~¡C¬O§_­n­«¸Õ½Ð¨D¡H"
-
-// HTTP status code
-    IDS_HTTP_STATUS_REQUEST_TIMEOUT "¦øªA¾¹µ¥«Ý½Ð¨D®É¥X²{¹O®É¡C"
-    IDS_HTTP_STATUS_FORBIDDEN		"¦øªA¾¹ÁA¸Ñ¸Ó½Ð¨D¡A¦ý¥¿¦b©Úµ´¹ê²{¥¦¡C"
-    IDS_HTTP_STATUS_SERVER_ERROR	"¦øªA¾¹¹J¨ìªý¤î¨ä¹ê²{½Ð¨Dªº¥¼¹w´Á±ø¥ó¡C"
-    IDS_HTTP_STATUS_SERVICE_UNAVAIL	"ªA°È¼È®É¶W¸ü¡C"
-
-
-    IDS_DOWNLOAD_STATUS_RETRY		"¦øªA¾¹¥Ø«e³B©ó¦£¸Lª¬ºA¡A½Ð¦b %ld ¬í«á­«¸Õ..."
-
-    IDS_ERROR_CAPTION               "¿ù»~ - Java Kernel"
-    IDS_HOURSMINUTESECOND	    "¹w¦ô³Ñ¾l®É¶¡¡G%d ¤p®É %d ¤À %.0f ¬í"
-    IDS_HOURMINUTESECOND	    "¹w¦ô³Ñ¾l®É¶¡¡G%d ¤p®É %d ¤À %.0f ¬í"
-    IDS_MINUTESECOND 		    "¹w¦ô³Ñ¾l®É¶¡¡G%d ¤À %.0f ¬í"
-    IDS_SECOND                      "¹w¦ô³Ñ¾l®É¶¡¡G%.0f ¬í"
-    IDS_DISK_FULL_ERROR_CAPTION     "ºÏºÐ¤wº¡"
-    IDS_DISK_FULL_ERROR             "¥Ñ©óºÏºÐ¤wº¡¡AJava Kernel µLªk¤U¸ü©Ò»Ýªº¤¸¥ó¡C¬O§_­n­«¸Õ¡H"
-    IDS_DISK_WRITE_ERROR_CAPTION    "ºÏºÐ¼g¤J¿ù»~"
-    IDS_DISK_WRITE_ERROR            "Java Kernel ¦b¼g¤J¦ÜºÏºÐ®É¹J¨ì¿ù»~¡C¬O§_­n­«¸Õ¡H"
-    IDS_HTTP_STATUS_SERVER_NOT_REACHABLE "¦b¨t²Î¥Ø«eªººô»Úºô¸ô³s½u³]©w¤U¡AJava Kernel µLªkÄ~Äò°õ¦æ¡C¦b Windows¡u±±¨î¥x¡v¤¤¡A½Ð®Ö¹ï¡uºô»Úºô¸ô¿ï¶µ¡v->¡u³s½u¡v¡A¥H½T©w³]©w©M¥N²z¦øªA¾¹¸ê°T¥¿½T¡C"
-
-    IDS_DOWNLOAD_RETRY             "¤U¸ü¿ù»~"
-    IDS_DOWNLOAD_RETRY_TEXT        "¤U¸ü¬Y¨Ç©Ò»Ý¤¸¥ó®Éµo¥Í¿ù»~¡C¬O§_­n­«¸Õ¤U¸ü³o¨Ç¤¸¥ó¡H"
-
-    IDS_DOWNLOAD                   "¥¿¦b¦w¸Ë¨ä¥L¤¸¥ó"
-	IDS_DOWNLOAD_UNPACKING         "¥¿¦b¸ÑÀ£ÁY§ô"
-    IDS_DOWNLOAD_TEXT              "¤U¸ü¨Ã¦w¸Ë¨ä¥L©Ò»Ý¤¸¥ó«á¡AJava À³¥Îµ{¦¡±N±Ò°Ê¡C"
-    
-    IDS_FILE_UPDATE_ERROR          "§ó·s %s%s ®Éµo¥Í¿ù»~¡C"
-    IDS_FILE_DELETE_ERROR          "²¾°£ %s ®Éµo¥Í¿ù»~¡C"
-    IDS_JAVA_HOME_ERROR            "µLªk½T©w Java ¥D¥Ø¿ý¡C"
-    IDS_KERNEL_HOME_ERROR          "µLªk½T©w jkernel.dll ªº¸ô®|¡C"
-    IDS_JBROKER_ERROR              "µLªk±Ò°Ê jbroker.exe¡C"
-    IDS_FATAL_ERROR                "Java µLªk¤U¸ü©Ò»Ýªº¤¸¥ó¡Cµ{¦¡±N¥ß§Yµ²§ô¡C"
-    IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES "Java µLªk»P¤U¸ü¦øªA¾¹¶i¦æ³q°T¡Cµ{¦¡±N¥ß§Yµ²§ô¡C"
-    IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES "Java ¦b»P¤U¸ü¦øªA¾¹¶i¦æ³q°T®É¹J¨ì¤F¤@­Ó¿ù»~¡Cµ{¦¡±N¥ß§Yµ²§ô¡C"
-    IDS_ERROR_MALFORMED_URL "Java µLªk±q URL¡u%s¡v¤U¸ü¡Cµ{¦¡±N¥ß§Yµ²§ô¡C"
-END
--- a/jdk/src/windows/native/sun/jkernel/resource.h	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-//{{NO_DEPENDENCIES}}
-// Microsoft Developer Studio generated include file.
-//
-//
-
-
-// HTTP status code
-#define IDS_HTTP_STATUS_FORBIDDEN           403
-#define IDS_HTTP_STATUS_REQUEST_TIMEOUT     408
-#define IDS_HTTP_STATUS_SERVER_ERROR        500
-#define IDS_HTTP_STATUS_SERVICE_UNAVAIL     503
-
-
-
-#define IDS_HTTP_INSTRUCTION_REQUEST_TIMEOUT           2408
-#define IDS_HTTP_INSTRUCTION_SERVICE_UNAVAIL           2503
-#define IDS_HTTP_INSTRUCTION_FORBIDDEN                 2403
-#define IDS_HTTP_INSTRUCTION_SERVER_NOT_REACHABLE      2035
-#define IDS_HTTP_INSTRUCTION_UNKNOWN_ERROR             2036
-#define IDS_HTTP_STATUS_OTHER                          2037
-
-#define IDS_DOWNLOAD_STATUS_RETRY           3004
-
-#define IDD_DOWNLOAD_DIALOG             105
-#define IDI_JAVA                        114
-#define IDI_MASTHEAD                    115
-#define IDC_DOWNLOAD_PROGRESS           1006
-#define IDC_DOWNLOAD_INFO               1007
-#define IDC_DOWNLOAD_STATUS             1008
-#define IDC_DOWNLOAD_ANIMATE            1009
-#define IDS_ERROR_CAPTION               2004
-#define IDS_HOURSMINUTESECOND           2007
-#define IDS_HOURMINUTESECOND            2008
-#define IDS_MINUTESECOND                2009
-#define IDS_SECOND                      2010
-#define IDS_DISK_FULL_ERROR             2023
-#define IDS_DISK_FULL_ERROR_CAPTION     2024
-#define IDS_DISK_WRITE_ERROR            2025
-#define IDS_DISK_WRITE_ERROR_CAPTION    2026
-#define IDS_HTTP_STATUS_SERVER_NOT_REACHABLE  2028
-#define IDS_FATAL_ERROR                 2029
-#define IDS_ERROR_DOWNLOADING_BUNDLE_PROPERTIES 2030
-#define IDS_ERROR_MALFORMED_BUNDLE_PROPERTIES 2031
-#define IDS_ERROR_MALFORMED_URL         2032
-
-#define IDS_DOWNLOAD_CANCEL_CAPTION            2038
-#define IDS_DOWNLOAD_CANCEL_INSTRUCTION        2039
-#define IDS_DOWNLOAD_CANCEL_MESSAGE            2040
-
-// codes for download and install dialog
-#define IDC_MASTHEAD_TEXT               116
-#define IDC_DOWNLOAD_MASTHEAD           121
-#define IDC_TIME_REMAINING              122
-#define IDC_DOWNLOAD_TEXT               123
-
-// codes for download retry dialog
-#define IDS_DOWNLOAD_RETRY              130
-#define IDS_DOWNLOAD_RETRY_TEXT         131
-
-#define IDS_DOWNLOAD_UNPACKING          3900
-#define IDS_DOWNLOAD                    4000
-#define IDS_DOWNLOAD_TEXT               4001
-
-// codes for completion cleanup
-#define IDS_FILE_UPDATE_ERROR           4101
-#define IDS_FILE_DELETE_ERROR           4103
-#define IDS_JAVA_HOME_ERROR             4104
-#define IDS_KERNEL_HOME_ERROR           4105
-#define IDS_JBROKER_ERROR               4106
-
-// Next default values for new objects
-//
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE        128
-#define _APS_NEXT_COMMAND_VALUE         40001
-#define _APS_NEXT_CONTROL_VALUE         1016
-#define _APS_NEXT_SYMED_VALUE           103
-#endif
-#endif
--- a/jdk/src/windows/native/sun/jkernel/stdafx.cpp	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-// stdafx.cpp : source file that includes just the standard includes
-//  stdafx.pch will be the pre-compiled header
-//  stdafx.obj will contain the pre-compiled type information
-
-#include "stdafx.h"
-
-#ifdef _ATL_STATIC_REGISTRY
-#include <statreg.h>
-#include <statreg.cpp>
-#endif
-
-#include <atlimpl.cpp>
--- a/jdk/src/windows/native/sun/jkernel/stdafx.h	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2008, 2010, 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.
- */
-
-// stdafx.h : include file for standard system include files,
-//      or project specific include files that are used frequently,
-//      but are changed infrequently
-
-#if !defined(AFX_STDAFX_H__FBC6C744_18F8_11D6_9DF1_0001023B10AA__INCLUDED_)
-#define AFX_STDAFX_H__FBC6C744_18F8_11D6_9DF1_0001023B10AA__INCLUDED_
-
-#if _MSC_VER > 1000
-#pragma once
-#endif // _MSC_VER > 1000
-
-#define STRICT
-#ifndef _WIN32_WINNT
-/* REMIND : 0x500 means Windows 2000 .. seems like we can update
- * for Windows XP when we move the SDK and build platform
- */
-#define _WIN32_WINNT 0x0500
-#endif
-#define _ATL_APARTMENT_THREADED
-
-#include <atlbase.h>
-//You may derive a class from CComModule and use it if you want to override
-//something, but do not change the name of _Module
-extern CComModule _Module;
-#include <atlcom.h>
-#include <atlwin.h>
-
-//{{AFX_INSERT_LOCATION}}
-// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
-
-#endif // !defined(AFX_STDAFX_H__FBC6C744_18F8_11D6_9DF1_0001023B10AA__INCLUDED)
--- a/jdk/src/windows/native/sun/jkernel/version.rc	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-#include "afxres.h"
-
-// Need 2 defines so macro argument to XSTR will get expanded before quoting.
-#define XSTR(x) STR(x)
-#define STR(x)  #x
-
-LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Version
-//
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION    JDK_FVER
- PRODUCTVERSION JDK_FVER
- FILEFLAGSMASK 0x3fL
-#ifdef _DEBUG
- FILEFLAGS 0x1L
-#else
- FILEFLAGS 0x0L
-#endif
- // FILEOS 0x4 is Win32, 0x40004 is Win32 NT only
- FILEOS 0x4L
- // FILETYPE should be 0x1 for .exe and 0x2 for .dll
- FILETYPE JDK_FTYPE
- FILESUBTYPE 0x0L
-BEGIN
-    BLOCK "StringFileInfo"
-    BEGIN
-        BLOCK "000004b0"
-        BEGIN
-            VALUE "CompanyName",      XSTR(JDK_COMPANY)       "\0"
-            VALUE "FileDescription",  XSTR(JDK_COMPONENT)     "\0"
-            VALUE "FileVersion",      XSTR(JDK_VER)           "\0"
-            VALUE "Full Version",     XSTR(JDK_BUILD_ID)      "\0"
-	    VALUE "InternalName",     XSTR(JDK_INTERNAL_NAME) "\0"
-            VALUE "LegalCopyright",   XSTR(JDK_COPYRIGHT)     "\0"
-            VALUE "OriginalFilename", XSTR(JDK_FNAME)         "\0"
-            VALUE "ProductName",      XSTR(JDK_NAME)          "\0"
-            VALUE "ProductVersion",   XSTR(JDK_VER)           "\0"
-        END
-    END
-    BLOCK "VarFileInfo"
-    BEGIN
-        VALUE "Translation", 0x0, 1200
-    END
-END
--- a/jdk/src/windows/native/sun/nio/ch/Iocp.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/native/sun/nio/ch/Iocp.c	Wed Jul 05 17:35:13 2017 +0200
@@ -72,9 +72,10 @@
 Java_sun_nio_ch_Iocp_createIoCompletionPort(JNIEnv* env, jclass this,
     jlong handle, jlong existingPort, jint completionKey, jint concurrency)
 {
+    ULONG_PTR ck = completionKey;
     HANDLE port = CreateIoCompletionPort((HANDLE)jlong_to_ptr(handle),
                                          (HANDLE)jlong_to_ptr(existingPort),
-                                         (DWORD)completionKey,
+                                         ck,
                                          (DWORD)concurrency);
     if (port == NULL) {
         JNU_ThrowIOExceptionWithLastError(env, "CreateIoCompletionPort failed");
@@ -96,7 +97,7 @@
     jlong completionPort, jobject obj)
 {
     DWORD bytesTransferred;
-    DWORD completionKey;
+    ULONG_PTR completionKey;
     OVERLAPPED *lpOverlapped;
     BOOL res;
 
--- a/jdk/src/windows/native/sun/nio/fs/RegistryFileTypeDetector.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/native/sun/nio/fs/RegistryFileTypeDetector.c	Wed Jul 05 17:35:13 2017 +0200
@@ -51,7 +51,7 @@
         res = RegQueryValueExW(hKey, lpValueName, NULL, &type, (LPBYTE)&data, &size);
         if (res == ERROR_SUCCESS) {
             if (type == REG_SZ) {
-                jsize len = wcslen((WCHAR*)data);
+                jsize len = (jsize)wcslen((WCHAR*)data);
                 result = (*env)->NewString(env, (const jchar*)&data, len);
             }
         }
--- a/jdk/src/windows/native/sun/nio/fs/WindowsNativeDispatcher.c	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/native/sun/nio/fs/WindowsNativeDispatcher.c	Wed Jul 05 17:35:13 2017 +0200
@@ -368,7 +368,7 @@
 
     HANDLE handle = FindFirstFileW(lpFileName, &data);
     if (handle != INVALID_HANDLE_VALUE) {
-        jstring name = (*env)->NewString(env, data.cFileName, wcslen(data.cFileName));
+        jstring name = (*env)->NewString(env, data.cFileName, (jsize)wcslen(data.cFileName));
         if (name == NULL)
             return;
         (*env)->SetLongField(env, obj, findFirst_handle, ptr_to_jlong(handle));
@@ -401,7 +401,7 @@
     WIN32_FIND_DATAW* data = (WIN32_FIND_DATAW*)jlong_to_ptr(dataAddress);
 
     if (FindNextFileW(h, data) != 0) {
-        return (*env)->NewString(env, data->cFileName, wcslen(data->cFileName));
+        return (*env)->NewString(env, data->cFileName, (jsize)wcslen(data->cFileName));
     } else {
     if (GetLastError() != ERROR_NO_MORE_FILES)
         throwWindowsException(env, GetLastError());
@@ -424,7 +424,7 @@
 
     handle = (*FindFirstStream_func)(lpFileName, FindStreamInfoStandard, &data, 0);
     if (handle != INVALID_HANDLE_VALUE) {
-        jstring name = (*env)->NewString(env, data.cStreamName, wcslen(data.cStreamName));
+        jstring name = (*env)->NewString(env, data.cStreamName, (jsize)wcslen(data.cStreamName));
         if (name == NULL)
             return;
         (*env)->SetLongField(env, obj, findStream_handle, ptr_to_jlong(handle));
@@ -452,7 +452,7 @@
     }
 
     if ((*FindNextStream_func)(h, &data) != 0) {
-        return (*env)->NewString(env, data.cStreamName, wcslen(data.cStreamName));
+        return (*env)->NewString(env, data.cStreamName, (jsize)wcslen(data.cStreamName));
     } else {
         if (GetLastError() != ERROR_HANDLE_EOF)
             throwWindowsException(env, GetLastError());
@@ -1224,9 +1224,10 @@
 Java_sun_nio_fs_WindowsNativeDispatcher_CreateIoCompletionPort(JNIEnv* env, jclass this,
     jlong fileHandle, jlong existingPort, jint completionKey)
 {
+    ULONG_PTR ck = completionKey;
     HANDLE port = CreateIoCompletionPort((HANDLE)jlong_to_ptr(fileHandle),
                                          (HANDLE)jlong_to_ptr(existingPort),
-                                         (DWORD)completionKey,
+                                         ck,
                                          0);
     if (port == NULL) {
         throwWindowsException(env, GetLastError());
@@ -1239,7 +1240,7 @@
     jlong completionPort, jobject obj)
 {
     DWORD bytesTransferred;
-    DWORD completionKey;
+    ULONG_PTR completionKey;
     OVERLAPPED *lpOverlapped;
     BOOL res;
 
--- a/jdk/src/windows/resource/java.manifest	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/src/windows/resource/java.manifest	Wed Jul 05 17:35:13 2017 +0200
@@ -41,4 +41,12 @@
     </asmv3:windowsSettings>
   </asmv3:application>
 
+  <!-- Indicate this JDK version is Windows 7 compatible -->
+   <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
+      <application>
+        <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
+        <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
+      </application>
+    </compatibility>
+
 </assembly>
--- a/jdk/test/com/sun/jndi/ldap/LdapName/Case.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/com/sun/jndi/ldap/LdapName/Case.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 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.
+ */
+
 /*
  * @test
  * @bug 4278094
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/com/sun/jndi/ldap/LdapName/EmptyNameSearch.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,141 @@
+/*
+ * Copyright (c) 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.
+ */
+
+/**
+ * @test
+ * @bug 6997561
+ * @summary A request for better error handling in JNDI
+ */
+
+import java.net.Socket;
+import java.net.ServerSocket;
+import java.io.*;
+import javax.naming.*;
+import javax.naming.directory.*;
+import javax.naming.ldap.*;
+import java.util.Collections;
+import java.util.Hashtable;
+
+public class EmptyNameSearch {
+
+    public static void main(String[] args) throws Exception {
+
+        // Start the LDAP server
+        Server s = new Server();
+        s.start();
+        Thread.sleep(3000);
+
+        // Setup JNDI parameters
+        Hashtable env = new Hashtable();
+        env.put(Context.INITIAL_CONTEXT_FACTORY,
+            "com.sun.jndi.ldap.LdapCtxFactory");
+        env.put(Context.PROVIDER_URL, "ldap://localhost:" + s.getPortNumber());
+
+        try {
+
+            // Create initial context
+            System.out.println("Client: connecting...");
+            DirContext ctx = new InitialDirContext(env);
+
+            System.out.println("Client: performing search...");
+            ctx.search(new LdapName(Collections.EMPTY_LIST), "cn=*", null);
+            ctx.close();
+
+            // Exit
+            throw new RuntimeException();
+
+        } catch (NamingException e) {
+            System.err.println("Passed: caught the expected Exception - " + e);
+
+        } catch (Exception e) {
+            System.err.println("Failed: caught an unexpected Exception - " + e);
+            throw e;
+        }
+    }
+
+    static class Server extends Thread {
+
+        private int serverPort = 0;
+        private byte[] bindResponse = {
+            0x30, 0x0C, 0x02, 0x01, 0x01, 0x61, 0x07, 0x0A,
+            0x01, 0x00, 0x04, 0x00, 0x04, 0x00
+        };
+        private byte[] searchResponse = {
+            0x30, 0x0C, 0x02, 0x01, 0x02, 0x65, 0x07, 0x0A,
+            0x01, 0x02, 0x04, 0x00, 0x04, 0x00
+        };
+
+        Server() {
+        }
+
+        public int getPortNumber() {
+            return serverPort;
+        }
+
+        public void run() {
+            try {
+                ServerSocket serverSock = new ServerSocket(0);
+                serverPort = serverSock.getLocalPort();
+                System.out.println("Server: listening on port " + serverPort);
+
+                Socket socket = serverSock.accept();
+                System.out.println("Server: connection accepted");
+
+                InputStream in = socket.getInputStream();
+                OutputStream out = socket.getOutputStream();
+
+                // Read the LDAP BindRequest
+                System.out.println("Server: reading request...");
+                while (in.read() != -1) {
+                    in.skip(in.available());
+                    break;
+                }
+
+                // Write an LDAP BindResponse
+                System.out.println("Server: writing response...");
+                out.write(bindResponse);
+                out.flush();
+
+                // Read the LDAP SearchRequest
+                System.out.println("Server: reading request...");
+                while (in.read() != -1) {
+                    in.skip(in.available());
+                    break;
+                }
+
+                // Write an LDAP SearchResponse
+                System.out.println("Server: writing response...");
+                out.write(searchResponse);
+                out.flush();
+
+                in.close();
+                out.close();
+                socket.close();
+                serverSock.close();
+
+            } catch (IOException e) {
+                // ignore
+            }
+        }
+    }
+}
--- a/jdk/test/com/sun/jndi/ldap/LdapName/UnescapeTest.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/com/sun/jndi/ldap/LdapName/UnescapeTest.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 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.
+ */
+
 /*
  * @test
  * @bug 4892070
--- a/jdk/test/com/sun/jndi/ldap/ReadTimeoutTest.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/com/sun/jndi/ldap/ReadTimeoutTest.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 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.
+ */
+
 /**
  * @test
  * @bug 6176036
--- a/jdk/test/demo/zipfs/Basic.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/demo/zipfs/Basic.java	Wed Jul 05 17:35:13 2017 +0200
@@ -48,9 +48,9 @@
         if (!found)
             throw new RuntimeException("'jar' provider not installed");
 
-        // Test: FileSystems#newFileSystem(FileRef)
+        // Test: FileSystems#newFileSystem(Path)
         Map<String,?> env = new HashMap<String,Object>();
-        FileSystems.newFileSystem(zipfile, env, null).close();
+        FileSystems.newFileSystem(zipfile, null).close();
 
         // Test: FileSystems#newFileSystem(URI)
         URI uri = new URI("jar", zipfile.toUri().toString(), null);
@@ -69,14 +69,11 @@
 
         // Test: DirectoryStream
         found = false;
-        DirectoryStream<Path> stream = fs.getPath("/").newDirectoryStream();
-        try {
+        try (DirectoryStream<Path> stream = Files.newDirectoryStream(fs.getPath("/"))) {
             for (Path entry: stream) {
                 found = entry.toString().equals("/META-INF/");
                 if (found) break;
             }
-        } finally {
-            stream.close();
         }
 
         if (!found)
@@ -84,21 +81,21 @@
 
         // Test: copy file from zip file to current (scratch) directory
         Path source = fs.getPath("/META-INF/services/java.nio.file.spi.FileSystemProvider");
-        if (source.exists()) {
-            Path target = Paths.get(source.getName().toString());
-            source.copyTo(target, StandardCopyOption.REPLACE_EXISTING);
+        if (Files.exists(source)) {
+            Path target = Paths.get(source.getFileName().toString());
+            Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
             try {
-                long s1 = Attributes.readBasicFileAttributes(source).size();
-                long s2 = Attributes.readBasicFileAttributes(target).size();
+                long s1 = Files.readAttributes(source, BasicFileAttributes.class).size();
+                long s2 = Files.readAttributes(target, BasicFileAttributes.class).size();
                 if (s2 != s1)
                     throw new RuntimeException("target size != source size");
             } finally {
-                target.delete();
+                Files.delete(target);
             }
         }
 
         // Test: FileStore
-        FileStore store = fs.getPath("/").getFileStore();
+        FileStore store = Files.getFileStore(fs.getPath("/"));
         if (!store.supportsFileAttributeView("basic"))
             throw new RuntimeException("BasicFileAttributeView should be supported");
 
@@ -107,7 +104,7 @@
         if (fs.isOpen())
             throw new RuntimeException("FileSystem should be closed");
         try {
-            fs.getPath("/missing").checkAccess(AccessMode.READ);
+            fs.provider().checkAccess(fs.getPath("/missing"), AccessMode.READ);
         } catch (ClosedFileSystemException x) { }
     }
 
@@ -125,9 +122,9 @@
         public FileVisitResult preVisitDirectory(Path dir,
                                                  BasicFileAttributes attrs)
         {
-            if (dir.getName() != null) {
+            if (dir.getFileName() != null) {
                 indent();
-                System.out.println(dir.getName() + "/");
+                System.out.println(dir.getFileName() + "/");
                 indent++;
             }
             return FileVisitResult.CONTINUE;
@@ -138,7 +135,7 @@
                                          BasicFileAttributes attrs)
         {
             indent();
-            System.out.print(file.getName());
+            System.out.print(file.getFileName());
             if (attrs.isRegularFile())
                 System.out.format(" (%d)", attrs.size());
             System.out.println();
@@ -151,7 +148,7 @@
         {
             if (exc != null)
                 super.postVisitDirectory(dir, exc);
-            if (dir.getName() != null)
+            if (dir.getFileName() != null)
                 indent--;
             return FileVisitResult.CONTINUE;
         }
--- a/jdk/test/demo/zipfs/PathOps.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/demo/zipfs/PathOps.java	Wed Jul 05 17:35:13 2017 +0200
@@ -100,7 +100,7 @@
     PathOps name(String expected) {
         out.println("check name");
         checkPath();
-        check(path.getName(), expected);
+        check(path.getFileName(), expected);
         return this;
     }
 
@@ -197,7 +197,7 @@
         try {
             out.println("check two paths are same");
             checkPath();
-            check(path.isSameFile(test(target).path()), true);
+            check(Files.isSameFile(path, test(target).path()), true);
         } catch (IOException ioe) {
             fail();
         }
@@ -252,31 +252,41 @@
             .name("foo");
 
         // startsWith
+        test("")
+            .starts("")
+            .notStarts("/");
         test("/")
             .starts("/")
             .notStarts("/foo");
         test("/foo")
             .starts("/")
             .starts("/foo")
-            .notStarts("/f");
+            .notStarts("/f")
+            .notStarts("");
         test("/foo/bar")
             .starts("/")
             .starts("/foo")
+            .starts("/foo/")
             .starts("/foo/bar")
             .notStarts("/f")
             .notStarts("foo")
-            .notStarts("foo/bar");
+            .notStarts("foo/bar")
+            .notStarts("");
         test("foo")
             .starts("foo")
             .notStarts("f");
         test("foo/bar")
             .starts("foo")
+            .starts("foo/")
             .starts("foo/bar")
             .notStarts("f")
             .notStarts("/foo")
             .notStarts("/foo/bar");
 
         // endsWith
+        test("")
+            .ends("")
+            .notEnds("/");
         test("/")
             .ends("/")
             .notEnds("foo")
@@ -288,14 +298,24 @@
         test("/foo/bar")
             .ends("bar")
             .ends("foo/bar")
+            .ends("foo/bar/")
+            .ends("/foo/bar")
+            .notEnds("/bar");
+        test("/foo/bar/")
+            .ends("bar")
+            .ends("foo/bar")
+            .ends("foo/bar/")
             .ends("/foo/bar")
             .notEnds("/bar");
         test("foo")
             .ends("foo");
         test("foo/bar")
             .ends("bar")
+            .ends("bar/")
+            .ends("foo/bar/")
             .ends("foo/bar");
 
+
         // elements
         test("a/b/c")
             .element(0,"a")
@@ -309,6 +329,8 @@
             .absolute();
         test("tmp")
             .notAbsolute();
+        test("")
+            .notAbsolute();
 
         // resolve
         test("/tmp")
@@ -320,7 +342,7 @@
 
         // relativize
         test("/a/b/c")
-            .relativize("/a/b/c", null)
+            .relativize("/a/b/c", "")
             .relativize("/a/b/c/d/e", "d/e")
             .relativize("/a/x", "../../x");
 
@@ -332,7 +354,7 @@
         test("/foo")
             .normalize("/foo");
         test(".")
-            .normalize(null);
+            .normalize("");
         test("..")
             .normalize("..");
         test("/..")
@@ -344,7 +366,7 @@
         test("./foo")
             .normalize("foo");
         test("foo/..")
-            .normalize(null);
+            .normalize("");
         test("../foo")
             .normalize("../foo");
         test("../../foo")
@@ -411,13 +433,13 @@
         }
 
         try {
-            path.startsWith(null);
+            path.startsWith((Path)null);
             throw new RuntimeException("NullPointerException not thrown");
         } catch (NullPointerException npe) {
         }
 
         try {
-            path.endsWith(null);
+            path.endsWith((Path)null);
             throw new RuntimeException("NullPointerException not thrown");
         } catch (NullPointerException npe) {
         }
@@ -427,8 +449,7 @@
     public static void main(String[] args) throws Throwable {
 
         Path zipfile = Paths.get(args[0]);
-        Map<String,?> env = new HashMap<String,Object>();
-        fs = FileSystems.newFileSystem(zipfile, env, null);
+        fs = FileSystems.newFileSystem(zipfile, null);
         npes();
         doPathOpTests();
         fs.close();
--- a/jdk/test/demo/zipfs/ZipFSTester.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/demo/zipfs/ZipFSTester.java	Wed Jul 05 17:35:13 2017 +0200
@@ -25,6 +25,7 @@
 import java.nio.*;
 import java.nio.channels.*;
 import java.nio.file.*;
+import java.nio.file.spi.*;
 import java.nio.file.attribute.*;
 import java.net.*;
 import java.util.*;
@@ -40,15 +41,13 @@
 public class ZipFSTester {
 
     public static void main(String[] args) throws Throwable {
-        FileSystem fs = null;
-        try {
-            fs = newZipFileSystem(Paths.get(args[0]), new HashMap<String, Object>());
+
+        try (FileSystem fs = newZipFileSystem(Paths.get(args[0]),
+                                              new HashMap<String, Object>()))
+        {
             test0(fs);
             test1(fs);
             test2(fs);   // more tests
-        } finally {
-            if (fs != null)
-                fs.close();
         }
     }
 
@@ -63,17 +62,17 @@
             }
             for (String pname : list) {
                 Path path = fs.getPath(pname);
-                if (!path.exists())
+                if (!Files.exists(path))
                     throw new RuntimeException("path existence check failed!");
                 while ((path = path.getParent()) != null) {
-                    if (!path.exists())
+                    if (!Files.exists(path))
                         throw new RuntimeException("parent existence check failed!");
                 }
             }
         }
     }
 
-    static void test1(FileSystem fs)
+    static void test1(FileSystem fs0)
         throws Exception
     {
         Random rdm = new Random();
@@ -81,16 +80,26 @@
         Path tmpfsPath = getTempPath();
         Map<String, Object> env = new HashMap<String, Object>();
         env.put("create", "true");
-        FileSystem fs0 = newZipFileSystem(tmpfsPath, env);
-        z2zcopy(fs, fs0, "/", 0);
-        fs0.close();                // sync to file
+        try (FileSystem copy = newZipFileSystem(tmpfsPath, env)) {
+            z2zcopy(fs0, copy, "/", 0);
+        }
+
+        try (FileSystem fs = newZipFileSystem(tmpfsPath, new HashMap<String, Object>())) {
 
-        fs = newZipFileSystem(tmpfsPath, new HashMap<String, Object>());
-        try {
+            FileSystemProvider provider = fs.provider();
+            // newFileSystem(path...) should not throw exception
+            try (FileSystem fsPath = provider.newFileSystem(tmpfsPath, new HashMap<String, Object>())){}
+            try (FileSystem fsUri = provider.newFileSystem(
+                     new URI("jar", tmpfsPath.toUri().toString(), null),
+                     new HashMap<String, Object>()))
+            {
+              throw new RuntimeException("newFileSystem(uri...) does not throw exception");
+            } catch (FileSystemAlreadyExistsException fsaee) {}
+
             // prepare a src
             Path src = getTempPath();
             String tmpName = src.toString();
-            OutputStream os = src.newOutputStream();
+            OutputStream os = Files.newOutputStream(src);
             byte[] bits = new byte[12345];
             rdm.nextBytes(bits);
             os.write(bits);
@@ -98,37 +107,37 @@
 
             // copyin
             Path dst = getPathWithParents(fs, tmpName);
-            src.copyTo(dst);
+            Files.copy(src, dst);
             checkEqual(src, dst);
 
             // copy
             Path dst2 = getPathWithParents(fs, "/xyz" + rdm.nextInt(100) +
                                            "/efg" + rdm.nextInt(100) + "/foo.class");
-            dst.copyTo(dst2);
+            Files.copy(dst, dst2);
             //dst.moveTo(dst2);
             checkEqual(src, dst2);
 
             // delete
-            dst.delete();
-            if (dst.exists())
+            Files.delete(dst);
+            if (Files.exists(dst))
                 throw new RuntimeException("Failed!");
 
             // moveout
             Path dst3 = Paths.get(tmpName + "_Tmp");
-            dst2.moveTo(dst3);
+            Files.move(dst2, dst3);
             checkEqual(src, dst3);
 
             // delete
-            if (dst2.exists())
+            if (Files.exists(dst2))
                 throw new RuntimeException("Failed!");
-            dst3.delete();
-            if (dst3.exists())
+            Files.delete(dst3);
+            if (Files.exists(dst3))
                 throw new RuntimeException("Failed!");
 
             // newInputStream on dir
             Path parent = dst2.getParent();
             try {
-                parent.newInputStream();
+                Files.newInputStream(parent);
                 throw new RuntimeException("Failed");
             } catch (FileSystemException e) {
                 e.printStackTrace();    // expected fse
@@ -147,17 +156,15 @@
             Path tmp = Paths.get(tmpName + "_Tmp");
             fchCopy(dst, tmp);   //  out
             checkEqual(src, tmp);
-            tmp.delete();
+            Files.delete(tmp);
 
             // test channels
             channel(fs, dst);
-            dst.delete();
-            src.delete();
+            Files.delete(dst);
+            Files.delete(src);
         } finally {
-            if (fs != null)
-                fs.close();
-            if (tmpfsPath.exists())
-                tmpfsPath.delete();
+            if (Files.exists(tmpfsPath))
+                Files.delete(tmpfsPath);
         }
     }
 
@@ -242,7 +249,7 @@
                     while (itr.hasNext()) {
                         String path = itr.next();
                         try {
-                            if (fs2.getPath(path).exists()) {
+                            if (Files.exists(fs2.getPath(path))) {
                                 z2zmove(fs2, fs3, path);
                                 itr.remove();
                             }
@@ -296,15 +303,16 @@
         fs4.close();
         System.out.printf("failed=%d%n", failed);
 
-        fs1Path.delete();
-        fs2Path.delete();
-        fs3Path.delete();
+        Files.delete(fs1Path);
+        Files.delete(fs2Path);
+        Files.delete(fs3Path);
     }
 
     private static FileSystem newZipFileSystem(Path path, Map<String, ?> env)
-        throws IOException
+        throws Exception
     {
-        return FileSystems.newFileSystem(path, env, null);
+        return FileSystems.newFileSystem(
+            new URI("jar", path.toUri().toString(), null), env, null);
     }
 
     private static Path getTempPath() throws IOException
@@ -317,11 +325,11 @@
     private static void list(Path path, List<String> files, List<String> dirs )
         throws IOException
     {
-        if (Attributes.readBasicFileAttributes(path).isDirectory()) {
-            DirectoryStream<Path> ds = path.newDirectoryStream();
-            for (Path child : ds)
-                list(child, files, dirs);
-            ds.close();
+        if (Files.isDirectory(path)) {
+            try (DirectoryStream<Path> ds = Files.newDirectoryStream(path)) {
+                for (Path child : ds)
+                    list(child, files, dirs);
+            }
             dirs.add(path.toString());
         } else {
             files.add(path.toString());
@@ -335,26 +343,26 @@
         Path srcPath = src.getPath(path);
         Path dstPath = dst.getPath(path);
 
-        if (Boolean.TRUE.equals(srcPath.getAttribute("isDirectory"))) {
-            if (!dstPath.exists()) {
+        if (Files.isDirectory(srcPath)) {
+            if (!Files.exists(dstPath)) {
                 try {
                     mkdirs(dstPath);
                 } catch (FileAlreadyExistsException x) {}
             }
-            DirectoryStream<Path> ds = srcPath.newDirectoryStream();
-            for (Path child : ds) {
-                z2zcopy(src, dst,
-                        path + (path.endsWith("/")?"":"/") + child.getName(),
-                        method);
+            try (DirectoryStream<Path> ds = Files.newDirectoryStream(srcPath)) {
+                for (Path child : ds) {
+                    z2zcopy(src, dst,
+                           path + (path.endsWith("/")?"":"/") + child.getFileName(),
+                           method);
+                }
             }
-            ds.close();
         } else {
             try {
-                if (dstPath.exists())
+                if (Files.exists(dstPath))
                     return;
                 switch (method) {
                 case 0:
-                    srcPath.copyTo(dstPath);
+                    Files.copy(srcPath, dstPath);
                     break;
                 case 1:
                     chCopy(srcPath, dstPath);
@@ -374,21 +382,21 @@
         Path srcPath = src.getPath(path);
         Path dstPath = dst.getPath(path);
 
-        if (Boolean.TRUE.equals(srcPath.getAttribute("isDirectory"))) {
-            if (!dstPath.exists())
+        if (Files.isDirectory(srcPath)) {
+            if (!Files.exists(dstPath))
                 mkdirs(dstPath);
-            DirectoryStream<Path> ds = srcPath.newDirectoryStream();
-            for (Path child : ds) {
-                z2zmove(src, dst,
-                        path + (path.endsWith("/")?"":"/") + child.getName());
+            try (DirectoryStream<Path> ds = Files.newDirectoryStream(srcPath)) {
+                for (Path child : ds) {
+                    z2zmove(src, dst,
+                            path + (path.endsWith("/")?"":"/") + child.getFileName());
+                }
             }
-            ds.close();
         } else {
             //System.out.println("moving..." + path);
             Path parent = dstPath.getParent();
-            if (parent != null && parent.notExists())
+            if (parent != null && Files.notExists(parent))
                 mkdirs(parent);
-            srcPath.moveTo(dstPath);
+            Files.move(srcPath, dstPath);
         }
     }
 
@@ -409,7 +417,7 @@
                                                  BasicFileAttributes attrs)
                 {
                     indent();
-                    System.out.printf("%s%n", file.getName().toString());
+                    System.out.printf("%s%n", file.getFileName().toString());
                     return FileVisitResult.CONTINUE;
                 }
 
@@ -435,20 +443,20 @@
     }
 
     private static void mkdirs(Path path) throws IOException {
-        if (path.exists())
+        if (Files.exists(path))
             return;
         path = path.toAbsolutePath();
         Path parent = path.getParent();
         if (parent != null) {
-            if (parent.notExists())
+            if (Files.notExists(parent))
                 mkdirs(parent);
         }
-        path.createDirectory();
+        Files.createDirectory(path);
     }
 
     private static void rmdirs(Path path) throws IOException {
         while (path != null && path.getNameCount() != 0) {
-            path.delete();
+            Files.delete(path);
             path = path.getParent();
         }
     }
@@ -460,12 +468,11 @@
         //                  src.toString(), dst.toString());
 
         //streams
-        InputStream isSrc = src.newInputStream();
-        InputStream isDst = dst.newInputStream();
         byte[] bufSrc = new byte[8192];
         byte[] bufDst = new byte[8192];
-
-        try {
+        try (InputStream isSrc = Files.newInputStream(src);
+             InputStream isDst = Files.newInputStream(dst))
+        {
             int nSrc = 0;
             while ((nSrc = isSrc.read(bufSrc)) != -1) {
                 int nDst = 0;
@@ -487,24 +494,21 @@
                     nSrc--;
                 }
             }
-        } finally {
-            isSrc.close();
-            isDst.close();
         }
 
         // channels
-        SeekableByteChannel chSrc = src.newByteChannel();
-        SeekableByteChannel chDst = dst.newByteChannel();
-        if (chSrc.size() != chDst.size()) {
-            System.out.printf("src[%s].size=%d, dst[%s].size=%d%n",
-                              chSrc.toString(), chSrc.size(),
-                              chDst.toString(), chDst.size());
-            throw new RuntimeException("CHECK FAILED!");
-        }
-        ByteBuffer bbSrc = ByteBuffer.allocate(8192);
-        ByteBuffer bbDst = ByteBuffer.allocate(8192);
+        try (SeekableByteChannel chSrc = Files.newByteChannel(src);
+             SeekableByteChannel chDst = Files.newByteChannel(dst))
+        {
+            if (chSrc.size() != chDst.size()) {
+                System.out.printf("src[%s].size=%d, dst[%s].size=%d%n",
+                                  chSrc.toString(), chSrc.size(),
+                                  chDst.toString(), chDst.size());
+                throw new RuntimeException("CHECK FAILED!");
+            }
+            ByteBuffer bbSrc = ByteBuffer.allocate(8192);
+            ByteBuffer bbDst = ByteBuffer.allocate(8192);
 
-        try {
             int nSrc = 0;
             while ((nSrc = chSrc.read(bbSrc)) != -1) {
                 int nDst = chDst.read(bbDst);
@@ -526,9 +530,6 @@
             }
         } catch (IOException x) {
             x.printStackTrace();
-        } finally {
-            chSrc.close();
-            chDst.close();
         }
     }
 
@@ -540,23 +541,19 @@
         openwrite.add(CREATE_NEW);
         openwrite.add(WRITE);
 
-        FileChannel srcFc = src.getFileSystem()
-                               .provider()
-                               .newFileChannel(src, read);
-        FileChannel dstFc = dst.getFileSystem()
-                               .provider()
-                               .newFileChannel(dst, openwrite);
-
-        try {
+        try (FileChannel srcFc = src.getFileSystem()
+                                    .provider()
+                                    .newFileChannel(src, read);
+             FileChannel dstFc = dst.getFileSystem()
+                                    .provider()
+                                    .newFileChannel(dst, openwrite))
+        {
             ByteBuffer bb = ByteBuffer.allocate(8192);
             while (srcFc.read(bb) >= 0) {
                 bb.flip();
                 dstFc.write(bb);
                 bb.clear();
             }
-        } finally {
-            srcFc.close();
-            dstFc.close();
         }
     }
 
@@ -568,35 +565,29 @@
         openwrite.add(CREATE_NEW);
         openwrite.add(WRITE);
 
-        SeekableByteChannel srcCh = src.newByteChannel(read);
-        SeekableByteChannel dstCh = dst.newByteChannel(openwrite);
+        try (SeekableByteChannel srcCh = Files.newByteChannel(src, read);
+             SeekableByteChannel dstCh = Files.newByteChannel(dst, openwrite))
+        {
 
-        try {
             ByteBuffer bb = ByteBuffer.allocate(8192);
             while (srcCh.read(bb) >= 0) {
                 bb.flip();
                 dstCh.write(bb);
                 bb.clear();
             }
-        } finally {
-            srcCh.close();
-            dstCh.close();
         }
     }
 
     private static void streamCopy(Path src, Path dst) throws IOException
     {
-        InputStream isSrc = src.newInputStream();
-        OutputStream osDst = dst.newOutputStream();
         byte[] buf = new byte[8192];
-        try {
+        try (InputStream isSrc = Files.newInputStream(src);
+             OutputStream osDst = Files.newOutputStream(dst))
+        {
             int n = 0;
             while ((n = isSrc.read(buf)) != -1) {
                 osDst.write(buf, 0, n);
             }
-        } finally {
-            isSrc.close();
-            osDst.close();
         }
     }
 
@@ -604,31 +595,35 @@
         throws Exception
     {
         System.out.println("test ByteChannel...");
-        SeekableByteChannel sbc = path.newByteChannel();
         Set<OpenOption> read = new HashSet<>();
         read.add(READ);
-        System.out.printf("   sbc[0]: pos=%d, size=%d%n", sbc.position(), sbc.size());
-        ByteBuffer bb = ByteBuffer.allocate((int)sbc.size());
-        int n = sbc.read(bb);
-        System.out.printf("   sbc[1]: read=%d, pos=%d, size=%d%n",
-                          n, sbc.position(), sbc.size());
-        ByteBuffer bb2 = ByteBuffer.allocate((int)sbc.size());
+        int n = 0;
+        ByteBuffer bb = null;
+        ByteBuffer bb2 = null;
         int N = 120;
-        sbc.close();
+
+        try (SeekableByteChannel sbc = Files.newByteChannel(path)) {
+            System.out.printf("   sbc[0]: pos=%d, size=%d%n", sbc.position(), sbc.size());
+            bb = ByteBuffer.allocate((int)sbc.size());
+            n = sbc.read(bb);
+            System.out.printf("   sbc[1]: read=%d, pos=%d, size=%d%n",
+                              n, sbc.position(), sbc.size());
+            bb2 = ByteBuffer.allocate((int)sbc.size());
+        }
 
         // sbc.position(pos) is not supported in current version
         // try the FileChannel
-        sbc = fs.provider().newFileChannel(path, read);
-        sbc.position(N);
-        System.out.printf("   sbc[2]: pos=%d, size=%d%n",
-                          sbc.position(), sbc.size());
-        bb2.limit(100);
-        n = sbc.read(bb2);
-        System.out.printf("   sbc[3]: read=%d, pos=%d, size=%d%n",
-                          n, sbc.position(), sbc.size());
-        System.out.printf("   sbc[4]: bb[%d]=%d, bb1[0]=%d%n",
-                          N, bb.get(N) & 0xff, bb2.get(0) & 0xff);
-        sbc.close();
+        try (SeekableByteChannel sbc = fs.provider().newFileChannel(path, read)) {
+            sbc.position(N);
+            System.out.printf("   sbc[2]: pos=%d, size=%d%n",
+                              sbc.position(), sbc.size());
+            bb2.limit(100);
+            n = sbc.read(bb2);
+            System.out.printf("   sbc[3]: read=%d, pos=%d, size=%d%n",
+                              n, sbc.position(), sbc.size());
+            System.out.printf("   sbc[4]: bb[%d]=%d, bb1[0]=%d%n",
+                              N, bb.get(N) & 0xff, bb2.get(0) & 0xff);
+        }
     }
 
     // create parents if does not exist
@@ -637,7 +632,7 @@
     {
         Path path = fs.getPath(name);
         Path parent = path.getParent();
-        if (parent != null && parent.notExists())
+        if (parent != null && Files.notExists(parent))
             mkdirs(parent);
         return path;
     }
--- a/jdk/test/demo/zipfs/basic.sh	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/demo/zipfs/basic.sh	Wed Jul 05 17:35:13 2017 +0200
@@ -21,7 +21,7 @@
 # questions.
 #
 # @test
-# @bug 6990846 7009092 7009085
+# @bug 6990846 7009092 7009085 7015391 7014948 7005986 7017840
 # @summary Test ZipFileSystem demo
 # @build Basic PathOps ZipFSTester
 # @run shell basic.sh
--- a/jdk/test/java/awt/Container/CheckZOrderChange/CheckZOrderChange.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/awt/Container/CheckZOrderChange/CheckZOrderChange.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2008, 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.
+ */
+
 /*
    @test %I% %E%
    @bug 2161766
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_AWT.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,44 @@
+/*
+  @test
+  @bug 6741526
+  @summary KeyboardFocusManager.setDefaultFocusTraversalPolicy(FocusTraversalPolicy) affects created components
+  @library ../../regtesthelpers
+  @build Sysout
+  @author Andrei Dmitriev : area=awt-focus
+  @run main DefaultPolicyChange_AWT
+*/
+
+import java.awt.*;
+import test.java.awt.regtesthelpers.Sysout;
+
+public class DefaultPolicyChange_AWT {
+    public static void main(String []s) {
+        DefaultPolicyChange_AWT.runTestAWT();
+    }
+
+    private static void runTestAWT(){
+        KeyboardFocusManager currentKFM = KeyboardFocusManager.getCurrentKeyboardFocusManager();
+        FocusTraversalPolicy defaultFTP = currentKFM.getDefaultFocusTraversalPolicy();
+        ContainerOrderFocusTraversalPolicy newFTP = new ContainerOrderFocusTraversalPolicy();
+
+        Frame frame = new Frame();
+        Window window = new Window(frame);
+
+        FocusTraversalPolicy resultFTP = window.getFocusTraversalPolicy();
+        Sysout.println("FocusTraversalPolicy on window = " + resultFTP);
+        /**
+         * Note: this call doesn't affect already created components as they have
+         * their policy initialized. Only new components will use this policy as
+         * their default policy.
+         **/
+        Sysout.println("Now will set another policy.");
+        currentKFM.setDefaultFocusTraversalPolicy(newFTP);
+        resultFTP = window.getFocusTraversalPolicy();
+        if (!resultFTP.equals(defaultFTP)) {
+            Sysout.println("Failure! FocusTraversalPolicy should not change");
+            Sysout.println("Was: " + defaultFTP);
+            Sysout.println("Become: " + resultFTP);
+            throw new RuntimeException("Failure! FocusTraversalPolicy should not change");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_Swing.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,69 @@
+/*
+  @test
+  @bug 6741526
+  @summary KeyboardFocusManager.setDefaultFocusTraversalPolicy(FocusTraversalPolicy) affects created components
+  @library ../../regtesthelpers
+  @build Sysout
+  @author Andrei Dmitriev : area=awt-focus
+  @run main DefaultPolicyChange_Swing
+*/
+
+import java.awt.*;
+import javax.swing.*;
+import javax.swing.table.DefaultTableModel;
+import test.java.awt.regtesthelpers.Sysout;
+
+public class DefaultPolicyChange_Swing {
+    public static void main(String []s) {
+        EventQueue.invokeLater(new Runnable(){
+            public void run (){
+                DefaultPolicyChange_Swing.runTestSwing();
+            }
+        });
+    }
+    private static void runTestSwing(){
+        KeyboardFocusManager currentKFM = KeyboardFocusManager.getCurrentKeyboardFocusManager();
+        FocusTraversalPolicy defaultFTP = currentKFM.getDefaultFocusTraversalPolicy();
+        ContainerOrderFocusTraversalPolicy newFTP = new ContainerOrderFocusTraversalPolicy();
+
+
+        JFrame jf = new JFrame("Test1");
+        JWindow jw = new JWindow(jf);
+        JDialog jd = new JDialog(jf);
+        JPanel jp1 = new JPanel();
+        JButton jb1 = new JButton("jb1");
+        JTable jt1 = new JTable(new DefaultTableModel());
+
+        jf.add(jb1);
+        jf.add(jt1);
+        jf.add(jp1);
+        System.out.println("FTP current on jf= " + jf.getFocusTraversalPolicy());
+        System.out.println("FTP current on jw= " + jw.getFocusTraversalPolicy());
+        System.out.println("FTP current on jd= " + jd.getFocusTraversalPolicy());
+
+        if (!(jf.getFocusTraversalPolicy() instanceof LayoutFocusTraversalPolicy) ||
+            !(jw.getFocusTraversalPolicy() instanceof LayoutFocusTraversalPolicy) ||
+            !(jd.getFocusTraversalPolicy() instanceof LayoutFocusTraversalPolicy))
+        {
+            throw new RuntimeException("Failure! Swing toplevel must have LayoutFocusTraversalPolicy installed");
+        }
+
+        jf.setVisible(true);
+
+        System.out.println("Now will set another policy.");
+        currentKFM.setDefaultFocusTraversalPolicy(newFTP);
+
+        FocusTraversalPolicy resultFTP = jw.getFocusTraversalPolicy();
+
+        System.out.println("FTP current on jf= " + jf.getFocusTraversalPolicy());
+        System.out.println("FTP current on jw= " + jw.getFocusTraversalPolicy());
+        System.out.println("FTP current on jd= " + jd.getFocusTraversalPolicy());
+
+        if (!resultFTP.equals(defaultFTP)) {
+            Sysout.println("Failure! FocusTraversalPolicy should not change");
+            Sysout.println("Was: " + defaultFTP);
+            Sysout.println("Become: " + resultFTP);
+            throw new RuntimeException("Failure! FocusTraversalPolicy should not change");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/TextArea/MouseOverScrollbarWhenTyping/Test.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,385 @@
+/*
+  @test
+  @bug 6431076
+  @summary Mouse cursor must remain DEFAULT over scrollbar when text is typed
+  @author Andrei Dmitriev: area=TextArea
+  @run main/manual Test
+*/
+
+import java.awt.*;
+import java.awt.event.*;
+
+public class Test {
+    private static void init()  {
+        Frame f = new Frame("Test for cursor");
+        final int dim = 100;
+        String line = "";
+        for( int i=0; i<dim; ++i ) {
+            line += "a";
+        }
+        String text = "";
+        for( int i=0; i<dim; ++i ) {
+            text += line;
+            if( i < dim-1 ) {
+                text += "\n";
+            }
+        }
+
+        f.setLayout( new BorderLayout () );
+        f.add( new TextArea( text ) );
+        f.setSize(400, 300);
+
+        f.setVisible(true);
+
+        String[] instructions = {
+            "1. Place keyboard cursor inside TextArea.",
+            "2. Repeat steps 2.* for each of two TextArea's scrollbars.",
+            "2.1. Place mouse cursor over TextArea's scrollbar.",
+            "2.2. If mouse cursor is not DEFAULT_CURSOR (arrow), test failed.",
+            "2.3. Type any symbol into TextArea.",
+            "2.4. Type ENTER symbol into TextArea.",
+            "2.5. If mouse cursor changes to TEXT_CURSOR (beam), test failed",
+            "(if cursor disappears on Windows, it's OK).",
+            "3. Test passed.",
+        };
+
+        Sysout.createDialogWithInstructions( instructions );
+    }
+
+
+
+    /*****************************************************
+     * Standard Test Machinery Section
+     * DO NOT modify anything in this section -- it's a
+     * standard chunk of code which has all of the
+     * synchronisation necessary for the test harness.
+     * By keeping it the same in all tests, it is easier
+     * to read and understand someone else's test, as
+     * well as insuring that all tests behave correctly
+     * with the test harness.
+     * There is a section following this for test-defined
+     * classes
+     ******************************************************/
+    private static boolean theTestPassed = false;
+    private static boolean testGeneratedInterrupt = false;
+    private static String failureMessage = "";
+
+    private static Thread mainThread = null;
+
+    private static int sleepTime = 300000;
+
+    public static void main( String args[] ) throws InterruptedException
+    {
+        mainThread = Thread.currentThread();
+        try
+        {
+            init();
+        }
+        catch( TestPassedException e )
+        {
+            //The test passed, so just return from main and harness will
+            // interepret this return as a pass
+            return;
+        }
+        //At this point, neither test passed nor test failed has been
+        // called -- either would have thrown an exception and ended the
+        // test, so we know we have multiple threads.
+
+        //Test involves other threads, so sleep and wait for them to
+        // called pass() or fail()
+        try
+        {
+            Thread.sleep( sleepTime );
+            //Timed out, so fail the test
+            throw new RuntimeException( "Timed out after " + sleepTime/1000 + " seconds" );
+        }
+        catch (InterruptedException e)
+        {
+            if( ! testGeneratedInterrupt ) throw e;
+
+            //reset flag in case hit this code more than once for some reason (just safety)
+            testGeneratedInterrupt = false;
+            if ( theTestPassed == false )
+            {
+                throw new RuntimeException( failureMessage );
+            }
+        }
+
+    }//main
+
+    public static synchronized void setTimeoutTo( int seconds )
+    {
+        sleepTime = seconds * 1000;
+    }
+
+    public static synchronized void pass()
+    {
+        Sysout.println( "The test passed." );
+        Sysout.println( "The test is over, hit  Ctl-C to stop Java VM" );
+        //first check if this is executing in main thread
+        if ( mainThread == Thread.currentThread() )
+        {
+            //Still in the main thread, so set the flag just for kicks,
+            // and throw a test passed exception which will be caught
+            // and end the test.
+            theTestPassed = true;
+            throw new TestPassedException();
+        }
+        //pass was called from a different thread, so set the flag and interrupt
+        // the main thead.
+        theTestPassed = true;
+        testGeneratedInterrupt = true;
+        if (mainThread != null){
+            mainThread.interrupt();
+        }
+    }//pass()
+
+    public static synchronized void fail()
+    {
+        //test writer didn't specify why test failed, so give generic
+        fail( "it just plain failed! :-)" );
+    }
+
+    public static synchronized void fail( String whyFailed )
+    {
+        Sysout.println( "The test failed: " + whyFailed );
+        Sysout.println( "The test is over, hit  Ctl-C to stop Java VM" );
+        //check if this called from main thread
+        if ( mainThread == Thread.currentThread() )
+        {
+            //If main thread, fail now 'cause not sleeping
+            throw new RuntimeException( whyFailed );
+        }
+        theTestPassed = false;
+        testGeneratedInterrupt = true;
+        failureMessage = whyFailed;
+        mainThread.interrupt();
+    }//fail()
+
+}// class
+
+//This exception is used to exit from any level of call nesting
+// when it's determined that the test has passed, and immediately
+// end the test.
+class TestPassedException extends RuntimeException
+{
+}
+
+//*********** End Standard Test Machinery Section **********
+
+
+//************ Begin classes defined for the test ****************
+
+// make listeners in a class defined here, and instantiate them in init()
+
+/* Example of a class which may be written as part of a test
+class NewClass implements anInterface
+ {
+   static int newVar = 0;
+
+   public void eventDispatched(AWTEvent e)
+    {
+      //Counting events to see if we get enough
+      eventCount++;
+
+      if( eventCount == 20 )
+       {
+         //got enough events, so pass
+
+         ManualMainTest.pass();
+       }
+      else if( tries == 20 )
+       {
+         //tried too many times without getting enough events so fail
+
+         ManualMainTest.fail();
+       }
+
+    }// eventDispatched()
+
+ }// NewClass class
+
+*/
+
+
+//************** End classes defined for the test *******************
+
+
+
+
+/****************************************************
+ Standard Test Machinery
+ DO NOT modify anything below -- it's a standard
+  chunk of code whose purpose is to make user
+  interaction uniform, and thereby make it simpler
+  to read and understand someone else's test.
+ ****************************************************/
+
+/**
+ This is part of the standard test machinery.
+ It creates a dialog (with the instructions), and is the interface
+  for sending text messages to the user.
+ To print the instructions, send an array of strings to Sysout.createDialog
+  WithInstructions method.  Put one line of instructions per array entry.
+ To display a message for the tester to see, simply call Sysout.println
+  with the string to be displayed.
+ This mimics System.out.println but works within the test harness as well
+  as standalone.
+ */
+
+class Sysout
+{
+    private static TestDialog dialog;
+    private static boolean numbering = false;
+    private static int messageNumber = 0;
+
+    public static void createDialogWithInstructions( String[] instructions )
+    {
+        dialog = new TestDialog( new Frame(), "Instructions" );
+        dialog.printInstructions( instructions );
+        dialog.setVisible(true);
+        println( "Any messages for the tester will display here." );
+    }
+
+    public static void createDialog( )
+    {
+        dialog = new TestDialog( new Frame(), "Instructions" );
+        String[] defInstr = { "Instructions will appear here. ", "" } ;
+        dialog.printInstructions( defInstr );
+        dialog.setVisible(true);
+        println( "Any messages for the tester will display here." );
+    }
+
+
+    /* Enables message counting for the tester. */
+    public static void enableNumbering(boolean enable){
+        numbering = enable;
+    }
+
+    public static void printInstructions( String[] instructions )
+    {
+        dialog.printInstructions( instructions );
+    }
+
+
+    public static void println( String messageIn )
+    {
+        if (numbering) {
+            messageIn = "" + messageNumber + " " + messageIn;
+            messageNumber++;
+        }
+        dialog.displayMessage( messageIn );
+    }
+
+}// Sysout  class
+
+/**
+  This is part of the standard test machinery.  It provides a place for the
+   test instructions to be displayed, and a place for interactive messages
+   to the user to be displayed.
+  To have the test instructions displayed, see Sysout.
+  To have a message to the user be displayed, see Sysout.
+  Do not call anything in this dialog directly.
+  */
+class TestDialog extends Dialog implements ActionListener
+{
+
+    TextArea instructionsText;
+    TextArea messageText;
+    int maxStringLength = 80;
+    Panel  buttonP = new Panel();
+    Button passB = new Button( "pass" );
+    Button failB = new Button( "fail" );
+
+    //DO NOT call this directly, go through Sysout
+    public TestDialog( Frame frame, String name )
+    {
+        super( frame, name );
+        int scrollBoth = TextArea.SCROLLBARS_BOTH;
+        instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth );
+        add( "North", instructionsText );
+
+        messageText = new TextArea( "", 5, maxStringLength, scrollBoth );
+        add("Center", messageText);
+
+        passB = new Button( "pass" );
+        passB.setActionCommand( "pass" );
+        passB.addActionListener( this );
+        buttonP.add( "East", passB );
+
+        failB = new Button( "fail" );
+        failB.setActionCommand( "fail" );
+        failB.addActionListener( this );
+        buttonP.add( "West", failB );
+
+        add( "South", buttonP );
+        pack();
+
+        setVisible(true);
+    }// TestDialog()
+
+    //DO NOT call this directly, go through Sysout
+    public void printInstructions( String[] instructions )
+    {
+        //Clear out any current instructions
+        instructionsText.setText( "" );
+
+        //Go down array of instruction strings
+
+        String printStr, remainingStr;
+        for( int i=0; i < instructions.length; i++ )
+        {
+            //chop up each into pieces maxSringLength long
+            remainingStr = instructions[ i ];
+            while( remainingStr.length() > 0 )
+            {
+                //if longer than max then chop off first max chars to print
+                if( remainingStr.length() >= maxStringLength )
+                {
+                    //Try to chop on a word boundary
+                    int posOfSpace = remainingStr.
+                        lastIndexOf( ' ', maxStringLength - 1 );
+
+                    if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1;
+
+                    printStr = remainingStr.substring( 0, posOfSpace + 1 );
+                    remainingStr = remainingStr.substring( posOfSpace + 1 );
+                }
+                //else just print
+                else
+                {
+                    printStr = remainingStr;
+                    remainingStr = "";
+                }
+
+                instructionsText.append( printStr + "\n" );
+
+            }// while
+
+        }// for
+
+    }//printInstructions()
+
+    //DO NOT call this directly, go through Sysout
+    public void displayMessage( String messageIn )
+    {
+        messageText.append( messageIn + "\n" );
+        System.out.println(messageIn);
+    }
+
+    //catch presses of the passed and failed buttons.
+    //simply call the standard pass() or fail() static methods of
+    //ManualMainTest
+    public void actionPerformed( ActionEvent e )
+    {
+        if( e.getActionCommand() == "pass" )
+        {
+            Test.pass();
+        }
+        else
+        {
+            Test.fail();
+        }
+    }
+
+}// TestDialog  class
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/TextArea/MouseOverScrollbarWhenTyping/Test1.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,386 @@
+/*
+  @test
+  @bug 6431076
+  @summary Mouse cursor must remain DEFAULT over scrollbar when text is typed
+  @author Andrei Dmitriev: area=TextArea
+  @run main/manual Test1
+*/
+
+import java.awt.*;
+import java.awt.event.*;
+
+public class Test1 {
+    private static void init()  {
+        Frame f = new Frame("Test1 for cursor");
+        final int dim = 100;
+        String line = "";
+        for( int i=0; i<dim; ++i ) {
+            line += "a";
+        }
+        String text = "";
+        for( int i=0; i<dim; ++i ) {
+            text += line;
+            if( i < dim-1 ) {
+                text += "\n";
+            }
+        }
+
+        f.setLayout( new BorderLayout () );
+        f.add( new TextArea( text ) );
+        f.setSize(400, 300);
+        f.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
+
+        f.setVisible(true);
+
+        String[] instructions = {
+            "1. Place keyboard cursor inside TextArea.",
+            "2. Repeat steps 2.* for each of two TextArea's scrollbars.",
+            "2.1. Place mouse cursor over TextArea's scrollbar.",
+            "2.2. If mouse cursor is not HAND_CURSOR, test failed.",
+            "2.3. Type any symbol into TextArea.",
+            "2.4. Type ENTER symbol into TextArea.",
+            "2.5. If mouse cursor changes, test failed",
+            "(if cursor disappears on Windows, it's OK).",
+            "3. Test passed.",
+        };
+
+        Sysout.createDialogWithInstructions( instructions );
+    }
+
+
+
+    /*****************************************************
+     * Standard Test Machinery Section
+     * DO NOT modify anything in this section -- it's a
+     * standard chunk of code which has all of the
+     * synchronisation necessary for the test harness.
+     * By keeping it the same in all tests, it is easier
+     * to read and understand someone else's test, as
+     * well as insuring that all tests behave correctly
+     * with the test harness.
+     * There is a section following this for test-defined
+     * classes
+     ******************************************************/
+    private static boolean theTestPassed = false;
+    private static boolean testGeneratedInterrupt = false;
+    private static String failureMessage = "";
+
+    private static Thread mainThread = null;
+
+    private static int sleepTime = 300000;
+
+    public static void main( String args[] ) throws InterruptedException
+    {
+        mainThread = Thread.currentThread();
+        try
+        {
+            init();
+        }
+        catch( TestPassedException e )
+        {
+            //The test passed, so just return from main and harness will
+            // interepret this return as a pass
+            return;
+        }
+        //At this point, neither test passed nor test failed has been
+        // called -- either would have thrown an exception and ended the
+        // test, so we know we have multiple threads.
+
+        //Test involves other threads, so sleep and wait for them to
+        // called pass() or fail()
+        try
+        {
+            Thread.sleep( sleepTime );
+            //Timed out, so fail the test
+            throw new RuntimeException( "Timed out after " + sleepTime/1000 + " seconds" );
+        }
+        catch (InterruptedException e)
+        {
+            if( ! testGeneratedInterrupt ) throw e;
+
+            //reset flag in case hit this code more than once for some reason (just safety)
+            testGeneratedInterrupt = false;
+            if ( theTestPassed == false )
+            {
+                throw new RuntimeException( failureMessage );
+            }
+        }
+
+    }//main
+
+    public static synchronized void setTimeoutTo( int seconds )
+    {
+        sleepTime = seconds * 1000;
+    }
+
+    public static synchronized void pass()
+    {
+        Sysout.println( "The test passed." );
+        Sysout.println( "The test is over, hit  Ctl-C to stop Java VM" );
+        //first check if this is executing in main thread
+        if ( mainThread == Thread.currentThread() )
+        {
+            //Still in the main thread, so set the flag just for kicks,
+            // and throw a test passed exception which will be caught
+            // and end the test.
+            theTestPassed = true;
+            throw new TestPassedException();
+        }
+        //pass was called from a different thread, so set the flag and interrupt
+        // the main thead.
+        theTestPassed = true;
+        testGeneratedInterrupt = true;
+        if (mainThread != null){
+            mainThread.interrupt();
+        }
+    }//pass()
+
+    public static synchronized void fail()
+    {
+        //test writer didn't specify why test failed, so give generic
+        fail( "it just plain failed! :-)" );
+    }
+
+    public static synchronized void fail( String whyFailed )
+    {
+        Sysout.println( "The test failed: " + whyFailed );
+        Sysout.println( "The test is over, hit  Ctl-C to stop Java VM" );
+        //check if this called from main thread
+        if ( mainThread == Thread.currentThread() )
+        {
+            //If main thread, fail now 'cause not sleeping
+            throw new RuntimeException( whyFailed );
+        }
+        theTestPassed = false;
+        testGeneratedInterrupt = true;
+        failureMessage = whyFailed;
+        mainThread.interrupt();
+    }//fail()
+
+}// class
+
+//This exception is used to exit from any level of call nesting
+// when it's determined that the test has passed, and immediately
+// end the test.
+class TestPassedException extends RuntimeException
+{
+}
+
+//*********** End Standard Test Machinery Section **********
+
+
+//************ Begin classes defined for the test ****************
+
+// make listeners in a class defined here, and instantiate them in init()
+
+/* Example of a class which may be written as part of a test
+class NewClass implements anInterface
+ {
+   static int newVar = 0;
+
+   public void eventDispatched(AWTEvent e)
+    {
+      //Counting events to see if we get enough
+      eventCount++;
+
+      if( eventCount == 20 )
+       {
+         //got enough events, so pass
+
+         ManualMainTest.pass();
+       }
+      else if( tries == 20 )
+       {
+         //tried too many times without getting enough events so fail
+
+         ManualMainTest.fail();
+       }
+
+    }// eventDispatched()
+
+ }// NewClass class
+
+*/
+
+
+//************** End classes defined for the test *******************
+
+
+
+
+/****************************************************
+ Standard Test Machinery
+ DO NOT modify anything below -- it's a standard
+  chunk of code whose purpose is to make user
+  interaction uniform, and thereby make it simpler
+  to read and understand someone else's test.
+ ****************************************************/
+
+/**
+ This is part of the standard test machinery.
+ It creates a dialog (with the instructions), and is the interface
+  for sending text messages to the user.
+ To print the instructions, send an array of strings to Sysout.createDialog
+  WithInstructions method.  Put one line of instructions per array entry.
+ To display a message for the tester to see, simply call Sysout.println
+  with the string to be displayed.
+ This mimics System.out.println but works within the test harness as well
+  as standalone.
+ */
+
+class Sysout
+{
+    private static TestDialog dialog;
+    private static boolean numbering = false;
+    private static int messageNumber = 0;
+
+    public static void createDialogWithInstructions( String[] instructions )
+    {
+        dialog = new TestDialog( new Frame(), "Instructions" );
+        dialog.printInstructions( instructions );
+        dialog.setVisible(true);
+        println( "Any messages for the tester will display here." );
+    }
+
+    public static void createDialog( )
+    {
+        dialog = new TestDialog( new Frame(), "Instructions" );
+        String[] defInstr = { "Instructions will appear here. ", "" } ;
+        dialog.printInstructions( defInstr );
+        dialog.setVisible(true);
+        println( "Any messages for the tester will display here." );
+    }
+
+
+    /* Enables message counting for the tester. */
+    public static void enableNumbering(boolean enable){
+        numbering = enable;
+    }
+
+    public static void printInstructions( String[] instructions )
+    {
+        dialog.printInstructions( instructions );
+    }
+
+
+    public static void println( String messageIn )
+    {
+        if (numbering) {
+            messageIn = "" + messageNumber + " " + messageIn;
+            messageNumber++;
+        }
+        dialog.displayMessage( messageIn );
+    }
+
+}// Sysout  class
+
+/**
+  This is part of the standard test machinery.  It provides a place for the
+   test instructions to be displayed, and a place for interactive messages
+   to the user to be displayed.
+  To have the test instructions displayed, see Sysout.
+  To have a message to the user be displayed, see Sysout.
+  Do not call anything in this dialog directly.
+  */
+class TestDialog extends Dialog implements ActionListener
+{
+
+    TextArea instructionsText;
+    TextArea messageText;
+    int maxStringLength = 80;
+    Panel  buttonP = new Panel();
+    Button passB = new Button( "pass" );
+    Button failB = new Button( "fail" );
+
+    //DO NOT call this directly, go through Sysout
+    public TestDialog( Frame frame, String name )
+    {
+        super( frame, name );
+        int scrollBoth = TextArea.SCROLLBARS_BOTH;
+        instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth );
+        add( "North", instructionsText );
+
+        messageText = new TextArea( "", 5, maxStringLength, scrollBoth );
+        add("Center", messageText);
+
+        passB = new Button( "pass" );
+        passB.setActionCommand( "pass" );
+        passB.addActionListener( this );
+        buttonP.add( "East", passB );
+
+        failB = new Button( "fail" );
+        failB.setActionCommand( "fail" );
+        failB.addActionListener( this );
+        buttonP.add( "West", failB );
+
+        add( "South", buttonP );
+        pack();
+
+        setVisible(true);
+    }// TestDialog()
+
+    //DO NOT call this directly, go through Sysout
+    public void printInstructions( String[] instructions )
+    {
+        //Clear out any current instructions
+        instructionsText.setText( "" );
+
+        //Go down array of instruction strings
+
+        String printStr, remainingStr;
+        for( int i=0; i < instructions.length; i++ )
+        {
+            //chop up each into pieces maxSringLength long
+            remainingStr = instructions[ i ];
+            while( remainingStr.length() > 0 )
+            {
+                //if longer than max then chop off first max chars to print
+                if( remainingStr.length() >= maxStringLength )
+                {
+                    //Try to chop on a word boundary
+                    int posOfSpace = remainingStr.
+                        lastIndexOf( ' ', maxStringLength - 1 );
+
+                    if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1;
+
+                    printStr = remainingStr.substring( 0, posOfSpace + 1 );
+                    remainingStr = remainingStr.substring( posOfSpace + 1 );
+                }
+                //else just print
+                else
+                {
+                    printStr = remainingStr;
+                    remainingStr = "";
+                }
+
+                instructionsText.append( printStr + "\n" );
+
+            }// while
+
+        }// for
+
+    }//printInstructions()
+
+    //DO NOT call this directly, go through Sysout
+    public void displayMessage( String messageIn )
+    {
+        messageText.append( messageIn + "\n" );
+        System.out.println(messageIn);
+    }
+
+    //catch presses of the passed and failed buttons.
+    //simply call the standard pass() or fail() static methods of
+    //ManualMainTest
+    public void actionPerformed( ActionEvent e )
+    {
+        if( e.getActionCommand() == "pass" )
+        {
+            Test1.pass();
+        }
+        else
+        {
+            Test1.fail();
+        }
+    }
+
+}// TestDialog  class
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/geom/CubicCurve2D/ContainsTest.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 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.
+ */
+
+/**
+ * @test
+ * @bug 4724552
+ * @summary Verifies that CubicCurve2D.contains(Rectangle2D) does not return
+ *          true when the rectangle is only partially contained.
+ * @run main ContainsTest
+ */
+
+
+import java.awt.geom.CubicCurve2D;
+import java.awt.geom.Rectangle2D;
+
+public class ContainsTest {
+
+    public static void main(String[] args) throws Exception {
+        CubicCurve2D c = new CubicCurve2D.Double(0, 0, 4, -4, -2, -4, 2, 0);
+        Rectangle2D r = new Rectangle2D.Double(0.75, -2.5, 0.5, 2);
+
+        if (c.contains(r)) {
+            throw new Exception("The rectangle should not be contained in the curve");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/geom/CubicCurve2D/IntersectsTest.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 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.
+ */
+
+/**
+ * @test
+ * @bug 4493128
+ * @summary Verifies that CubicCurve2D returns true for obvious intersection
+ * @run main IntersectsTest
+ */
+
+import java.awt.geom.CubicCurve2D;
+import java.awt.geom.Rectangle2D;
+
+public class IntersectsTest {
+
+    public static void main(String[] args) throws Exception {
+        CubicCurve2D c = new CubicCurve2D.Double(50.0, 300.0,
+                                                 150.0, 166.6666717529297,
+                                                 238.0, 456.66668701171875,
+                                                 350.0, 300.0);
+        Rectangle2D r = new Rectangle2D.Double(260, 300, 10, 10);
+
+        if (!c.intersects(r)) {
+            throw new Exception("The rectangle is contained. " +
+                                "intersects(Rectangle2D) should return true");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/geom/CubicCurve2D/SolveCubicTest.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 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.
+ */
+
+/**
+ * @test
+ * @bug 4645692
+ * @summary Verifies that SolveCubic doesn't miss any roots.
+ * @run main SolveCubicTest
+ */
+
+import static java.awt.geom.CubicCurve2D.solveCubic;
+
+public class SolveCubicTest {
+
+    public static void main(String[] args) throws Exception {
+
+        double[] eqn = {0, 0, 1, 1};
+        int numRoots = solveCubic(eqn, eqn);
+        if (numRoots < 2) {
+            throw new Exception("There are 2 roots. Only " + numRoots + " were found.");
+        }
+    }
+}
--- a/jdk/test/java/io/File/IsHidden.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/io/File/IsHidden.java	Wed Jul 05 17:35:13 2017 +0200
@@ -27,6 +27,7 @@
  */
 
 import java.io.*;
+import java.nio.file.Files;
 import java.nio.file.attribute.DosFileAttributeView;
 
 public class IsHidden {
@@ -42,7 +43,7 @@
     }
 
     private static void setHidden(File f, boolean value) throws IOException {
-        f.toPath().getFileAttributeView(DosFileAttributeView.class).setHidden(value);
+        Files.getFileAttributeView(f.toPath(), DosFileAttributeView.class).setHidden(value);
     }
 
     private static void testWin32() throws Exception {
--- a/jdk/test/java/io/File/SetAccess.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/io/File/SetAccess.java	Wed Jul 05 17:35:13 2017 +0200
@@ -27,6 +27,7 @@
  */
 
 import java.io.*;
+import java.nio.file.*;
 import java.nio.file.attribute.*;
 
 public class SetAccess {
@@ -178,7 +179,7 @@
     }
 
     private static String permission(File f) throws Exception {
-        PosixFileAttributes attrs = Attributes.readPosixFileAttributes(f.toPath());
+        PosixFileAttributes attrs = Files.readAttributes(f.toPath(), PosixFileAttributes.class);
         String type = attrs.isDirectory() ? "d" : " ";
         return type + PosixFilePermissions.toString(attrs.permissions());
     }
--- a/jdk/test/java/io/File/SymLinks.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/io/File/SymLinks.java	Wed Jul 05 17:35:13 2017 +0200
@@ -27,7 +27,7 @@
  */
 
 import java.io.*;
-import java.nio.file.Path;
+import java.nio.file.*;
 import java.nio.file.attribute.*;
 import static java.nio.file.LinkOption.*;
 
@@ -80,39 +80,33 @@
         if (file != null)
             file.delete();
         if (link2file != null)
-            link2file.toPath().deleteIfExists();
+            Files.deleteIfExists(link2file.toPath());
         if (link2link2file != null)
-            link2link2file.toPath().deleteIfExists();
+            Files.deleteIfExists(link2link2file.toPath());
         if (dir != null)
             dir.delete();
         if (link2dir != null)
-            link2dir.toPath().deleteIfExists();
+            Files.deleteIfExists(link2dir.toPath());
         if (link2link2dir != null)
-            link2link2dir.toPath().deleteIfExists();
+            Files.deleteIfExists(link2link2dir.toPath());
         if (link2nobody != null)
-            link2nobody.toPath().deleteIfExists();
+            Files.deleteIfExists(link2nobody.toPath());
         if (link2link2nobody != null)
-            link2link2nobody.toPath().deleteIfExists();
+            Files.deleteIfExists(link2link2nobody.toPath());
     }
 
     /**
      * Creates a sym link source->target
      */
     static void mklink(File source, File target) throws IOException {
-        source.toPath().createSymbolicLink(target.toPath());
+        Files.createSymbolicLink(source.toPath(), target.toPath());
     }
 
     /**
      * Returns true if the "link" exists and is a sym link.
      */
     static boolean isSymLink(File link) {
-         try {
-            BasicFileAttributes attrs =
-                Attributes.readBasicFileAttributes(link.toPath(), NOFOLLOW_LINKS);
-            return attrs.isSymbolicLink();
-         } catch (IOException x) {
-             return false;
-         }
+         return Files.isSymbolicLink(link.toPath());
     }
 
     /**
@@ -120,7 +114,7 @@
      */
     static long lastModifiedOfSymLink(File link) throws IOException {
         BasicFileAttributes attrs =
-            Attributes.readBasicFileAttributes(link.toPath(), NOFOLLOW_LINKS);
+            Files.readAttributes(link.toPath(), BasicFileAttributes.class, NOFOLLOW_LINKS);
         assertTrue(attrs.isSymbolicLink());
         return attrs.lastModifiedTime().toMillis();
     }
@@ -133,8 +127,8 @@
         Path link = dir.toPath().resolve("link");
         Path target = dir.toPath().resolve("target");
         try {
-            link.createSymbolicLink(target);
-            link.delete();
+            Files.createSymbolicLink(link, target);
+            Files.delete(link);
             return true;
         } catch (UnsupportedOperationException x) {
             return false;
@@ -224,7 +218,7 @@
             assertTrue(isSymLink(link2nobody));
 
         } finally {
-            link.toPath().deleteIfExists();
+            Files.deleteIfExists(link.toPath());
         }
 
         header("renameTo");
@@ -287,8 +281,8 @@
 
         // on Windows we test with the DOS hidden attribute set
         if (System.getProperty("os.name").startsWith("Windows")) {
-            DosFileAttributeView view = file.toPath()
-                .getFileAttributeView(DosFileAttributeView.class);
+            DosFileAttributeView view = Files
+                .getFileAttributeView(file.toPath(), DosFileAttributeView.class);
             view.setHidden(true);
             try {
                 assertTrue(file.isHidden());
--- a/jdk/test/java/io/FileInputStream/LargeFileAvailable.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/io/FileInputStream/LargeFileAvailable.java	Wed Jul 05 17:35:13 2017 +0200
@@ -31,6 +31,7 @@
 import java.io.*;
 import java.nio.ByteBuffer;
 import java.nio.channels.*;
+import java.nio.file.Files;
 import static java.nio.file.StandardOpenOption.*;
 
 public class LargeFileAvailable {
@@ -85,7 +86,7 @@
         // Create a large file as a sparse file if possible
         File largefile = File.createTempFile("largefile", null);
         // re-create as a sparse file
-        largefile.toPath().delete();
+        Files.delete(largefile.toPath());
         try (FileChannel fc =
                 FileChannel.open(largefile.toPath(),
                                  CREATE_NEW, WRITE, SPARSE)) {
--- a/jdk/test/java/lang/Double/ParseDouble.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/lang/Double/ParseDouble.java	Wed Jul 05 17:35:13 2017 +0200
@@ -23,11 +23,12 @@
 
 /*
  * @test
- * @bug 4160406 4705734 4707389 4826774 4895911
+ * @bug 4160406 4705734 4707389 4826774 4895911 4421494
  * @summary Test for Double.parseDouble method and acceptance regex
  */
 
 import java.util.regex.*;
+import java.math.BigDecimal;
 
 public class ParseDouble {
 
@@ -416,7 +417,15 @@
 
         "0x00100p1",
         "0x00.100p1",
-        "0x001.100p1"
+        "0x001.100p1",
+
+        // Limits
+
+        "1.7976931348623157E308",     // Double.MAX_VALUE
+        "4.9e-324",                   // Double.MIN_VALUE
+        "2.2250738585072014e-308",    // Double.MIN_NORMAL
+
+        "2.2250738585072012e-308",    // near Double.MIN_NORMAL
     };
 
     static String paddedBadStrings[];
@@ -546,6 +555,32 @@
 
     }
 
+    /**
+     * For each subnormal power of two, test at boundaries of
+     * region that should convert to that value.
+     */
+    private static void testSubnormalPowers() {
+        BigDecimal TWO = BigDecimal.valueOf(2);
+        // An ulp is the same for all subnormal values
+        BigDecimal ulp_BD = new BigDecimal(Double.MIN_VALUE);
+
+        // Test subnormal powers of two
+        for(int i = -1074; i <= -1022; i++) {
+            double d = Math.scalb(1.0, i);
+
+            /*
+             * The region [d - ulp/2, d + ulp/2] should round to d.
+             */
+            BigDecimal d_BD = new BigDecimal(d);
+
+            BigDecimal lowerBound = d_BD.subtract(ulp_BD.divide(TWO));
+            BigDecimal upperBound = d_BD.add(ulp_BD.divide(TWO));
+
+            double convertedLowerBound = Double.parseDouble(lowerBound.toString());
+            double convertedUpperBound = Double.parseDouble(upperBound.toString());
+        }
+    }
+
     public static void main(String[] args) throws Exception {
         rudimentaryTest();
 
@@ -558,5 +593,7 @@
         testRegex(paddedGoodStrings, false);
         testRegex(badStrings, true);
         testRegex(paddedBadStrings, true);
+
+        testSubnormalPowers();
     }
 }
--- a/jdk/test/java/lang/Runtime/exec/Duped.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/lang/Runtime/exec/Duped.java	Wed Jul 05 17:35:13 2017 +0200
@@ -38,8 +38,7 @@
         public static void main(String args[]) throws Exception {
             StringBuffer s = new StringBuffer();
             int c;
-            while ((System.in.available() != 0)
-                           && ((c = System.in.read()) != -1))
+            while ((c = System.in.read()) != -1)
                 s.append((char)c);
             System.out.println(s);
         }
--- a/jdk/test/java/net/Socks/SocksProxyVersion.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/net/Socks/SocksProxyVersion.java	Wed Jul 05 17:35:13 2017 +0200
@@ -36,15 +36,22 @@
 import java.io.IOException;
 
 public class SocksProxyVersion implements Runnable {
-    ServerSocket ss;
+    final ServerSocket ss;
     volatile boolean failed;
 
     public static void main(String[] args) throws Exception {
         new SocksProxyVersion();
     }
 
+    @SuppressWarnings("try")
     public SocksProxyVersion() throws Exception {
         ss = new ServerSocket(0);
+        try (ServerSocket socket = ss) {
+            runTest();
+        }
+    }
+
+    void runTest() throws Exception {
         int port = ss.getLocalPort();
         Thread serverThread = new Thread(this);
         serverThread.start();
@@ -75,22 +82,21 @@
     }
 
     public void run() {
-        try (ss) {
-            Socket s = ss.accept();
-            int version = (s.getInputStream()).read();
-            if (version != 4) {
-                System.out.println("Got " + version + ", expected 4");
-                failed = true;
+        try {
+            try (Socket s = ss.accept()) {
+                int version = (s.getInputStream()).read();
+                if (version != 4) {
+                    System.out.println("Got " + version + ", expected 4");
+                    failed = true;
+                }
             }
-            s.close();
-
-            s = ss.accept();
-            version = (s.getInputStream()).read();
-            if (version != 5) {
-                System.out.println("Got " + version + ", expected 5");
-                failed = true;
+            try (Socket s = ss.accept()) {
+                int version = (s.getInputStream()).read();
+                if (version != 5) {
+                    System.out.println("Got " + version + ", expected 5");
+                    failed = true;
+                }
             }
-            s.close();
         } catch (IOException e) {
             e.printStackTrace();
         }
--- a/jdk/test/java/nio/MappedByteBuffer/Force.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/MappedByteBuffer/Force.java	Wed Jul 05 17:35:13 2017 +0200
@@ -37,14 +37,17 @@
         Random random = new Random();
         long filesize = random.nextInt(3*1024*1024);
         int cut = random.nextInt((int)filesize);
-        File file = new File("Blah");
-        RandomAccessFile raf = new RandomAccessFile(file, "rw");
-        raf.setLength(filesize);
-        FileChannel fc = raf.getChannel();
-        MappedByteBuffer buf1 = fc.map(
-                        FileChannel.MapMode.READ_WRITE, cut, filesize-cut);
-        buf1.force();
-        fc.close();
-        raf.close();
+        File file = File.createTempFile("Blah", null);
+        file.deleteOnExit();
+        try (RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
+            raf.setLength(filesize);
+            FileChannel fc = raf.getChannel();
+            MappedByteBuffer mbb = fc.map(FileChannel.MapMode.READ_WRITE, cut, filesize-cut);
+            mbb.force();
+        }
+
+        // improve chance that mapped buffer will be unmapped
+        System.gc();
+        Thread.sleep(500);
     }
 }
--- a/jdk/test/java/nio/MappedByteBuffer/ZeroMap.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/MappedByteBuffer/ZeroMap.java	Wed Jul 05 17:35:13 2017 +0200
@@ -37,16 +37,19 @@
         Random random = new Random();
         long filesize = random.nextInt(1024*1024);
         int cut = random.nextInt((int)filesize);
-        File file = new File("Blah");
-        RandomAccessFile raf = new RandomAccessFile(file, "rw");
-        raf.setLength(filesize);
-        FileChannel fc = raf.getChannel();
-        MappedByteBuffer buf1 = fc.map(
-                        FileChannel.MapMode.READ_WRITE, cut, 0);
-        buf1.force();
-        buf1.load();
-        buf1.isLoaded();
-        fc.close();
-        raf.close();
+        File file = File.createTempFile("Blah", null);
+        file.deleteOnExit();
+        try (RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
+            raf.setLength(filesize);
+            FileChannel fc = raf.getChannel();
+            MappedByteBuffer mbb = fc.map(FileChannel.MapMode.READ_WRITE, cut, 0);
+            mbb.force();
+            mbb.load();
+            mbb.isLoaded();
+       }
+
+        // improve chance that mapped buffer will be unmapped
+        System.gc();
+        Thread.sleep(500);
     }
 }
--- a/jdk/test/java/nio/channels/FileChannel/AtomicAppend.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/channels/FileChannel/AtomicAppend.java	Wed Jul 05 17:35:13 2017 +0200
@@ -36,6 +36,7 @@
 import java.util.concurrent.TimeUnit;
 import java.nio.ByteBuffer;
 import java.nio.channels.FileChannel;
+import java.nio.file.Files;
 import static java.nio.file.StandardOpenOption.*;
 
 public class AtomicAppend {
@@ -55,7 +56,7 @@
         if (rand.nextBoolean()) {
             return new FileOutputStream(file, true);
         } else {
-            return file.toPath().newOutputStream(APPEND);
+            return Files.newOutputStream(file.toPath(), APPEND);
         }
     }
 
--- a/jdk/test/java/nio/channels/FileChannel/Transfer.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/channels/FileChannel/Transfer.java	Wed Jul 05 17:35:13 2017 +0200
@@ -276,7 +276,7 @@
         while (fc == null) {
             sink = File.createTempFile("sink", null);
             // re-create as a sparse file
-            sink.toPath().delete();
+            sink.delete();
             try {
                 fc = FileChannel.open(sink.toPath(),
                                       StandardOpenOption.CREATE_NEW,
--- a/jdk/test/java/nio/channels/FileChannel/Truncate.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/channels/FileChannel/Truncate.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -58,30 +58,31 @@
         for(int i=0; i<100; i++) {
             long testSize = generator.nextInt(1000) + 10;
             initTestFile(blah, testSize);
-            FileChannel fc = (i < 50) ?
-                new RandomAccessFile(blah, "rw").getChannel() :
-                FileChannel.open(blah.toPath(), READ, WRITE);
-            try (fc) {
-                if (fc.size() != testSize)
-                    throw new RuntimeException("Size failed");
 
-                long position = generator.nextInt((int)testSize);
-                fc.position(position);
+            try (FileChannel fc = (i < 50) ?
+                 new RandomAccessFile(blah, "rw").getChannel() :
+                 FileChannel.open(blah.toPath(), READ, WRITE))
+                {
+                    if (fc.size() != testSize)
+                        throw new RuntimeException("Size failed");
+
+                    long position = generator.nextInt((int)testSize);
+                    fc.position(position);
 
-                long newSize = generator.nextInt((int)testSize);
-                fc.truncate(newSize);
+                    long newSize = generator.nextInt((int)testSize);
+                    fc.truncate(newSize);
 
-                if (fc.size() != newSize)
-                    throw new RuntimeException("Truncate failed");
+                    if (fc.size() != newSize)
+                        throw new RuntimeException("Truncate failed");
 
-                if (position > newSize) {
-                    if (fc.position() != newSize)
-                        throw new RuntimeException("Position greater than size");
-                } else {
-                    if (fc.position() != position)
-                        throw new RuntimeException("Truncate changed position");
-                };
-            }
+                    if (position > newSize) {
+                        if (fc.position() != newSize)
+                            throw new RuntimeException("Position greater than size");
+                    } else {
+                        if (fc.position() != position)
+                            throw new RuntimeException("Truncate changed position");
+                    };
+                }
         }
     }
 
@@ -92,24 +93,24 @@
         for (int i=0; i<10; i++) {
             long testSize = generator.nextInt(1000) + 10;
             initTestFile(blah, testSize);
-            FileChannel fc = (i < 5) ?
-                new FileOutputStream(blah, true).getChannel() :
-                FileChannel.open(blah.toPath(), APPEND);
-            try (fc) {
-                // truncate file
-                long newSize = generator.nextInt((int)testSize);
-                fc.truncate(newSize);
-                if (fc.size() != newSize)
-                    throw new RuntimeException("Truncate failed");
+            try (FileChannel fc = (i < 5) ?
+                 new FileOutputStream(blah, true).getChannel() :
+                 FileChannel.open(blah.toPath(), APPEND))
+                {
+                    // truncate file
+                    long newSize = generator.nextInt((int)testSize);
+                    fc.truncate(newSize);
+                    if (fc.size() != newSize)
+                        throw new RuntimeException("Truncate failed");
 
-                // write one byte
-                ByteBuffer buf = ByteBuffer.allocate(1);
-                buf.put((byte)'x');
-                buf.flip();
-                fc.write(buf);
-                if (fc.size() != (newSize+1))
-                    throw new RuntimeException("Unexpected size");
-            }
+                    // write one byte
+                    ByteBuffer buf = ByteBuffer.allocate(1);
+                    buf.put((byte)'x');
+                    buf.flip();
+                    fc.write(buf);
+                    if (fc.size() != (newSize+1))
+                        throw new RuntimeException("Unexpected size");
+                }
         }
     }
 
--- a/jdk/test/java/nio/file/DirectoryStream/Basic.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/file/DirectoryStream/Basic.java	Wed Jul 05 17:35:13 2017 +0200
@@ -28,6 +28,7 @@
  */
 
 import java.nio.file.*;
+import static java.nio.file.Files.*;
 import java.util.*;
 import java.io.IOException;
 
@@ -38,29 +39,26 @@
         DirectoryStream<Path> stream;
 
         // test that directory is empty
-        stream = dir.newDirectoryStream();
-        try {
-            if (stream.iterator().hasNext())
+        try (DirectoryStream<Path> ds = newDirectoryStream(dir)) {
+            if (ds.iterator().hasNext())
                 throw new RuntimeException("directory not empty");
-        } finally {
-            stream.close();
         }
 
         // create file in directory
         final Path foo = Paths.get("foo");
-        dir.resolve(foo).createFile();
+        createFile(dir.resolve(foo));
 
         // iterate over directory and check there is one entry
-        stream = dir.newDirectoryStream();
+        stream = newDirectoryStream(dir);
         found = false;
         try {
             for (Path entry: stream) {
-                if (entry.getName().equals(foo)) {
+                if (entry.getFileName().equals(foo)) {
                     if (found)
                         throw new RuntimeException("entry already found");
                     found = true;
                 } else {
-                    throw new RuntimeException("entry " + entry.getName() +
+                    throw new RuntimeException("entry " + entry.getFileName() +
                         " not expected");
                 }
             }
@@ -71,21 +69,18 @@
             throw new RuntimeException("entry not found");
 
         // check filtering: f* should match foo
-        DirectoryStream.Filter<Path> filter = new DirectoryStream.Filter<Path>() {
+        DirectoryStream.Filter<Path> filter = new DirectoryStream.Filter<>() {
             private PathMatcher matcher =
                 dir.getFileSystem().getPathMatcher("glob:f*");
             public boolean accept(Path file) {
                 return matcher.matches(file);
             }
         };
-        stream = dir.newDirectoryStream(filter);
-        try {
-            for (Path entry: stream) {
-                if (!entry.getName().equals(foo))
+        try (DirectoryStream<Path> ds = newDirectoryStream(dir, filter)) {
+            for (Path entry: ds) {
+                if (!entry.getFileName().equals(foo))
                     throw new RuntimeException("entry not expected");
             }
-        } finally {
-            stream.close();
         }
 
         // check filtering: z* should not match any files
@@ -96,12 +91,9 @@
                 return matcher.matches(file);
             }
         };
-        stream = dir.newDirectoryStream(filter);
-        try {
-            if (stream.iterator().hasNext())
+        try (DirectoryStream<Path> ds = newDirectoryStream(dir, filter)) {
+            if (ds.iterator().hasNext())
                 throw new RuntimeException("no matching entries expected");
-        } finally {
-            stream.close();
         }
 
         // check that an IOException thrown by a filter is propagated
@@ -110,7 +102,7 @@
                 throw new java.util.zip.ZipException();
             }
         };
-        stream = dir.newDirectoryStream(filter);
+        stream = newDirectoryStream(dir, filter);
         try {
             stream.iterator().hasNext();
             throw new RuntimeException("DirectoryIteratorException expected");
@@ -124,7 +116,7 @@
 
         // check that exception or error thrown by filter is not thrown
         // by newDirectoryStream or iterator method.
-        stream = dir.newDirectoryStream(new DirectoryStream.Filter<Path>() {
+        stream = newDirectoryStream(dir, new DirectoryStream.Filter<Path>() {
             public boolean accept(Path file) {
                 throw new RuntimeException("Should not be visible");
             }
@@ -137,13 +129,13 @@
 
         // test NotDirectoryException
         try {
-            dir.resolve(foo).newDirectoryStream();
+            newDirectoryStream(dir.resolve(foo));
             throw new RuntimeException("NotDirectoryException not thrown");
         } catch (NotDirectoryException x) {
         }
 
         // test UnsupportedOperationException
-        stream =  dir.newDirectoryStream();
+        stream = newDirectoryStream(dir);
         Iterator<Path> i = stream.iterator();
         i.next();
         try {
@@ -153,7 +145,7 @@
         }
 
         // test IllegalStateException
-        stream =  dir.newDirectoryStream();
+        stream = newDirectoryStream(dir);
         stream.iterator();
         try {
             // attempt to obtain second iterator
@@ -163,7 +155,7 @@
         }
         stream.close();
 
-        stream =  dir.newDirectoryStream();
+        stream = newDirectoryStream(dir);
         stream.close();
         try {
             // attempt to obtain iterator after stream is closed
@@ -173,13 +165,13 @@
         }
 
         // test that iterator reads to end of stream when closed
-        stream =  dir.newDirectoryStream();
+        stream = newDirectoryStream(dir);
         i = stream.iterator();
         stream.close();
         while (i.hasNext())
             i.next();
 
-        stream =  dir.newDirectoryStream();
+        stream = newDirectoryStream(dir);
         i = stream.iterator();
         stream.close();
         try {
--- a/jdk/test/java/nio/file/DirectoryStream/DriveLetter.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/file/DirectoryStream/DriveLetter.java	Wed Jul 05 17:35:13 2017 +0200
@@ -52,16 +52,14 @@
             Path expected = Paths.get(drive).resolve(tempFile.getName());
 
             boolean found = false;
-            DirectoryStream<Path> stream = Paths.get(drive).newDirectoryStream();
-            try {
+            Path dir = Paths.get(drive);
+            try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
                 for (Path file : stream) {
                     if (file.equals(expected)) {
                         found = true;
                         break;
                     }
                 }
-            } finally {
-                stream.close();
             }
             if (!found)
                 throw new RuntimeException("Temporary file not found???");
--- a/jdk/test/java/nio/file/DirectoryStream/SecureDS.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/file/DirectoryStream/SecureDS.java	Wed Jul 05 17:35:13 2017 +0200
@@ -28,6 +28,7 @@
  */
 
 import java.nio.file.*;
+import static java.nio.file.Files.*;
 import static java.nio.file.StandardOpenOption.*;
 import static java.nio.file.LinkOption.*;
 import java.nio.file.attribute.*;
@@ -41,7 +42,7 @@
     public static void main(String[] args) throws IOException {
         Path dir = TestUtil.createTemporaryDirectory();
         try {
-            DirectoryStream<Path> stream = dir.newDirectoryStream();
+            DirectoryStream<Path> stream = newDirectoryStream(dir);
             stream.close();
             if (!(stream instanceof SecureDirectoryStream)) {
                 System.out.println("SecureDirectoryStream not supported.");
@@ -62,28 +63,28 @@
 
     // Exercise each of SecureDirectoryStream's method (except move)
     static void doBasicTests(Path dir) throws IOException {
-        Path dir1 = dir.resolve("dir1").createDirectory();
+        Path dir1 = createDirectory(dir.resolve("dir1"));
         Path dir2 = dir.resolve("dir2");
 
         // create a file, directory, and two sym links in the directory
         Path fileEntry = Paths.get("myfile");
-        dir1.resolve(fileEntry).createFile();
+        createFile(dir1.resolve(fileEntry));
         Path dirEntry = Paths.get("mydir");
-        dir1.resolve(dirEntry).createDirectory();
+        createDirectory(dir1.resolve(dirEntry));
         // myfilelink -> myfile
         Path link1Entry = Paths.get("myfilelink");
         if (supportsLinks)
-            dir1.resolve(link1Entry).createSymbolicLink(fileEntry);
+            createSymbolicLink(dir1.resolve(link1Entry), fileEntry);
         // mydirlink -> mydir
         Path link2Entry = Paths.get("mydirlink");
         if (supportsLinks)
-            dir1.resolve(link2Entry).createSymbolicLink(dirEntry);
+            createSymbolicLink(dir1.resolve(link2Entry), dirEntry);
 
         // open directory and then move it so that it is no longer accessible
         // via its original path.
         SecureDirectoryStream<Path> stream =
-            (SecureDirectoryStream<Path>)dir1.newDirectoryStream();
-        dir1.moveTo(dir2);
+            (SecureDirectoryStream<Path>)newDirectoryStream(dir1);
+        move(dir1, dir2);
 
         // Test: iterate over all entries
         int count = 0;
@@ -138,7 +139,7 @@
         if (supportsLinks) {
             stream.newByteChannel(link1Entry, opts).close();
             try {
-                Set<OpenOption> mixed = new HashSet<OpenOption>();
+                Set<OpenOption> mixed = new HashSet<>();
                 mixed.add(READ);
                 mixed.add(NOFOLLOW_LINKS);
                 stream.newByteChannel(link1Entry, mixed).close();
@@ -168,51 +169,48 @@
 
         // clean-up
         stream.close();
-        dir2.delete();
+        delete(dir2);
     }
 
     // Exercise SecureDirectoryStream's move method
     static void doMoveTests(Path dir) throws IOException {
-        Path dir1 = dir.resolve("dir1").createDirectory();
-        Path dir2 = dir.resolve("dir2").createDirectory();
+        Path dir1 = createDirectory(dir.resolve("dir1"));
+        Path dir2 = createDirectory(dir.resolve("dir2"));
 
         // create dir1/myfile, dir1/mydir, dir1/mylink
         Path fileEntry = Paths.get("myfile");
-        dir1.resolve(fileEntry).createFile();
+        createFile(dir1.resolve(fileEntry));
         Path dirEntry = Paths.get("mydir");
-        dir1.resolve(dirEntry).createDirectory();
+        createDirectory(dir1.resolve(dirEntry));
         Path linkEntry = Paths.get("mylink");
         if (supportsLinks)
-            dir1.resolve(linkEntry).createSymbolicLink(Paths.get("missing"));
+            createSymbolicLink(dir1.resolve(linkEntry), Paths.get("missing"));
 
         // target name
         Path target = Paths.get("newfile");
 
         // open stream to both directories
         SecureDirectoryStream<Path> stream1 =
-            (SecureDirectoryStream<Path>)dir1.newDirectoryStream();
+            (SecureDirectoryStream<Path>)newDirectoryStream(dir1);
         SecureDirectoryStream<Path> stream2 =
-            (SecureDirectoryStream<Path>)dir2.newDirectoryStream();
+            (SecureDirectoryStream<Path>)newDirectoryStream(dir2);
 
         // Test: move dir1/myfile -> dir2/newfile
         stream1.move(fileEntry, stream2, target);
-        assertTrue(dir1.resolve(fileEntry).notExists());
-        assertTrue(dir2.resolve(target).exists());
+        assertTrue(notExists(dir1.resolve(fileEntry)));
+        assertTrue(exists(dir2.resolve(target)));
         stream2.deleteFile(target);
 
         // Test: move dir1/mydir -> dir2/newfile
         stream1.move(dirEntry, stream2, target);
-        assertTrue(dir1.resolve(dirEntry).notExists());
-        assertTrue(dir2.resolve(target).exists());
+        assertTrue(notExists(dir1.resolve(dirEntry)));
+        assertTrue(exists(dir2.resolve(target)));
         stream2.deleteDirectory(target);
 
         // Test: move dir1/mylink -> dir2/newfile
         if (supportsLinks) {
             stream1.move(linkEntry, stream2, target);
-            assertTrue(dir2.resolve(target)
-                .getFileAttributeView(BasicFileAttributeView.class, NOFOLLOW_LINKS)
-                .readAttributes()
-                .isSymbolicLink());
+            assertTrue(isSymbolicLink(dir2.resolve(target)));
             stream2.deleteFile(target);
         }
 
@@ -220,10 +218,10 @@
         String testDirAsString = System.getProperty("test.dir");
         if (testDirAsString != null) {
             Path testDir = Paths.get(testDirAsString);
-            if (!dir1.getFileStore().equals(testDir.getFileStore())) {
+            if (!getFileStore(dir1).equals(getFileStore(testDir))) {
                 SecureDirectoryStream<Path> ts =
-                    (SecureDirectoryStream<Path>)testDir.newDirectoryStream();
-                dir1.resolve(fileEntry).createFile();
+                    (SecureDirectoryStream<Path>)newDirectoryStream(testDir);
+                createFile(dir1.resolve(fileEntry));
                 try {
                     stream1.move(fileEntry, ts, target);
                     shouldNotGetHere();
@@ -234,17 +232,17 @@
         }
 
         // clean-up
-        dir1.delete();
-        dir2.delete();
+        delete(dir1);
+        delete(dir2);
     }
 
     // null and ClosedDirectoryStreamException
     static void miscTests(Path dir) throws IOException {
         Path file = Paths.get("file");
-        dir.resolve(file).createFile();
+        createFile(dir.resolve(file));
 
         SecureDirectoryStream<Path> stream =
-            (SecureDirectoryStream<Path>)dir.newDirectoryStream();
+            (SecureDirectoryStream<Path>)newDirectoryStream(dir);
 
         // NullPointerException
         try {
@@ -319,7 +317,7 @@
         } catch (ClosedDirectoryStreamException x) { }
 
         // clean-up
-        dir.resolve(file).delete();
+        delete(dir.resolve(file));
     }
 
     static void assertTrue(boolean b) {
--- a/jdk/test/java/nio/file/FileStore/Basic.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/file/FileStore/Basic.java	Wed Jul 05 17:35:13 2017 +0200
@@ -22,18 +22,21 @@
  */
 
 /* @test
- * @bug 4313887 6873621 6979526
+ * @bug 4313887 6873621 6979526 7006126
  * @summary Unit test for java.nio.file.FileStore
  * @library ..
  */
 
 import java.nio.file.*;
 import java.nio.file.attribute.*;
+import java.io.File;
 import java.io.IOException;
 import java.util.*;
 
 public class Basic {
 
+    static final long G = 1024L * 1024L * 1024L;
+
     public static void main(String[] args) throws IOException {
         Path dir = TestUtil.createTemporaryDirectory();
         try {
@@ -48,17 +51,25 @@
             throw new RuntimeException("Assertion failed");
     }
 
+    static void checkWithin1GB(long value1, long value2) {
+        long diff = Math.abs(value1 - value2);
+        if (diff > G)
+            throw new RuntimeException("values differ by more than 1GB");
+    }
+
     static void doTests(Path dir) throws IOException {
         /**
          * Test: Directory should be on FileStore that is writable
          */
-        assertTrue(!dir.getFileStore().isReadOnly());
+        assertTrue(!Files.getFileStore(dir).isReadOnly());
 
         /**
          * Test: Two files should have the same FileStore
          */
-        FileStore store1 = dir.resolve("foo").createFile().getFileStore();
-        FileStore store2 = dir.resolve("bar").createFile().getFileStore();
+        Path file1 = Files.createFile(dir.resolve("foo"));
+        Path file2 = Files.createFile(dir.resolve("bar"));
+        FileStore store1 = Files.getFileStore(file1);
+        FileStore store2 = Files.getFileStore(file2);
         assertTrue(store1.equals(store2));
         assertTrue(store2.equals(store1));
         assertTrue(store1.hashCode() == store2.hashCode());
@@ -78,6 +89,24 @@
             store1.supportsFileAttributeView(UserDefinedFileAttributeView.class));
 
         /**
+         * Test: Space atributes
+         */
+        File f = file1.toFile();
+        long total = f.getTotalSpace();
+        long free = f.getFreeSpace();
+        long usable = f.getUsableSpace();
+
+        // check values are "close"
+        checkWithin1GB(total,  store1.getTotalSpace());
+        checkWithin1GB(free,   store1.getUnallocatedSpace());
+        checkWithin1GB(usable, store1.getUsableSpace());
+
+        // get values by name
+        checkWithin1GB(total,  (Long)store1.getAttribute("totalSpace"));
+        checkWithin1GB(free,   (Long)store1.getAttribute("unallocatedSpace"));
+        checkWithin1GB(usable, (Long)store1.getAttribute("usableSpace"));
+
+        /**
          * Test: Enumerate all FileStores
          */
         FileStore prev = null;
@@ -85,8 +114,10 @@
             System.out.format("%s (name=%s type=%s)\n", store, store.name(),
                 store.type());
 
-            // check space attributes
-            Attributes.readFileStoreSpaceAttributes(store);
+            // check space attributes are accessible
+            store.getTotalSpace();
+            store.getUnallocatedSpace();
+            store.getUsableSpace();
 
             // two distinct FileStores should not be equal
             assertTrue(!store.equals(prev));
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/BytesAndLines.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,252 @@
+/*
+ * Copyright (c) 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.
+ */
+
+/* @test
+ * @bug 7006126
+ * @summary Unit test for methods for Files readAllBytes, readAllLines and
+ *     and write methods.
+ */
+
+import java.nio.file.*;
+import static java.nio.file.Files.*;
+import java.io.*;
+import java.util.*;
+import java.nio.charset.*;
+
+public class BytesAndLines {
+    static final Random rand = new Random();
+
+    static final Charset US_ASCII = Charset.forName("US-ASCII");
+
+    public static void main(String[] args) throws IOException {
+        testReadAndWriteBytes();
+        testReadLines();
+        testWriteLines();
+    }
+
+    /**
+     * Test readAllBytes(Path) and write(Path, byte[], OpenOption...)
+     */
+    static void testReadAndWriteBytes() throws IOException {
+        // exercise methods with various sizes
+        testReadAndWriteBytes(0);
+        for (int i=0; i<100; i++) {
+            testReadAndWriteBytes(rand.nextInt(32000));
+        }
+
+        // NullPointerException
+        Path file = Paths.get("foo");
+        List<String> lines = Collections.emptyList();
+        try {
+            readAllBytes(null);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException ignore) { }
+        try {
+            write(null, lines, Charset.defaultCharset());
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException ignore) { }
+        try {
+            write(file, null, Charset.defaultCharset());
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException ignore) { }
+        try {
+            write(file, lines, null);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException ignore) { }
+        try {
+            write(file, lines, Charset.defaultCharset(), (OpenOption[])null);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException ignore) { }
+        try {
+            OpenOption[] opts = { null };
+            write(file, lines, Charset.defaultCharset(), opts);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException ignore) { }
+    }
+
+
+    static void testReadAndWriteBytes(int size) throws IOException {
+        Path path = createTempFile("blah", null);
+        try {
+            boolean append = rand.nextBoolean();
+
+            byte[] b1 = new byte[size];
+            rand.nextBytes(b1);
+
+            byte[] b2 = (append) ? new byte[size] : new byte[0];
+            rand.nextBytes(b2);
+
+            // write method should create file if it doesn't exist
+            if (rand.nextBoolean())
+                delete(path);
+
+            // write bytes to file
+            Path target = write(path, b1);
+            assertTrue(target==path, "Unexpected path");
+            assertTrue(size(path) == b1.length, "Unexpected file size");
+
+            // append bytes to file (might be 0 bytes)
+            write(path, b2, StandardOpenOption.APPEND);
+            assertTrue(size(path) == b1.length + b2.length, "Unexpected file size");
+
+            // read entire file
+            byte[] read = readAllBytes(path);
+
+            // check bytes are correct
+            byte[] expected;
+            if (append) {
+                expected = new byte[b1.length + b2.length];
+                System.arraycopy(b1, 0, expected, 0, b1.length);
+                System.arraycopy(b2, 0, expected, b1.length, b2.length);
+            } else {
+                expected = b1;
+            }
+            assertTrue(Arrays.equals(read, expected),
+                       "Bytes read not the same as bytes written");
+        } finally {
+            deleteIfExists(path);
+        }
+    }
+
+    /**
+     * Test readAllLines(Path,Charset)
+     */
+    static void testReadLines() throws IOException {
+        Path tmpfile = createTempFile("blah", "txt");
+        try {
+            List<String> lines;
+
+            // zero lines
+            assertTrue(size(tmpfile) == 0, "File should be empty");
+            lines = readAllLines(tmpfile, US_ASCII);
+            assertTrue(lines.isEmpty(), "No line expected");
+
+            // one line
+            byte[] hi = { (byte)'h', (byte)'i' };
+            write(tmpfile, hi);
+            lines = readAllLines(tmpfile, US_ASCII);
+            assertTrue(lines.size() == 1, "One line expected");
+            assertTrue(lines.get(0).equals("hi"), "'Hi' expected");
+
+            // two lines using platform's line separator
+            List<String> expected = Arrays.asList("hi", "there");
+            write(tmpfile, expected, US_ASCII);
+            assertTrue(size(tmpfile) > 0, "File is empty");
+            lines = readAllLines(tmpfile, US_ASCII);
+            assertTrue(lines.equals(expected), "Unexpected lines");
+
+            // MalformedInputException
+            byte[] bad = { (byte)0xff, (byte)0xff };
+            write(tmpfile, bad);
+            try {
+                readAllLines(tmpfile, US_ASCII);
+                throw new RuntimeException("MalformedInputException expected");
+            } catch (MalformedInputException ignore) { }
+
+
+            // NullPointerException
+            try {
+                readAllLines(null, US_ASCII);
+                throw new RuntimeException("NullPointerException expected");
+            } catch (NullPointerException ignore) { }
+            try {
+                readAllLines(tmpfile, null);
+                throw new RuntimeException("NullPointerException expected");
+            } catch (NullPointerException ignore) { }
+
+        } finally {
+            delete(tmpfile);
+        }
+    }
+
+    /**
+     * Test write(Path,Iterable<? extends CharSequence>,Charset,OpenOption...)
+     */
+    static void testWriteLines() throws IOException {
+        Path tmpfile = createTempFile("blah", "txt");
+        try {
+            // write method should create file if it doesn't exist
+            if (rand.nextBoolean())
+                delete(tmpfile);
+
+            // zero lines
+            Path result = write(tmpfile, Collections.<String>emptyList(), US_ASCII);
+            assert(size(tmpfile) == 0);
+            assert(result == tmpfile);
+
+            // two lines
+            List<String> lines = Arrays.asList("hi", "there");
+            write(tmpfile, lines, US_ASCII);
+            List<String> actual = readAllLines(tmpfile, US_ASCII);
+            assertTrue(actual.equals(lines), "Unexpected lines");
+
+            // append two lines
+            write(tmpfile, lines, US_ASCII, StandardOpenOption.APPEND);
+            List<String> expected = new ArrayList<String>();
+            expected.addAll(lines);
+            expected.addAll(lines);
+            assertTrue(expected.size() == 4, "List should have 4 elements");
+            actual = readAllLines(tmpfile, US_ASCII);
+            assertTrue(actual.equals(expected), "Unexpected lines");
+
+            // UnmappableCharacterException
+            try {
+                String s = "\u00A0\u00A1";
+                write(tmpfile, Arrays.asList(s), US_ASCII);
+                throw new RuntimeException("UnmappableCharacterException expected");
+            } catch (UnmappableCharacterException ignore) { }
+
+            // NullPointerException
+            try {
+                write(null, lines, US_ASCII);
+                throw new RuntimeException("NullPointerException expected");
+            } catch (NullPointerException ignore) { }
+            try {
+                write(tmpfile, null, US_ASCII);
+                throw new RuntimeException("NullPointerException expected");
+            } catch (NullPointerException ignore) { }
+            try {
+                write(tmpfile, lines, null);
+                throw new RuntimeException("NullPointerException expected");
+            } catch (NullPointerException ignore) { }
+            try {
+                write(tmpfile, lines, US_ASCII, (OpenOption[])null);
+                throw new RuntimeException("NullPointerException expected");
+            } catch (NullPointerException ignore) { }
+            try {
+                OpenOption[] opts = { (OpenOption)null };
+                write(tmpfile, lines, US_ASCII, opts);
+                throw new RuntimeException("NullPointerException expected");
+            } catch (NullPointerException ignore) { }
+
+        } finally {
+            delete(tmpfile);
+        }
+
+    }
+
+    static void assertTrue(boolean expr, String errmsg) {
+        if (!expr)
+            throw new RuntimeException(errmsg);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/CheckPermissions.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,723 @@
+/*
+ * Copyright (c) 2009, 2010, 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.
+ */
+
+/* @test
+ * @bug 6866804 7006126
+ * @summary Unit test for java.nio.file.Files
+ * @library ..
+ * @build CheckPermissions
+ * @run main/othervm CheckPermissions
+ */
+
+import java.nio.ByteBuffer;
+import java.nio.file.*;
+import static java.nio.file.Files.*;
+import static java.nio.file.StandardOpenOption.*;
+import java.nio.file.attribute.*;
+import java.nio.channels.SeekableByteChannel;
+import java.security.Permission;
+import java.io.*;
+import java.util.*;
+
+/**
+ * Checks each method that accesses the file system does the right permission
+ * check when there is a security manager set.
+ */
+
+public class CheckPermissions {
+
+    static class Checks {
+        private List<Permission> permissionsChecked = new ArrayList<>();
+        private Set<String>  propertiesChecked = new HashSet<>();
+        private List<String> readsChecked   = new ArrayList<>();
+        private List<String> writesChecked  = new ArrayList<>();
+        private List<String> deletesChecked = new ArrayList<>();
+        private List<String> execsChecked   = new ArrayList<>();
+
+        List<Permission> permissionsChecked()  { return permissionsChecked; }
+        Set<String> propertiesChecked()        { return propertiesChecked; }
+        List<String> readsChecked()            { return readsChecked; }
+        List<String> writesChecked()           { return writesChecked; }
+        List<String> deletesChecked()          { return deletesChecked; }
+        List<String> execsChecked()            { return execsChecked; }
+    }
+
+    static ThreadLocal<Checks> myChecks =
+        new ThreadLocal<Checks>() {
+            @Override protected Checks initialValue() {
+                return null;
+            }
+        };
+
+    static void prepare() {
+        myChecks.set(new Checks());
+    }
+
+    static void assertCheckPermission(Class<? extends Permission> type,
+                                      String name)
+    {
+        for (Permission perm: myChecks.get().permissionsChecked()) {
+            if (type.isInstance(perm) && perm.getName().equals(name))
+                return;
+        }
+        throw new RuntimeException(type.getName() + "(\"" + name + "\") not checked");
+    }
+
+    static void assertCheckPropertyAccess(String key) {
+        if (!myChecks.get().propertiesChecked().contains(key))
+            throw new RuntimeException("Property " + key + " not checked");
+    }
+
+    static void assertChecked(Path file, List<String> list) {
+        String s = file.toString();
+        for (String f: list) {
+            if (f.endsWith(s))
+                return;
+        }
+        throw new RuntimeException("Access not checked");
+    }
+
+    static void assertCheckRead(Path file) {
+        assertChecked(file, myChecks.get().readsChecked());
+    }
+
+    static void assertCheckWrite(Path file) {
+        assertChecked(file, myChecks.get().writesChecked());
+    }
+
+    static void assertCheckWriteToDirectory(Path dir) {
+        String s = dir.toString();
+        List<String> list = myChecks.get().writesChecked();
+        for (String f: list) {
+            if (f.startsWith(s)) {
+                return;
+            }
+        }
+        throw new RuntimeException("Access not checked");
+    }
+
+    static void assertCheckDelete(Path file) {
+        assertChecked(file, myChecks.get().deletesChecked());
+    }
+
+    static void assertCheckExec(Path file) {
+        assertChecked(file, myChecks.get().execsChecked());
+    }
+
+    static class LoggingSecurityManager extends SecurityManager {
+        static void install() {
+            System.setSecurityManager(new LoggingSecurityManager());
+        }
+
+        @Override
+        public void checkPermission(Permission perm) {
+            Checks checks = myChecks.get();
+            if (checks != null)
+                checks.permissionsChecked().add(perm);
+        }
+
+        @Override
+        public void checkPropertyAccess(String key) {
+            Checks checks = myChecks.get();
+            if (checks != null)
+                checks.propertiesChecked().add(key);
+        }
+
+        @Override
+        public void checkRead(String file) {
+            Checks checks = myChecks.get();
+            if (checks != null)
+                checks.readsChecked().add(file);
+        }
+
+        @Override
+        public void checkWrite(String file) {
+            Checks checks = myChecks.get();
+            if (checks != null)
+                checks.writesChecked().add(file);
+        }
+
+        @Override
+        public void checkDelete(String file) {
+            Checks checks = myChecks.get();
+            if (checks != null)
+                checks.deletesChecked().add(file);
+        }
+
+        @Override
+        public void checkExec(String file) {
+            Checks checks = myChecks.get();
+            if (checks != null)
+                checks.execsChecked().add(file);
+        }
+    }
+
+    static void testBasicFileAttributeView(BasicFileAttributeView view, Path file)
+        throws IOException
+    {
+        prepare();
+        view.readAttributes();
+        assertCheckRead(file);
+
+        prepare();
+        FileTime now = FileTime.fromMillis(System.currentTimeMillis());
+        view.setTimes(null, now, now);
+        assertCheckWrite(file);
+    }
+
+    static void testPosixFileAttributeView(PosixFileAttributeView view, Path file)
+        throws IOException
+    {
+        prepare();
+        PosixFileAttributes attrs = view.readAttributes();
+        assertCheckRead(file);
+        assertCheckPermission(RuntimePermission.class, "accessUserInformation");
+
+        prepare();
+        view.setPermissions(attrs.permissions());
+        assertCheckWrite(file);
+        assertCheckPermission(RuntimePermission.class, "accessUserInformation");
+
+        prepare();
+        view.setOwner(attrs.owner());
+        assertCheckWrite(file);
+        assertCheckPermission(RuntimePermission.class, "accessUserInformation");
+
+        prepare();
+        view.setOwner(attrs.owner());
+        assertCheckWrite(file);
+        assertCheckPermission(RuntimePermission.class, "accessUserInformation");
+    }
+
+    public static void main(String[] args) throws IOException {
+        final Path testdir = Paths.get(System.getProperty("test.dir", ".")).toAbsolutePath();
+        final Path tmpdir = Paths.get(System.getProperty("java.io.tmpdir"));
+
+        Path file = createFile(testdir.resolve("file1234"));
+        try {
+            LoggingSecurityManager.install();
+
+            // -- check access --
+
+            prepare();
+            exists(file);
+            assertCheckRead(file);
+
+            prepare();
+            isReadable(file);
+            assertCheckRead(file);
+
+            prepare();
+            isWritable(file);
+            assertCheckWrite(file);
+
+            prepare();
+            isExecutable(file);
+            assertCheckExec(file);
+
+            // -- copy --
+
+            Path target = testdir.resolve("target1234");
+            prepare();
+            copy(file, target);
+            try {
+                assertCheckRead(file);
+                assertCheckWrite(target);
+            } finally {
+                delete(target);
+            }
+
+            if (TestUtil.supportsLinks(testdir)) {
+                Path link = testdir.resolve("link1234");
+                createSymbolicLink(link, file);
+                try {
+                    prepare();
+                    copy(link, target, LinkOption.NOFOLLOW_LINKS);
+                    try {
+                        assertCheckRead(link);
+                        assertCheckWrite(target);
+                        assertCheckPermission(LinkPermission.class, "symbolic");
+                    } finally {
+                        delete(target);
+                    }
+                } finally {
+                    delete(link);
+                }
+            }
+
+            // -- createDirectory --
+
+            Path subdir = testdir.resolve("subdir1234");
+            prepare();
+            createDirectory(subdir);
+            try {
+                assertCheckWrite(subdir);
+            } finally {
+                delete(subdir);
+            }
+
+            // -- createFile --
+
+            Path fileToCreate = testdir.resolve("file7890");
+            prepare();
+            createFile(fileToCreate);
+            try {
+                assertCheckWrite(fileToCreate);
+            } finally {
+                delete(fileToCreate);
+            }
+
+            // -- createSymbolicLink --
+
+            if (TestUtil.supportsLinks(testdir)) {
+                prepare();
+                Path link = testdir.resolve("link1234");
+                createSymbolicLink(link, file);
+                try {
+                    assertCheckWrite(link);
+                    assertCheckPermission(LinkPermission.class, "symbolic");
+                } finally {
+                    delete(link);
+                }
+            }
+
+            // -- createLink --
+
+            if (TestUtil.supportsLinks(testdir)) {
+                prepare();
+                Path link = testdir.resolve("entry234");
+                createLink(link, file);
+                try {
+                    assertCheckWrite(link);
+                    assertCheckPermission(LinkPermission.class, "hard");
+                } finally {
+                    delete(link);
+                }
+            }
+
+            // -- createTempFile --
+
+            prepare();
+            Path tmpfile1 = createTempFile("foo", null);
+            try {
+                assertCheckWriteToDirectory(tmpdir);
+            } finally {
+                delete(tmpfile1);
+            }
+            prepare();
+            Path tmpfile2 = createTempFile(testdir, "foo", ".tmp");
+            try {
+                assertCheckWriteToDirectory(testdir);
+            } finally {
+                delete(tmpfile2);
+            }
+
+            // -- createTempDirectory --
+
+            prepare();
+            Path tmpdir1 = createTempDirectory("foo");
+            try {
+                assertCheckWriteToDirectory(tmpdir);
+            } finally {
+                delete(tmpdir1);
+            }
+            prepare();
+            Path tmpdir2 = createTempDirectory(testdir, "foo");
+            try {
+                assertCheckWriteToDirectory(testdir);
+            } finally {
+                delete(tmpdir2);
+            }
+
+            // -- delete/deleteIfExists --
+
+            Path fileToDelete = testdir.resolve("file7890");
+
+            createFile(fileToDelete);
+            prepare();
+            delete(fileToDelete);
+            assertCheckDelete(fileToDelete);
+
+            createFile(fileToDelete);
+            prepare();
+            deleteIfExists(fileToDelete);   // file exists
+            assertCheckDelete(fileToDelete);
+
+            prepare();
+            deleteIfExists(fileToDelete);   // file does not exist
+            assertCheckDelete(fileToDelete);
+
+            // -- exists/notExists --
+
+            prepare();
+            exists(file);
+            assertCheckRead(file);
+
+            prepare();
+            notExists(file);
+            assertCheckRead(file);
+
+            // -- getFileStore --
+
+            prepare();
+            getFileStore(file);
+            assertCheckRead(file);
+            assertCheckPermission(RuntimePermission.class, "getFileStoreAttributes");
+
+            // -- isSameFile --
+
+            prepare();
+            isSameFile(file, testdir);
+            assertCheckRead(file);
+            assertCheckRead(testdir);
+
+            // -- move --
+
+            Path target2 = testdir.resolve("target1234");
+            prepare();
+            move(file, target2);
+            try {
+                assertCheckWrite(file);
+                assertCheckWrite(target2);
+            } finally {
+                // restore file
+                move(target2, file);
+            }
+
+            // -- newByteChannel --
+
+            prepare();
+            try (SeekableByteChannel sbc = newByteChannel(file)) {
+                assertCheckRead(file);
+            }
+            prepare();
+            try (SeekableByteChannel sbc = newByteChannel(file, WRITE)) {
+                assertCheckWrite(file);
+            }
+            prepare();
+            try (SeekableByteChannel sbc = newByteChannel(file, READ, WRITE)) {
+                assertCheckRead(file);
+                assertCheckWrite(file);
+            }
+
+            prepare();
+            try (SeekableByteChannel sbc = newByteChannel(file, DELETE_ON_CLOSE)) {
+                assertCheckRead(file);
+                assertCheckDelete(file);
+            }
+            createFile(file); // restore file
+
+
+            // -- newInputStream/newOutptuStream --
+
+            prepare();
+            try (InputStream in = newInputStream(file)) {
+                assertCheckRead(file);
+            }
+            prepare();
+            try (OutputStream out = newOutputStream(file)) {
+                assertCheckWrite(file);
+            }
+
+            // -- newDirectoryStream --
+
+            prepare();
+            try (DirectoryStream<Path> stream = newDirectoryStream(testdir)) {
+                assertCheckRead(testdir);
+
+                if (stream instanceof SecureDirectoryStream<?>) {
+                    Path entry;
+                    SecureDirectoryStream<Path> sds =
+                        (SecureDirectoryStream<Path>)stream;
+
+                    // newByteChannel
+                    entry = file.getFileName();
+                    prepare();
+                    try (SeekableByteChannel sbc = sds.newByteChannel(entry, EnumSet.of(READ))) {
+                        assertCheckRead(file);
+                    }
+                    prepare();
+                    try (SeekableByteChannel sbc = sds.newByteChannel(entry, EnumSet.of(WRITE))) {
+                        assertCheckWrite(file);
+                    }
+
+                    // deleteFile
+                    entry = file.getFileName();
+                    prepare();
+                    sds.deleteFile(entry);
+                    assertCheckDelete(file);
+                    createFile(testdir.resolve(entry));  // restore file
+
+                    // deleteDirectory
+                    entry = Paths.get("subdir1234");
+                    createDirectory(testdir.resolve(entry));
+                    prepare();
+                    sds.deleteDirectory(entry);
+                    assertCheckDelete(testdir.resolve(entry));
+
+                    // move
+                    entry = Paths.get("tempname1234");
+                    prepare();
+                    sds.move(file.getFileName(), sds, entry);
+                    assertCheckWrite(file);
+                    assertCheckWrite(testdir.resolve(entry));
+                    sds.move(entry, sds, file.getFileName());  // restore file
+
+                    // newDirectoryStream
+                    entry = Paths.get("subdir1234");
+                    createDirectory(testdir.resolve(entry));
+                    try {
+                        prepare();
+                        sds.newDirectoryStream(entry).close();
+                        assertCheckRead(testdir.resolve(entry));
+                    } finally {
+                        delete(testdir.resolve(entry));
+                    }
+
+                    // getFileAttributeView to access attributes of directory
+                    testBasicFileAttributeView(sds
+                        .getFileAttributeView(BasicFileAttributeView.class), testdir);
+                    testPosixFileAttributeView(sds
+                        .getFileAttributeView(PosixFileAttributeView.class), testdir);
+
+                    // getFileAttributeView to access attributes of entry
+                    entry = file.getFileName();
+                    testBasicFileAttributeView(sds
+                        .getFileAttributeView(entry, BasicFileAttributeView.class), file);
+                    testPosixFileAttributeView(sds
+                        .getFileAttributeView(entry, PosixFileAttributeView.class), file);
+
+                } else {
+                    System.out.println("SecureDirectoryStream not tested");
+                }
+            }
+
+            // -- toAbsolutePath --
+
+            prepare();
+            file.getFileName().toAbsolutePath();
+            assertCheckPropertyAccess("user.dir");
+
+            // -- toRealPath --
+
+            prepare();
+            file.toRealPath(true);
+            assertCheckRead(file);
+
+            prepare();
+            file.toRealPath(false);
+            assertCheckRead(file);
+
+            prepare();
+            Paths.get(".").toRealPath(true);
+            assertCheckPropertyAccess("user.dir");
+
+            prepare();
+            Paths.get(".").toRealPath(false);
+            assertCheckPropertyAccess("user.dir");
+
+            // -- register --
+
+            try (WatchService watcher = FileSystems.getDefault().newWatchService()) {
+                prepare();
+                testdir.register(watcher, StandardWatchEventKind.ENTRY_DELETE);
+                assertCheckRead(testdir);
+            }
+
+            // -- getAttribute/setAttribute/readAttributes --
+
+            prepare();
+            getAttribute(file, "size");
+            assertCheckRead(file);
+
+            prepare();
+            setAttribute(file, "lastModifiedTime",
+                FileTime.fromMillis(System.currentTimeMillis()));
+            assertCheckWrite(file);
+
+            prepare();
+            readAttributes(file, "*");
+            assertCheckRead(file);
+
+            // -- BasicFileAttributeView --
+            testBasicFileAttributeView(
+                getFileAttributeView(file, BasicFileAttributeView.class), file);
+
+            // -- PosixFileAttributeView --
+
+            {
+                PosixFileAttributeView view =
+                    getFileAttributeView(file, PosixFileAttributeView.class);
+                if (view != null &&
+                    getFileStore(file).supportsFileAttributeView(PosixFileAttributeView.class))
+                {
+                    testPosixFileAttributeView(view, file);
+                } else {
+                    System.out.println("PosixFileAttributeView not tested");
+                }
+            }
+
+            // -- DosFileAttributeView --
+
+            {
+                DosFileAttributeView view =
+                    getFileAttributeView(file, DosFileAttributeView.class);
+                if (view != null &&
+                    getFileStore(file).supportsFileAttributeView(DosFileAttributeView.class))
+                {
+                    prepare();
+                    view.readAttributes();
+                    assertCheckRead(file);
+
+                    prepare();
+                    view.setArchive(false);
+                    assertCheckWrite(file);
+
+                    prepare();
+                    view.setHidden(false);
+                    assertCheckWrite(file);
+
+                    prepare();
+                    view.setReadOnly(false);
+                    assertCheckWrite(file);
+
+                    prepare();
+                    view.setSystem(false);
+                    assertCheckWrite(file);
+                } else {
+                    System.out.println("DosFileAttributeView not tested");
+                }
+            }
+
+            // -- FileOwnerAttributeView --
+
+            {
+                FileOwnerAttributeView view =
+                    getFileAttributeView(file, FileOwnerAttributeView.class);
+                if (view != null &&
+                    getFileStore(file).supportsFileAttributeView(FileOwnerAttributeView.class))
+                {
+                    prepare();
+                    UserPrincipal owner = view.getOwner();
+                    assertCheckRead(file);
+                    assertCheckPermission(RuntimePermission.class, "accessUserInformation");
+
+                    prepare();
+                    view.setOwner(owner);
+                    assertCheckWrite(file);
+                    assertCheckPermission(RuntimePermission.class, "accessUserInformation");
+
+                } else {
+                    System.out.println("FileOwnerAttributeView not tested");
+                }
+            }
+
+            // -- UserDefinedFileAttributeView --
+
+            {
+                UserDefinedFileAttributeView view =
+                    getFileAttributeView(file, UserDefinedFileAttributeView.class);
+                if (view != null &&
+                    getFileStore(file).supportsFileAttributeView(UserDefinedFileAttributeView.class))
+                {
+                    prepare();
+                    view.write("test", ByteBuffer.wrap(new byte[100]));
+                    assertCheckWrite(file);
+                    assertCheckPermission(RuntimePermission.class,
+                                               "accessUserDefinedAttributes");
+
+                    prepare();
+                    view.read("test", ByteBuffer.allocate(100));
+                    assertCheckRead(file);
+                    assertCheckPermission(RuntimePermission.class,
+                                               "accessUserDefinedAttributes");
+
+                    prepare();
+                    view.size("test");
+                    assertCheckRead(file);
+                    assertCheckPermission(RuntimePermission.class,
+                                               "accessUserDefinedAttributes");
+
+                    prepare();
+                    view.list();
+                    assertCheckRead(file);
+                    assertCheckPermission(RuntimePermission.class,
+                                               "accessUserDefinedAttributes");
+
+                    prepare();
+                    view.delete("test");
+                    assertCheckWrite(file);
+                    assertCheckPermission(RuntimePermission.class,
+                                               "accessUserDefinedAttributes");
+                } else {
+                    System.out.println("UserDefinedFileAttributeView not tested");
+                }
+            }
+
+            // -- AclFileAttributeView --
+            {
+                AclFileAttributeView view =
+                    getFileAttributeView(file, AclFileAttributeView.class);
+                if (view != null &&
+                    getFileStore(file).supportsFileAttributeView(AclFileAttributeView.class))
+                {
+                    prepare();
+                    List<AclEntry> acl = view.getAcl();
+                    assertCheckRead(file);
+                    assertCheckPermission(RuntimePermission.class, "accessUserInformation");
+                    prepare();
+                    view.setAcl(acl);
+                    assertCheckWrite(file);
+                    assertCheckPermission(RuntimePermission.class, "accessUserInformation");
+                } else {
+                    System.out.println("AclFileAttributeView not tested");
+                }
+            }
+
+            // -- UserPrincipalLookupService
+
+            UserPrincipalLookupService lookupService =
+                FileSystems.getDefault().getUserPrincipalLookupService();
+            UserPrincipal owner = getOwner(file);
+
+            prepare();
+            lookupService.lookupPrincipalByName(owner.getName());
+            assertCheckPermission(RuntimePermission.class,
+                                       "lookupUserInformation");
+
+            try {
+                UserPrincipal group = readAttributes(file, PosixFileAttributes.class).group();
+                prepare();
+                lookupService.lookupPrincipalByGroupName(group.getName());
+                assertCheckPermission(RuntimePermission.class,
+                                           "lookupUserInformation");
+            } catch (UnsupportedOperationException ignore) {
+                System.out.println("lookupPrincipalByGroupName not tested");
+            }
+
+
+        } finally {
+            deleteIfExists(file);
+        }
+    }
+}
--- a/jdk/test/java/nio/file/Files/ContentType.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-/* @test
- * @bug 4313887
- * @summary Unit test for probeContentType method
- * @library ..
- * @build ContentType SimpleFileTypeDetector
- * @run main/othervm ContentType
- */
-
-import java.nio.file.*;
-import java.io.*;
-
-/**
- * Uses Files.probeContentType to probe html file and custom file type.
- */
-
-public class ContentType {
-
-    static Path createHtmlFile() throws IOException {
-        Path file = File.createTempFile("foo", ".html").toPath();
-        OutputStream out = file.newOutputStream();
-        try {
-            out.write("<html><body>foo</body></html>".getBytes());
-        } finally {
-            out.close();
-        }
-
-        return file;
-    }
-
-    static Path createGrapeFile() throws IOException {
-        return File.createTempFile("red", ".grape").toPath();
-    }
-
-    public static void main(String[] args) throws IOException {
-
-        // exercise default file type detector
-        Path file = createHtmlFile();
-        try {
-            String type = Files.probeContentType(file);
-            if (type == null) {
-                System.err.println("Content type cannot be determined - test skipped");
-            } else {
-                if (!type.equals("text/html"))
-                    throw new RuntimeException("Unexpected type: " + type);
-            }
-        } finally {
-            file.delete();
-        }
-
-        // exercise custom file type detector
-        file = createGrapeFile();
-        try {
-            String type = Files.probeContentType(file);
-            if (type == null)
-                throw new RuntimeException("Custom file type detector not installed?");
-            if (!type.equals("grape/unknown"))
-                throw new RuntimeException("Unexpected type: " + type);
-        } finally {
-            file.delete();
-        }
-
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/CopyAndMove.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,1194 @@
+/*
+ * Copyright (c) 2008, 2010, 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.
+ */
+
+/* @test
+ * @bug 4313887 6838333 6917021 7006126
+ * @summary Unit test for java.nio.file.Files copy and move methods
+ * @library ..
+ * @build CopyAndMove PassThroughFileSystem
+ * @run main/othervm CopyAndMove
+ */
+
+import java.nio.ByteBuffer;
+import java.nio.file.*;
+import static java.nio.file.Files.*;
+import static java.nio.file.StandardCopyOption.*;
+import static java.nio.file.LinkOption.*;
+import java.nio.file.attribute.*;
+import java.io.*;
+import java.util.*;
+
+public class CopyAndMove {
+    static final Random rand = new Random();
+    static boolean heads() { return rand.nextBoolean(); }
+
+    public static void main(String[] args) throws Exception {
+        Path dir1 = TestUtil.createTemporaryDirectory();
+        try {
+
+            // Same directory
+            testCopyFileToFile(dir1, dir1, TestUtil.supportsLinks(dir1));
+            testMove(dir1, dir1, TestUtil.supportsLinks(dir1));
+
+            // Different directories. Use test.dir if possible as it might be
+            // a different volume/file system and so improve test coverage.
+            String testDir = System.getProperty("test.dir", ".");
+            Path dir2 = TestUtil.createTemporaryDirectory(testDir);
+            try {
+                boolean testSymbolicLinks =
+                    TestUtil.supportsLinks(dir1) && TestUtil.supportsLinks(dir2);
+                testCopyFileToFile(dir1, dir2, testSymbolicLinks);
+                testMove(dir1, dir2, testSymbolicLinks);
+            } finally {
+                TestUtil.removeAll(dir2);
+            }
+
+            // Target is location associated with custom provider
+            Path dir3 = PassThroughFileSystem.create().getPath(dir1.toString());
+            testCopyFileToFile(dir1, dir3, false);
+            testMove(dir1, dir3, false);
+
+            // Test copy(InputStream,Path) and copy(Path,OutputStream)
+            testCopyInputStreamToFile();
+            testCopyFileToOuputStream();
+
+        } finally {
+            TestUtil.removeAll(dir1);
+        }
+    }
+
+    static void checkBasicAttributes(BasicFileAttributes attrs1,
+                                     BasicFileAttributes attrs2)
+    {
+        // check file type
+        assertTrue(attrs1.isRegularFile() == attrs2.isRegularFile());
+        assertTrue(attrs1.isDirectory() == attrs2.isDirectory());
+        assertTrue(attrs1.isSymbolicLink() == attrs2.isSymbolicLink());
+        assertTrue(attrs1.isOther() == attrs2.isOther());
+
+        // check last modified time
+        long time1 = attrs1.lastModifiedTime().toMillis();
+        long time2 = attrs2.lastModifiedTime().toMillis();
+        assertTrue(time1 == time2);
+
+        // check size
+        if (attrs1.isRegularFile())
+            assertTrue(attrs1.size() == attrs2.size());
+    }
+
+    static void checkPosixAttributes(PosixFileAttributes attrs1,
+                                     PosixFileAttributes attrs2)
+    {
+        assertTrue(attrs1.permissions().equals(attrs2.permissions()));
+        assertTrue(attrs1.owner().equals(attrs2.owner()));
+        assertTrue(attrs1.group().equals(attrs2.group()));
+    }
+
+    static void checkDosAttributes(DosFileAttributes attrs1,
+                                   DosFileAttributes attrs2)
+    {
+        assertTrue(attrs1.isReadOnly() == attrs2.isReadOnly());
+        assertTrue(attrs1.isHidden() == attrs2.isHidden());
+        assertTrue(attrs1.isSystem() == attrs2.isSystem());
+    }
+
+    static void checkUserDefinedFileAttributes(Map<String,ByteBuffer> attrs1,
+                                     Map<String,ByteBuffer> attrs2)
+    {
+        assert attrs1.size() == attrs2.size();
+        for (String name: attrs1.keySet()) {
+            ByteBuffer bb1 = attrs1.get(name);
+            ByteBuffer bb2 = attrs2.get(name);
+            assertTrue(bb2 != null);
+            assertTrue(bb1.equals(bb2));
+        }
+    }
+
+    static Map<String,ByteBuffer> readUserDefinedFileAttributes(Path file)
+        throws IOException
+    {
+        UserDefinedFileAttributeView view =
+            getFileAttributeView(file, UserDefinedFileAttributeView.class);
+        Map<String,ByteBuffer> result = new HashMap<>();
+        for (String name: view.list()) {
+            int size = view.size(name);
+            ByteBuffer bb = ByteBuffer.allocate(size);
+            int n = view.read(name, bb);
+            assertTrue(n == size);
+            bb.flip();
+            result.put(name, bb);
+        }
+        return result;
+    }
+
+    // move source to target with verification
+    static void moveAndVerify(Path source, Path target, CopyOption... options)
+        throws IOException
+    {
+        // read attributes before file is moved
+        BasicFileAttributes basicAttributes = null;
+        PosixFileAttributes posixAttributes = null;
+        DosFileAttributes dosAttributes = null;
+        Map<String,ByteBuffer> namedAttributes = null;
+
+        // get file attributes of source file
+        String os = System.getProperty("os.name");
+        if (os.equals("SunOS") || os.equals("Linux")) {
+            posixAttributes = readAttributes(source, PosixFileAttributes.class, NOFOLLOW_LINKS);
+            basicAttributes = posixAttributes;
+        }
+        if (os.startsWith("Windows")) {
+            dosAttributes = readAttributes(source, DosFileAttributes.class, NOFOLLOW_LINKS);
+            basicAttributes = dosAttributes;
+        }
+        if (basicAttributes == null)
+            basicAttributes = readAttributes(source, BasicFileAttributes.class, NOFOLLOW_LINKS);
+
+        // hash file contents if regular file
+        int hash = (basicAttributes.isRegularFile()) ? computeHash(source) : 0;
+
+        // record link target if symbolic link
+        Path linkTarget = null;
+        if (basicAttributes.isSymbolicLink())
+            linkTarget = readSymbolicLink(source);
+
+        // read named attributes if available (and file is not a sym link)
+        if (!basicAttributes.isSymbolicLink() &&
+            getFileStore(source).supportsFileAttributeView("xattr"))
+        {
+            namedAttributes = readUserDefinedFileAttributes(source);
+        }
+
+        // move file
+        Path result = move(source, target, options);
+        assertTrue(result == target);
+
+        // verify source does not exist
+        assertTrue(notExists(source));
+
+        // verify file contents
+        if (basicAttributes.isRegularFile()) {
+            if (computeHash(target) != hash)
+                throw new RuntimeException("Failed to verify move of regular file");
+        }
+
+        // verify link target
+        if (basicAttributes.isSymbolicLink()) {
+            if (!readSymbolicLink(target).equals(linkTarget))
+                throw new RuntimeException("Failed to verify move of symbolic link");
+        }
+
+        // verify basic attributes
+        checkBasicAttributes(basicAttributes,
+            readAttributes(target, BasicFileAttributes.class, NOFOLLOW_LINKS));
+
+        // verify other attributes when same provider
+        if (source.getFileSystem().provider() == target.getFileSystem().provider()) {
+
+            // verify POSIX attributes
+            if (posixAttributes != null && !basicAttributes.isSymbolicLink()) {
+                checkPosixAttributes(posixAttributes,
+                    readAttributes(target, PosixFileAttributes.class, NOFOLLOW_LINKS));
+            }
+
+            // verify DOS attributes
+            if (dosAttributes != null && !basicAttributes.isSymbolicLink()) {
+                DosFileAttributes attrs =
+                    readAttributes(target, DosFileAttributes.class, NOFOLLOW_LINKS);
+                checkDosAttributes(dosAttributes, attrs);
+            }
+
+            // verify named attributes
+            if (namedAttributes != null &&
+                getFileStore(target).supportsFileAttributeView("xattr"))
+            {
+                checkUserDefinedFileAttributes(namedAttributes,
+                                               readUserDefinedFileAttributes(target));
+            }
+        }
+    }
+
+    /**
+     * Tests all possible ways to invoke move
+     */
+    static void testMove(Path dir1, Path dir2, boolean supportsLinks)
+        throws IOException
+    {
+        Path source, target, entry;
+
+        boolean sameDevice = getFileStore(dir1).equals(getFileStore(dir2));
+
+        // -- regular file --
+
+        /**
+         * Test: move regular file, target does not exist
+         */
+        source = createSourceFile(dir1);
+        target = getTargetFile(dir2);
+        moveAndVerify(source, target);
+        delete(target);
+
+        /**
+         * Test: move regular file, target exists
+         */
+        source = createSourceFile(dir1);
+        target = getTargetFile(dir2);
+        createFile(target);
+        try {
+            moveAndVerify(source, target);
+            throw new RuntimeException("FileAlreadyExistsException expected");
+        } catch (FileAlreadyExistsException x) {
+        }
+        delete(target);
+        createDirectory(target);
+        try {
+            moveAndVerify(source, target);
+            throw new RuntimeException("FileAlreadyExistsException expected");
+        } catch (FileAlreadyExistsException x) {
+        }
+        delete(source);
+        delete(target);
+
+        /**
+         * Test: move regular file, target does not exist
+         */
+        source = createSourceFile(dir1);
+        target = getTargetFile(dir2);
+        moveAndVerify(source, target, REPLACE_EXISTING);
+        delete(target);
+
+        /**
+         * Test: move regular file, target exists
+         */
+        source = createSourceFile(dir1);
+        target = getTargetFile(dir2);
+        createFile(target);
+        moveAndVerify(source, target, REPLACE_EXISTING);
+        delete(target);
+
+        /**
+         * Test: move regular file, target exists and is empty directory
+         */
+        source = createSourceFile(dir1);
+        target = getTargetFile(dir2);
+        createDirectory(target);
+        moveAndVerify(source, target, REPLACE_EXISTING);
+        delete(target);
+
+        /**
+         * Test: move regular file, target exists and is non-empty directory
+         */
+        source = createSourceFile(dir1);
+        target = getTargetFile(dir2);
+        createDirectory(target);
+        entry = target.resolve("foo");
+        createFile(entry);
+        try {
+            moveAndVerify(source, target);
+            throw new RuntimeException("FileAlreadyExistsException expected");
+        } catch (FileAlreadyExistsException x) {
+        }
+        delete(entry);
+        delete(source);
+        delete(target);
+
+        /**
+         * Test atomic move of regular file (same file store)
+         */
+        source = createSourceFile(dir1);
+        target = getTargetFile(dir1);
+        moveAndVerify(source, target, ATOMIC_MOVE);
+        delete(target);
+
+        /**
+         * Test atomic move of regular file (different file store)
+         */
+        if (!sameDevice) {
+            source = createSourceFile(dir1);
+            target = getTargetFile(dir2);
+            try {
+                moveAndVerify(source, target, ATOMIC_MOVE);
+                throw new RuntimeException("AtomicMoveNotSupportedException expected");
+            } catch (AtomicMoveNotSupportedException x) {
+            }
+            delete(source);
+        }
+
+        // -- directories --
+
+        /*
+         * Test: move empty directory, target does not exist
+         */
+        source = createSourceDirectory(dir1);
+        target = getTargetFile(dir2);
+        moveAndVerify(source, target);
+        delete(target);
+
+        /**
+         * Test: move empty directory, target exists
+         */
+        source = createSourceDirectory(dir1);
+        target = getTargetFile(dir2);
+        createFile(target);
+        try {
+            moveAndVerify(source, target);
+            throw new RuntimeException("FileAlreadyExistsException expected");
+        } catch (FileAlreadyExistsException x) {
+        }
+        delete(target);
+        createDirectory(target);
+        try {
+            moveAndVerify(source, target);
+            throw new RuntimeException("FileAlreadyExistsException expected");
+        } catch (FileAlreadyExistsException x) {
+        }
+        delete(source);
+        delete(target);
+
+        /**
+         * Test: move empty directory, target does not exist
+         */
+        source = createSourceDirectory(dir1);
+        target = getTargetFile(dir2);
+        moveAndVerify(source, target, REPLACE_EXISTING);
+        delete(target);
+
+        /**
+         * Test: move empty directory, target exists
+         */
+        source = createSourceDirectory(dir1);
+        target = getTargetFile(dir2);
+        createFile(target);
+        moveAndVerify(source, target, REPLACE_EXISTING);
+        delete(target);
+
+        /**
+         * Test: move empty, target exists and is empty directory
+         */
+        source = createSourceDirectory(dir1);
+        target = getTargetFile(dir2);
+        createDirectory(target);
+        moveAndVerify(source, target, REPLACE_EXISTING);
+        delete(target);
+
+        /**
+         * Test: move empty directory, target exists and is non-empty directory
+         */
+        source = createSourceDirectory(dir1);
+        target = getTargetFile(dir2);
+        createDirectory(target);
+        entry = target.resolve("foo");
+        createFile(entry);
+        try {
+            moveAndVerify(source, target, REPLACE_EXISTING);
+            throw new RuntimeException("DirectoryNotEmptyException expected");
+        } catch (DirectoryNotEmptyException x) {
+        }
+        delete(entry);
+        delete(source);
+        delete(target);
+
+        /**
+         * Test: move non-empty directory (same file system)
+         */
+        source = createSourceDirectory(dir1);
+        createFile(source.resolve("foo"));
+        target = getTargetFile(dir1);
+        moveAndVerify(source, target);
+        delete(target.resolve("foo"));
+        delete(target);
+
+        /**
+         * Test: move non-empty directory (different file store)
+         */
+        if (!sameDevice) {
+            source = createSourceDirectory(dir1);
+            createFile(source.resolve("foo"));
+            target = getTargetFile(dir2);
+            try {
+                moveAndVerify(source, target);
+                throw new RuntimeException("IOException expected");
+            } catch (IOException x) {
+            }
+            delete(source.resolve("foo"));
+            delete(source);
+        }
+
+        /**
+         * Test atomic move of directory (same file store)
+         */
+        source = createSourceDirectory(dir1);
+        createFile(source.resolve("foo"));
+        target = getTargetFile(dir1);
+        moveAndVerify(source, target, ATOMIC_MOVE);
+        delete(target.resolve("foo"));
+        delete(target);
+
+        // -- symbolic links --
+
+        /**
+         * Test: Move symbolic link to file, target does not exist
+         */
+        if (supportsLinks) {
+            Path tmp = createSourceFile(dir1);
+            source = dir1.resolve("link");
+            createSymbolicLink(source, tmp);
+            target = getTargetFile(dir2);
+            moveAndVerify(source, target);
+            delete(target);
+            delete(tmp);
+        }
+
+        /**
+         * Test: Move symbolic link to directory, target does not exist
+         */
+        if (supportsLinks) {
+            source = dir1.resolve("link");
+            createSymbolicLink(source, dir2);
+            target = getTargetFile(dir2);
+            moveAndVerify(source, target);
+            delete(target);
+        }
+
+        /**
+         * Test: Move broken symbolic link, target does not exists
+         */
+        if (supportsLinks) {
+            Path tmp = Paths.get("doesnotexist");
+            source = dir1.resolve("link");
+            createSymbolicLink(source, tmp);
+            target = getTargetFile(dir2);
+            moveAndVerify(source, target);
+            delete(target);
+        }
+
+        /**
+         * Test: Move symbolic link, target exists
+         */
+        if (supportsLinks) {
+            source = dir1.resolve("link");
+            createSymbolicLink(source, dir2);
+            target = getTargetFile(dir2);
+            createFile(target);
+            try {
+                moveAndVerify(source, target);
+                throw new RuntimeException("FileAlreadyExistsException expected");
+            } catch (FileAlreadyExistsException x) {
+            }
+            delete(source);
+            delete(target);
+        }
+
+        /**
+         * Test: Move regular file, target exists
+         */
+        if (supportsLinks) {
+            source = dir1.resolve("link");
+            createSymbolicLink(source, dir2);
+            target = getTargetFile(dir2);
+            createFile(target);
+            moveAndVerify(source, target, REPLACE_EXISTING);
+            delete(target);
+        }
+
+        /**
+         * Test: move symbolic link, target exists and is empty directory
+         */
+        if (supportsLinks) {
+            source = dir1.resolve("link");
+            createSymbolicLink(source, dir2);
+            target = getTargetFile(dir2);
+            createDirectory(target);
+            moveAndVerify(source, target, REPLACE_EXISTING);
+            delete(target);
+        }
+
+        /**
+         * Test: symbolic link, target exists and is non-empty directory
+         */
+        if (supportsLinks) {
+            source = dir1.resolve("link");
+            createSymbolicLink(source, dir2);
+            target = getTargetFile(dir2);
+            createDirectory(target);
+            entry = target.resolve("foo");
+            createFile(entry);
+            try {
+                moveAndVerify(source, target);
+                throw new RuntimeException("FileAlreadyExistsException expected");
+            } catch (FileAlreadyExistsException x) {
+            }
+            delete(entry);
+            delete(source);
+            delete(target);
+        }
+
+        /**
+         * Test atomic move of symbolic link (same file store)
+         */
+        if (supportsLinks) {
+            source = dir1.resolve("link");
+            createSymbolicLink(source, dir1);
+            target = getTargetFile(dir2);
+            createFile(target);
+            moveAndVerify(source, target, REPLACE_EXISTING);
+            delete(target);
+        }
+
+        // -- misc. tests --
+
+        /**
+         * Test nulls
+         */
+        source = createSourceFile(dir1);
+        target = getTargetFile(dir2);
+        try {
+            move(null, target);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException x) { }
+        try {
+            move(source, null);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException x) { }
+        try {
+            move(source, target, (CopyOption[])null);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException x) { }
+        try {
+            CopyOption[] opts = { REPLACE_EXISTING, null };
+            move(source, target, opts);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException x) { }
+        delete(source);
+
+        /**
+         * Test UOE
+         */
+        source = createSourceFile(dir1);
+        target = getTargetFile(dir2);
+        try {
+            move(source, target, new CopyOption() { });
+        } catch (UnsupportedOperationException x) { }
+        try {
+            move(source, target, REPLACE_EXISTING,  new CopyOption() { });
+        } catch (UnsupportedOperationException x) { }
+        delete(source);
+    }
+
+    // copy source to target with verification
+    static void copyAndVerify(Path source, Path target, CopyOption... options)
+        throws IOException
+    {
+        Path result = copy(source, target, options);
+        assertTrue(result == target);
+
+        // get attributes of source and target file to verify copy
+        boolean followLinks = true;
+        LinkOption[] linkOptions = new LinkOption[0];
+        boolean copyAttributes = false;
+        for (CopyOption opt : options) {
+            if (opt == NOFOLLOW_LINKS) {
+                followLinks = false;
+                linkOptions = new LinkOption[] { NOFOLLOW_LINKS };
+            }
+            if (opt == COPY_ATTRIBUTES)
+                copyAttributes = true;
+        }
+        BasicFileAttributes basicAttributes =
+            readAttributes(source, BasicFileAttributes.class, linkOptions);
+
+        // check hash if regular file
+        if (basicAttributes.isRegularFile())
+            assertTrue(computeHash(source) == computeHash(target));
+
+        // check link target if symbolic link
+        if (basicAttributes.isSymbolicLink())
+            assert(readSymbolicLink(source).equals(readSymbolicLink(target)));
+
+        // check that attributes are copied
+        if (copyAttributes && followLinks) {
+            checkBasicAttributes(basicAttributes,
+                readAttributes(source, BasicFileAttributes.class, linkOptions));
+
+            // verify other attributes when same provider
+            if (source.getFileSystem().provider() == target.getFileSystem().provider()) {
+
+                // check POSIX attributes are copied
+                String os = System.getProperty("os.name");
+                if (os.equals("SunOS") || os.equals("Linux")) {
+                    checkPosixAttributes(
+                        readAttributes(source, PosixFileAttributes.class, linkOptions),
+                        readAttributes(target, PosixFileAttributes.class, linkOptions));
+                }
+
+                // check DOS attributes are copied
+                if (os.startsWith("Windows")) {
+                    checkDosAttributes(
+                        readAttributes(source, DosFileAttributes.class, linkOptions),
+                        readAttributes(target, DosFileAttributes.class, linkOptions));
+                }
+
+                // check named attributes are copied
+                if (followLinks &&
+                    getFileStore(source).supportsFileAttributeView("xattr") &&
+                    getFileStore(target).supportsFileAttributeView("xattr"))
+                {
+                    checkUserDefinedFileAttributes(readUserDefinedFileAttributes(source),
+                                                   readUserDefinedFileAttributes(target));
+                }
+            }
+        }
+    }
+
+    /**
+     * Tests all possible ways to invoke copy to copy a file to a file
+     */
+    static void testCopyFileToFile(Path dir1, Path dir2, boolean supportsLinks)
+        throws IOException
+    {
+        Path source, target, link, entry;
+
+        // -- regular file --
+
+        /**
+         * Test: move regular file, target does not exist
+         */
+        source = createSourceFile(dir1);
+        target = getTargetFile(dir2);
+        copyAndVerify(source, target);
+        delete(source);
+        delete(target);
+
+        /**
+         * Test: copy regular file, target exists
+         */
+        source = createSourceFile(dir1);
+        target = getTargetFile(dir2);
+        createFile(target);
+        try {
+            copyAndVerify(source, target);
+            throw new RuntimeException("FileAlreadyExistsException expected");
+        } catch (FileAlreadyExistsException x) {
+        }
+        delete(target);
+        createDirectory(target);
+        try {
+            copyAndVerify(source, target);
+            throw new RuntimeException("FileAlreadyExistsException expected");
+        } catch (FileAlreadyExistsException x) {
+        }
+        delete(source);
+        delete(target);
+
+        /**
+         * Test: copy regular file, target does not exist
+         */
+        source = createSourceFile(dir1);
+        target = getTargetFile(dir2);
+        copyAndVerify(source, target, REPLACE_EXISTING);
+        delete(source);
+        delete(target);
+
+        /**
+         * Test: copy regular file, target exists
+         */
+        source = createSourceFile(dir1);
+        target = getTargetFile(dir2);
+        createFile(target);
+        copyAndVerify(source, target, REPLACE_EXISTING);
+        delete(source);
+        delete(target);
+
+        /**
+         * Test: copy regular file, target exists and is empty directory
+         */
+        source = createSourceFile(dir1);
+        target = getTargetFile(dir2);
+        createDirectory(target);
+        copyAndVerify(source, target, REPLACE_EXISTING);
+        delete(source);
+        delete(target);
+
+        /**
+         * Test: copy regular file, target exists and is non-empty directory
+         */
+        source = createSourceFile(dir1);
+        target = getTargetFile(dir2);
+        createDirectory(target);
+        entry = target.resolve("foo");
+        createFile(entry);
+        try {
+            copyAndVerify(source, target);
+            throw new RuntimeException("FileAlreadyExistsException expected");
+        } catch (FileAlreadyExistsException x) {
+        }
+        delete(entry);
+        delete(source);
+        delete(target);
+
+        /**
+         * Test: copy regular file + attributes
+         */
+        source = createSourceFile(dir1);
+        target = getTargetFile(dir2);
+        copyAndVerify(source, target, COPY_ATTRIBUTES);
+        delete(source);
+        delete(target);
+
+
+        // -- directory --
+
+        /*
+         * Test: copy directory, target does not exist
+         */
+        source = createSourceDirectory(dir1);
+        target = getTargetFile(dir2);
+        copyAndVerify(source, target);
+        delete(source);
+        delete(target);
+
+        /**
+         * Test: copy directory, target exists
+         */
+        source = createSourceDirectory(dir1);
+        target = getTargetFile(dir2);
+        createFile(target);
+        try {
+            copyAndVerify(source, target);
+            throw new RuntimeException("FileAlreadyExistsException expected");
+        } catch (FileAlreadyExistsException x) {
+        }
+        delete(target);
+        createDirectory(target);
+        try {
+            copyAndVerify(source, target);
+            throw new RuntimeException("FileAlreadyExistsException expected");
+        } catch (FileAlreadyExistsException x) {
+        }
+        delete(source);
+        delete(target);
+
+        /**
+         * Test: copy directory, target does not exist
+         */
+        source = createSourceDirectory(dir1);
+        target = getTargetFile(dir2);
+        copyAndVerify(source, target, REPLACE_EXISTING);
+        delete(source);
+        delete(target);
+
+        /**
+         * Test: copy directory, target exists
+         */
+        source = createSourceDirectory(dir1);
+        target = getTargetFile(dir2);
+        createFile(target);
+        copyAndVerify(source, target, REPLACE_EXISTING);
+        delete(source);
+        delete(target);
+
+        /**
+         * Test: copy directory, target exists and is empty directory
+         */
+        source = createSourceDirectory(dir1);
+        target = getTargetFile(dir2);
+        createDirectory(target);
+        copyAndVerify(source, target, REPLACE_EXISTING);
+        delete(source);
+        delete(target);
+
+        /**
+         * Test: copy directory, target exists and is non-empty directory
+         */
+        source = createSourceDirectory(dir1);
+        target = getTargetFile(dir2);
+        createDirectory(target);
+        entry = target.resolve("foo");
+        createFile(entry);
+        try {
+            copyAndVerify(source, target, REPLACE_EXISTING);
+            throw new RuntimeException("DirectoryNotEmptyException expected");
+        } catch (DirectoryNotEmptyException x) {
+        }
+        delete(entry);
+        delete(source);
+        delete(target);
+
+        /*
+         * Test: copy directory + attributes
+         */
+        source = createSourceDirectory(dir1);
+        target = getTargetFile(dir2);
+        copyAndVerify(source, target, COPY_ATTRIBUTES);
+        delete(source);
+        delete(target);
+
+        // -- symbolic links --
+
+        /**
+         * Test: Follow link
+         */
+        if (supportsLinks) {
+            source = createSourceFile(dir1);
+            link = dir1.resolve("link");
+            createSymbolicLink(link, source);
+            target = getTargetFile(dir2);
+            copyAndVerify(link, target);
+            delete(link);
+            delete(source);
+        }
+
+        /**
+         * Test: Copy link (to file)
+         */
+        if (supportsLinks) {
+            source = createSourceFile(dir1);
+            link = dir1.resolve("link");
+            createSymbolicLink(link, source);
+            target = getTargetFile(dir2);
+            copyAndVerify(link, target, NOFOLLOW_LINKS);
+            delete(link);
+            delete(source);
+        }
+
+        /**
+         * Test: Copy link (to directory)
+         */
+        if (supportsLinks) {
+            source = dir1.resolve("mydir");
+            createDirectory(source);
+            link = dir1.resolve("link");
+            createSymbolicLink(link, source);
+            target = getTargetFile(dir2);
+            copyAndVerify(link, target, NOFOLLOW_LINKS);
+            delete(link);
+            delete(source);
+        }
+
+        /**
+         * Test: Copy broken link
+         */
+        if (supportsLinks) {
+            assertTrue(notExists(source));
+            link = dir1.resolve("link");
+            createSymbolicLink(link, source);
+            target = getTargetFile(dir2);
+            copyAndVerify(link, target, NOFOLLOW_LINKS);
+            delete(link);
+        }
+
+        /**
+         * Test: Copy link to UNC (Windows only)
+         */
+        if (supportsLinks &&
+            System.getProperty("os.name").startsWith("Windows"))
+        {
+            Path unc = Paths.get("\\\\rialto\\share\\file");
+            link = dir1.resolve("link");
+            createSymbolicLink(link, unc);
+            target = getTargetFile(dir2);
+            copyAndVerify(link, target, NOFOLLOW_LINKS);
+            delete(link);
+        }
+
+        // -- misc. tests --
+
+        /**
+         * Test nulls
+         */
+        source = createSourceFile(dir1);
+        target = getTargetFile(dir2);
+        try {
+            copy(source, null);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException x) { }
+        try {
+            copy(source, target, (CopyOption[])null);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException x) { }
+        try {
+            CopyOption[] opts = { REPLACE_EXISTING, null };
+            copy(source, target, opts);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException x) { }
+        delete(source);
+
+        /**
+         * Test UOE
+         */
+        source = createSourceFile(dir1);
+        target = getTargetFile(dir2);
+        try {
+            copy(source, target, new CopyOption() { });
+        } catch (UnsupportedOperationException x) { }
+        try {
+            copy(source, target, REPLACE_EXISTING,  new CopyOption() { });
+        } catch (UnsupportedOperationException x) { }
+        delete(source);
+    }
+
+    /**
+     * Test copy from an input stream to a file
+     */
+    static void testCopyInputStreamToFile() throws IOException {
+        testCopyInputStreamToFile(0);
+        for (int i=0; i<100; i++) {
+            testCopyInputStreamToFile(rand.nextInt(32000));
+        }
+
+        // FileAlreadyExistsException
+        Path target = createTempFile("blah", null);
+        try {
+            InputStream in = new ByteArrayInputStream(new byte[0]);
+            try {
+                copy(in, target);
+                throw new RuntimeException("FileAlreadyExistsException expected");
+            } catch (FileAlreadyExistsException ignore) { }
+        } finally {
+            delete(target);
+        }
+        Path tmpdir = createTempDirectory("blah");
+        try {
+            if (TestUtil.supportsLinks(tmpdir)) {
+                Path link = createSymbolicLink(tmpdir.resolve("link"),
+                                                  tmpdir.resolve("target"));
+                try {
+                    InputStream in = new ByteArrayInputStream(new byte[0]);
+                    try {
+                        copy(in, link);
+                        throw new RuntimeException("FileAlreadyExistsException expected");
+                    } catch (FileAlreadyExistsException ignore) { }
+                } finally {
+                    delete(link);
+                }
+            }
+        } finally {
+            delete(tmpdir);
+        }
+
+
+        // nulls
+        try {
+            copy((InputStream)null, target);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException ignore) { }
+        try {
+            copy(new ByteArrayInputStream(new byte[0]), (Path)null);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException ignore) { }
+    }
+
+    static void testCopyInputStreamToFile(int size) throws IOException {
+        Path tmpdir = createTempDirectory("blah");
+        Path source = tmpdir.resolve("source");
+        Path target = tmpdir.resolve("target");
+        try {
+            boolean testReplaceExisting = rand.nextBoolean();
+
+            // create source file
+            byte[] b = new byte[size];
+            rand.nextBytes(b);
+            write(source, b);
+
+            // target file might already exist
+            if (testReplaceExisting && rand.nextBoolean()) {
+                write(target, new byte[rand.nextInt(512)]);
+            }
+
+            // copy from stream to file
+            InputStream in = new FileInputStream(source.toFile());
+            try {
+                long n;
+                if (testReplaceExisting) {
+                    n = copy(in, target, StandardCopyOption.REPLACE_EXISTING);
+                } else {
+                    n = copy(in, target);
+                }
+                assertTrue(in.read() == -1);   // EOF
+                assertTrue(n == size);
+                assertTrue(size(target) == size);
+            } finally {
+                in.close();
+            }
+
+            // check file
+            byte[] read = readAllBytes(target);
+            assertTrue(Arrays.equals(read, b));
+
+        } finally {
+            deleteIfExists(source);
+            deleteIfExists(target);
+            delete(tmpdir);
+        }
+    }
+
+    /**
+     * Test copy from file to output stream
+     */
+    static void testCopyFileToOuputStream() throws IOException {
+        testCopyFileToOuputStream(0);
+        for (int i=0; i<100; i++) {
+            testCopyFileToOuputStream(rand.nextInt(32000));
+        }
+
+        // nulls
+        try {
+            copy((Path)null, new ByteArrayOutputStream());
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException ignore) { }
+        try {
+            Path source = createTempFile("blah", null);
+            delete(source);
+            copy(source, (OutputStream)null);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException ignore) { }
+    }
+
+    static void testCopyFileToOuputStream(int size) throws IOException {
+        Path source = createTempFile("blah", null);
+        try {
+            byte[] b = new byte[size];
+            rand.nextBytes(b);
+            write(source, b);
+
+            ByteArrayOutputStream out = new ByteArrayOutputStream();
+
+            long n = copy(source, out);
+            assertTrue(n == size);
+            assertTrue(out.size() == size);
+
+            byte[] read = out.toByteArray();
+            assertTrue(Arrays.equals(read, b));
+
+            // check output stream is open
+            out.write(0);
+            assertTrue(out.size() == size+1);
+        } finally {
+            delete(source);
+        }
+    }
+
+    static void assertTrue(boolean value) {
+        if (!value)
+            throw new RuntimeException("Assertion failed");
+    }
+
+    // computes simple hash of the given file
+    static int computeHash(Path file) throws IOException {
+        int h = 0;
+
+        try (InputStream in = newInputStream(file)) {
+            byte[] buf = new byte[1024];
+            int n;
+            do {
+                n = in.read(buf);
+                for (int i=0; i<n; i++) {
+                    h = 31*h + (buf[i] & 0xff);
+                }
+            } while (n > 0);
+        }
+        return h;
+    }
+
+    // create file of random size in given directory
+    static Path createSourceFile(Path dir) throws IOException {
+        String name = "source" + Integer.toString(rand.nextInt());
+        Path file = dir.resolve(name);
+        createFile(file);
+        byte[] bytes = new byte[rand.nextInt(128*1024)];
+        rand.nextBytes(bytes);
+        try (OutputStream out = newOutputStream(file)) {
+            out.write(bytes);
+        }
+        randomizeAttributes(file);
+        return file;
+    }
+
+    // create directory in the given directory
+    static Path createSourceDirectory(Path dir) throws IOException {
+        String name = "sourcedir" + Integer.toString(rand.nextInt());
+        Path subdir = dir.resolve(name);
+        createDirectory(subdir);
+        randomizeAttributes(subdir);
+        return subdir;
+    }
+
+    // "randomize" the file attributes of the given file.
+    static void randomizeAttributes(Path file) throws IOException {
+        String os = System.getProperty("os.name");
+        boolean isWindows = os.startsWith("Windows");
+        boolean isUnix = os.equals("SunOS") || os.equals("Linux");
+        boolean isDirectory = isDirectory(file, NOFOLLOW_LINKS);
+
+        if (isUnix) {
+            Set<PosixFilePermission> perms =
+                getPosixFilePermissions(file, NOFOLLOW_LINKS);
+            PosixFilePermission[] toChange = {
+                PosixFilePermission.GROUP_READ,
+                PosixFilePermission.GROUP_WRITE,
+                PosixFilePermission.GROUP_EXECUTE,
+                PosixFilePermission.OTHERS_READ,
+                PosixFilePermission.OTHERS_WRITE,
+                PosixFilePermission.OTHERS_EXECUTE
+            };
+            for (PosixFilePermission perm: toChange) {
+                if (heads()) {
+                    perms.add(perm);
+                } else {
+                    perms.remove(perm);
+                }
+            }
+            setPosixFilePermissions(file, perms);
+        }
+
+        if (isWindows) {
+            DosFileAttributeView view =
+                getFileAttributeView(file, DosFileAttributeView.class, NOFOLLOW_LINKS);
+            // only set or unset the hidden attribute
+            view.setHidden(heads());
+        }
+
+        boolean addUserDefinedFileAttributes = heads() &&
+            getFileStore(file).supportsFileAttributeView("xattr");
+
+        // remove this when copying a direcory copies its named streams
+        if (isWindows && isDirectory) addUserDefinedFileAttributes = false;
+
+        if (addUserDefinedFileAttributes) {
+            UserDefinedFileAttributeView view =
+                getFileAttributeView(file, UserDefinedFileAttributeView.class);
+            int n = rand.nextInt(16);
+            while (n > 0) {
+                byte[] value = new byte[1 + rand.nextInt(100)];
+                view.write("user." + Integer.toString(n), ByteBuffer.wrap(value));
+                n--;
+            }
+        }
+    }
+
+    // create name for file in given directory
+    static Path getTargetFile(Path dir) throws IOException {
+        String name = "target" + Integer.toString(rand.nextInt());
+        return dir.resolve(name);
+    }
+ }
--- a/jdk/test/java/nio/file/Files/CreateFileTree.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-import java.nio.file.*;
-import java.io.IOException;
-import java.util.*;
-
-/**
- * Creates a file tree with possible cycles caused by symbolic links
- * to ancestor directories.
- */
-
-public class CreateFileTree {
-
-    static final Random rand = new Random();
-
-    public static Path createTemporaryDirectory() throws IOException {
-        Path tmpdir = Paths.get(System.getProperty("java.io.tmpdir"));
-        Path dir;
-        do {
-            dir = tmpdir.resolve("name" + rand.nextInt());
-        } while (dir.exists());
-        dir.createDirectory();
-        return dir;
-    }
-
-    public static void main(String[] args) throws IOException {
-        Path top = createTemporaryDirectory();
-        if (!top.isAbsolute())
-            top = top.toAbsolutePath();
-
-        List<Path> dirs = new ArrayList<Path>();
-
-        // create tree
-        Queue<Path> queue = new ArrayDeque<Path>();
-        queue.add(top);
-        int total = 1 + rand.nextInt(20);
-        int n = 0;
-        Path dir;
-        while (((dir = queue.poll()) != null) && (n < total)) {
-            int r = Math.min((total-n), (1+rand.nextInt(3)));
-            for (int i=0; i<r; i++) {
-                String name = "dir" + (++n);
-                Path subdir = dir.resolve(name).createDirectory();
-                queue.offer(subdir);
-                dirs.add(subdir);
-            }
-        }
-        assert dirs.size() >= 2;
-
-        // create a few regular files in the file tree
-        int files = dirs.size() * 3;
-        for (int i=0; i<files; i++) {
-            String name = "file" + (i+1);
-            int x = rand.nextInt(dirs.size());
-            dirs.get(x).resolve(name).createFile();
-        }
-
-        // create a few sym links in the file tree so as to create cycles
-        int links = 1 + rand.nextInt(5);
-        for (int i=0; i<links; i++) {
-            int x = rand.nextInt(dirs.size());
-            int y;
-            do {
-                y = rand.nextInt(dirs.size());
-            } while (y != x);
-            String name = "link" + (i+1);
-            Path link = dirs.get(x).resolve(name);
-            Path target = dirs.get(y);
-            link.createSymbolicLink(target);
-        }
-
-        // done
-        System.out.println(top);
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/DeleteOnClose.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2008, 2009, 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.
+ */
+
+import java.nio.file.*;
+import static java.nio.file.StandardOpenOption.*;
+import java.io.*;
+import java.util.*;
+
+public class DeleteOnClose {
+
+    public static void main(String[] args) throws IOException {
+        // open file but do not close it. Its existance will be checked by
+        // the calling script.
+        Files.newByteChannel(Paths.get(args[0]), READ, WRITE, DELETE_ON_CLOSE);
+
+        // check temporary file has been deleted after closing it
+        Path file = Files.createTempFile("blah", "tmp");
+        Files.newByteChannel(file, READ, WRITE, DELETE_ON_CLOSE).close();
+        if (Files.exists(file))
+            throw new RuntimeException("Temporary file was not deleted");
+
+        Path dir = Files.createTempDirectory("blah");
+        try {
+            // check that DELETE_ON_CLOSE fails when file is a sym link
+            if (TestUtil.supportsLinks(dir)) {
+                file = dir.resolve("foo");
+                Files.createFile(file);
+                Path link = dir.resolve("link");
+                Files.createSymbolicLink(link, file);
+                try {
+                    Files.newByteChannel(link, READ, WRITE, DELETE_ON_CLOSE);
+                    throw new RuntimeException("IOException expected");
+                } catch (IOException ignore) { }
+            }
+
+            // check that DELETE_ON_CLOSE works with files created via open
+            // directories
+            try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
+                if (stream instanceof SecureDirectoryStream) {
+                    SecureDirectoryStream<Path> secure = (SecureDirectoryStream<Path>)stream;
+                    file = Paths.get("foo");
+
+                    Set<OpenOption> opts = new HashSet<>();
+                    opts.add(WRITE);
+                    opts.add(DELETE_ON_CLOSE);
+                    secure.newByteChannel(file, opts).close();
+
+                    if (Files.exists(dir.resolve(file)))
+                        throw new RuntimeException("File not deleted");
+                }
+            }
+        } finally {
+            TestUtil.removeAll(dir);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/FileAttributes.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,265 @@
+/*
+ * Copyright (c) 2008, 2009, 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.
+ */
+
+/* @test
+ * @bug 4313887 6838333
+ * @summary Unit test for java.nio.file.Files
+ * @library ..
+ */
+
+import java.nio.file.*;
+import java.nio.file.attribute.*;
+import java.io.IOException;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Exercises getAttribute/setAttribute/readAttributes methods.
+ */
+
+public class FileAttributes {
+
+    static void assertTrue(boolean okay) {
+        if (!okay)
+            throw new RuntimeException("Assertion Failed");
+    }
+
+    static void checkEqual(Object o1, Object o2) {
+        if (o1 == null) {
+            assertTrue(o2 == null);
+        } else {
+            assertTrue (o1.equals(o2));
+        }
+    }
+
+    // checks that two time values are within 1s of each other
+    static void checkNearEqual(FileTime t1, FileTime t2) {
+        long diff = Math.abs(t1.toMillis() - t2.toMillis());
+        assertTrue(diff <= 1000);
+    }
+
+    // Exercise getAttribute/setAttribute/readAttributes on basic attributes
+    static void checkBasicAttributes(Path file, BasicFileAttributes attrs)
+        throws IOException
+    {
+        // getAttribute
+        checkEqual(attrs.size(), Files.getAttribute(file, "size"));
+        checkEqual(attrs.lastModifiedTime(), Files.getAttribute(file, "basic:lastModifiedTime"));
+        checkEqual(attrs.lastAccessTime(), Files.getAttribute(file, "lastAccessTime"));
+        checkEqual(attrs.creationTime(), Files.getAttribute(file, "basic:creationTime"));
+        assertTrue((Boolean)Files.getAttribute(file, "isRegularFile"));
+        assertTrue(!(Boolean)Files.getAttribute(file, "basic:isDirectory"));
+        assertTrue(!(Boolean)Files.getAttribute(file, "isSymbolicLink"));
+        assertTrue(!(Boolean)Files.getAttribute(file, "basic:isOther"));
+        checkEqual(attrs.fileKey(), Files.getAttribute(file, "basic:fileKey"));
+
+        // setAttribute
+        FileTime modTime = attrs.lastModifiedTime();
+        Files.setAttribute(file, "basic:lastModifiedTime", FileTime.fromMillis(0L));
+        checkEqual(Files.getLastModifiedTime(file),
+                   FileTime.fromMillis(0L));
+        Files.setAttribute(file, "lastModifiedTime", modTime);
+        checkEqual(Files.getLastModifiedTime(file), modTime);
+
+        Map<String,Object> map;
+        map = Files.readAttributes(file, "*");
+        assertTrue(map.size() >= 9);
+        checkEqual(attrs.isRegularFile(), map.get("isRegularFile")); // check one
+
+        map = Files.readAttributes(file, "basic:*");
+        assertTrue(map.size() >= 9);
+        checkEqual(attrs.lastAccessTime(), map.get("lastAccessTime")); // check one
+
+        map = Files.readAttributes(file, "size,lastModifiedTime");
+        assertTrue(map.size() == 2);
+        checkEqual(attrs.size(), map.get("size"));
+        checkEqual(attrs.lastModifiedTime(), map.get("lastModifiedTime"));
+
+        map = Files.readAttributes(file,
+            "basic:lastModifiedTime,lastAccessTime,ShouldNotExist");
+        assertTrue(map.size() == 2);
+        checkEqual(attrs.lastModifiedTime(), map.get("lastModifiedTime"));
+        checkEqual(attrs.lastAccessTime(), map.get("lastAccessTime"));
+    }
+
+    // Exercise getAttribute/setAttribute/readAttributes on posix attributes
+    static void checkPosixAttributes(Path file, PosixFileAttributes attrs)
+        throws IOException
+    {
+        checkBasicAttributes(file, attrs);
+
+        // getAttribute
+        checkEqual(attrs.permissions(), Files.getAttribute(file, "posix:permissions"));
+        checkEqual(attrs.owner(), Files.getAttribute(file, "posix:owner"));
+        checkEqual(attrs.group(), Files.getAttribute(file, "posix:group"));
+
+        // setAttribute
+        Set<PosixFilePermission> orig = attrs.permissions();
+        Set<PosixFilePermission> newPerms = new HashSet<>(orig);
+        newPerms.remove(PosixFilePermission.OTHERS_READ);
+        newPerms.remove(PosixFilePermission.OTHERS_WRITE);
+        newPerms.remove(PosixFilePermission.OTHERS_EXECUTE);
+        Files.setAttribute(file, "posix:permissions", newPerms);
+        checkEqual(Files.getPosixFilePermissions(file), newPerms);
+        Files.setAttribute(file, "posix:permissions", orig);
+        checkEqual(Files.getPosixFilePermissions(file), orig);
+        Files.setAttribute(file, "posix:owner", attrs.owner());
+        Files.setAttribute(file, "posix:group", attrs.group());
+
+        // readAttributes
+        Map<String,Object> map;
+        map = Files.readAttributes(file, "posix:*");
+        assertTrue(map.size() >= 12);
+        checkEqual(attrs.permissions(), map.get("permissions")); // check one
+
+        map = Files.readAttributes(file, "posix:size,owner,ShouldNotExist");
+        assertTrue(map.size() == 2);
+        checkEqual(attrs.size(), map.get("size"));
+        checkEqual(attrs.owner(), map.get("owner"));
+    }
+
+    // Exercise getAttribute/readAttributes on unix attributes
+    static void checkUnixAttributes(Path file) throws IOException {
+        // getAttribute
+        int mode = (Integer)Files.getAttribute(file, "unix:mode");
+        long ino = (Long)Files.getAttribute(file, "unix:ino");
+        long dev = (Long)Files.getAttribute(file, "unix:dev");
+        long rdev = (Long)Files.getAttribute(file, "unix:rdev");
+        int nlink = (Integer)Files.getAttribute(file, "unix:nlink");
+        int uid = (Integer)Files.getAttribute(file, "unix:uid");
+        int gid = (Integer)Files.getAttribute(file, "unix:gid");
+        FileTime ctime = (FileTime)Files.getAttribute(file, "unix:ctime");
+
+        // readAttributes
+        Map<String,Object> map;
+        map = Files.readAttributes(file, "unix:*");
+        assertTrue(map.size() >= 20);
+
+        map = Files.readAttributes(file, "unix:size,uid,gid,ShouldNotExist");
+        assertTrue(map.size() == 3);
+        checkEqual(map.get("size"),
+                   Files.readAttributes(file, BasicFileAttributes.class).size());
+    }
+
+    // Exercise getAttribute/setAttribute on dos attributes
+    static void checkDosAttributes(Path file, DosFileAttributes attrs)
+        throws IOException
+    {
+        checkBasicAttributes(file, attrs);
+
+        // getAttribute
+        checkEqual(attrs.isReadOnly(), Files.getAttribute(file, "dos:readonly"));
+        checkEqual(attrs.isHidden(), Files.getAttribute(file, "dos:hidden"));
+        checkEqual(attrs.isSystem(), Files.getAttribute(file, "dos:system"));
+        checkEqual(attrs.isArchive(), Files.getAttribute(file, "dos:archive"));
+
+        // setAttribute
+        boolean value;
+
+        value = attrs.isReadOnly();
+        Files.setAttribute(file, "dos:readonly", !value);
+        checkEqual(Files.readAttributes(file, DosFileAttributes.class).isReadOnly(), !value);
+        Files.setAttribute(file, "dos:readonly", value);
+        checkEqual(Files.readAttributes(file, DosFileAttributes.class).isReadOnly(), value);
+
+        value = attrs.isHidden();
+        Files.setAttribute(file, "dos:hidden", !value);
+        checkEqual(Files.readAttributes(file, DosFileAttributes.class).isHidden(), !value);
+        Files.setAttribute(file, "dos:hidden", value);
+        checkEqual(Files.readAttributes(file, DosFileAttributes.class).isHidden(), value);
+
+        value = attrs.isSystem();
+        Files.setAttribute(file, "dos:system", !value);
+        checkEqual(Files.readAttributes(file, DosFileAttributes.class).isSystem(), !value);
+        Files.setAttribute(file, "dos:system", value);
+        checkEqual(Files.readAttributes(file, DosFileAttributes.class).isSystem(), value);
+
+        value = attrs.isArchive();
+        Files.setAttribute(file, "dos:archive", !value);
+        checkEqual(Files.readAttributes(file, DosFileAttributes.class).isArchive(), !value);
+        Files.setAttribute(file, "dos:archive", value);
+        checkEqual(Files.readAttributes(file, DosFileAttributes.class).isArchive(), value);
+
+        // readAttributes
+        Map<String,Object> map;
+        map = Files.readAttributes(file, "dos:*");
+        assertTrue(map.size() >= 13);
+        checkEqual(attrs.isReadOnly(), map.get("readonly")); // check one
+
+        map = Files.readAttributes(file, "dos:size,hidden,ShouldNotExist");
+        assertTrue(map.size() == 2);
+        checkEqual(attrs.size(), map.get("size"));
+        checkEqual(attrs.isHidden(), map.get("hidden"));
+    }
+
+    static void miscTests(Path file) throws IOException {
+        // NPE tests
+        try {
+            Files.getAttribute(file, null);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException npe) { }
+        try {
+            Files.getAttribute(file, "isRegularFile", (LinkOption[])null);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException npe) { }
+        try {
+            Files.setAttribute(file, null, 0L);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException npe) { }
+    }
+
+    static void doTests(Path dir) throws IOException {
+        Path file = dir.resolve("foo");
+        Files.createFile(file);
+        FileStore store = Files.getFileStore(file);
+        try {
+            checkBasicAttributes(file,
+                Files.readAttributes(file, BasicFileAttributes.class));
+
+            if (store.supportsFileAttributeView("posix"))
+                checkPosixAttributes(file,
+                    Files.readAttributes(file, PosixFileAttributes.class));
+
+            if (store.supportsFileAttributeView("unix"))
+                checkUnixAttributes(file);
+
+            if (store.supportsFileAttributeView("dos"))
+                checkDosAttributes(file,
+                    Files.readAttributes(file, DosFileAttributes.class));
+
+            miscTests(file);
+        } finally {
+            Files.delete(file);
+        }
+    }
+
+
+    public static void main(String[] args) throws IOException {
+        Path dir = TestUtil.createTemporaryDirectory();
+        try {
+            doTests(dir);
+        } finally {
+            TestUtil.removeAll(dir);
+        }
+    }
+}
--- a/jdk/test/java/nio/file/Files/ForceLoad.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-/* @test
- * @bug 4313887
- * @summary Test library dependencies by invoking Files.probeContentType
- *     before other methods that would cause nio.dll to be loaded.
- */
-
-import java.nio.file.*;
-import java.io.IOException;
-
-public class ForceLoad {
-
-    public static void main(String[] args) throws IOException {
-        Files.probeContentType(Paths.get("."));
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/InterruptCopy.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2008, 2010, 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.
+ */
+
+/* @test
+ * @bug 4313887 6993267
+ * @summary Unit test for Sun-specific ExtendedCopyOption.INTERRUPTIBLE option
+ * @library ..
+ * @run main/othervm -XX:-UseVMInterruptibleIO InterruptCopy
+ */
+
+import java.nio.file.*;
+import java.io.*;
+import java.util.concurrent.*;
+import com.sun.nio.file.ExtendedCopyOption;
+
+public class InterruptCopy {
+
+    private static final long FILE_SIZE_TO_COPY = 512L * 1024L * 1024L;
+    private static final int DELAY_IN_MS = 500;
+    private static final int DURATION_MAX_IN_MS = 5000;
+
+    public static void main(String[] args) throws Exception {
+        Path dir = TestUtil.createTemporaryDirectory();
+        try {
+            FileStore store = Files.getFileStore(dir);
+            System.out.format("Checking space (%s)\n", store);
+            long usableSpace = store.getUsableSpace();
+            if (usableSpace < 2*FILE_SIZE_TO_COPY) {
+                System.out.println("Insufficient disk space to run test.");
+                return;
+            }
+            doTest(dir);
+        } finally {
+            TestUtil.removeAll(dir);
+        }
+    }
+
+    static void doTest(Path dir) throws Exception {
+        final Path source = dir.resolve("foo");
+        final Path target = dir.resolve("bar");
+
+        // create source file (don't create it as sparse file because we
+        // require the copy to take a long time)
+        System.out.println("Creating source file...");
+        byte[] buf = new byte[32*1024];
+        long total = 0;
+        try (OutputStream out = Files.newOutputStream(source)) {
+            do {
+                out.write(buf);
+                total += buf.length;
+            } while (total < FILE_SIZE_TO_COPY);
+        }
+        System.out.println("Source file created.");
+
+        ScheduledExecutorService pool =
+            Executors.newSingleThreadScheduledExecutor();
+        try {
+            // copy source to target in main thread, interrupting it after a delay
+            final Thread me = Thread.currentThread();
+            Future<?> wakeup = pool.schedule(new Runnable() {
+                public void run() {
+                    me.interrupt();
+                }}, DELAY_IN_MS, TimeUnit.MILLISECONDS);
+            System.out.println("Copying file...");
+            try {
+                long start = System.currentTimeMillis();
+                Files.copy(source, target, ExtendedCopyOption.INTERRUPTIBLE);
+                long duration = System.currentTimeMillis() - start;
+                if (duration > DURATION_MAX_IN_MS)
+                    throw new RuntimeException("Copy was not interrupted");
+            } catch (IOException e) {
+                boolean interrupted = Thread.interrupted();
+                if (!interrupted)
+                    throw new RuntimeException("Interrupt status was not set");
+                System.out.println("Copy failed (this is expected)");
+            }
+            try {
+                wakeup.get();
+            } catch (InterruptedException ignore) { }
+            Thread.interrupted();
+
+            // copy source to target via task in thread pool, interrupting it after
+            // a delay using cancel(true)
+            Future<Void> result = pool.submit(new Callable<Void>() {
+                public Void call() throws IOException {
+                    System.out.println("Copying file...");
+                    Files.copy(source, target, ExtendedCopyOption.INTERRUPTIBLE,
+                        StandardCopyOption.REPLACE_EXISTING);
+                    return null;
+                }
+            });
+            Thread.sleep(DELAY_IN_MS);
+            boolean cancelled = result.cancel(true);
+            if (!cancelled)
+                result.get();
+            System.out.println("Copy cancelled.");
+        } finally {
+            pool.shutdown();
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/Links.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,191 @@
+/*
+ * Copyright (c) 2008, 2009, 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.
+ */
+
+/* @test
+ * @bug 4313887 6838333 6863864
+ * @summary Unit test for java.nio.file.Files createSymbolicLink,
+ *     readSymbolicLink, and createLink methods
+ * @library ..
+ * @build Links
+ * @run main/othervm Links
+ */
+
+import java.nio.file.*;
+import java.nio.file.attribute.*;
+import java.io.*;
+
+public class Links {
+
+    static final boolean isWindows =
+        System.getProperty("os.name").startsWith("Windows");
+
+    static void assertTrue(boolean okay) {
+        if (!okay)
+            throw new RuntimeException("Assertion failed");
+    }
+
+    /**
+     * Exercise createSymbolicLink and readLink methods
+     */
+    static void testSymLinks(Path dir) throws IOException {
+        final Path link = dir.resolve("link");
+
+        // Check if sym links are supported
+        try {
+            Files.createSymbolicLink(link, Paths.get("foo"));
+            Files.delete(link);
+        } catch (UnsupportedOperationException x) {
+            // sym links not supported
+            return;
+        } catch (IOException x) {
+            // probably insufficient privileges to create sym links (Windows)
+            return;
+        }
+
+        // Test links to various targets
+        String[] windowsTargets =
+            { "foo", "C:\\foo", "\\foo", "\\\\server\\share\\foo" };
+        String[] otherTargets = { "relative", "/absolute" };
+
+        String[] targets = (isWindows) ? windowsTargets : otherTargets;
+        for (String s: targets) {
+            Path target = Paths.get(s);
+            Files.createSymbolicLink(link, target);
+            try {
+                assertTrue(Files.readSymbolicLink(link).equals(target));
+            } finally {
+                Files.delete(link);
+            }
+        }
+
+        // Test links to directory
+        Path mydir = dir.resolve("mydir");
+        Path myfile = mydir.resolve("myfile");
+        try {
+            Files.createDirectory(mydir);
+            Files.createFile(myfile);
+
+            // link -> "mydir"
+            Files.createSymbolicLink(link, mydir.getFileName());
+            assertTrue(Files.readSymbolicLink(link).equals(mydir.getFileName()));
+
+            // Test access to directory via link
+            try (DirectoryStream<Path> stream = Files.newDirectoryStream(link)) {
+                boolean found = false;
+                for (Path entry: stream) {
+                    if (entry.getFileName().equals(myfile.getFileName())) {
+                        found = true;
+                        break;
+                    }
+                }
+                assertTrue(found);
+            }
+
+            // Test link2 -> link -> mydir
+            final Path link2 = dir.resolve("link2");
+            Path target2 = link.getFileName();
+            Files.createSymbolicLink(link2, target2);
+            try {
+                assertTrue(Files.readSymbolicLink(link2).equals(target2));
+                Files.newDirectoryStream(link2).close();
+            } finally {
+                Files.delete(link2);
+            }
+
+            // Remove mydir and re-create link2 before re-creating mydir
+            // (This is a useful test on Windows to ensure that creating a
+            // sym link to a directory sym link creates the right type of link).
+            Files.delete(myfile);
+            Files.delete(mydir);
+            Files.createSymbolicLink(link2, target2);
+            try {
+                assertTrue(Files.readSymbolicLink(link2).equals(target2));
+                Files.createDirectory(mydir);
+                Files.newDirectoryStream(link2).close();
+            } finally {
+                Files.delete(link2);
+            }
+
+        } finally {
+            Files.deleteIfExists(myfile);
+            Files.deleteIfExists(mydir);
+            Files.deleteIfExists(link);
+        }
+    }
+
+    /**
+     * Exercise createLink method
+     */
+    static void testHardLinks(Path dir) throws IOException {
+        Path foo = dir.resolve("foo");
+        Files.createFile(foo);
+        try {
+            Path bar = dir.resolve("bar");
+            try {
+                Files.createLink(bar, foo);
+            } catch (UnsupportedOperationException x) {
+                return;
+            } catch (IOException x) {
+                // probably insufficient privileges (Windows)
+                return;
+            }
+            try {
+                Object key1 = Files.readAttributes(foo, BasicFileAttributes.class).fileKey();
+                Object key2 = Files.readAttributes(bar, BasicFileAttributes.class).fileKey();
+                assertTrue((key1 == null) || (key1.equals(key2)));
+            } finally {
+                Files.delete(bar);
+            }
+
+
+        } finally {
+            Files.delete(foo);
+        }
+    }
+
+    public static void main(String[] args) throws IOException {
+        Path dir = TestUtil.createTemporaryDirectory();
+        try {
+            testSymLinks(dir);
+            testHardLinks(dir);
+
+            // repeat tests on Windows with long path
+            if (isWindows) {
+                Path dirWithLongPath = null;
+                try {
+                    dirWithLongPath = TestUtil.createDirectoryWithLongPath(dir);
+                } catch (IOException x) {
+                    System.out.println("Unable to create long path: " + x);
+                }
+                if (dirWithLongPath != null) {
+                    System.out.println("");
+                    System.out.println("** REPEAT TESTS WITH LONG PATH **");
+                    testSymLinks(dirWithLongPath);
+                    testHardLinks(dirWithLongPath);
+                }
+            }
+        } finally {
+            TestUtil.removeAll(dir);
+        }
+    }
+}
--- a/jdk/test/java/nio/file/Files/META-INF/services/java.nio.file.spi.FileTypeDetector	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-SimpleFileTypeDetector
--- a/jdk/test/java/nio/file/Files/MaxDepth.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 2010, 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.
- */
-
-import java.nio.file.*;
-import java.nio.file.attribute.*;
-import java.io.IOException;
-import java.util.*;
-
-/**
- * Unit test for Files.walkFileTree to test maxDepth parameter
- */
-
-public class MaxDepth {
-    public static void main(String[] args) throws Exception {
-        final Path top = Paths.get(args[0]);
-
-        for (int i=0; i<5; i++) {
-            Set<FileVisitOption> opts = Collections.emptySet();
-            final int maxDepth = i;
-            Files.walkFileTree(top, opts, maxDepth, new SimpleFileVisitor<Path>() {
-                // compute depth based on relative path to top directory
-                private int depth(Path file) {
-                    Path rp = file.relativize(top);
-                    return (rp == null) ? 0 : rp.getNameCount();
-                }
-
-                @Override
-                public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
-                    int d = depth(dir);
-                    if (d == maxDepth)
-                        throw new RuntimeException("Should not open directories at maxDepth");
-                    if (d > maxDepth)
-                        throw new RuntimeException("Too deep");
-                    return FileVisitResult.CONTINUE;
-                }
-
-                @Override
-                public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
-                    int d = depth(file);
-                    if (d > maxDepth)
-                        throw new RuntimeException("Too deep");
-                    return FileVisitResult.CONTINUE;
-                }
-            });
-        }
-    }
-}
--- a/jdk/test/java/nio/file/Files/Misc.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/file/Files/Misc.java	Wed Jul 05 17:35:13 2017 +0200
@@ -22,122 +22,335 @@
  */
 
 /* @test
- * @bug 4313887 6838333 6865748
- * @summary Unit test for java.nio.file.Files for miscellenous cases not
- *   covered by other tests
+ * @bug 4313887 6838333
+ * @summary Unit test for miscellenous methods in java.nio.file.Files
  * @library ..
  */
 
 import java.nio.file.*;
-import java.nio.file.attribute.Attributes;
-import java.nio.file.attribute.BasicFileAttributes;
+import static java.nio.file.Files.*;
+import static java.nio.file.LinkOption.*;
+import java.nio.file.attribute.*;
 import java.io.IOException;
 import java.util.*;
 
 public class Misc {
 
-    static void npeExpected() {
-        throw new RuntimeException("NullPointerException expected");
-    }
-
     public static void main(String[] args) throws IOException {
-
-        // -- Files.createDirectories --
-
         Path dir = TestUtil.createTemporaryDirectory();
         try {
-            // no-op
-            Files.createDirectories(dir);
+            testCreateDirectories(dir);
+            testIsHidden(dir);
+            testIsSameFile(dir);
+            testFileTypeMethods(dir);
+            testAccessMethods(dir);
+        } finally {
+             TestUtil.removeAll(dir);
+        }
+    }
 
-            // create one directory
-            Path subdir = dir.resolve("a");
-            Files.createDirectories(subdir);
-            if (!subdir.exists())
-                throw new RuntimeException("directory not created");
+    /**
+     * Tests createDirectories
+     */
+    static void testCreateDirectories(Path tmpdir) throws IOException {
+        // a no-op
+        createDirectories(tmpdir);
+
+        // create one directory
+        Path subdir = tmpdir.resolve("a");
+        createDirectories(subdir);
+        assertTrue(exists(subdir));
 
-            // create parents
-            subdir = subdir.resolve("b/c/d");
-            Files.createDirectories(subdir);
-            if (!subdir.exists())
-                throw new RuntimeException("directory not created");
+        // create parents
+        subdir = subdir.resolve("b/c/d");
+        createDirectories(subdir);
+        assertTrue(exists(subdir));
 
-            // existing file is not a directory
-            Path file = dir.resolve("x").createFile();
+        // existing file is not a directory
+        Path file = createFile(tmpdir.resolve("x"));
+        try {
+            createDirectories(file);
+            throw new RuntimeException("failure expected");
+        } catch (FileAlreadyExistsException x) { }
+        try {
+            createDirectories(file.resolve("y"));
+            throw new RuntimeException("failure expected");
+        } catch (IOException x) { }
+    }
+
+    /**
+     * Tests isHidden
+     */
+    static void testIsHidden(Path tmpdir) throws IOException {
+        assertTrue(!isHidden(tmpdir));
+
+        Path file = tmpdir.resolve(".foo");
+        if (System.getProperty("os.name").startsWith("Windows")) {
+            createFile(file);
             try {
-                Files.createDirectories(file);
-                throw new RuntimeException("failure expected");
-            } catch (FileAlreadyExistsException x) { }
-            try {
-                Files.createDirectories(file.resolve("y"));
-                throw new RuntimeException("failure expected");
-            } catch (IOException x) { }
+                setAttribute(file, "dos:hidden", true);
+                try {
+                    assertTrue(isHidden(file));
+                } finally {
+                    setAttribute(file, "dos:hidden", false);
+                }
+            } finally {
+                delete(file);
+            }
+        } else {
+            assertTrue(isHidden(file));
+        }
+    }
 
-        } finally {
-            TestUtil.removeAll(dir);
-        }
+    /**
+     * Tests isSameFile
+     */
+    static void testIsSameFile(Path tmpdir) throws IOException {
+        Path thisFile = tmpdir.resolve("thisFile");
+        Path thatFile = tmpdir.resolve("thatFile");
 
-        // --- NullPointerException --
+        /**
+         * Test: isSameFile for self
+         */
+        assertTrue(isSameFile(thisFile, thisFile));
 
+        /**
+         * Test: Neither files exist
+         */
         try {
-            Files.probeContentType(null);
-            npeExpected();
-        } catch (NullPointerException e) {
+            isSameFile(thisFile, thatFile);
+            throw new RuntimeException("IOException not thrown");
+        } catch (IOException x) {
         }
         try {
-            Files.walkFileTree(null, EnumSet.noneOf(FileVisitOption.class),
-                Integer.MAX_VALUE, new SimpleFileVisitor<Path>(){});
-            npeExpected();
-        } catch (NullPointerException e) {
+            isSameFile(thatFile, thisFile);
+            throw new RuntimeException("IOException not thrown");
+        } catch (IOException x) {
         }
-        try {
-            Files.walkFileTree(Paths.get("."), null, Integer.MAX_VALUE,
-                new SimpleFileVisitor<Path>(){});
-            npeExpected();
-        } catch (NullPointerException e) {
-        }
+
+        createFile(thisFile);
         try {
-            Files.walkFileTree(Paths.get("."), EnumSet.noneOf(FileVisitOption.class),
-                -1, new SimpleFileVisitor<Path>(){});
-            throw new RuntimeException("IllegalArgumentExpected expected");
-        } catch (IllegalArgumentException e) {
-        }
-        try {
-            Set<FileVisitOption> opts = new HashSet<FileVisitOption>(1);
-            opts.add(null);
-            Files.walkFileTree(Paths.get("."), opts, Integer.MAX_VALUE,
-                new SimpleFileVisitor<Path>(){});
-            npeExpected();
-        } catch (NullPointerException e) {
-        }
-        try {
-            Files.walkFileTree(Paths.get("."), EnumSet.noneOf(FileVisitOption.class),
-                Integer.MAX_VALUE, null);
-            npeExpected();
-        } catch (NullPointerException e) {
+            /**
+             * Test: One file exists
+             */
+            try {
+                isSameFile(thisFile, thatFile);
+                throw new RuntimeException("IOException not thrown");
+            } catch (IOException x) {
+            }
+            try {
+                isSameFile(thatFile, thisFile);
+                throw new RuntimeException("IOException not thrown");
+            } catch (IOException x) {
+            }
+
+            /**
+             * Test: Both file exists
+             */
+            createFile(thatFile);
+            try {
+                assertTrue(!isSameFile(thisFile, thatFile));
+                assertTrue(!isSameFile(thatFile, thisFile));
+            } finally {
+                delete(thatFile);
+            }
+
+            /**
+             * Test: Symbolic links
+             */
+            if (TestUtil.supportsLinks(tmpdir)) {
+                createSymbolicLink(thatFile, thisFile);
+                try {
+                    assertTrue(isSameFile(thisFile, thatFile));
+                    assertTrue(isSameFile(thatFile, thisFile));
+                } finally {
+                    TestUtil.deleteUnchecked(thatFile);
+                }
+            }
+        } finally {
+            delete(thisFile);
         }
 
-        SimpleFileVisitor<Path> visitor = new SimpleFileVisitor<Path>() { };
-        boolean ranTheGauntlet = false;
-        BasicFileAttributes attrs = Attributes.readBasicFileAttributes(Paths.get("."));
+        // nulls
+        try {
+            isSameFile(thisFile, null);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException ignore) { }
+        try {
+            isSameFile(null, thatFile);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException ignore) { }
+    }
+
+    /**
+     * Exercise isRegularFile, isDirectory, isSymbolicLink
+     */
+    static void testFileTypeMethods(Path tmpdir) throws IOException {
+        assertTrue(!isRegularFile(tmpdir));
+        assertTrue(!isRegularFile(tmpdir, NOFOLLOW_LINKS));
+        assertTrue(isDirectory(tmpdir));
+        assertTrue(isDirectory(tmpdir, NOFOLLOW_LINKS));
+        assertTrue(!isSymbolicLink(tmpdir));
+
+        Path file = createFile(tmpdir.resolve("foo"));
+        try {
+            assertTrue(isRegularFile(file));
+            assertTrue(isRegularFile(file, NOFOLLOW_LINKS));
+            assertTrue(!isDirectory(file));
+            assertTrue(!isDirectory(file, NOFOLLOW_LINKS));
+            assertTrue(!isSymbolicLink(file));
+
+            if (TestUtil.supportsLinks(tmpdir)) {
+                Path link = tmpdir.resolve("link");
+
+                createSymbolicLink(link, tmpdir);
+                try {
+                    assertTrue(!isRegularFile(link));
+                    assertTrue(!isRegularFile(link, NOFOLLOW_LINKS));
+                    assertTrue(isDirectory(link));
+                    assertTrue(!isDirectory(link, NOFOLLOW_LINKS));
+                    assertTrue(isSymbolicLink(link));
+                } finally {
+                    delete(link);
+                }
+
+                createSymbolicLink(link, file);
+                try {
+                    assertTrue(isRegularFile(link));
+                    assertTrue(!isRegularFile(link, NOFOLLOW_LINKS));
+                    assertTrue(!isDirectory(link));
+                    assertTrue(!isDirectory(link, NOFOLLOW_LINKS));
+                    assertTrue(isSymbolicLink(link));
+                } finally {
+                    delete(link);
+                }
+
+                createLink(link, file);
+                try {
+                    assertTrue(isRegularFile(link));
+                    assertTrue(isRegularFile(link, NOFOLLOW_LINKS));
+                    assertTrue(!isDirectory(link));
+                    assertTrue(!isDirectory(link, NOFOLLOW_LINKS));
+                    assertTrue(!isSymbolicLink(link));
+                } finally {
+                    delete(link);
+                }
+            }
+
+        } finally {
+            delete(file);
+        }
+    }
+
+    /**
+     * Exercise isReadbale, isWritable, isExecutable, exists, notExists
+     */
+    static void testAccessMethods(Path tmpdir) throws IOException {
+        // should return false when file does not exist
+        Path doesNotExist = tmpdir.resolve("doesNotExist");
+        assertTrue(!isReadable(doesNotExist));
+        assertTrue(!isWritable(doesNotExist));
+        assertTrue(!isExecutable(doesNotExist));
+        assertTrue(!exists(doesNotExist));
+        assertTrue(notExists(doesNotExist));
 
-        try { visitor.preVisitDirectory(null, attrs);
-        } catch (NullPointerException x0) {
-        try { visitor.preVisitDirectory(dir, null);
-        } catch (NullPointerException x1) {
-        try { visitor.visitFile(null, attrs);
-        } catch (NullPointerException x2) {
-        try {  visitor.visitFile(dir, null);
-        } catch (NullPointerException x3) {
-        try { visitor.visitFileFailed(null, new IOException());
-        } catch (NullPointerException x4) {
-        try { visitor.visitFileFailed(dir, null);
-        } catch (NullPointerException x5) {
-        try { visitor.postVisitDirectory(null, new IOException());
-        } catch (NullPointerException x6) {
-            // if we get here then all visit* methods threw NPE as expected
-            ranTheGauntlet = true;
-        }}}}}}}
-        if (!ranTheGauntlet)
-            throw new RuntimeException("A visit method did not throw NPE");
+        Path file = createFile(tmpdir.resolve("foo"));
+        try {
+            // files exist
+            assertTrue(isReadable(file));
+            assertTrue(isWritable(file));
+            assertTrue(exists(file));
+            assertTrue(!notExists(file));
+            assertTrue(isReadable(tmpdir));
+            assertTrue(isWritable(tmpdir));
+            assertTrue(exists(tmpdir));
+            assertTrue(!notExists(tmpdir));
+
+
+            // sym link exists
+            if (TestUtil.supportsLinks(tmpdir)) {
+                Path link = tmpdir.resolve("link");
+
+                createSymbolicLink(link, file);
+                try {
+                    assertTrue(isReadable(link));
+                    assertTrue(isWritable(link));
+                    assertTrue(exists(link));
+                    assertTrue(!notExists(link));
+                } finally {
+                    delete(link);
+                }
+
+                createSymbolicLink(link, doesNotExist);
+                try {
+                    assertTrue(!isReadable(link));
+                    assertTrue(!isWritable(link));
+                    assertTrue(!exists(link));
+                    assertTrue(exists(link, NOFOLLOW_LINKS));
+                    assertTrue(notExists(link));
+                    assertTrue(!notExists(link, NOFOLLOW_LINKS));
+                } finally {
+                    delete(link);
+                }
+            }
+
+            /**
+             * Test: Edit ACL to deny WRITE and EXECUTE
+             */
+            if (getFileStore(file).supportsFileAttributeView("acl")) {
+                AclFileAttributeView view =
+                    getFileAttributeView(file, AclFileAttributeView.class);
+                UserPrincipal owner = view.getOwner();
+                List<AclEntry> acl = view.getAcl();
+
+                // Insert entry to deny WRITE and EXECUTE
+                AclEntry entry = AclEntry.newBuilder()
+                    .setType(AclEntryType.DENY)
+                    .setPrincipal(owner)
+                    .setPermissions(AclEntryPermission.WRITE_DATA,
+                                    AclEntryPermission.EXECUTE)
+                    .build();
+                acl.add(0, entry);
+                view.setAcl(acl);
+                try {
+                    assertTrue(!isWritable(file));
+                    assertTrue(!isExecutable(file));
+                } finally {
+                    // Restore ACL
+                    acl.remove(0);
+                    view.setAcl(acl);
+                }
+            }
+
+            /**
+             * Test: Windows DOS read-only attribute
+             */
+            if (System.getProperty("os.name").startsWith("Windows")) {
+                setAttribute(file, "dos:readonly", true);
+                try {
+                    assertTrue(!isWritable(file));
+                } finally {
+                    setAttribute(file, "dos:readonly", false);
+                }
+
+                // Read-only attribute does not make direcory read-only
+                DosFileAttributeView view =
+                    getFileAttributeView(tmpdir, DosFileAttributeView.class);
+                boolean save = view.readAttributes().isReadOnly();
+                view.setReadOnly(true);
+                try {
+                    assertTrue(isWritable(file));
+                } finally {
+                    view.setReadOnly(save);
+                }
+            }
+        } finally {
+            delete(file);
+        }
+    }
+
+    static void assertTrue(boolean okay) {
+        if (!okay)
+            throw new RuntimeException("Assertion Failed");
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/PassThroughFileSystem.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,537 @@
+/*
+ * Copyright (c) 2010, 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.
+ */
+
+import java.nio.file.*;
+import java.nio.file.attribute.*;
+import java.nio.file.spi.FileSystemProvider;
+import java.nio.channels.SeekableByteChannel;
+import java.net.URI;
+import java.util.*;
+import java.io.*;
+
+/**
+ * A "pass through" file system implementation that passes through, or delegates,
+ * everything to the default file system.
+ */
+
+class PassThroughFileSystem extends FileSystem {
+    private final FileSystemProvider provider;
+    private final FileSystem delegate;
+
+    PassThroughFileSystem(FileSystemProvider provider, FileSystem delegate) {
+        this.provider = provider;
+        this.delegate = delegate;
+    }
+
+    /**
+     * Creates a new "pass through" file system. Useful for test environments
+     * where the provider might not be deployed.
+     */
+    static FileSystem create() throws IOException {
+        FileSystemProvider provider = new PassThroughProvider();
+        Map<String,?> env = Collections.emptyMap();
+        URI uri = URI.create("pass:///");
+        return provider.newFileSystem(uri, env);
+    }
+
+    static Path unwrap(Path wrapper) {
+        if (wrapper == null)
+            throw new NullPointerException();
+        if (!(wrapper instanceof PassThroughPath))
+            throw new ProviderMismatchException();
+        return ((PassThroughPath)wrapper).delegate;
+    }
+
+    @Override
+    public FileSystemProvider provider() {
+        return provider;
+    }
+
+    @Override
+    public void close() throws IOException {
+        delegate.close();
+    }
+
+    @Override
+    public boolean isOpen() {
+        return delegate.isOpen();
+    }
+
+    @Override
+    public boolean isReadOnly() {
+        return delegate.isReadOnly();
+    }
+
+    @Override
+    public String getSeparator() {
+        return delegate.getSeparator();
+    }
+
+    @Override
+    public Iterable<Path> getRootDirectories() {
+        final Iterable<Path> roots = delegate.getRootDirectories();
+        return new Iterable<Path>() {
+            @Override
+            public Iterator<Path> iterator() {
+                final Iterator<Path> itr = roots.iterator();
+                return new Iterator<Path>() {
+                    @Override
+                    public boolean hasNext() {
+                        return itr.hasNext();
+                    }
+                    @Override
+                    public Path next() {
+                        return new PassThroughPath(delegate, itr.next());
+                    }
+                    @Override
+                    public void remove() {
+                        itr.remove();
+                    }
+                };
+            }
+        };
+    }
+
+    @Override
+    public Iterable<FileStore> getFileStores() {
+        // assume that unwrapped objects aren't exposed
+        return delegate.getFileStores();
+    }
+
+    @Override
+    public Set<String> supportedFileAttributeViews() {
+        // assume that unwrapped objects aren't exposed
+        return delegate.supportedFileAttributeViews();
+    }
+
+    @Override
+    public Path getPath(String first, String... more) {
+        return new PassThroughPath(this, delegate.getPath(first, more));
+    }
+
+    @Override
+    public PathMatcher getPathMatcher(String syntaxAndPattern) {
+        final PathMatcher matcher = delegate.getPathMatcher(syntaxAndPattern);
+        return new PathMatcher() {
+            @Override
+            public boolean matches(Path path) {
+                return matcher.matches(unwrap(path));
+            }
+        };
+    }
+
+    @Override
+    public UserPrincipalLookupService getUserPrincipalLookupService() {
+        // assume that unwrapped objects aren't exposed
+        return delegate.getUserPrincipalLookupService();
+    }
+
+    @Override
+    public WatchService newWatchService() throws IOException {
+        // to keep it simple
+        throw new UnsupportedOperationException();
+    }
+
+    static class PassThroughProvider extends FileSystemProvider {
+        private static final String SCHEME = "pass";
+        private static volatile PassThroughFileSystem delegate;
+
+        public PassThroughProvider() { }
+
+        @Override
+        public String getScheme() {
+            return SCHEME;
+        }
+
+        private void checkScheme(URI uri) {
+            if (!uri.getScheme().equalsIgnoreCase(SCHEME))
+                throw new IllegalArgumentException();
+        }
+
+        private void checkUri(URI uri) {
+            checkScheme(uri);
+            if (!uri.getSchemeSpecificPart().equals("///"))
+                throw new IllegalArgumentException();
+        }
+
+        @Override
+        public FileSystem newFileSystem(URI uri, Map<String,?> env)
+            throws IOException
+        {
+            checkUri(uri);
+            synchronized (PassThroughProvider.class) {
+                if (delegate != null)
+                    throw new FileSystemAlreadyExistsException();
+                PassThroughFileSystem result =
+                    new PassThroughFileSystem(this, FileSystems.getDefault());
+                delegate = result;
+                return result;
+            }
+        }
+
+        @Override
+        public FileSystem getFileSystem(URI uri) {
+            checkUri(uri);
+            FileSystem result = delegate;
+            if (result == null)
+                throw new FileSystemNotFoundException();
+            return result;
+        }
+
+        @Override
+        public Path getPath(URI uri) {
+            checkScheme(uri);
+            if (delegate == null)
+                throw new FileSystemNotFoundException();
+            uri = URI.create(delegate.provider().getScheme() + ":" +
+                             uri.getSchemeSpecificPart());
+            return new PassThroughPath(delegate, delegate.provider().getPath(uri));
+        }
+
+        @Override
+        public void setAttribute(Path file, String attribute, Object value, LinkOption... options)
+            throws IOException
+        {
+            Files.setAttribute(unwrap(file), attribute, value, options);
+        }
+
+        @Override
+        public Map<String,Object> readAttributes(Path file, String attributes, LinkOption... options)
+            throws IOException
+        {
+            return Files.readAttributes(unwrap(file), attributes, options);
+        }
+
+        @Override
+        public <V extends FileAttributeView> V getFileAttributeView(Path file,
+                                                                    Class<V> type,
+                                                                    LinkOption... options)
+        {
+            return Files.getFileAttributeView(unwrap(file), type, options);
+        }
+
+        @Override
+        public <A extends BasicFileAttributes> A readAttributes(Path file,
+                                                                Class<A> type,
+                                                                LinkOption... options)
+            throws IOException
+        {
+            return Files.readAttributes(unwrap(file), type, options);
+        }
+
+        @Override
+        public void delete(Path file) throws IOException {
+            Files.delete(unwrap(file));
+        }
+
+        @Override
+        public void createSymbolicLink(Path link, Path target, FileAttribute<?>... attrs)
+            throws IOException
+        {
+            Files.createSymbolicLink(unwrap(link), unwrap(target), attrs);
+        }
+
+        @Override
+        public void createLink(Path link, Path existing) throws IOException {
+            Files.createLink(unwrap(link), unwrap(existing));
+        }
+
+        @Override
+        public Path readSymbolicLink(Path link) throws IOException {
+            Path target = Files.readSymbolicLink(unwrap(link));
+            return new PassThroughPath(delegate, target);
+        }
+
+
+        @Override
+        public void copy(Path source, Path target, CopyOption... options) throws IOException {
+            Files.copy(unwrap(source), unwrap(target), options);
+        }
+
+        @Override
+        public void move(Path source, Path target, CopyOption... options) throws IOException {
+            Files.move(unwrap(source), unwrap(target), options);
+        }
+
+        private DirectoryStream<Path> wrap(final DirectoryStream<Path> stream) {
+            return new DirectoryStream<Path>() {
+                @Override
+                public Iterator<Path> iterator() {
+                    final Iterator<Path> itr = stream.iterator();
+                    return new Iterator<Path>() {
+                        @Override
+                        public boolean hasNext() {
+                            return itr.hasNext();
+                        }
+                        @Override
+                        public Path next() {
+                            return new PassThroughPath(delegate, itr.next());
+                        }
+                        @Override
+                        public void remove() {
+                            itr.remove();
+                        }
+                    };
+                }
+                @Override
+                public void close() throws IOException {
+                    stream.close();
+                }
+            };
+        }
+
+        @Override
+        public DirectoryStream<Path> newDirectoryStream(Path dir, DirectoryStream.Filter<? super Path> filter)
+            throws IOException
+        {
+            return wrap(Files.newDirectoryStream(dir, filter));
+        }
+
+        @Override
+        public void createDirectory(Path dir, FileAttribute<?>... attrs)
+            throws IOException
+        {
+            Files.createDirectory(unwrap(dir), attrs);
+        }
+
+        @Override
+        public SeekableByteChannel newByteChannel(Path file,
+                                                  Set<? extends OpenOption> options,
+                                                  FileAttribute<?>... attrs)
+            throws IOException
+        {
+            return Files.newByteChannel(unwrap(file), options, attrs);
+        }
+
+
+        @Override
+        public boolean isHidden(Path file) throws IOException {
+            return Files.isHidden(unwrap(file));
+        }
+
+        @Override
+        public FileStore getFileStore(Path file) throws IOException {
+            return Files.getFileStore(unwrap(file));
+        }
+
+        @Override
+        public boolean isSameFile(Path file, Path other) throws IOException {
+            return Files.isSameFile(unwrap(file), unwrap(other));
+        }
+
+        @Override
+        public void checkAccess(Path file, AccessMode... modes)
+            throws IOException
+        {
+            // hack
+            if (modes.length == 0) {
+                if (Files.exists(unwrap(file)))
+                    return;
+                else
+                    throw new NoSuchFileException(file.toString());
+            }
+            throw new RuntimeException("not implemented yet");
+        }
+    }
+
+    static class PassThroughPath implements Path {
+        private final FileSystem fs;
+        private final Path delegate;
+
+        PassThroughPath(FileSystem fs, Path delegate) {
+            this.fs = fs;
+            this.delegate = delegate;
+        }
+
+        private Path wrap(Path path) {
+            return (path != null) ? new PassThroughPath(fs, path) : null;
+        }
+
+        @Override
+        public FileSystem getFileSystem() {
+            return fs;
+        }
+
+        @Override
+        public boolean isAbsolute() {
+            return delegate.isAbsolute();
+        }
+
+        @Override
+        public Path getRoot() {
+            return wrap(delegate.getRoot());
+        }
+
+        @Override
+        public Path getParent() {
+            return wrap(delegate.getParent());
+        }
+
+        @Override
+        public int getNameCount() {
+            return delegate.getNameCount();
+        }
+
+        @Override
+        public Path getFileName() {
+            return wrap(delegate.getFileName());
+        }
+
+        @Override
+        public Path getName(int index) {
+            return wrap(delegate.getName(index));
+        }
+
+        @Override
+        public Path subpath(int beginIndex, int endIndex) {
+            return wrap(delegate.subpath(beginIndex, endIndex));
+        }
+
+        @Override
+        public boolean startsWith(Path other) {
+            return delegate.startsWith(unwrap(other));
+        }
+
+        @Override
+        public boolean startsWith(String other) {
+            return delegate.startsWith(other);
+        }
+
+        @Override
+        public boolean endsWith(Path other) {
+            return delegate.endsWith(unwrap(other));
+        }
+
+        @Override
+        public boolean endsWith(String other) {
+            return delegate.endsWith(other);
+        }
+
+        @Override
+        public Path normalize() {
+            return wrap(delegate.normalize());
+        }
+
+        @Override
+        public Path resolve(Path other) {
+            return wrap(delegate.resolve(unwrap(other)));
+        }
+
+        @Override
+        public Path resolve(String other) {
+            return wrap(delegate.resolve(other));
+        }
+
+        @Override
+        public Path resolveSibling(Path other) {
+            return wrap(delegate.resolveSibling(unwrap(other)));
+        }
+
+        @Override
+        public Path resolveSibling(String other) {
+            return wrap(delegate.resolveSibling(other));
+        }
+
+        @Override
+        public Path relativize(Path other) {
+            return wrap(delegate.relativize(unwrap(other)));
+        }
+
+        @Override
+        public boolean equals(Object other) {
+            if (!(other instanceof PassThroughPath))
+                return false;
+            return delegate.equals(unwrap((PassThroughPath)other));
+        }
+
+        @Override
+        public int hashCode() {
+            return delegate.hashCode();
+        }
+
+        @Override
+        public String toString() {
+            return delegate.toString();
+        }
+
+        @Override
+        public URI toUri() {
+            String ssp = delegate.toUri().getSchemeSpecificPart();
+            return URI.create(fs.provider().getScheme() + ":" + ssp);
+        }
+
+        @Override
+        public Path toAbsolutePath() {
+            return wrap(delegate.toAbsolutePath());
+        }
+
+        @Override
+        public Path toRealPath(boolean resolveLinks) throws IOException {
+            return wrap(delegate.toRealPath(resolveLinks));
+        }
+
+        @Override
+        public File toFile() {
+            return delegate.toFile();
+        }
+
+        @Override
+        public Iterator<Path> iterator() {
+            final Iterator<Path> itr = delegate.iterator();
+            return new Iterator<Path>() {
+                @Override
+                public boolean hasNext() {
+                    return itr.hasNext();
+                }
+                @Override
+                public Path next() {
+                    return wrap(itr.next());
+                }
+                @Override
+                public void remove() {
+                    itr.remove();
+                }
+            };
+        }
+
+        @Override
+        public int compareTo(Path other) {
+            return delegate.compareTo(unwrap(other));
+        }
+
+        @Override
+        public WatchKey register(WatchService watcher,
+                                      WatchEvent.Kind<?>[] events,
+                                      WatchEvent.Modifier... modifiers)
+        {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public  WatchKey register(WatchService watcher,
+                                      WatchEvent.Kind<?>... events)
+        {
+            throw new UnsupportedOperationException();
+        }
+    }
+}
--- a/jdk/test/java/nio/file/Files/PrintFileTree.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 2008, 2010, 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.
- */
-
-import java.nio.file.*;
-import java.nio.file.attribute.*;
-import java.io.IOException;
-import java.util.*;
-
-/**
- * Invokes Files.walkFileTree to traverse a file tree and prints
- * each of the directories and files. The -follow option causes symbolic
- * links to be followed and the -printCycles option will print links
- * where the target of the link is an ancestor directory.
- */
-
-public class PrintFileTree {
-
-    public static void main(String[] args) throws Exception {
-        boolean followLinks = false;
-        boolean printCycles = false;
-        int i = 0;
-        while (i < (args.length-1)) {
-            switch (args[i]) {
-                case "-follow"      : followLinks = true; break;
-                case "-printCycles" : printCycles = true;  break;
-                default:
-                    throw new RuntimeException(args[i] + " not recognized");
-            }
-            i++;
-        }
-        Path dir = Paths.get(args[i]);
-
-        Set<FileVisitOption> options = new HashSet<FileVisitOption>();
-        if (followLinks)
-            options.add(FileVisitOption.FOLLOW_LINKS);
-
-        final boolean reportCycles = printCycles;
-        Files.walkFileTree(dir, options, Integer.MAX_VALUE, new FileVisitor<FileRef>() {
-            @Override
-            public FileVisitResult preVisitDirectory(FileRef dir, BasicFileAttributes attrs) {
-                System.out.println(dir);
-                return FileVisitResult.CONTINUE;
-            }
-            @Override
-            public FileVisitResult visitFile(FileRef file, BasicFileAttributes attrs) {
-                if (!attrs.isDirectory() || reportCycles)
-                    System.out.println(file);
-                return FileVisitResult.CONTINUE;
-            }
-            @Override
-            public FileVisitResult postVisitDirectory(FileRef dir, IOException exc)
-                throws IOException
-            {
-                if (exc != null)
-                    throw exc;
-                return FileVisitResult.CONTINUE;
-            }
-            @Override
-            public FileVisitResult visitFileFailed(FileRef file, IOException exc)
-                throws IOException
-            {
-                if (reportCycles && (exc instanceof FileSystemLoopException)) {
-                    System.out.println(file);
-                    return FileVisitResult.CONTINUE;
-                }
-                throw exc;
-            }
-        });
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/SBC.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,431 @@
+/*
+ * Copyright (c) 2008, 2009, 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.
+ */
+
+/* @test
+ * @bug 4313887
+ * @summary Unit test for java.nio.file.Files.newByteChannel
+ * @library ..
+ */
+
+import java.nio.ByteBuffer;
+import java.nio.file.*;
+import static java.nio.file.StandardOpenOption.*;
+import static com.sun.nio.file.ExtendedOpenOption.*;
+import java.nio.file.attribute.FileAttribute;
+import java.nio.channels.*;
+import java.io.IOException;
+import java.util.*;
+
+public class SBC {
+
+    static boolean supportsLinks;
+
+    public static void main(String[] args) throws Exception {
+        Path dir = TestUtil.createTemporaryDirectory();
+        try {
+            supportsLinks = TestUtil.supportsLinks(dir);
+
+            // open options
+            createTests(dir);
+            appendTests(dir);
+            truncateExistingTests(dir);
+            noFollowLinksTests(dir);
+
+            // SeekableByteChannel methods
+            sizeTruncatePositionTests(dir);
+
+            // platform specific
+            if (System.getProperty("os.name").startsWith("Windows"))
+                dosSharingOptionTests(dir);
+
+            // misc. tests
+            badCombinations(dir);
+            unsupportedOptions(dir);
+            nullTests(dir);
+
+        } finally {
+            TestUtil.removeAll(dir);
+        }
+    }
+
+    // test CREATE and CREATE_NEW options
+    static void createTests(Path dir) throws Exception {
+        Path file = dir.resolve("foo");
+
+        // CREATE
+        try {
+            // create file (no existing file)
+            Files.newByteChannel(file, CREATE, WRITE).close();
+            if (Files.notExists(file))
+                throw new RuntimeException("File not created");
+
+            // create file (existing file)
+            Files.newByteChannel(file, CREATE, WRITE).close();
+
+            // create file where existing file is a sym link
+            if (supportsLinks) {
+                Path link = Files.createSymbolicLink(dir.resolve("link"), file);
+                try {
+                    // file already exists
+                    Files.newByteChannel(link, CREATE, WRITE).close();
+
+                    // file does not exist
+                    Files.delete(file);
+                    Files.newByteChannel(link, CREATE, WRITE).close();
+                    if (Files.notExists(file))
+                        throw new RuntimeException("File not created");
+
+                } finally {
+                    TestUtil.deleteUnchecked(link);
+                }
+            }
+
+        } finally {
+            TestUtil.deleteUnchecked(file);
+        }
+
+        // CREATE_NEW
+        try {
+            // create file
+            Files.newByteChannel(file, CREATE_NEW, WRITE).close();
+            if (Files.notExists(file))
+                throw new RuntimeException("File not created");
+
+            // create should fail
+            try {
+                SeekableByteChannel sbc =
+                    Files.newByteChannel(file, CREATE_NEW, WRITE);
+                sbc.close();
+                throw new RuntimeException("FileAlreadyExistsException not thrown");
+            } catch (FileAlreadyExistsException x) { }
+
+            // create should fail
+            if (supportsLinks) {
+                Path link = dir.resolve("link");
+                Path target = dir.resolve("thisDoesNotExist");
+                Files.createSymbolicLink(link, target);
+                try {
+
+                    try {
+                        SeekableByteChannel sbc =
+                            Files.newByteChannel(file, CREATE_NEW, WRITE);
+                        sbc.close();
+                        throw new RuntimeException("FileAlreadyExistsException not thrown");
+                    } catch (FileAlreadyExistsException x) { }
+
+                } finally {
+                    TestUtil.deleteUnchecked(link);
+                }
+            }
+
+
+        } finally {
+            TestUtil.deleteUnchecked(file);
+        }
+
+        // CREATE_NEW + SPARSE
+        try {
+            try (SeekableByteChannel sbc = Files.newByteChannel(file, CREATE_NEW, WRITE, SPARSE)) {
+                final long hole = 2L * 1024L * 1024L * 1024L;
+                sbc.position(hole);
+                write(sbc, "hello");
+                long size = sbc.size();
+                if (size != (hole + 5))
+                    throw new RuntimeException("Unexpected size");
+            }
+        } finally {
+            TestUtil.deleteUnchecked(file);
+        }
+    }
+
+    // test APPEND option
+    static void appendTests(Path dir) throws Exception {
+        Path file = dir.resolve("foo");
+        try {
+            // "hello there" should be written to file
+            try (SeekableByteChannel sbc = Files.newByteChannel(file, CREATE_NEW, WRITE, APPEND)) {
+                write(sbc, "hello ");
+                sbc.position(0L);
+                write(sbc, "there");
+            }
+
+            // check file
+            try (Scanner s = new Scanner(file)) {
+                String line = s.nextLine();
+                if (!line.equals("hello there"))
+                    throw new RuntimeException("Unexpected file contents");
+            }
+
+            // check that read is not allowed
+            try (SeekableByteChannel sbc = Files.newByteChannel(file, APPEND)) {
+                sbc.read(ByteBuffer.allocate(100));
+            } catch (NonReadableChannelException x) {
+            }
+        } finally {
+            // clean-up
+            TestUtil.deleteUnchecked(file);
+        }
+    }
+
+    // test TRUNCATE_EXISTING option
+    static void truncateExistingTests(Path dir) throws Exception {
+        Path file = dir.resolve("foo");
+        try {
+            try (SeekableByteChannel sbc = Files.newByteChannel(file, CREATE_NEW, WRITE)) {
+                write(sbc, "Have a nice day!");
+            }
+
+            // re-open with truncate option
+            // write short message and check
+            try (SeekableByteChannel sbc = Files.newByteChannel(file, WRITE, TRUNCATE_EXISTING)) {
+                write(sbc, "Hello there!");
+            }
+            try (Scanner s = new Scanner(file)) {
+                String line = s.nextLine();
+                if (!line.equals("Hello there!"))
+                    throw new RuntimeException("Unexpected file contents");
+            }
+
+            // re-open with create + truncate option
+            // check file is of size 0L
+            try (SeekableByteChannel sbc = Files.newByteChannel(file, WRITE, CREATE, TRUNCATE_EXISTING)) {
+                long size = ((FileChannel)sbc).size();
+                if (size != 0L)
+                    throw new RuntimeException("File not truncated");
+            }
+
+        } finally {
+            // clean-up
+            TestUtil.deleteUnchecked(file);
+        }
+
+    }
+
+    // test NOFOLLOW_LINKS option
+    static void noFollowLinksTests(Path dir) throws Exception {
+        if (!supportsLinks)
+            return;
+        Path file = Files.createFile(dir.resolve("foo"));
+        try {
+            // ln -s foo link
+            Path link = dir.resolve("link");
+            Files.createSymbolicLink(link, file);
+
+            // open with NOFOLLOW_LINKS option
+            try {
+                Files.newByteChannel(link, READ, LinkOption.NOFOLLOW_LINKS);
+                throw new RuntimeException();
+            } catch (IOException x) {
+            } finally {
+                TestUtil.deleteUnchecked(link);
+            }
+
+        } finally {
+            // clean-up
+            TestUtil.deleteUnchecked(file);
+        }
+    }
+
+    // test size/truncate/position methods
+    static void sizeTruncatePositionTests(Path dir) throws Exception {
+        Path file = dir.resolve("foo");
+        try {
+            try (SeekableByteChannel sbc = Files.newByteChannel(file, CREATE_NEW, READ, WRITE)) {
+                if (sbc.size() != 0L)
+                    throw new RuntimeException("Unexpected size");
+
+                // check size
+                write(sbc, "hello");
+                if (sbc.size() != 5L)
+                    throw new RuntimeException("Unexpected size");
+
+                // truncate (size and position should change)
+                sbc.truncate(4L);
+                if (sbc.size() != 4L)
+                    throw new RuntimeException("Unexpected size");
+                if (sbc.position() != 4L)
+                    throw new RuntimeException("Unexpected position");
+
+                // truncate (position should not change)
+                sbc.position(2L).truncate(3L);
+                if (sbc.size() != 3L)
+                    throw new RuntimeException("Unexpected size");
+                if (sbc.position() != 2L)
+                    throw new RuntimeException("Unexpected position");
+            }
+        } finally {
+            TestUtil.deleteUnchecked(file);
+        }
+    }
+
+    // Windows specific options for the use by applications that really want
+    // to use legacy DOS sharing options
+    static void dosSharingOptionTests(Path dir) throws Exception {
+        Path file = Files.createFile(dir.resolve("foo"));
+        try {
+            // no sharing
+            try (SeekableByteChannel ch = Files.newByteChannel(file, READ, NOSHARE_READ,
+                                                               NOSHARE_WRITE, NOSHARE_DELETE))
+            {
+                try {
+                    Files.newByteChannel(file, READ);
+                    throw new RuntimeException("Sharing violation expected");
+                } catch (IOException ignore) { }
+                try {
+                    Files.newByteChannel(file, WRITE);
+                    throw new RuntimeException("Sharing violation expected");
+                } catch (IOException ignore) { }
+                try {
+                    Files.delete(file);
+                    throw new RuntimeException("Sharing violation expected");
+                } catch (IOException ignore) { }
+            }
+
+            // read allowed
+            try (SeekableByteChannel ch = Files.newByteChannel(file, READ, NOSHARE_WRITE, NOSHARE_DELETE)) {
+                Files.newByteChannel(file, READ).close();
+                try {
+                    Files.newByteChannel(file, WRITE);
+                    throw new RuntimeException("Sharing violation expected");
+                } catch (IOException ignore) { }
+                try {
+                    Files.delete(file);
+                    throw new RuntimeException("Sharing violation expected");
+                } catch (IOException ignore) { }
+            }
+
+            // write allowed
+            try (SeekableByteChannel ch = Files.newByteChannel(file, READ, NOSHARE_READ, NOSHARE_DELETE)) {
+                try {
+                    Files.newByteChannel(file, READ);
+                    throw new RuntimeException("Sharing violation expected");
+                } catch (IOException ignore) { }
+                Files.newByteChannel(file, WRITE).close();
+                try {
+                    Files.delete(file);
+                    throw new RuntimeException("Sharing violation expected");
+                } catch (IOException ignore) { }
+            }
+
+            // delete allowed
+            try (SeekableByteChannel ch = Files.newByteChannel(file, READ, NOSHARE_READ, NOSHARE_WRITE)) {
+                try {
+                    Files.newByteChannel(file, READ);
+                    throw new RuntimeException("Sharing violation expected");
+                } catch (IOException ignore) { }
+                try {
+                    Files.newByteChannel(file, WRITE);
+                    throw new RuntimeException("Sharing violation expected");
+                } catch (IOException ignore) { }
+                Files.delete(file);
+            }
+
+        } finally {
+            TestUtil.deleteUnchecked(file);
+        }
+    }
+
+    // invalid combinations of options
+    static void badCombinations(Path dir) throws Exception {
+        Path file = dir.resolve("bad");
+
+        try {
+            Files.newByteChannel(file, READ, APPEND);
+            throw new RuntimeException("IllegalArgumentException expected");
+        } catch (IllegalArgumentException x) { }
+
+        try {
+            Files.newByteChannel(file, WRITE, APPEND, TRUNCATE_EXISTING);
+            throw new RuntimeException("IllegalArgumentException expected");
+        } catch (IllegalArgumentException x) { }
+    }
+
+    // unsupported operations
+    static void unsupportedOptions(Path dir) throws Exception {
+        Path file = dir.resolve("bad");
+
+        OpenOption badOption = new OpenOption() { };
+        try {
+            Files.newByteChannel(file, badOption);
+            throw new RuntimeException("UnsupportedOperationException expected");
+        } catch (UnsupportedOperationException e) { }
+        try {
+            Files.newByteChannel(file, READ, WRITE, badOption);
+            throw new RuntimeException("UnsupportedOperationException expected");
+        } catch (UnsupportedOperationException e) { }
+    }
+
+    // null handling
+    static void nullTests(Path dir) throws Exception {
+        Path file = dir.resolve("foo");
+
+        try {
+            OpenOption[] opts = { READ, null };
+            Files.newByteChannel((Path)null, opts);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException x) { }
+
+        try {
+            Files.newByteChannel(file, (OpenOption[])null);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException x) { }
+
+        try {
+            OpenOption[] opts = { READ, null };
+            Files.newByteChannel(file, opts);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException x) { }
+
+        try {
+            Files.newByteChannel(file, (Set<OpenOption>)null);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException x) { }
+
+        try {
+            Set<OpenOption> opts = new HashSet<>();
+            opts.add(READ);
+            opts.add(null);
+            Files.newByteChannel(file, opts);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException x) { }
+
+        try {
+            EnumSet<StandardOpenOption> opts = EnumSet.of(READ);
+            Files.newByteChannel(file, opts, (FileAttribute[])null);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException x) { }
+
+        try {
+            EnumSet<StandardOpenOption> opts = EnumSet.of(READ);
+            FileAttribute[] attrs = { null };
+            Files.newByteChannel(file, opts, attrs);
+            throw new RuntimeException("NullPointerException expected");
+        } catch (NullPointerException x) { }
+    }
+
+    static void write(WritableByteChannel wbc, String msg) throws IOException {
+        ByteBuffer buf = ByteBuffer.wrap(msg.getBytes());
+        while (buf.hasRemaining())
+            wbc.write(buf);
+    }
+}
--- a/jdk/test/java/nio/file/Files/SimpleFileTypeDetector.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-import java.nio.file.*;
-import java.nio.file.spi.FileTypeDetector;
-import java.io.*;
-
-
-public class SimpleFileTypeDetector extends FileTypeDetector {
-    public SimpleFileTypeDetector() {
-    }
-
-    public String probeContentType(FileRef file) throws IOException {
-
-        System.out.println("probe " + file + "...");
-
-        if (file instanceof Path) {
-            String name = ((Path)file).toString();
-            if (name.endsWith(".grape")) {
-                return "grape/unknown";
-            }
-        }
-
-        // unknown
-        return null;
-    }
-}
--- a/jdk/test/java/nio/file/Files/SkipSiblings.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-/*
- * Copyright (c) 2008, 2010, 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.
- */
-
-import java.nio.file.*;
-import java.nio.file.attribute.*;
-import java.io.IOException;
-import java.util.*;
-
-/**
- * Unit test for Files.walkFileTree to test SKIP_SIBLINGS return value.
- */
-
-public class SkipSiblings {
-
-    static final Random rand = new Random();
-    static final Set<Path> skipped = new HashSet<Path>();
-
-    // check if this path's directory has been skipped
-    static void check(Path path) {
-        if (skipped.contains(path.getParent()))
-            throw new RuntimeException(path + " should not have been visited");
-    }
-
-    // indicates if the siblings of this path should be skipped
-    static boolean skip(Path path) {
-        Path parent = path.getParent();
-        if (parent != null && rand.nextBoolean()) {
-            skipped.add(parent);
-            return true;
-        }
-        return false;
-    }
-
-    public static void main(String[] args) throws Exception {
-        Path dir = Paths.get(args[0]);
-
-        Files.walkFileTree(dir, new SimpleFileVisitor<Path>() {
-            @Override
-            public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
-                check(dir);
-                if (skip(dir))
-                    return FileVisitResult.SKIP_SIBLINGS;
-                return FileVisitResult.CONTINUE;
-            }
-            @Override
-            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
-                check(file);
-                if (skip(file))
-                    return FileVisitResult.SKIP_SIBLINGS;
-                return FileVisitResult.CONTINUE;
-            }
-            @Override
-            public FileVisitResult postVisitDirectory(Path dir, IOException x) {
-                if (x != null)
-                    throw new RuntimeException(x);
-                check(dir);
-                return FileVisitResult.CONTINUE;
-            }
-        });
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/TemporaryFiles.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,171 @@
+/*
+ * Copyright (c) 2008, 2009, 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.
+ */
+
+/* @test
+ * @bug 4313887 6838333 7006126
+ * @summary Unit test for Files.createTempXXX
+ * @library ..
+ */
+
+import java.nio.file.*;
+import static java.nio.file.StandardOpenOption.*;
+import java.nio.file.attribute.*;
+import java.io.IOException;
+import java.util.Set;
+
+public class TemporaryFiles {
+
+    static void checkInDirectory(Path file, Path dir) {
+        if (dir == null)
+            dir = Paths.get(System.getProperty("java.io.tmpdir"));
+        if (!file.getParent().equals(dir))
+            throw new RuntimeException("Not in expected directory");
+    }
+
+    static void testTempFile(String prefix, String suffix, Path dir)
+        throws IOException
+    {
+        Path file = (dir == null) ?
+            Files.createTempFile(prefix, suffix) :
+            Files.createTempFile(dir, prefix, suffix);
+        try {
+            // check file name
+            String name = file.getFileName().toString();
+            if (prefix != null && !name.startsWith(prefix))
+                throw new RuntimeException("Should start with " + prefix);
+            if (suffix == null && !name.endsWith(".tmp"))
+                throw new RuntimeException("Should end with .tmp");
+            if (suffix != null && !name.endsWith(suffix))
+                throw new RuntimeException("Should end with " + suffix);
+
+            // check file is in expected directory
+            checkInDirectory(file, dir);
+
+            // check that file can be opened for reading and writing
+            Files.newByteChannel(file, READ).close();
+            Files.newByteChannel(file, WRITE).close();
+            Files.newByteChannel(file, READ,WRITE).close();
+
+            // check file permissions are 0600 or more secure
+            if (Files.getFileStore(file).supportsFileAttributeView("posix")) {
+                Set<PosixFilePermission> perms = Files.getPosixFilePermissions(file);
+                perms.remove(PosixFilePermission.OWNER_READ);
+                perms.remove(PosixFilePermission.OWNER_WRITE);
+                if (!perms.isEmpty())
+                    throw new RuntimeException("Temporary file is not secure");
+            }
+        } finally {
+            Files.delete(file);
+        }
+    }
+
+    static void testTempFile(String prefix, String suffix)
+        throws IOException
+    {
+        testTempFile(prefix, suffix, null);
+    }
+
+    static void testTempDirectory(String prefix, Path dir) throws IOException {
+        Path subdir = (dir == null) ?
+            Files.createTempDirectory(prefix) :
+            Files.createTempDirectory(dir, prefix);
+        try {
+            // check file name
+            String name = subdir.getFileName().toString();
+            if (prefix != null && !name.startsWith(prefix))
+                throw new RuntimeException("Should start with " + prefix);
+
+            // check directory is in expected directory
+            checkInDirectory(subdir, dir);
+
+            // check directory is empty
+            DirectoryStream<Path> stream = Files.newDirectoryStream(subdir);
+            try {
+                if (stream.iterator().hasNext())
+                    throw new RuntimeException("Tempory directory not empty");
+            } finally {
+                stream.close();
+            }
+
+            // check that we can create file in directory
+            Path file = Files.createFile(subdir.resolve("foo"));
+            try {
+                Files.newByteChannel(file, READ,WRITE).close();
+            } finally {
+                Files.delete(file);
+            }
+
+            // check file permissions are 0700 or more secure
+            if (Files.getFileStore(subdir).supportsFileAttributeView("posix")) {
+                Set<PosixFilePermission> perms = Files.getPosixFilePermissions(subdir);
+                perms.remove(PosixFilePermission.OWNER_READ);
+                perms.remove(PosixFilePermission.OWNER_WRITE);
+                perms.remove(PosixFilePermission.OWNER_EXECUTE);
+                if (!perms.isEmpty())
+                    throw new RuntimeException("Temporary directory is not secure");
+            }
+        } finally {
+            Files.delete(subdir);
+        }
+    }
+
+    static void testTempDirectory(String prefix) throws IOException {
+        testTempDirectory(prefix, null);
+    }
+
+    static void testInvalidFileTemp(String prefix, String suffix) throws IOException {
+        try {
+            Path file = Files.createTempFile(prefix, suffix);
+            Files.delete(file);
+            throw new RuntimeException("IllegalArgumentException expected");
+        } catch (IllegalArgumentException expected) { }
+    }
+
+    public static void main(String[] args) throws IOException {
+        // temporary-file directory
+        testTempFile("blah", ".dat");
+        testTempFile("blah", null);
+        testTempFile(null, ".dat");
+        testTempFile(null, null);
+        testTempDirectory("blah");
+        testTempDirectory(null);
+
+        // a given directory
+        Path dir = Files.createTempDirectory("tmpdir");
+        try {
+            testTempFile("blah", ".dat", dir);
+            testTempFile("blah", null, dir);
+            testTempFile(null, ".dat", dir);
+            testTempFile(null, null, dir);
+            testTempDirectory("blah", dir);
+            testTempDirectory(null, dir);
+        } finally {
+            Files.delete(dir);
+        }
+
+        // invalid prefix and suffix
+        testInvalidFileTemp("../blah", null);
+        testInvalidFileTemp("dir/blah", null);
+        testInvalidFileTemp("blah", ".dat/foo");
+    }
+}
--- a/jdk/test/java/nio/file/Files/TerminateWalk.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 2008, 2010, 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.
- */
-
-import java.nio.file.*;
-import java.nio.file.attribute.*;
-import java.io.IOException;
-import java.util.*;
-
-/**
- * Unit test for Files.walkFileTree to test TERMINATE return value
- */
-
-public class TerminateWalk {
-
-    static final Random rand = new Random();
-    static boolean terminated;
-
-    static FileVisitResult maybeTerminate() {
-        if (terminated)
-            throw new RuntimeException("FileVisitor invoked after termination");
-        if (rand.nextInt(10) == 0) {
-            terminated = true;
-            return FileVisitResult.TERMINATE;
-        } else {
-            return FileVisitResult.CONTINUE;
-        }
-    }
-
-    public static void main(String[] args) throws Exception {
-        Path dir = Paths.get(args[0]);
-
-        Files.walkFileTree(dir, new SimpleFileVisitor<Path>() {
-            @Override
-            public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
-                return maybeTerminate();
-            }
-            @Override
-            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
-                return maybeTerminate();
-            }
-            @Override
-            public FileVisitResult postVisitDirectory(Path dir, IOException x) {
-                return maybeTerminate();
-            }
-        });
-    }
-}
--- a/jdk/test/java/nio/file/Files/WalkWithSecurity.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,132 +0,0 @@
-/*
- * Copyright (c) 2009, 2010, 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.
- */
-
-/* @test
- * @bug 6876541
- * @summary Test Files.walkFileTree in the presence of a security manager
- * @build WalkWithSecurity
- * @run main/othervm WalkWithSecurity grantAll.policy pass
- * @run main/othervm WalkWithSecurity denyAll.policy fail
- * @run main/othervm WalkWithSecurity grantTopOnly.policy top_only
- */
-
-import java.nio.file.*;
-import java.nio.file.attribute.BasicFileAttributes;
-import java.io.IOException;
-
-public class WalkWithSecurity {
-
-    public static void main(String[] args) throws IOException {
-        String policyFile = args[0];
-        ExpectedResult expectedResult = ExpectedResult.valueOf(args[1].toUpperCase());
-
-        String here = System.getProperty("user.dir");
-        String testSrc = System.getProperty("test.src");
-        if (testSrc == null)
-            throw new RuntimeException("This test must be run by jtreg");
-        Path dir = Paths.get(testSrc);
-
-        // Sanity check the environment
-        if (Paths.get(here).isSameFile(dir))
-            throw new RuntimeException("Working directory cannot be " + dir);
-        DirectoryStream<Path> stream = dir.newDirectoryStream();
-        try {
-            if (!stream.iterator().hasNext())
-                throw new RuntimeException(testSrc + " is empty");
-        } finally {
-            stream.close();
-        }
-
-        // Install security manager with the given policy file
-        System.setProperty("java.security.policy",
-            dir.resolve(policyFile).toString());
-        System.setSecurityManager(new SecurityManager());
-
-        // Walk the source tree
-        CountingVisitor visitor = new CountingVisitor();
-        SecurityException exception = null;
-        try {
-            Files.walkFileTree(dir, visitor);
-        } catch (SecurityException se) {
-            exception = se;
-        }
-
-        // Check result
-        switch (expectedResult) {
-            case PASS:
-                if (exception != null) {
-                    exception.printStackTrace();
-                    throw new RuntimeException("SecurityException not expected");
-                }
-                if (visitor.count() == 0)
-                    throw new RuntimeException("No files visited");
-                break;
-            case FAIL:
-                if (exception == null)
-                    throw new RuntimeException("SecurityException expected");
-                if (visitor.count() > 0)
-                    throw new RuntimeException("Files were visited");
-                break;
-            case TOP_ONLY:
-                if (exception != null) {
-                    exception.printStackTrace();
-                    throw new RuntimeException("SecurityException not expected");
-                }
-                if (visitor.count() == 0)
-                    throw new RuntimeException("Starting file not visited");
-                if (visitor.count() > 1)
-                    throw new RuntimeException("More than starting file visited");
-                break;
-            default:
-                throw new RuntimeException("Should not get here");
-        }
-    }
-
-    static enum ExpectedResult {
-        PASS,
-        FAIL,
-        TOP_ONLY;
-    }
-
-    static class CountingVisitor extends SimpleFileVisitor<Path> {
-        private int count;
-
-        int count() {
-            return count;
-        }
-
-        @Override
-        public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
-            System.out.println(dir);
-            count++;
-            return FileVisitResult.CONTINUE;
-        }
-
-        @Override
-        public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
-            System.out.println(file);
-            count++;
-            return FileVisitResult.CONTINUE;
-        }
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/delete_on_close.sh	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,61 @@
+#
+# Copyright (c) 2008, 2010, 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.
+#
+
+# @test
+# @bug 4313887
+# @summary Unit test for DELETE_ON_CLOSE open option
+# @library ..
+# @build DeleteOnClose
+# @run shell delete_on_close.sh
+
+# if TESTJAVA isn't set then we assume an interactive run.
+
+if [ -z "$TESTJAVA" ]; then
+    TESTSRC=.
+    TESTCLASSES=.
+    JAVA=java
+else
+    JAVA="${TESTJAVA}/bin/java"
+fi
+
+OS=`uname -s`
+case "$OS" in
+    Windows_* | CYGWIN* )
+        CLASSPATH="${TESTCLASSES};${TESTSRC}"
+        ;;
+    * )
+        CLASSPATH=${TESTCLASSES}:${TESTSRC}
+        ;;
+esac
+export CLASSPATH
+
+TMPFILE="$$.tmp"
+touch $TMPFILE
+$JAVA DeleteOnClose $TMPFILE 2>&1
+if [ $? != 0 ]; then exit 1; fi
+if [ -f $TMPFILE ]; then
+    echo "$TMPFILE was not deleted"
+    exit 1
+fi
+
+exit 0
--- a/jdk/test/java/nio/file/Files/denyAll.policy	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-// policy file that does not grant any permissions
-grant {
-};
--- a/jdk/test/java/nio/file/Files/grantAll.policy	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-// policy file that grants read access to source directory and all descendants
-grant {
-    permission java.io.FilePermission "${test.src}", "read";
-    permission java.io.FilePermission "${test.src}${file.separator}-", "read";
-};
--- a/jdk/test/java/nio/file/Files/grantTopOnly.policy	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-// policy file that grants read access to source directory
-grant {
-    permission java.io.FilePermission "${test.src}", "read";
-};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/probeContentType/Basic.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2008, 2009, 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.
+ */
+
+/* @test
+ * @bug 4313887
+ * @summary Unit test for probeContentType method
+ * @library ../..
+ * @build Basic SimpleFileTypeDetector
+ * @run main/othervm Basic
+ */
+
+import java.nio.file.*;
+import java.io.*;
+
+/**
+ * Uses Files.probeContentType to probe html file and custom file type.
+ */
+
+public class Basic {
+
+    static Path createHtmlFile() throws IOException {
+        Path file = Files.createTempFile("foo", ".html");
+        try (OutputStream out = Files.newOutputStream(file)) {
+            out.write("<html><body>foo</body></html>".getBytes());
+        }
+
+        return file;
+    }
+
+    static Path createGrapeFile() throws IOException {
+        return Files.createTempFile("red", ".grape");
+    }
+
+    public static void main(String[] args) throws IOException {
+
+        // exercise default file type detector
+        Path file = createHtmlFile();
+        try {
+            String type = Files.probeContentType(file);
+            if (type == null) {
+                System.err.println("Content type cannot be determined - test skipped");
+            } else {
+                if (!type.equals("text/html"))
+                    throw new RuntimeException("Unexpected type: " + type);
+            }
+        } finally {
+            Files.delete(file);
+        }
+
+        // exercise custom file type detector
+        file = createGrapeFile();
+        try {
+            String type = Files.probeContentType(file);
+            if (type == null)
+                throw new RuntimeException("Custom file type detector not installed?");
+            if (!type.equals("grape/unknown"))
+                throw new RuntimeException("Unexpected type: " + type);
+        } finally {
+            Files.delete(file);
+        }
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/probeContentType/ForceLoad.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2008, 2009, 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.
+ */
+
+/* @test
+ * @bug 4313887
+ * @summary Test library dependencies by invoking Files.probeContentType
+ *     before other methods that would cause nio.dll to be loaded.
+ */
+
+import java.nio.file.*;
+import java.io.IOException;
+
+public class ForceLoad {
+
+    public static void main(String[] args) throws IOException {
+        Files.probeContentType(Paths.get("."));
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/probeContentType/META-INF/services/java.nio.file.spi.FileTypeDetector	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,1 @@
+SimpleFileTypeDetector
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/probeContentType/SimpleFileTypeDetector.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2008, 2009, 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.
+ */
+
+import java.nio.file.*;
+import java.nio.file.spi.FileTypeDetector;
+import java.io.*;
+
+
+public class SimpleFileTypeDetector extends FileTypeDetector {
+    public SimpleFileTypeDetector() {
+    }
+
+    public String probeContentType(Path file) throws IOException {
+        System.out.println("probe " + file + "...");
+        String name = file.toString();
+        return name.endsWith(".grape") ? "grape/unknown" : null;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/walkFileTree/CreateFileTree.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2008, 2009, 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.
+ */
+
+import java.nio.file.*;
+import java.io.IOException;
+import java.util.*;
+
+/**
+ * Creates a file tree with possible cycles caused by symbolic links
+ * to ancestor directories.
+ */
+
+public class CreateFileTree {
+
+    static final Random rand = new Random();
+
+    public static void main(String[] args) throws IOException {
+        Path top = Files.createTempDirectory("tree");
+        List<Path> dirs = new ArrayList<Path>();
+
+        // create tree
+        Queue<Path> queue = new ArrayDeque<Path>();
+        queue.add(top);
+        int total = 1 + rand.nextInt(20);
+        int n = 0;
+        Path dir;
+        while (((dir = queue.poll()) != null) && (n < total)) {
+            int r = Math.min((total-n), (1+rand.nextInt(3)));
+            for (int i=0; i<r; i++) {
+                String name = "dir" + (++n);
+                Path subdir = Files.createDirectory(dir.resolve(name));
+                queue.offer(subdir);
+                dirs.add(subdir);
+            }
+        }
+        assert dirs.size() >= 2;
+
+        // create a few regular files in the file tree
+        int files = dirs.size() * 3;
+        for (int i=0; i<files; i++) {
+            String name = "file" + (i+1);
+            int x = rand.nextInt(dirs.size());
+            Files.createFile(dirs.get(x).resolve(name));
+        }
+
+        // create a few sym links in the file tree so as to create cycles
+        int links = 1 + rand.nextInt(5);
+        for (int i=0; i<links; i++) {
+            int x = rand.nextInt(dirs.size());
+            int y;
+            do {
+                y = rand.nextInt(dirs.size());
+            } while (y != x);
+            String name = "link" + (i+1);
+            Path link = dirs.get(x).resolve(name);
+            Path target = dirs.get(y);
+            Files.createSymbolicLink(link, target);
+        }
+
+        // done
+        System.out.println(top);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/walkFileTree/MaxDepth.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2010, 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.
+ */
+
+import java.nio.file.*;
+import java.nio.file.attribute.*;
+import java.io.IOException;
+import java.util.*;
+
+/**
+ * Unit test for Files.walkFileTree to test maxDepth parameter
+ */
+
+public class MaxDepth {
+    public static void main(String[] args) throws Exception {
+        final Path top = Paths.get(args[0]);
+
+        for (int i=0; i<5; i++) {
+            Set<FileVisitOption> opts = Collections.emptySet();
+            final int maxDepth = i;
+            Files.walkFileTree(top, opts, maxDepth, new SimpleFileVisitor<Path>() {
+                // compute depth based on relative path to top directory
+                private int depth(Path file) {
+                    Path rp = file.relativize(top);
+                    return (rp.getFileName().toString().equals("")) ? 0 : rp.getNameCount();
+                }
+
+                @Override
+                public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
+                    int d = depth(dir);
+                    if (d == maxDepth)
+                        throw new RuntimeException("Should not open directories at maxDepth");
+                    if (d > maxDepth)
+                        throw new RuntimeException("Too deep");
+                    return FileVisitResult.CONTINUE;
+                }
+
+                @Override
+                public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
+                    int d = depth(file);
+                    if (d > maxDepth)
+                        throw new RuntimeException("Too deep");
+                    return FileVisitResult.CONTINUE;
+                }
+            });
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/walkFileTree/Nulls.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 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.
+ */
+
+/* @test
+ * @bug 4313887 6865748
+ * @summary Unit test for java.nio.file.Files.walkFileTree
+ */
+
+import java.nio.file.*;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.io.IOException;
+import java.util.*;
+
+public class Nulls {
+
+    static void npeExpected() {
+        throw new RuntimeException("NullPointerException expected");
+    }
+
+    public static void main(String[] args) throws IOException {
+        try {
+            Files.walkFileTree(null, EnumSet.noneOf(FileVisitOption.class),
+                Integer.MAX_VALUE, new SimpleFileVisitor<Path>(){});
+            npeExpected();
+        } catch (NullPointerException e) {
+        }
+        try {
+            Files.walkFileTree(Paths.get("."), null, Integer.MAX_VALUE,
+                new SimpleFileVisitor<Path>(){});
+            npeExpected();
+        } catch (NullPointerException e) {
+        }
+        try {
+            Files.walkFileTree(Paths.get("."), EnumSet.noneOf(FileVisitOption.class),
+                -1, new SimpleFileVisitor<Path>(){});
+            throw new RuntimeException("IllegalArgumentExpected expected");
+        } catch (IllegalArgumentException e) {
+        }
+        try {
+            Set<FileVisitOption> opts = new HashSet<>(1);
+            opts.add(null);
+            Files.walkFileTree(Paths.get("."), opts, Integer.MAX_VALUE,
+                new SimpleFileVisitor<Path>(){});
+            npeExpected();
+        } catch (NullPointerException e) {
+        }
+        try {
+            Files.walkFileTree(Paths.get("."), EnumSet.noneOf(FileVisitOption.class),
+                Integer.MAX_VALUE, null);
+            npeExpected();
+        } catch (NullPointerException e) {
+        }
+
+        SimpleFileVisitor<Path> visitor = new SimpleFileVisitor<Path>() { };
+        boolean ranTheGauntlet = false;
+        Path dir = Paths.get(".");
+        BasicFileAttributes attrs = Files.readAttributes(dir, BasicFileAttributes.class);
+
+        try { visitor.preVisitDirectory(null, attrs);
+        } catch (NullPointerException x0) {
+        try { visitor.preVisitDirectory(dir, null);
+        } catch (NullPointerException x1) {
+        try { visitor.visitFile(null, attrs);
+        } catch (NullPointerException x2) {
+        try {  visitor.visitFile(dir, null);
+        } catch (NullPointerException x3) {
+        try { visitor.visitFileFailed(null, new IOException());
+        } catch (NullPointerException x4) {
+        try { visitor.visitFileFailed(dir, null);
+        } catch (NullPointerException x5) {
+        try { visitor.postVisitDirectory(null, new IOException());
+        } catch (NullPointerException x6) {
+            // if we get here then all visit* methods threw NPE as expected
+            ranTheGauntlet = true;
+        }}}}}}}
+        if (!ranTheGauntlet)
+            throw new RuntimeException("A visit method did not throw NPE");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/walkFileTree/PrintFileTree.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) 2008, 2010, 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.
+ */
+
+import java.nio.file.*;
+import java.nio.file.attribute.*;
+import java.io.IOException;
+import java.util.*;
+
+/**
+ * Invokes Files.walkFileTree to traverse a file tree and prints
+ * each of the directories and files. The -follow option causes symbolic
+ * links to be followed and the -printCycles option will print links
+ * where the target of the link is an ancestor directory.
+ */
+
+public class PrintFileTree {
+
+    public static void main(String[] args) throws Exception {
+        boolean followLinks = false;
+        boolean printCycles = false;
+        int i = 0;
+        while (i < (args.length-1)) {
+            switch (args[i]) {
+                case "-follow"      : followLinks = true; break;
+                case "-printCycles" : printCycles = true;  break;
+                default:
+                    throw new RuntimeException(args[i] + " not recognized");
+            }
+            i++;
+        }
+        Path dir = Paths.get(args[i]);
+
+        Set<FileVisitOption> options = new HashSet<FileVisitOption>();
+        if (followLinks)
+            options.add(FileVisitOption.FOLLOW_LINKS);
+
+        final boolean reportCycles = printCycles;
+        Files.walkFileTree(dir, options, Integer.MAX_VALUE, new FileVisitor<Path>() {
+            @Override
+            public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
+                System.out.println(dir);
+                return FileVisitResult.CONTINUE;
+            }
+            @Override
+            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
+                if (!attrs.isDirectory() || reportCycles)
+                    System.out.println(file);
+                return FileVisitResult.CONTINUE;
+            }
+            @Override
+            public FileVisitResult postVisitDirectory(Path dir, IOException exc)
+                throws IOException
+            {
+                if (exc != null)
+                    throw exc;
+                return FileVisitResult.CONTINUE;
+            }
+            @Override
+            public FileVisitResult visitFileFailed(Path file, IOException exc)
+                throws IOException
+            {
+                if (reportCycles && (exc instanceof FileSystemLoopException)) {
+                    System.out.println(file);
+                    return FileVisitResult.CONTINUE;
+                }
+                throw exc;
+            }
+        });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/walkFileTree/SkipSiblings.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2008, 2010, 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.
+ */
+
+import java.nio.file.*;
+import java.nio.file.attribute.*;
+import java.io.IOException;
+import java.util.*;
+
+/**
+ * Unit test for Files.walkFileTree to test SKIP_SIBLINGS return value.
+ */
+
+public class SkipSiblings {
+
+    static final Random rand = new Random();
+    static final Set<Path> skipped = new HashSet<Path>();
+
+    // check if this path's directory has been skipped
+    static void check(Path path) {
+        if (skipped.contains(path.getParent()))
+            throw new RuntimeException(path + " should not have been visited");
+    }
+
+    // indicates if the siblings of this path should be skipped
+    static boolean skip(Path path) {
+        Path parent = path.getParent();
+        if (parent != null && rand.nextBoolean()) {
+            skipped.add(parent);
+            return true;
+        }
+        return false;
+    }
+
+    public static void main(String[] args) throws Exception {
+        Path dir = Paths.get(args[0]);
+
+        Files.walkFileTree(dir, new SimpleFileVisitor<Path>() {
+            @Override
+            public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
+                check(dir);
+                if (skip(dir))
+                    return FileVisitResult.SKIP_SIBLINGS;
+                return FileVisitResult.CONTINUE;
+            }
+            @Override
+            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
+                check(file);
+                if (skip(file))
+                    return FileVisitResult.SKIP_SIBLINGS;
+                return FileVisitResult.CONTINUE;
+            }
+            @Override
+            public FileVisitResult postVisitDirectory(Path dir, IOException x) {
+                if (x != null)
+                    throw new RuntimeException(x);
+                check(dir);
+                return FileVisitResult.CONTINUE;
+            }
+        });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/walkFileTree/TerminateWalk.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2008, 2010, 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.
+ */
+
+import java.nio.file.*;
+import java.nio.file.attribute.*;
+import java.io.IOException;
+import java.util.*;
+
+/**
+ * Unit test for Files.walkFileTree to test TERMINATE return value
+ */
+
+public class TerminateWalk {
+
+    static final Random rand = new Random();
+    static boolean terminated;
+
+    static FileVisitResult maybeTerminate() {
+        if (terminated)
+            throw new RuntimeException("FileVisitor invoked after termination");
+        if (rand.nextInt(10) == 0) {
+            terminated = true;
+            return FileVisitResult.TERMINATE;
+        } else {
+            return FileVisitResult.CONTINUE;
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        Path dir = Paths.get(args[0]);
+
+        Files.walkFileTree(dir, new SimpleFileVisitor<Path>() {
+            @Override
+            public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
+                return maybeTerminate();
+            }
+            @Override
+            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
+                return maybeTerminate();
+            }
+            @Override
+            public FileVisitResult postVisitDirectory(Path dir, IOException x) {
+                return maybeTerminate();
+            }
+        });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/walkFileTree/WalkWithSecurity.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,129 @@
+/*
+ * Copyright (c) 2010, 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.
+ */
+
+/* @test
+ * @bug 6876541
+ * @summary Test Files.walkFileTree in the presence of a security manager
+ * @build WalkWithSecurity
+ * @run main/othervm WalkWithSecurity grantAll.policy pass
+ * @run main/othervm WalkWithSecurity denyAll.policy fail
+ * @run main/othervm WalkWithSecurity grantTopOnly.policy top_only
+ */
+
+import java.nio.file.*;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.io.IOException;
+
+public class WalkWithSecurity {
+
+    public static void main(String[] args) throws IOException {
+        String policyFile = args[0];
+        ExpectedResult expectedResult = ExpectedResult.valueOf(args[1].toUpperCase());
+
+        String here = System.getProperty("user.dir");
+        String testSrc = System.getProperty("test.src");
+        if (testSrc == null)
+            throw new RuntimeException("This test must be run by jtreg");
+        Path dir = Paths.get(testSrc);
+
+        // Sanity check the environment
+        if (Files.isSameFile(Paths.get(here), dir))
+            throw new RuntimeException("Working directory cannot be " + dir);
+        try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
+            if (!stream.iterator().hasNext())
+                throw new RuntimeException(testSrc + " is empty");
+        }
+
+        // Install security manager with the given policy file
+        System.setProperty("java.security.policy",
+            dir.resolve(policyFile).toString());
+        System.setSecurityManager(new SecurityManager());
+
+        // Walk the source tree
+        CountingVisitor visitor = new CountingVisitor();
+        SecurityException exception = null;
+        try {
+            Files.walkFileTree(dir, visitor);
+        } catch (SecurityException se) {
+            exception = se;
+        }
+
+        // Check result
+        switch (expectedResult) {
+            case PASS:
+                if (exception != null) {
+                    exception.printStackTrace();
+                    throw new RuntimeException("SecurityException not expected");
+                }
+                if (visitor.count() == 0)
+                    throw new RuntimeException("No files visited");
+                break;
+            case FAIL:
+                if (exception == null)
+                    throw new RuntimeException("SecurityException expected");
+                if (visitor.count() > 0)
+                    throw new RuntimeException("Files were visited");
+                break;
+            case TOP_ONLY:
+                if (exception != null) {
+                    exception.printStackTrace();
+                    throw new RuntimeException("SecurityException not expected");
+                }
+                if (visitor.count() == 0)
+                    throw new RuntimeException("Starting file not visited");
+                if (visitor.count() > 1)
+                    throw new RuntimeException("More than starting file visited");
+                break;
+            default:
+                throw new RuntimeException("Should not get here");
+        }
+    }
+
+    static enum ExpectedResult {
+        PASS,
+        FAIL,
+        TOP_ONLY;
+    }
+
+    static class CountingVisitor extends SimpleFileVisitor<Path> {
+        private int count;
+
+        int count() {
+            return count;
+        }
+
+        @Override
+        public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
+            System.out.println(dir);
+            count++;
+            return FileVisitResult.CONTINUE;
+        }
+
+        @Override
+        public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
+            System.out.println(file);
+            count++;
+            return FileVisitResult.CONTINUE;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/walkFileTree/denyAll.policy	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,3 @@
+// policy file that does not grant any permissions
+grant {
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/walkFileTree/grantAll.policy	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,5 @@
+// policy file that grants read access to source directory and all descendants
+grant {
+    permission java.io.FilePermission "${test.src}", "read";
+    permission java.io.FilePermission "${test.src}${file.separator}-", "read";
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/walkFileTree/grantTopOnly.policy	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,4 @@
+// policy file that grants read access to source directory
+grant {
+    permission java.io.FilePermission "${test.src}", "read";
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/nio/file/Files/walkFileTree/walk_file_tree.sh	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,98 @@
+#
+# Copyright (c) 2008, 2010, 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.
+#
+
+# @test
+# @bug 4313887 6907737
+# @summary Unit test for walkFileTree method
+# @build CreateFileTree PrintFileTree SkipSiblings TerminateWalk MaxDepth
+# @run shell walk_file_tree.sh
+
+# if TESTJAVA isn't set then we assume an interactive run.
+
+if [ -z "$TESTJAVA" ]; then
+    TESTSRC=.
+    TESTCLASSES=.
+    JAVA=java
+else
+    JAVA="${TESTJAVA}/bin/java"
+fi
+
+OS=`uname -s`
+case "$OS" in
+    Windows_* | CYGWIN* )
+        echo "This test does not run on Windows" 
+        exit 0
+        ;;
+    * )
+        CLASSPATH=${TESTCLASSES}:${TESTSRC}
+        ;;
+esac
+export CLASSPATH
+
+# create the file tree
+ROOT=`$JAVA CreateFileTree`
+if [ $? != 0 ]; then exit 1; fi
+
+failures=0
+
+# print the file tree and compare output with find(1)
+$JAVA PrintFileTree "$ROOT" > out1
+find "$ROOT" > out2
+diff out1 out2
+if [ $? != 0 ]; then failures=`expr $failures + 1`; fi
+
+# repeat test following links. Some versions of find(1) output
+# cycles (sym links to ancestor directories), other versions do
+# not. For that reason we run PrintFileTree with the -printCycles
+# option when the output without this option differs to find(1).
+find "$ROOT" -follow > out1
+$JAVA PrintFileTree -follow "$ROOT" > out2
+diff out1 out2
+if [ $? != 0 ];
+  then 
+    # re-run printing cycles to stdout
+    $JAVA PrintFileTree -follow -printCycles "$ROOT" > out2
+    diff out1 out2
+    if [ $? != 0 ]; then failures=`expr $failures + 1`; fi
+  fi
+
+# test SKIP_SIBLINGS
+$JAVA SkipSiblings "$ROOT"
+if [ $? != 0 ]; then failures=`expr $failures + 1`; fi
+
+# test TERMINATE
+$JAVA TerminateWalk "$ROOT"
+if [ $? != 0 ]; then failures=`expr $failures + 1`; fi
+
+# test maxDepth
+$JAVA MaxDepth "$ROOT"
+if [ $? != 0 ]; then failures=`expr $failures + 1`; fi
+
+# clean-up
+rm -r "$ROOT"
+
+echo ''
+if [ $failures -gt 0 ];
+  then echo "$failures test(s) failed";
+  else echo "Test passed"; fi
+exit $failures
--- a/jdk/test/java/nio/file/Files/walk_file_tree.sh	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-#
-# Copyright (c) 2008, 2010, 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.
-#
-
-# @test
-# @bug 4313887 6907737
-# @summary Unit test for walkFileTree method
-# @build CreateFileTree PrintFileTree SkipSiblings TerminateWalk MaxDepth
-# @run shell walk_file_tree.sh
-
-# if TESTJAVA isn't set then we assume an interactive run.
-
-if [ -z "$TESTJAVA" ]; then
-    TESTSRC=.
-    TESTCLASSES=.
-    JAVA=java
-else
-    JAVA="${TESTJAVA}/bin/java"
-fi
-
-OS=`uname -s`
-case "$OS" in
-    Windows_* | CYGWIN* )
-        echo "This test does not run on Windows" 
-        exit 0
-        ;;
-    * )
-        CLASSPATH=${TESTCLASSES}:${TESTSRC}
-        ;;
-esac
-export CLASSPATH
-
-# create the file tree
-ROOT=`$JAVA CreateFileTree`
-if [ $? != 0 ]; then exit 1; fi
-
-failures=0
-
-# print the file tree and compare output with find(1)
-$JAVA PrintFileTree "$ROOT" > out1
-find "$ROOT" > out2
-diff out1 out2
-if [ $? != 0 ]; then failures=`expr $failures + 1`; fi
-
-# repeat test following links. Some versions of find(1) output
-# cycles (sym links to ancestor directories), other versions do
-# not. For that reason we run PrintFileTree with the -printCycles
-# option when the output without this option differs to find(1).
-find "$ROOT" -follow > out1
-$JAVA PrintFileTree -follow "$ROOT" > out2
-diff out1 out2
-if [ $? != 0 ];
-  then 
-    # re-run printing cycles to stdout
-    $JAVA PrintFileTree -follow -printCycles "$ROOT" > out2
-    diff out1 out2
-    if [ $? != 0 ]; then failures=`expr $failures + 1`; fi
-  fi
-
-# test SKIP_SIBLINGS
-$JAVA SkipSiblings "$ROOT"
-if [ $? != 0 ]; then failures=`expr $failures + 1`; fi
-
-# test TERMINATE
-$JAVA TerminateWalk "$ROOT"
-if [ $? != 0 ]; then failures=`expr $failures + 1`; fi
-
-# test maxDepth
-$JAVA MaxDepth "$ROOT"
-if [ $? != 0 ]; then failures=`expr $failures + 1`; fi
-
-# clean-up
-rm -r "$ROOT"
-
-echo ''
-if [ $failures -gt 0 ];
-  then echo "$failures test(s) failed";
-  else echo "Test passed"; fi
-exit $failures
--- a/jdk/test/java/nio/file/Path/CheckPermissions.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,697 +0,0 @@
-/*
- * Copyright (c) 2009, 2010, 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.
- */
-
-/* @test
- * @bug 6866804
- * @summary Unit test for java.nio.file.Path
- * @library ..
- * @build CheckPermissions
- * @run main/othervm CheckPermissions
- */
-
-import java.nio.ByteBuffer;
-import java.nio.file.*;
-import java.nio.file.attribute.*;
-import java.nio.channels.SeekableByteChannel;
-import java.security.Permission;
-import java.io.*;
-import java.util.*;
-
-/**
- * Checks each method that accesses the file system does the right permission
- * check when there is a security manager set.
- */
-
-public class CheckPermissions {
-
-    static class Checks {
-        private List<Permission> permissionsChecked = new ArrayList<Permission>();
-        private Set<String>  propertiesChecked = new HashSet<String>();
-        private List<String> readsChecked   = new ArrayList<String>();
-        private List<String> writesChecked  = new ArrayList<String>();
-        private List<String> deletesChecked = new ArrayList<String>();
-        private List<String> execsChecked   = new ArrayList<String>();
-
-        List<Permission> permissionsChecked()  { return permissionsChecked; }
-        Set<String> propertiesChecked()        { return propertiesChecked; }
-        List<String> readsChecked()            { return readsChecked; }
-        List<String> writesChecked()           { return writesChecked; }
-        List<String> deletesChecked()          { return deletesChecked; }
-        List<String> execsChecked()            { return execsChecked; }
-    }
-
-    static ThreadLocal<Checks> myChecks =
-        new ThreadLocal<Checks>() {
-            @Override protected Checks initialValue() {
-                return null;
-            }
-        };
-
-    static void prepare() {
-        myChecks.set(new Checks());
-    }
-
-    static void assertCheckPermission(Class<? extends Permission> type,
-                                      String name)
-    {
-        for (Permission perm: myChecks.get().permissionsChecked()) {
-            if (type.isInstance(perm) && perm.getName().equals(name))
-                return;
-        }
-        throw new RuntimeException(type.getName() + "\"" + name + "\") not checked");
-    }
-
-    static void assertCheckPropertyAccess(String key) {
-        if (!myChecks.get().propertiesChecked().contains(key))
-            throw new RuntimeException("Property " + key + " not checked");
-    }
-
-    static void assertChecked(Path file, List<String> list) {
-        String s = file.toString();
-        for (String f: list) {
-            if (f.endsWith(s))
-                return;
-        }
-        throw new RuntimeException("Access not checked");
-    }
-
-    static void assertCheckRead(Path file) {
-        assertChecked(file, myChecks.get().readsChecked());
-    }
-
-    static void assertCheckWrite(Path file) {
-        assertChecked(file, myChecks.get().writesChecked());
-    }
-
-    static void assertCheckDelete(Path file) {
-        assertChecked(file, myChecks.get().deletesChecked());
-    }
-
-    static void assertCheckExec(Path file) {
-        assertChecked(file, myChecks.get().execsChecked());
-    }
-
-    static class LoggingSecurityManager extends SecurityManager {
-        static void install() {
-            System.setSecurityManager(new LoggingSecurityManager());
-        }
-
-        @Override
-        public void checkPermission(Permission perm) {
-            Checks checks = myChecks.get();
-            if (checks != null)
-                checks.permissionsChecked().add(perm);
-        }
-
-        @Override
-        public void checkPropertyAccess(String key) {
-            Checks checks = myChecks.get();
-            if (checks != null)
-                checks.propertiesChecked().add(key);
-        }
-
-        @Override
-        public void checkRead(String file) {
-            Checks checks = myChecks.get();
-            if (checks != null)
-                checks.readsChecked().add(file);
-        }
-
-        @Override
-        public void checkWrite(String file) {
-            Checks checks = myChecks.get();
-            if (checks != null)
-                checks.writesChecked().add(file);
-        }
-
-        @Override
-        public void checkDelete(String file) {
-            Checks checks = myChecks.get();
-            if (checks != null)
-                checks.deletesChecked().add(file);
-        }
-
-        @Override
-        public void checkExec(String file) {
-            Checks checks = myChecks.get();
-            if (checks != null)
-                checks.execsChecked().add(file);
-        }
-    }
-
-    static void testBasicFileAttributeView(BasicFileAttributeView view, Path file)
-        throws IOException
-    {
-        prepare();
-        view.readAttributes();
-        assertCheckRead(file);
-
-        prepare();
-        FileTime now = FileTime.fromMillis(System.currentTimeMillis());
-        view.setTimes(null, now, now);
-        assertCheckWrite(file);
-    }
-
-    static void testPosixFileAttributeView(PosixFileAttributeView view, Path file)
-        throws IOException
-    {
-        prepare();
-        PosixFileAttributes attrs = view.readAttributes();
-        assertCheckRead(file);
-        assertCheckPermission(RuntimePermission.class, "accessUserInformation");
-
-        prepare();
-        view.setPermissions(attrs.permissions());
-        assertCheckWrite(file);
-        assertCheckPermission(RuntimePermission.class, "accessUserInformation");
-
-        prepare();
-        view.setOwner(attrs.owner());
-        assertCheckWrite(file);
-        assertCheckPermission(RuntimePermission.class, "accessUserInformation");
-
-        prepare();
-        view.setOwner(attrs.owner());
-        assertCheckWrite(file);
-        assertCheckPermission(RuntimePermission.class, "accessUserInformation");
-    }
-
-    public static void main(String[] args) throws IOException {
-        Path dir = Paths.get(System.getProperty("test.dir", "."));
-        Path file = dir.resolve("file1234").createFile();
-        try {
-            LoggingSecurityManager.install();
-
-            // -- checkAccess --
-
-            prepare();
-            file.checkAccess();
-            assertCheckRead(file);
-
-            prepare();
-            file.checkAccess(AccessMode.READ);
-            assertCheckRead(file);
-
-            prepare();
-            file.checkAccess(AccessMode.WRITE);
-            assertCheckWrite(file);
-
-            prepare();
-            try {
-                file.checkAccess(AccessMode.EXECUTE);
-            } catch (AccessDeniedException x) { }
-            assertCheckExec(file);
-
-            prepare();
-            try {
-                file.checkAccess(AccessMode.READ, AccessMode.WRITE, AccessMode.EXECUTE);
-            } catch (AccessDeniedException x) { }
-            assertCheckRead(file);
-            assertCheckWrite(file);
-            assertCheckExec(file);
-
-            // -- copyTo --
-
-            Path target = dir.resolve("target1234");
-            prepare();
-            file.copyTo(target);
-            try {
-                assertCheckRead(file);
-                assertCheckWrite(target);
-            } finally {
-                target.delete();
-            }
-
-            if (TestUtil.supportsLinks(dir)) {
-                Path link = dir.resolve("link1234").createSymbolicLink(file);
-                try {
-                    prepare();
-                    link.copyTo(target, LinkOption.NOFOLLOW_LINKS);
-                    try {
-                        assertCheckRead(link);
-                        assertCheckWrite(target);
-                        assertCheckPermission(LinkPermission.class, "symbolic");
-                    } finally {
-                        target.delete();
-                    }
-                } finally {
-                    link.delete();
-                }
-            }
-
-            // -- createDirectory --
-
-            Path subdir = dir.resolve("subdir1234");
-            prepare();
-            subdir.createDirectory();
-            try {
-                assertCheckWrite(subdir);
-            } finally {
-                subdir.delete();
-            }
-
-            // -- createFile --
-
-            Path fileToCreate = dir.resolve("file7890");
-            prepare();
-            try {
-                fileToCreate.createFile();
-                assertCheckWrite(fileToCreate);
-            } finally {
-                fileToCreate.delete();
-            }
-
-            // -- createSymbolicLink --
-
-            if (TestUtil.supportsLinks(dir)) {
-                prepare();
-                Path link = dir.resolve("link1234").createSymbolicLink(file);
-                try {
-                    assertCheckWrite(link);
-                    assertCheckPermission(LinkPermission.class, "symbolic");
-                } finally {
-                    link.delete();
-                }
-            }
-
-            // -- delete/deleteIfExists --
-
-            Path fileToDelete = dir.resolve("file7890");
-
-            fileToDelete.createFile();
-            prepare();
-            fileToDelete.delete();
-            assertCheckDelete(fileToDelete);
-
-            fileToDelete.createFile();
-            prepare();
-            fileToDelete.deleteIfExists();
-            assertCheckDelete(fileToDelete);
-
-            // -- exists/notExists --
-
-            prepare();
-            file.exists();
-            assertCheckRead(file);
-
-            prepare();
-            file.notExists();
-            assertCheckRead(file);
-
-            // -- getFileStore --
-
-            prepare();
-            file.getFileStore();
-            assertCheckRead(file);
-            assertCheckPermission(RuntimePermission.class, "getFileStoreAttributes");
-
-            // -- isSameFile --
-
-            prepare();
-            file.isSameFile(dir);
-            assertCheckRead(file);
-            assertCheckRead(dir);
-
-            // -- moveTo --
-
-            Path target2 = dir.resolve("target1234");
-            prepare();
-            file.moveTo(target2);
-            try {
-                assertCheckWrite(file);
-                assertCheckWrite(target2);
-            } finally {
-                // restore file
-                target2.moveTo(file);
-            }
-
-            // -- newByteChannel --
-
-            SeekableByteChannel sbc;
-
-            prepare();
-            sbc = file.newByteChannel();
-            try {
-                assertCheckRead(file);
-            } finally {
-                sbc.close();
-            }
-            prepare();
-            sbc = file.newByteChannel(StandardOpenOption.WRITE);
-            try {
-                assertCheckWrite(file);
-            } finally {
-                sbc.close();
-            }
-            prepare();
-            sbc = file.newByteChannel(StandardOpenOption.READ, StandardOpenOption.WRITE);
-            try {
-                assertCheckRead(file);
-                assertCheckWrite(file);
-            } finally {
-                sbc.close();
-            }
-
-            prepare();
-            sbc = file.newByteChannel(StandardOpenOption.DELETE_ON_CLOSE);
-            try {
-                assertCheckRead(file);
-                assertCheckDelete(file);
-            } finally {
-                sbc.close();
-            }
-            file.createFile(); // restore file
-
-
-            // -- newInputStream/newOutptuStream --
-
-            prepare();
-            InputStream in = file.newInputStream();
-            try {
-                assertCheckRead(file);
-            } finally {
-                in.close();
-            }
-            prepare();
-            OutputStream out = file.newOutputStream();
-            try {
-                assertCheckWrite(file);
-            } finally {
-                out.close();
-            }
-
-            // -- newDirectoryStream --
-
-            prepare();
-            DirectoryStream<Path> stream = dir.newDirectoryStream();
-            try {
-                assertCheckRead(dir);
-
-                if (stream instanceof SecureDirectoryStream<?>) {
-                    Path entry;
-                    SecureDirectoryStream<Path> sds =
-                        (SecureDirectoryStream<Path>)stream;
-
-                    // newByteChannel
-                    entry = file.getName();
-                    prepare();
-                    sbc = sds.newByteChannel(entry, EnumSet.of(StandardOpenOption.READ));
-                    try {
-                        assertCheckRead(file);
-                    } finally {
-                        sbc.close();
-                    }
-                    prepare();
-                    sbc = sds.newByteChannel(entry, EnumSet.of(StandardOpenOption.WRITE));
-                    try {
-                        assertCheckWrite(file);
-                    } finally {
-                        sbc.close();
-                    }
-
-                    // deleteFile
-                    entry = file.getName();
-                    prepare();
-                    sds.deleteFile(entry);
-                    assertCheckDelete(file);
-                    dir.resolve(entry).createFile();  // restore file
-
-                    // deleteDirectory
-                    entry = Paths.get("subdir1234");
-                    dir.resolve(entry).createDirectory();
-                    prepare();
-                    sds.deleteDirectory(entry);
-                    assertCheckDelete(dir.resolve(entry));
-
-                    // move
-                    entry = Paths.get("tempname1234");
-                    prepare();
-                    sds.move(file.getName(), sds, entry);
-                    assertCheckWrite(file);
-                    assertCheckWrite(dir.resolve(entry));
-                    sds.move(entry, sds, file.getName());  // restore file
-
-                    // newDirectoryStream
-                    entry = Paths.get("subdir1234");
-                    dir.resolve(entry).createDirectory();
-                    try {
-                        prepare();
-                        sds.newDirectoryStream(entry).close();
-                        assertCheckRead(dir.resolve(entry));
-                    } finally {
-                        dir.resolve(entry).delete();
-                    }
-
-                    // getFileAttributeView to access attributes of directory
-                    testBasicFileAttributeView(sds
-                        .getFileAttributeView(BasicFileAttributeView.class), dir);
-                    testPosixFileAttributeView(sds
-                        .getFileAttributeView(PosixFileAttributeView.class), dir);
-
-                    // getFileAttributeView to access attributes of entry
-                    entry = file.getName();
-                    testBasicFileAttributeView(sds
-                        .getFileAttributeView(entry, BasicFileAttributeView.class), file);
-                    testPosixFileAttributeView(sds
-                        .getFileAttributeView(entry, PosixFileAttributeView.class), file);
-
-                } else {
-                    System.out.println("SecureDirectoryStream not tested");
-                }
-
-            } finally {
-                stream.close();
-            }
-
-            // -- toAbsolutePath --
-
-            prepare();
-            file.getName().toAbsolutePath();
-            assertCheckPropertyAccess("user.dir");
-
-            // -- toRealPath --
-
-            prepare();
-            file.toRealPath(true);
-            assertCheckRead(file);
-
-            prepare();
-            file.toRealPath(false);
-            assertCheckRead(file);
-
-            prepare();
-            Paths.get(".").toRealPath(true);
-            assertCheckPropertyAccess("user.dir");
-
-            prepare();
-            Paths.get(".").toRealPath(false);
-            assertCheckPropertyAccess("user.dir");
-
-            // -- register --
-
-            WatchService watcher = FileSystems.getDefault().newWatchService();
-            try {
-                prepare();
-                dir.register(watcher, StandardWatchEventKind.ENTRY_DELETE);
-                assertCheckRead(dir);
-            } finally {
-                watcher.close();
-            }
-
-            // -- getAttribute/setAttribute/readAttributes --
-
-            prepare();
-            file.getAttribute("size");
-            assertCheckRead(file);
-
-            prepare();
-            file.setAttribute("lastModifiedTime",
-                FileTime.fromMillis(System.currentTimeMillis()));
-            assertCheckWrite(file);
-
-            prepare();
-            file.readAttributes("*");
-            assertCheckRead(file);
-
-            // -- BasicFileAttributeView --
-            testBasicFileAttributeView(file
-                .getFileAttributeView(BasicFileAttributeView.class), file);
-
-            // -- PosixFileAttributeView --
-
-            {
-                PosixFileAttributeView view =
-                    file.getFileAttributeView(PosixFileAttributeView.class);
-                if (view != null &&
-                    file.getFileStore().supportsFileAttributeView(PosixFileAttributeView.class))
-                {
-                    testPosixFileAttributeView(view, file);
-                } else {
-                    System.out.println("PosixFileAttributeView not tested");
-                }
-            }
-
-            // -- DosFileAttributeView --
-
-            {
-                DosFileAttributeView view =
-                    file.getFileAttributeView(DosFileAttributeView.class);
-                if (view != null &&
-                    file.getFileStore().supportsFileAttributeView(DosFileAttributeView.class))
-                {
-                    prepare();
-                    view.readAttributes();
-                    assertCheckRead(file);
-
-                    prepare();
-                    view.setArchive(false);
-                    assertCheckWrite(file);
-
-                    prepare();
-                    view.setHidden(false);
-                    assertCheckWrite(file);
-
-                    prepare();
-                    view.setReadOnly(false);
-                    assertCheckWrite(file);
-
-                    prepare();
-                    view.setSystem(false);
-                    assertCheckWrite(file);
-                } else {
-                    System.out.println("DosFileAttributeView not tested");
-                }
-            }
-
-            // -- FileOwnerAttributeView --
-
-            {
-                FileOwnerAttributeView view =
-                    file.getFileAttributeView(FileOwnerAttributeView.class);
-                if (view != null &&
-                    file.getFileStore().supportsFileAttributeView(FileOwnerAttributeView.class))
-                {
-                    prepare();
-                    UserPrincipal owner = view.getOwner();
-                    assertCheckRead(file);
-                    assertCheckPermission(RuntimePermission.class, "accessUserInformation");
-
-                    prepare();
-                    view.setOwner(owner);
-                    assertCheckWrite(file);
-                    assertCheckPermission(RuntimePermission.class, "accessUserInformation");
-
-                } else {
-                    System.out.println("FileOwnerAttributeView not tested");
-                }
-            }
-
-            // -- UserDefinedFileAttributeView --
-
-            {
-                UserDefinedFileAttributeView view =
-                    file.getFileAttributeView(UserDefinedFileAttributeView.class);
-                if (view != null &&
-                    file.getFileStore().supportsFileAttributeView(UserDefinedFileAttributeView.class))
-                {
-                    prepare();
-                    view.write("test", ByteBuffer.wrap(new byte[100]));
-                    assertCheckWrite(file);
-                    assertCheckPermission(RuntimePermission.class,
-                                               "accessUserDefinedAttributes");
-
-                    prepare();
-                    view.read("test", ByteBuffer.allocate(100));
-                    assertCheckRead(file);
-                    assertCheckPermission(RuntimePermission.class,
-                                               "accessUserDefinedAttributes");
-
-                    prepare();
-                    view.size("test");
-                    assertCheckRead(file);
-                    assertCheckPermission(RuntimePermission.class,
-                                               "accessUserDefinedAttributes");
-
-                    prepare();
-                    view.list();
-                    assertCheckRead(file);
-                    assertCheckPermission(RuntimePermission.class,
-                                               "accessUserDefinedAttributes");
-
-                    prepare();
-                    view.delete("test");
-                    assertCheckWrite(file);
-                    assertCheckPermission(RuntimePermission.class,
-                                               "accessUserDefinedAttributes");
-                } else {
-                    System.out.println("UserDefinedFileAttributeView not tested");
-                }
-            }
-
-            // -- AclFileAttributeView --
-            {
-                AclFileAttributeView view =
-                    file.getFileAttributeView(AclFileAttributeView.class);
-                if (view != null &&
-                    file.getFileStore().supportsFileAttributeView(AclFileAttributeView.class))
-                {
-                    prepare();
-                    List<AclEntry> acl = view.getAcl();
-                    assertCheckRead(file);
-                    assertCheckPermission(RuntimePermission.class, "accessUserInformation");
-                    prepare();
-                    view.setAcl(acl);
-                    assertCheckWrite(file);
-                    assertCheckPermission(RuntimePermission.class, "accessUserInformation");
-                } else {
-                    System.out.println("AclFileAttributeView not tested");
-                }
-            }
-
-            // -- UserPrincipalLookupService
-
-            UserPrincipalLookupService lookupService =
-                FileSystems.getDefault().getUserPrincipalLookupService();
-            UserPrincipal owner = Attributes.getOwner(file);
-
-            prepare();
-            lookupService.lookupPrincipalByName(owner.getName());
-            assertCheckPermission(RuntimePermission.class,
-                                       "lookupUserInformation");
-
-            try {
-                UserPrincipal group = Attributes.readPosixFileAttributes(file).group();
-                prepare();
-                lookupService.lookupPrincipalByGroupName(group.getName());
-                assertCheckPermission(RuntimePermission.class,
-                                           "lookupUserInformation");
-            } catch (UnsupportedOperationException ignore) {
-                System.out.println("lookupPrincipalByGroupName not tested");
-            }
-
-
-        } finally {
-            file.deleteIfExists();
-        }
-    }
-}
--- a/jdk/test/java/nio/file/Path/CopyAndMove.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1006 +0,0 @@
-/*
- * Copyright (c) 2008, 2010, 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.
- */
-
-/* @test
- * @bug 4313887 6838333 6917021
- * @summary Unit test for java.nio.file.Path copyTo/moveTo methods
- * @library ..
- * @build CopyAndMove PassThroughFileSystem
- * @run main/othervm CopyAndMove
- */
-
-import java.nio.ByteBuffer;
-import java.nio.file.*;
-import static java.nio.file.StandardCopyOption.*;
-import static java.nio.file.LinkOption.*;
-import java.nio.file.attribute.*;
-import java.io.*;
-import java.util.*;
-
-public class CopyAndMove {
-    static final Random rand = new Random();
-    static boolean heads() { return rand.nextBoolean(); }
-
-    public static void main(String[] args) throws Exception {
-        Path dir1 = TestUtil.createTemporaryDirectory();
-        try {
-            // Same directory
-            doCopyTests(dir1, dir1, TestUtil.supportsLinks(dir1));
-            doMoveTests(dir1, dir1, TestUtil.supportsLinks(dir1));
-
-            // Different directories. Use test.dir if possible as it might be
-            // a different volume/file system and so improve test coverage.
-            String testDir = System.getProperty("test.dir", ".");
-            Path dir2 = TestUtil.createTemporaryDirectory(testDir);
-            try {
-                boolean testSymbolicLinks =
-                    TestUtil.supportsLinks(dir1) && TestUtil.supportsLinks(dir2);
-                doCopyTests(dir1, dir2, testSymbolicLinks);
-                doMoveTests(dir1, dir2, testSymbolicLinks);
-            } finally {
-                TestUtil.removeAll(dir2);
-            }
-
-            // Target is location associated with custom provider
-            Path dir3 = PassThroughFileSystem.create().getPath(dir1.toString());
-            doCopyTests(dir1, dir3, false);
-            doMoveTests(dir1, dir3, false);
-
-        } finally {
-            TestUtil.removeAll(dir1);
-        }
-    }
-
-    static void checkBasicAttributes(BasicFileAttributes attrs1,
-                                     BasicFileAttributes attrs2)
-    {
-        // check file type
-        assertTrue(attrs1.isRegularFile() == attrs2.isRegularFile());
-        assertTrue(attrs1.isDirectory() == attrs2.isDirectory());
-        assertTrue(attrs1.isSymbolicLink() == attrs2.isSymbolicLink());
-        assertTrue(attrs1.isOther() == attrs2.isOther());
-
-        // check last modified time
-        long time1 = attrs1.lastModifiedTime().toMillis();
-        long time2 = attrs2.lastModifiedTime().toMillis();
-        assertTrue(time1 == time2);
-
-        // check size
-        if (attrs1.isRegularFile())
-            assertTrue(attrs1.size() == attrs2.size());
-    }
-
-    static void checkPosixAttributes(PosixFileAttributes attrs1,
-                                     PosixFileAttributes attrs2)
-    {
-        assertTrue(attrs1.permissions().equals(attrs2.permissions()));
-        assertTrue(attrs1.owner().equals(attrs2.owner()));
-        assertTrue(attrs1.group().equals(attrs2.group()));
-    }
-
-    static void checkDosAttributes(DosFileAttributes attrs1,
-                                   DosFileAttributes attrs2)
-    {
-        assertTrue(attrs1.isReadOnly() == attrs2.isReadOnly());
-        assertTrue(attrs1.isHidden() == attrs2.isHidden());
-        assertTrue(attrs1.isSystem() == attrs2.isSystem());
-    }
-
-    static void checkUserDefinedFileAttributes(Map<String,ByteBuffer> attrs1,
-                                     Map<String,ByteBuffer> attrs2)
-    {
-        assert attrs1.size() == attrs2.size();
-        for (String name: attrs1.keySet()) {
-            ByteBuffer bb1 = attrs1.get(name);
-            ByteBuffer bb2 = attrs2.get(name);
-            assertTrue(bb2 != null);
-            assertTrue(bb1.equals(bb2));
-        }
-    }
-
-    static Map<String,ByteBuffer> readUserDefinedFileAttributes(Path file)
-        throws IOException
-    {
-        UserDefinedFileAttributeView view = file
-            .getFileAttributeView(UserDefinedFileAttributeView.class);
-        Map<String,ByteBuffer> result = new HashMap<String,ByteBuffer>();
-        for (String name: view.list()) {
-            int size = view.size(name);
-            ByteBuffer bb = ByteBuffer.allocate(size);
-            int n = view.read(name, bb);
-            assertTrue(n == size);
-            bb.flip();
-            result.put(name, bb);
-        }
-        return result;
-    }
-
-    // move source to target with verification
-    static void moveAndVerify(Path source, Path target, CopyOption... options)
-        throws IOException
-    {
-        // read attributes before file is moved
-        BasicFileAttributes basicAttributes = null;
-        PosixFileAttributes posixAttributes = null;
-        DosFileAttributes dosAttributes = null;
-        Map<String,ByteBuffer> namedAttributes = null;
-
-        // get file attributes of source file
-        String os = System.getProperty("os.name");
-        if (os.equals("SunOS") || os.equals("Linux")) {
-            posixAttributes = Attributes.readPosixFileAttributes(source, NOFOLLOW_LINKS);
-            basicAttributes = posixAttributes;
-        }
-        if (os.startsWith("Windows")) {
-            dosAttributes = Attributes.readDosFileAttributes(source, NOFOLLOW_LINKS);
-            basicAttributes = dosAttributes;
-        }
-        if (basicAttributes == null)
-            basicAttributes = Attributes.readBasicFileAttributes(source, NOFOLLOW_LINKS);
-
-        // hash file contents if regular file
-        int hash = (basicAttributes.isRegularFile()) ? computeHash(source) : 0;
-
-        // record link target if symbolic link
-        Path linkTarget = null;
-        if (basicAttributes.isSymbolicLink())
-            linkTarget = source.readSymbolicLink();
-
-        // read named attributes if available (and file is not a sym link)
-        if (!basicAttributes.isSymbolicLink() &&
-            source.getFileStore().supportsFileAttributeView("xattr"))
-        {
-            namedAttributes = readUserDefinedFileAttributes(source);
-        }
-
-        // move file
-        source.moveTo(target, options);
-
-        // verify source does not exist
-        assertTrue(source.notExists());
-
-        // verify file contents
-        if (basicAttributes.isRegularFile()) {
-            if (computeHash(target) != hash)
-                throw new RuntimeException("Failed to verify move of regular file");
-        }
-
-        // verify link target
-        if (basicAttributes.isSymbolicLink()) {
-            if (!target.readSymbolicLink().equals(linkTarget))
-                throw new RuntimeException("Failed to verify move of symbolic link");
-        }
-
-        // verify basic attributes
-        checkBasicAttributes(basicAttributes,
-            Attributes.readBasicFileAttributes(target, NOFOLLOW_LINKS));
-
-        // verify other attributes when same provider
-        if (source.getFileSystem().provider() == target.getFileSystem().provider()) {
-
-            // verify POSIX attributes
-            if (posixAttributes != null && !basicAttributes.isSymbolicLink()) {
-                checkPosixAttributes(posixAttributes,
-                    Attributes.readPosixFileAttributes(target, NOFOLLOW_LINKS));
-            }
-
-            // verify DOS attributes
-            if (dosAttributes != null && !basicAttributes.isSymbolicLink()) {
-                checkDosAttributes(dosAttributes,
-                    Attributes.readDosFileAttributes(target, NOFOLLOW_LINKS));
-            }
-
-            // verify named attributes
-            if (namedAttributes != null &&
-                target.getFileStore().supportsFileAttributeView("xattr"))
-            {
-                checkUserDefinedFileAttributes(namedAttributes,
-                                               readUserDefinedFileAttributes(target));
-            }
-        }
-    }
-
-    /**
-     * Tests all possible ways to invoke moveTo
-     */
-    static void doMoveTests(Path dir1, Path dir2, boolean supportsLinks)
-        throws IOException
-    {
-        Path source, target, entry;
-
-        boolean sameDevice = dir1.getFileStore().equals(dir2.getFileStore());
-
-        // -- regular file --
-
-        /**
-         * Test: move regular file, target does not exist
-         */
-        source = createSourceFile(dir1);
-        target = getTargetFile(dir2);
-        moveAndVerify(source, target);
-        target.delete();
-
-        /**
-         * Test: move regular file, target exists
-         */
-        source = createSourceFile(dir1);
-        target = getTargetFile(dir2).createFile();
-        try {
-            moveAndVerify(source, target);
-            throw new RuntimeException("FileAlreadyExistsException expected");
-        } catch (FileAlreadyExistsException x) {
-        }
-        target.delete();
-        target.createDirectory();
-        try {
-            moveAndVerify(source, target);
-            throw new RuntimeException("FileAlreadyExistsException expected");
-        } catch (FileAlreadyExistsException x) {
-        }
-        source.delete();
-        target.delete();
-
-        /**
-         * Test: move regular file, target does not exist
-         */
-        source = createSourceFile(dir1);
-        target = getTargetFile(dir2);
-        moveAndVerify(source, target, REPLACE_EXISTING);
-        target.delete();
-
-        /**
-         * Test: move regular file, target exists
-         */
-        source = createSourceFile(dir1);
-        target = getTargetFile(dir2).createFile();
-        moveAndVerify(source, target, REPLACE_EXISTING);
-        target.delete();
-
-        /**
-         * Test: move regular file, target exists and is empty directory
-         */
-        source = createSourceFile(dir1);
-        target = getTargetFile(dir2).createDirectory();
-        moveAndVerify(source, target, REPLACE_EXISTING);
-        target.delete();
-
-        /**
-         * Test: move regular file, target exists and is non-empty directory
-         */
-        source = createSourceFile(dir1);
-        target = getTargetFile(dir2).createDirectory();
-        entry = target.resolve("foo").createFile();
-        try {
-            moveAndVerify(source, target);
-            throw new RuntimeException("FileAlreadyExistsException expected");
-        } catch (FileAlreadyExistsException x) {
-        }
-        entry.delete();
-        source.delete();
-        target.delete();
-
-        /**
-         * Test atomic move of regular file (same file store)
-         */
-        source = createSourceFile(dir1);
-        target = getTargetFile(dir1);
-        moveAndVerify(source, target, ATOMIC_MOVE);
-        target.delete();
-
-        /**
-         * Test atomic move of regular file (different file store)
-         */
-        if (!sameDevice) {
-            source = createSourceFile(dir1);
-            target = getTargetFile(dir2);
-            try {
-                moveAndVerify(source, target, ATOMIC_MOVE);
-                throw new RuntimeException("AtomicMoveNotSupportedException expected");
-            } catch (AtomicMoveNotSupportedException x) {
-            }
-            source.delete();
-        }
-
-        // -- directories --
-
-        /*
-         * Test: move empty directory, target does not exist
-         */
-        source = createSourceDirectory(dir1);
-        target = getTargetFile(dir2);
-        moveAndVerify(source, target);
-        target.delete();
-
-        /**
-         * Test: move empty directory, target exists
-         */
-        source = createSourceDirectory(dir1);
-        target = getTargetFile(dir2).createFile();
-        try {
-            moveAndVerify(source, target);
-            throw new RuntimeException("FileAlreadyExistsException expected");
-        } catch (FileAlreadyExistsException x) {
-        }
-        target.delete();
-        target.createDirectory();
-        try {
-            moveAndVerify(source, target);
-            throw new RuntimeException("FileAlreadyExistsException expected");
-        } catch (FileAlreadyExistsException x) {
-        }
-        source.delete();
-        target.delete();
-
-        /**
-         * Test: move empty directory, target does not exist
-         */
-        source = createSourceDirectory(dir1);
-        target = getTargetFile(dir2);
-        moveAndVerify(source, target, REPLACE_EXISTING);
-        target.delete();
-
-        /**
-         * Test: move empty directory, target exists
-         */
-        source = createSourceDirectory(dir1);
-        target = getTargetFile(dir2).createFile();
-        moveAndVerify(source, target, REPLACE_EXISTING);
-        target.delete();
-
-        /**
-         * Test: move empty, target exists and is empty directory
-         */
-        source = createSourceDirectory(dir1);
-        target = getTargetFile(dir2).createDirectory();
-        moveAndVerify(source, target, REPLACE_EXISTING);
-        target.delete();
-
-        /**
-         * Test: move empty directory, target exists and is non-empty directory
-         */
-        source = createSourceDirectory(dir1);
-        target = getTargetFile(dir2).createDirectory();
-        entry = target.resolve("foo").createFile();
-        try {
-            moveAndVerify(source, target, REPLACE_EXISTING);
-            throw new RuntimeException("FileAlreadyExistsException expected");
-        } catch (FileAlreadyExistsException x) {
-        }
-        entry.delete();
-        source.delete();
-        target.delete();
-
-        /**
-         * Test: move non-empty directory (same file system)
-         */
-        source = createSourceDirectory(dir1);
-        source.resolve("foo").createFile();
-        target = getTargetFile(dir1);
-        moveAndVerify(source, target);
-        target.resolve("foo").delete();
-        target.delete();
-
-        /**
-         * Test: move non-empty directory (different file store)
-         */
-        if (!sameDevice) {
-            source = createSourceDirectory(dir1);
-            source.resolve("foo").createFile();
-            target = getTargetFile(dir2);
-            try {
-                moveAndVerify(source, target);
-                throw new RuntimeException("IOException expected");
-            } catch (IOException x) {
-            }
-            source.resolve("foo").delete();
-            source.delete();
-        }
-
-        /**
-         * Test atomic move of directory (same file store)
-         */
-        source = createSourceDirectory(dir1);
-        source.resolve("foo").createFile();
-        target = getTargetFile(dir1);
-        moveAndVerify(source, target, ATOMIC_MOVE);
-        target.resolve("foo").delete();
-        target.delete();
-
-        // -- symbolic links --
-
-        /**
-         * Test: Move symbolic link to file, target does not exist
-         */
-        if (supportsLinks) {
-            Path tmp = createSourceFile(dir1);
-            source = dir1.resolve("link").createSymbolicLink(tmp);
-            target = getTargetFile(dir2);
-            moveAndVerify(source, target);
-            target.delete();
-            tmp.delete();
-        }
-
-        /**
-         * Test: Move symbolic link to directory, target does not exist
-         */
-        if (supportsLinks) {
-            source = dir1.resolve("link").createSymbolicLink(dir2);
-            target = getTargetFile(dir2);
-            moveAndVerify(source, target);
-            target.delete();
-        }
-
-        /**
-         * Test: Move broken symbolic link, target does not exists
-         */
-        if (supportsLinks) {
-            Path tmp = Paths.get("doesnotexist");
-            source = dir1.resolve("link").createSymbolicLink(tmp);
-            target = getTargetFile(dir2);
-            moveAndVerify(source, target);
-            target.delete();
-        }
-
-        /**
-         * Test: Move symbolic link, target exists
-         */
-        if (supportsLinks) {
-            source = dir1.resolve("link").createSymbolicLink(dir2);
-            target = getTargetFile(dir2).createFile();
-            try {
-                moveAndVerify(source, target);
-                throw new RuntimeException("FileAlreadyExistsException expected");
-            } catch (FileAlreadyExistsException x) {
-            }
-            source.delete();
-            target.delete();
-        }
-
-        /**
-         * Test: Move regular file, target exists
-         */
-        if (supportsLinks) {
-            source = dir1.resolve("link").createSymbolicLink(dir2);
-            target = getTargetFile(dir2).createFile();
-            moveAndVerify(source, target, REPLACE_EXISTING);
-            target.delete();
-        }
-
-        /**
-         * Test: move symbolic link, target exists and is empty directory
-         */
-        if (supportsLinks) {
-            source = dir1.resolve("link").createSymbolicLink(dir2);
-            target = getTargetFile(dir2).createDirectory();
-            moveAndVerify(source, target, REPLACE_EXISTING);
-            target.delete();
-        }
-
-        /**
-         * Test: symbolic link, target exists and is non-empty directory
-         */
-        if (supportsLinks) {
-            source = dir1.resolve("link").createSymbolicLink(dir2);
-            target = getTargetFile(dir2).createDirectory();
-            entry = target.resolve("foo").createFile();
-            try {
-                moveAndVerify(source, target);
-                throw new RuntimeException("FileAlreadyExistsException expected");
-            } catch (FileAlreadyExistsException x) {
-            }
-            entry.delete();
-            source.delete();
-            target.delete();
-        }
-
-        /**
-         * Test atomic move of symbolic link (same file store)
-         */
-        if (supportsLinks) {
-            source = dir1.resolve("link").createSymbolicLink(dir1);
-            target = getTargetFile(dir2).createFile();
-            moveAndVerify(source, target, REPLACE_EXISTING);
-            target.delete();
-        }
-
-        // -- misc. tests --
-
-        /**
-         * Test nulls
-         */
-        source = createSourceFile(dir1);
-        target = getTargetFile(dir2);
-        try {
-            source.moveTo(null);
-            throw new RuntimeException("NullPointerException expected");
-        } catch (NullPointerException x) { }
-        try {
-            source.moveTo(target, (CopyOption[])null);
-            throw new RuntimeException("NullPointerException expected");
-        } catch (NullPointerException x) { }
-        try {
-            CopyOption[] opts = { REPLACE_EXISTING, null };
-            source.moveTo(target, opts);
-            throw new RuntimeException("NullPointerException expected");
-        } catch (NullPointerException x) { }
-        source.delete();
-
-        /**
-         * Test UOE
-         */
-        source = createSourceFile(dir1);
-        target = getTargetFile(dir2);
-        try {
-            source.moveTo(target, new CopyOption() { });
-        } catch (UnsupportedOperationException x) { }
-        try {
-            source.moveTo(target, REPLACE_EXISTING,  new CopyOption() { });
-        } catch (UnsupportedOperationException x) { }
-        source.delete();
-    }
-
-    // copy source to target with verification
-    static void copyAndVerify(Path source, Path target, CopyOption... options)
-        throws IOException
-    {
-        source.copyTo(target, options);
-
-        // get attributes of source and target file to verify copy
-        boolean followLinks = true;
-        LinkOption[] linkOptions = new LinkOption[0];
-        boolean copyAttributes = false;
-        for (CopyOption opt : options) {
-            if (opt == NOFOLLOW_LINKS) {
-                followLinks = false;
-                linkOptions = new LinkOption[] { NOFOLLOW_LINKS };
-            }
-            if (opt == COPY_ATTRIBUTES)
-                copyAttributes = true;
-        }
-        BasicFileAttributes basicAttributes = Attributes
-            .readBasicFileAttributes(source, linkOptions);
-
-        // check hash if regular file
-        if (basicAttributes.isRegularFile())
-            assertTrue(computeHash(source) == computeHash(target));
-
-        // check link target if symbolic link
-        if (basicAttributes.isSymbolicLink())
-            assert( source.readSymbolicLink().equals(target.readSymbolicLink()));
-
-        // check that attributes are copied
-        if (copyAttributes && followLinks) {
-            checkBasicAttributes(basicAttributes,
-                Attributes.readBasicFileAttributes(source, linkOptions));
-
-            // verify other attributes when same provider
-            if (source.getFileSystem().provider() == target.getFileSystem().provider()) {
-
-                // check POSIX attributes are copied
-                String os = System.getProperty("os.name");
-                if (os.equals("SunOS") || os.equals("Linux")) {
-                    checkPosixAttributes(
-                        Attributes.readPosixFileAttributes(source, linkOptions),
-                        Attributes.readPosixFileAttributes(target, linkOptions));
-                }
-
-                // check DOS attributes are copied
-                if (os.startsWith("Windows")) {
-                    checkDosAttributes(
-                        Attributes.readDosFileAttributes(source, linkOptions),
-                        Attributes.readDosFileAttributes(target, linkOptions));
-                }
-
-                // check named attributes are copied
-                if (followLinks &&
-                    source.getFileStore().supportsFileAttributeView("xattr") &&
-                    target.getFileStore().supportsFileAttributeView("xattr"))
-                {
-                    checkUserDefinedFileAttributes(readUserDefinedFileAttributes(source),
-                                                   readUserDefinedFileAttributes(target));
-                }
-            }
-        }
-    }
-
-    /**
-     * Tests all possible ways to invoke copyTo
-     */
-    static void doCopyTests(Path dir1, Path dir2, boolean supportsLinks)
-        throws IOException
-    {
-        Path source, target, link, entry;
-
-        // -- regular file --
-
-        /**
-         * Test: move regular file, target does not exist
-         */
-        source = createSourceFile(dir1);
-        target = getTargetFile(dir2);
-        copyAndVerify(source, target);
-        source.delete();
-        target.delete();
-
-        /**
-         * Test: copy regular file, target exists
-         */
-        source = createSourceFile(dir1);
-        target = getTargetFile(dir2).createFile();
-        try {
-            copyAndVerify(source, target);
-            throw new RuntimeException("FileAlreadyExistsException expected");
-        } catch (FileAlreadyExistsException x) {
-        }
-        target.delete();
-        target.createDirectory();
-        try {
-            copyAndVerify(source, target);
-            throw new RuntimeException("FileAlreadyExistsException expected");
-        } catch (FileAlreadyExistsException x) {
-        }
-        source.delete();
-        target.delete();
-
-        /**
-         * Test: copy regular file, target does not exist
-         */
-        source = createSourceFile(dir1);
-        target = getTargetFile(dir2);
-        copyAndVerify(source, target, REPLACE_EXISTING);
-        source.delete();
-        target.delete();
-
-        /**
-         * Test: copy regular file, target exists
-         */
-        source = createSourceFile(dir1);
-        target = getTargetFile(dir2).createFile();
-        copyAndVerify(source, target, REPLACE_EXISTING);
-        source.delete();
-        target.delete();
-
-        /**
-         * Test: copy regular file, target exists and is empty directory
-         */
-        source = createSourceFile(dir1);
-        target = getTargetFile(dir2).createDirectory();
-        copyAndVerify(source, target, REPLACE_EXISTING);
-        source.delete();
-        target.delete();
-
-        /**
-         * Test: copy regular file, target exists and is non-empty directory
-         */
-        source = createSourceFile(dir1);
-        target = getTargetFile(dir2).createDirectory();
-        entry = target.resolve("foo").createFile();
-        try {
-            copyAndVerify(source, target);
-            throw new RuntimeException("FileAlreadyExistsException expected");
-        } catch (FileAlreadyExistsException x) {
-        }
-        entry.delete();
-        source.delete();
-        target.delete();
-
-        /**
-         * Test: copy regular file + attributes
-         */
-        source = createSourceFile(dir1);
-        target = getTargetFile(dir2);
-        copyAndVerify(source, target, COPY_ATTRIBUTES);
-        source.delete();
-        target.delete();
-
-
-        // -- directory --
-
-        /*
-         * Test: copy directory, target does not exist
-         */
-        source = createSourceDirectory(dir1);
-        target = getTargetFile(dir2);
-        copyAndVerify(source, target);
-        source.delete();
-        target.delete();
-
-        /**
-         * Test: copy directory, target exists
-         */
-        source = createSourceDirectory(dir1);
-        target = getTargetFile(dir2).createFile();
-        try {
-            copyAndVerify(source, target);
-            throw new RuntimeException("FileAlreadyExistsException expected");
-        } catch (FileAlreadyExistsException x) {
-        }
-        target.delete();
-        target.createDirectory();
-        try {
-            copyAndVerify(source, target);
-            throw new RuntimeException("FileAlreadyExistsException expected");
-        } catch (FileAlreadyExistsException x) {
-        }
-        source.delete();
-        target.delete();
-
-        /**
-         * Test: copy directory, target does not exist
-         */
-        source = createSourceDirectory(dir1);
-        target = getTargetFile(dir2);
-        copyAndVerify(source, target, REPLACE_EXISTING);
-        source.delete();
-        target.delete();
-
-        /**
-         * Test: copy directory, target exists
-         */
-        source = createSourceDirectory(dir1);
-        target = getTargetFile(dir2).createFile();
-        copyAndVerify(source, target, REPLACE_EXISTING);
-        source.delete();
-        target.delete();
-
-        /**
-         * Test: copy directory, target exists and is empty directory
-         */
-        source = createSourceDirectory(dir1);
-        target = getTargetFile(dir2).createDirectory();
-        copyAndVerify(source, target, REPLACE_EXISTING);
-        source.delete();
-        target.delete();
-
-        /**
-         * Test: copy directory, target exists and is non-empty directory
-         */
-        source = createSourceDirectory(dir1);
-        target = getTargetFile(dir2).createDirectory();
-        entry = target.resolve("foo").createFile();
-        try {
-            copyAndVerify(source, target, REPLACE_EXISTING);
-            throw new RuntimeException("FileAlreadyExistsException expected");
-        } catch (FileAlreadyExistsException x) {
-        }
-        entry.delete();
-        source.delete();
-        target.delete();
-
-        /*
-         * Test: copy directory + attributes
-         */
-        source = createSourceDirectory(dir1);
-        target = getTargetFile(dir2);
-        copyAndVerify(source, target, COPY_ATTRIBUTES);
-        source.delete();
-        target.delete();
-
-        // -- symbolic links --
-
-        /**
-         * Test: Follow link
-         */
-        if (supportsLinks) {
-            source = createSourceFile(dir1);
-            link = dir1.resolve("link").createSymbolicLink(source);
-            target = getTargetFile(dir2);
-            copyAndVerify(link, target);
-            link.delete();
-            source.delete();
-        }
-
-        /**
-         * Test: Copy link (to file)
-         */
-        if (supportsLinks) {
-            source = createSourceFile(dir1);
-            link = dir1.resolve("link").createSymbolicLink(source);
-            target = getTargetFile(dir2);
-            copyAndVerify(link, target, NOFOLLOW_LINKS);
-            link.delete();
-            source.delete();
-        }
-
-        /**
-         * Test: Copy link (to directory)
-         */
-        if (supportsLinks) {
-            source = dir1.resolve("mydir").createDirectory();
-            link = dir1.resolve("link").createSymbolicLink(source);
-            target = getTargetFile(dir2);
-            copyAndVerify(link, target, NOFOLLOW_LINKS);
-            link.delete();
-            source.delete();
-        }
-
-        /**
-         * Test: Copy broken link
-         */
-        if (supportsLinks) {
-            assertTrue(source.notExists());
-            link = dir1.resolve("link").createSymbolicLink(source);
-            target = getTargetFile(dir2);
-            copyAndVerify(link, target, NOFOLLOW_LINKS);
-            link.delete();
-        }
-
-        /**
-         * Test: Copy link to UNC (Windows only)
-         */
-        if (supportsLinks &&
-            System.getProperty("os.name").startsWith("Windows"))
-        {
-            Path unc = Paths.get("\\\\rialto\\share\\file");
-            link = dir1.resolve("link").createSymbolicLink(unc);
-            target = getTargetFile(dir2);
-            copyAndVerify(link, target, NOFOLLOW_LINKS);
-            link.delete();
-        }
-
-        // -- misc. tests --
-
-        /**
-         * Test nulls
-         */
-        source = createSourceFile(dir1);
-        target = getTargetFile(dir2);
-        try {
-            source.copyTo(null);
-            throw new RuntimeException("NullPointerException expected");
-        } catch (NullPointerException x) { }
-        try {
-            source.copyTo(target, (CopyOption[])null);
-            throw new RuntimeException("NullPointerException expected");
-        } catch (NullPointerException x) { }
-        try {
-            CopyOption[] opts = { REPLACE_EXISTING, null };
-            source.copyTo(target, opts);
-            throw new RuntimeException("NullPointerException expected");
-        } catch (NullPointerException x) { }
-        source.delete();
-
-        /**
-         * Test UOE
-         */
-        source = createSourceFile(dir1);
-        target = getTargetFile(dir2);
-        try {
-            source.copyTo(target, new CopyOption() { });
-        } catch (UnsupportedOperationException x) { }
-        try {
-            source.copyTo(target, REPLACE_EXISTING,  new CopyOption() { });
-        } catch (UnsupportedOperationException x) { }
-        source.delete();
-    }
-
-
-    static void assertTrue(boolean value) {
-        if (!value)
-            throw new RuntimeException("Assertion failed");
-    }
-
-    // computes simple hash of the given file
-    static int computeHash(Path file) throws IOException {
-        int h = 0;
-
-        InputStream in = file.newInputStream();
-        try {
-            byte[] buf = new byte[1024];
-            int n;
-            do {
-                n = in.read(buf);
-                for (int i=0; i<n; i++) {
-                    h = 31*h + (buf[i] & 0xff);
-                }
-            } while (n > 0);
-        } finally {
-            in.close();
-        }
-        return h;
-    }
-
-    // create file of random size in given directory
-    static Path createSourceFile(Path dir) throws IOException {
-        String name = "source" + Integer.toString(rand.nextInt());
-        Path file = dir.resolve(name).createFile();
-        byte[] bytes = new byte[rand.nextInt(128*1024)];
-        rand.nextBytes(bytes);
-        OutputStream out = file.newOutputStream();
-        try {
-            out.write(bytes);
-        } finally {
-            out.close();
-        }
-        randomizeAttributes(file);
-        return file;
-    }
-
-    // create directory in the given directory
-    static Path createSourceDirectory(Path dir) throws IOException {
-        String name = "sourcedir" + Integer.toString(rand.nextInt());
-        Path subdir = dir.resolve(name).createDirectory();
-        randomizeAttributes(subdir);
-        return subdir;
-    }
-
-    // "randomize" the file attributes of the given file.
-    static void randomizeAttributes(Path file) throws IOException {
-        String os = System.getProperty("os.name");
-        boolean isWindows = os.startsWith("Windows");
-        boolean isUnix = os.equals("SunOS") || os.equals("Linux");
-        boolean isDirectory = Attributes.readBasicFileAttributes(file, NOFOLLOW_LINKS)
-            .isDirectory();
-
-        if (isUnix) {
-            Set<PosixFilePermission> perms = Attributes
-                .readPosixFileAttributes(file, NOFOLLOW_LINKS).permissions();
-            PosixFilePermission[] toChange = {
-                PosixFilePermission.GROUP_READ,
-                PosixFilePermission.GROUP_WRITE,
-                PosixFilePermission.GROUP_EXECUTE,
-                PosixFilePermission.OTHERS_READ,
-                PosixFilePermission.OTHERS_WRITE,
-                PosixFilePermission.OTHERS_EXECUTE
-            };
-            for (PosixFilePermission perm: toChange) {
-                if (heads()) {
-                    perms.add(perm);
-                } else {
-                    perms.remove(perm);
-                }
-            }
-            Attributes.setPosixFilePermissions(file, perms);
-        }
-
-        if (isWindows) {
-            DosFileAttributeView view = file
-                .getFileAttributeView(DosFileAttributeView.class, NOFOLLOW_LINKS);
-            // only set or unset the hidden attribute
-            view.setHidden(heads());
-        }
-
-        boolean addUserDefinedFileAttributes = heads() &&
-            file.getFileStore().supportsFileAttributeView("xattr");
-
-        // remove this when copying a direcory copies its named streams
-        if (isWindows && isDirectory) addUserDefinedFileAttributes = false;
-
-        if (addUserDefinedFileAttributes) {
-            UserDefinedFileAttributeView view = file
-                .getFileAttributeView(UserDefinedFileAttributeView.class);
-            int n = rand.nextInt(16);
-            while (n > 0) {
-                byte[] value = new byte[1 + rand.nextInt(100)];
-                view.write("user." + Integer.toString(n), ByteBuffer.wrap(value));
-                n--;
-            }
-        }
-    }
-
-    // create name for file in given directory
-    static Path getTargetFile(Path dir) throws IOException {
-        String name = "target" + Integer.toString(rand.nextInt());
-        return dir.resolve(name);
-    }
- }
--- a/jdk/test/java/nio/file/Path/DeleteOnClose.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-import java.nio.file.*;
-import static java.nio.file.StandardOpenOption.*;
-import java.io.*;
-import java.util.*;
-
-public class DeleteOnClose {
-
-    public static void main(String[] args) throws IOException {
-        // open file but do not close it. Its existance will be checked by
-        // the calling script.
-        Paths.get(args[0]).newByteChannel(READ, WRITE, DELETE_ON_CLOSE);
-
-        // check temporary file has been deleted after closing it
-        Path file = File.createTempFile("blah", "tmp").toPath();
-        file.newByteChannel(READ, WRITE, DELETE_ON_CLOSE).close();
-        if (file.exists())
-            throw new RuntimeException("Temporary file was not deleted");
-
-        Path dir = TestUtil.createTemporaryDirectory();
-        try {
-            // check that DELETE_ON_CLOSE fails when file is a sym link
-            if (TestUtil.supportsLinks(dir)) {
-                file = dir.resolve("foo").createFile();
-                Path link = dir.resolve("link").createSymbolicLink(file);
-                try {
-                    link.newByteChannel(READ, WRITE, DELETE_ON_CLOSE);
-                    throw new RuntimeException("IOException expected");
-                } catch (IOException ignore) { }
-            }
-
-            // check that DELETE_ON_CLOSE works with files created via open
-            // directories
-            DirectoryStream stream = dir.newDirectoryStream();
-            try {
-                if (stream instanceof SecureDirectoryStream) {
-                    SecureDirectoryStream secure = (SecureDirectoryStream)stream;
-                    file = Paths.get("foo");
-
-                    Set<OpenOption> opts = new HashSet<OpenOption>();
-                    opts.add(WRITE);
-                    opts.add(DELETE_ON_CLOSE);
-                    secure.newByteChannel(file, opts).close();
-
-                    if (dir.resolve(file).exists())
-                        throw new RuntimeException("File not deleted");
-                }
-            } finally {
-                stream.close();
-            }
-        } finally {
-            TestUtil.removeAll(dir);
-        }
-    }
-}
--- a/jdk/test/java/nio/file/Path/FileAttributes.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,264 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-/* @test
- * @bug 4313887 6838333
- * @summary Unit test for java.nio.file.Path
- * @library ..
- */
-
-import java.nio.file.*;
-import java.nio.file.attribute.*;
-import java.io.IOException;
-import java.util.*;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Exercises getAttribute/setAttribute/readAttributes methods.
- */
-
-public class FileAttributes {
-
-    static void assertTrue(boolean okay) {
-        if (!okay)
-            throw new RuntimeException("Assertion Failed");
-    }
-
-    static void checkEqual(Object o1, Object o2) {
-        if (o1 == null) {
-            assertTrue(o2 == null);
-        } else {
-            assertTrue (o1.equals(o2));
-        }
-    }
-
-    // checks that two time values are within 1s of each other
-    static void checkNearEqual(FileTime t1, FileTime t2) {
-        long diff = Math.abs(t1.toMillis() - t2.toMillis());
-        assertTrue(diff <= 1000);
-    }
-
-    // Exercise getAttribute/setAttribute/readAttributes on basic attributes
-    static void checkBasicAttributes(FileRef file, BasicFileAttributes attrs)
-        throws IOException
-    {
-        // getAttribute
-        checkEqual(attrs.size(), file.getAttribute("size"));
-        checkEqual(attrs.lastModifiedTime(), file.getAttribute("basic:lastModifiedTime"));
-        checkEqual(attrs.lastAccessTime(), file.getAttribute("lastAccessTime"));
-        checkEqual(attrs.creationTime(), file.getAttribute("basic:creationTime"));
-        assertTrue((Boolean)file.getAttribute("isRegularFile"));
-        assertTrue(!(Boolean)file.getAttribute("basic:isDirectory"));
-        assertTrue(!(Boolean)file.getAttribute("isSymbolicLink"));
-        assertTrue(!(Boolean)file.getAttribute("basic:isOther"));
-        checkEqual(attrs.fileKey(), file.getAttribute("basic:fileKey"));
-
-        // setAttribute
-        FileTime modTime = attrs.lastModifiedTime();
-        file.setAttribute("basic:lastModifiedTime", FileTime.fromMillis(0L));
-        checkEqual(Attributes.readBasicFileAttributes(file).lastModifiedTime(),
-                   FileTime.fromMillis(0L));
-        file.setAttribute("lastModifiedTime", modTime);
-        checkEqual(Attributes.readBasicFileAttributes(file).lastModifiedTime(), modTime);
-
-        Map<String,?> map;
-        map = file.readAttributes("*");
-        assertTrue(map.size() >= 9);
-        checkEqual(attrs.isRegularFile(), map.get("isRegularFile")); // check one
-
-        map = file.readAttributes("basic:*");
-        assertTrue(map.size() >= 9);
-        checkEqual(attrs.lastAccessTime(), map.get("lastAccessTime")); // check one
-
-        map = file.readAttributes("size,lastModifiedTime");
-        assertTrue(map.size() == 2);
-        checkEqual(attrs.size(), map.get("size"));
-        checkEqual(attrs.lastModifiedTime(), map.get("lastModifiedTime"));
-
-        map = file.readAttributes(
-            "basic:lastModifiedTime,lastAccessTime,ShouldNotExist");
-        assertTrue(map.size() == 2);
-        checkEqual(attrs.lastModifiedTime(), map.get("lastModifiedTime"));
-        checkEqual(attrs.lastAccessTime(), map.get("lastAccessTime"));
-    }
-
-    // Exercise getAttribute/setAttribute/readAttributes on posix attributes
-    static void checkPosixAttributes(FileRef file, PosixFileAttributes attrs)
-        throws IOException
-    {
-        checkBasicAttributes(file, attrs);
-
-        // getAttribute
-        checkEqual(attrs.permissions(), file.getAttribute("posix:permissions"));
-        checkEqual(attrs.owner(), file.getAttribute("posix:owner"));
-        checkEqual(attrs.group(), file.getAttribute("posix:group"));
-
-        // setAttribute
-        Set<PosixFilePermission> orig = attrs.permissions();
-        Set<PosixFilePermission> newPerms = new HashSet<PosixFilePermission>(orig);
-        newPerms.remove(PosixFilePermission.OTHERS_READ);
-        newPerms.remove(PosixFilePermission.OTHERS_WRITE);
-        newPerms.remove(PosixFilePermission.OTHERS_EXECUTE);
-        file.setAttribute("posix:permissions", newPerms);
-        checkEqual(Attributes.readPosixFileAttributes(file).permissions(), newPerms);
-        file.setAttribute("posix:permissions", orig);
-        checkEqual(Attributes.readPosixFileAttributes(file).permissions(), orig);
-        file.setAttribute("posix:owner", attrs.owner());
-        file.setAttribute("posix:group", attrs.group());
-
-        // readAttributes
-        Map<String,?> map;
-        map = file.readAttributes("posix:*");
-        assertTrue(map.size() >= 12);
-        checkEqual(attrs.permissions(), map.get("permissions")); // check one
-
-        map = file.readAttributes("posix:size,owner,ShouldNotExist");
-        assertTrue(map.size() == 2);
-        checkEqual(attrs.size(), map.get("size"));
-        checkEqual(attrs.owner(), map.get("owner"));
-    }
-
-    // Exercise getAttribute/readAttributes on unix attributes
-    static void checkUnixAttributes(FileRef file) throws IOException {
-        // getAttribute
-        int mode = (Integer)file.getAttribute("unix:mode");
-        long ino = (Long)file.getAttribute("unix:ino");
-        long dev = (Long)file.getAttribute("unix:dev");
-        long rdev = (Long)file.getAttribute("unix:rdev");
-        int nlink = (Integer)file.getAttribute("unix:nlink");
-        int uid = (Integer)file.getAttribute("unix:uid");
-        int gid = (Integer)file.getAttribute("unix:gid");
-        FileTime ctime = (FileTime)file.getAttribute("unix:ctime");
-
-        // readAttributes
-        Map<String,?> map;
-        map = file.readAttributes("unix:*");
-        assertTrue(map.size() >= 20);
-
-        map = file.readAttributes("unix:size,uid,gid,ShouldNotExist");
-        assertTrue(map.size() == 3);
-        checkEqual(map.get("size"),
-                   Attributes.readBasicFileAttributes(file).size());
-    }
-
-    // Exercise getAttribute/setAttribute on dos attributes
-    static void checkDosAttributes(FileRef file, DosFileAttributes attrs)
-        throws IOException
-    {
-        checkBasicAttributes(file, attrs);
-
-        // getAttribute
-        checkEqual(attrs.isReadOnly(), file.getAttribute("dos:readonly"));
-        checkEqual(attrs.isHidden(), file.getAttribute("dos:hidden"));
-        checkEqual(attrs.isSystem(), file.getAttribute("dos:system"));
-        checkEqual(attrs.isArchive(), file.getAttribute("dos:archive"));
-
-        // setAttribute
-        boolean value;
-
-        value = attrs.isReadOnly();
-        file.setAttribute("dos:readonly", !value);
-        checkEqual(Attributes.readDosFileAttributes(file).isReadOnly(), !value);
-        file.setAttribute("dos:readonly", value);
-        checkEqual(Attributes.readDosFileAttributes(file).isReadOnly(), value);
-
-        value = attrs.isHidden();
-        file.setAttribute("dos:hidden", !value);
-        checkEqual(Attributes.readDosFileAttributes(file).isHidden(), !value);
-        file.setAttribute("dos:hidden", value);
-        checkEqual(Attributes.readDosFileAttributes(file).isHidden(), value);
-
-        value = attrs.isSystem();
-        file.setAttribute("dos:system", !value);
-        checkEqual(Attributes.readDosFileAttributes(file).isSystem(), !value);
-        file.setAttribute("dos:system", value);
-        checkEqual(Attributes.readDosFileAttributes(file).isSystem(), value);
-
-        value = attrs.isArchive();
-        file.setAttribute("dos:archive", !value);
-        checkEqual(Attributes.readDosFileAttributes(file).isArchive(), !value);
-        file.setAttribute("dos:archive", value);
-        checkEqual(Attributes.readDosFileAttributes(file).isArchive(), value);
-
-        // readAttributes
-        Map<String,?> map;
-        map = file.readAttributes("dos:*");
-        assertTrue(map.size() >= 13);
-        checkEqual(attrs.isReadOnly(), map.get("readonly")); // check one
-
-        map = file.readAttributes("dos:size,hidden,ShouldNotExist");
-        assertTrue(map.size() == 2);
-        checkEqual(attrs.size(), map.get("size"));
-        checkEqual(attrs.isHidden(), map.get("hidden"));
-    }
-
-    static void miscTests(Path file) throws IOException {
-        // NPE tests
-        try {
-            file.getAttribute(null);
-            throw new RuntimeException("NullPointerException expected");
-        } catch (NullPointerException npe) { }
-        try {
-            file.getAttribute("isRegularFile", (LinkOption[])null);
-            throw new RuntimeException("NullPointerException expected");
-        } catch (NullPointerException npe) { }
-        try {
-            file.setAttribute(null, 0L);
-            throw new RuntimeException("NullPointerException expected");
-        } catch (NullPointerException npe) { }
-    }
-
-    static void doTests(Path dir) throws IOException {
-        Path file = dir.resolve("foo").createFile();
-        FileStore store = file.getFileStore();
-        try {
-            checkBasicAttributes(file,
-                Attributes.readBasicFileAttributes(file));
-
-            if (store.supportsFileAttributeView("posix"))
-                checkPosixAttributes(file,
-                    Attributes.readPosixFileAttributes(file));
-
-            if (store.supportsFileAttributeView("unix"))
-                checkUnixAttributes(file);
-
-            if (store.supportsFileAttributeView("dos"))
-                checkDosAttributes(file,
-                    Attributes.readDosFileAttributes(file));
-
-            miscTests(file);
-        } finally {
-            file.delete();
-        }
-    }
-
-
-    public static void main(String[] args) throws IOException {
-        Path dir = TestUtil.createTemporaryDirectory();
-        try {
-            doTests(dir);
-        } finally {
-            TestUtil.removeAll(dir);
-        }
-    }
-}
--- a/jdk/test/java/nio/file/Path/InterruptCopy.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +0,0 @@
-/*
- * Copyright (c) 2008, 2010, 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.
- */
-
-/* @test
- * @bug 4313887 6993267
- * @summary Unit test for Sun-specific ExtendedCopyOption.INTERRUPTIBLE option
- * @library ..
- * @run main/othervm -XX:-UseVMInterruptibleIO InterruptCopy
- */
-
-import java.nio.file.*;
-import java.nio.file.attribute.Attributes;
-import java.io.*;
-import java.util.concurrent.*;
-import com.sun.nio.file.ExtendedCopyOption;
-
-public class InterruptCopy {
-
-    private static final long FILE_SIZE_TO_COPY = 512L * 1024L * 1024L;
-    private static final int DELAY_IN_MS = 500;
-    private static final int DURATION_MAX_IN_MS = 5000;
-
-    public static void main(String[] args) throws Exception {
-        Path dir = TestUtil.createTemporaryDirectory();
-        try {
-            FileStore store = dir.getFileStore();
-            System.out.format("Checking space (%s)\n", store);
-            long usableSpace = Attributes
-                .readFileStoreSpaceAttributes(store).usableSpace();
-            if (usableSpace < 2*FILE_SIZE_TO_COPY) {
-                System.out.println("Insufficient disk space to run test.");
-                return;
-            }
-            doTest(dir);
-        } finally {
-            TestUtil.removeAll(dir);
-        }
-    }
-
-    static void doTest(Path dir) throws Exception {
-        final Path source = dir.resolve("foo");
-        final Path target = dir.resolve("bar");
-
-        // create source file (don't create it as sparse file because we
-        // require the copy to take a long time)
-        System.out.println("Creating source file...");
-        byte[] buf = new byte[32*1024];
-        long total = 0;
-        OutputStream out = source.newOutputStream();
-        try {
-            do {
-                out.write(buf);
-                total += buf.length;
-            } while (total < FILE_SIZE_TO_COPY);
-        } finally {
-            out.close();
-        }
-        System.out.println("Source file created.");
-
-        ScheduledExecutorService pool =
-            Executors.newSingleThreadScheduledExecutor();
-        try {
-            // copy source to target in main thread, interrupting it after a delay
-            final Thread me = Thread.currentThread();
-            Future<?> wakeup = pool.schedule(new Runnable() {
-                public void run() {
-                    me.interrupt();
-                }}, DELAY_IN_MS, TimeUnit.MILLISECONDS);
-            System.out.println("Copying file...");
-            try {
-                long start = System.currentTimeMillis();
-                source.copyTo(target, ExtendedCopyOption.INTERRUPTIBLE);
-                long duration = System.currentTimeMillis() - start;
-                if (duration > DURATION_MAX_IN_MS)
-                    throw new RuntimeException("Copy was not interrupted");
-            } catch (IOException e) {
-                boolean interrupted = Thread.interrupted();
-                if (!interrupted)
-                    throw new RuntimeException("Interrupt status was not set");
-                System.out.println("Copy failed (this is expected)");
-            }
-            try {
-                wakeup.get();
-            } catch (InterruptedException ignore) { }
-            Thread.interrupted();
-
-            // copy source to target via task in thread pool, interrupting it after
-            // a delay using cancel(true)
-            Future<Void> result = pool.submit(new Callable<Void>() {
-                public Void call() throws IOException {
-                    System.out.println("Copying file...");
-                    source.copyTo(target, ExtendedCopyOption.INTERRUPTIBLE,
-                        StandardCopyOption.REPLACE_EXISTING);
-                    return null;
-                }
-            });
-            Thread.sleep(DELAY_IN_MS);
-            boolean cancelled = result.cancel(true);
-            if (!cancelled)
-                result.get();
-            System.out.println("Copy cancelled.");
-        } finally {
-            pool.shutdown();
-        }
-    }
-}
--- a/jdk/test/java/nio/file/Path/Links.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,195 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-/* @test
- * @bug 4313887 6838333 6863864
- * @summary Unit test for java.nio.file.Path createSymbolicLink,
- *     readSymbolicLink, and createLink methods
- * @library ..
- * @build Links
- * @run main/othervm Links
- */
-
-import java.nio.file.*;
-import java.nio.file.attribute.*;
-import java.io.*;
-
-public class Links {
-
-    static final boolean isWindows =
-        System.getProperty("os.name").startsWith("Windows");
-
-    static void assertTrue(boolean okay) {
-        if (!okay)
-            throw new RuntimeException("Assertion failed");
-    }
-
-    /**
-     * Exercise createSymbolicLink and readLink methods
-     */
-    static void testSymLinks(Path dir) throws IOException {
-        final Path link = dir.resolve("link");
-
-        // Check if sym links are supported
-        try {
-            link.createSymbolicLink(Paths.get("foo"));
-            link.delete();
-        } catch (UnsupportedOperationException x) {
-            // sym links not supported
-            return;
-        } catch (IOException x) {
-            // probably insufficient privileges to create sym links (Windows)
-            return;
-        }
-
-        // Test links to various targets
-        String[] windowsTargets =
-            { "foo", "C:\\foo", "\\foo", "\\\\server\\share\\foo" };
-        String[] otherTargets = { "relative", "/absolute" };
-
-        String[] targets = (isWindows) ? windowsTargets : otherTargets;
-        for (String s: targets) {
-            Path target = Paths.get(s);
-            link.createSymbolicLink(target);
-            try {
-                assertTrue(link.readSymbolicLink().equals(target));
-            } finally {
-                link.delete();
-            }
-        }
-
-        // Test links to directory
-        Path mydir = dir.resolve("mydir");
-        Path myfile = mydir.resolve("myfile");
-        try {
-            mydir.createDirectory();
-            myfile.createFile();
-
-            // link -> "mydir"
-            link.createSymbolicLink(mydir.getName());
-            assertTrue(link.readSymbolicLink().equals(mydir.getName()));
-
-            // Test access to directory via link
-            DirectoryStream<Path> stream = link.newDirectoryStream();
-            try {
-                boolean found = false;
-                for (Path entry: stream) {
-                    if (entry.getName().equals(myfile.getName())) {
-                        found = true;
-                        break;
-                    }
-                }
-                assertTrue(found);
-            } finally {
-                stream.close();
-            }
-
-            // Test link2 -> link -> mydir
-            final Path link2 = dir.resolve("link2");
-            Path target2 = link.getName();
-            link2.createSymbolicLink(target2);
-            try {
-                assertTrue(link2.readSymbolicLink().equals(target2));
-                link2.newDirectoryStream().close();
-            } finally {
-                link2.delete();
-            }
-
-            // Remove mydir and re-create link2 before re-creating mydir
-            // (This is a useful test on Windows to ensure that creating a
-            // sym link to a directory sym link creates the right type of link).
-            myfile.delete();
-            mydir.delete();
-            link2.createSymbolicLink(target2);
-            try {
-                assertTrue(link2.readSymbolicLink().equals(target2));
-                mydir.createDirectory();
-                link2.newDirectoryStream().close();
-            } finally {
-                link2.delete();
-            }
-
-        } finally {
-            myfile.deleteIfExists();
-            mydir.deleteIfExists();
-            link.deleteIfExists();
-        }
-    }
-
-    /**
-     * Exercise createLink method
-     */
-    static void testHardLinks(Path dir) throws IOException {
-        Path foo = dir.resolve("foo").createFile();
-        try {
-            Path bar;
-            try {
-                bar = dir.resolve("bar").createLink(foo);
-            } catch (UnsupportedOperationException x) {
-                return;
-            } catch (IOException x) {
-                // probably insufficient privileges (Windows)
-                return;
-            }
-            try {
-                Object key1 = Attributes
-                    .readBasicFileAttributes(foo).fileKey();
-                Object key2 = Attributes
-                    .readBasicFileAttributes(bar).fileKey();
-                assertTrue((key1 == null) || (key1.equals(key2)));
-            } finally {
-                bar.delete();
-            }
-
-
-        } finally {
-            foo.delete();
-        }
-    }
-
-    public static void main(String[] args) throws IOException {
-        Path dir = TestUtil.createTemporaryDirectory();
-        try {
-            testSymLinks(dir);
-            testHardLinks(dir);
-
-            // repeat tests on Windows with long path
-            if (isWindows) {
-                Path dirWithLongPath = null;
-                try {
-                    dirWithLongPath = TestUtil.createDirectoryWithLongPath(dir);
-                } catch (IOException x) {
-                    System.out.println("Unable to create long path: " + x);
-                }
-                if (dirWithLongPath != null) {
-                    System.out.println("");
-                    System.out.println("** REPEAT TESTS WITH LONG PATH **");
-                    testSymLinks(dirWithLongPath);
-                    testHardLinks(dirWithLongPath);
-                }
-            }
-        } finally {
-            TestUtil.removeAll(dir);
-        }
-    }
-}
--- a/jdk/test/java/nio/file/Path/Misc.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/file/Path/Misc.java	Wed Jul 05 17:35:13 2017 +0200
@@ -22,17 +22,13 @@
  */
 
 /* @test
- * @bug 4313887 6838333 6867101
- * @summary Unit test for java.nio.file.Path for miscellenous methods not
- *   covered by other tests
+ * @bug 4313887 6838333
+ * @summary Unit test for miscellenous java.nio.file.Path methods
  * @library ..
  */
 
 import java.nio.file.*;
-import static java.nio.file.LinkOption.*;
-import java.nio.file.attribute.*;
 import java.io.*;
-import java.util.*;
 
 public class Misc {
     static final boolean isWindows =
@@ -45,22 +41,14 @@
             supportsLinks = TestUtil.supportsLinks(dir);
 
             // equals and hashCode methods
-            equalsAndHashCode();
+            testEqualsAndHashCode();
 
-            // checkAccess method
-            checkAccessTests(dir);
-
-            // getFileAttributeView methods
-            getFileAttributeViewTests(dir);
+            // toFile method
+            testToFile(dir);
 
             // toRealPath method
-            toRealPathTests(dir);
+            testToRealPath(dir);
 
-            // isSameFile method
-            isSameFileTests(dir);
-
-            // isHidden method
-            isHiddenTests(dir);
 
         } finally {
             TestUtil.removeAll(dir);
@@ -70,8 +58,7 @@
     /**
      * Exercise equals and hashCode methods
      */
-    static void equalsAndHashCode() {
-
+    static void testEqualsAndHashCode() {
         Path thisFile = Paths.get("this");
         Path thatFile = Paths.get("that");
 
@@ -93,172 +80,25 @@
     }
 
     /**
-     * Exercise checkAccess method
+     * Exercise toFile method
      */
-    static void checkAccessTests(Path dir) throws IOException {
-        final Path file = dir.resolve("foo").createFile();
-
-        /**
-         * Test: This directory should readable and writable
-         */
-        dir.checkAccess();
-        dir.checkAccess(AccessMode.READ);
-        dir.checkAccess(AccessMode.WRITE);
-        dir.checkAccess(AccessMode.READ, AccessMode.WRITE);
-
-        /**
-         * Test: Check access to all files in all root directories.
-         * (A useful test on Windows for special files such as pagefile.sys)
-         */
-        for (Path root: FileSystems.getDefault().getRootDirectories()) {
-            DirectoryStream<Path> stream;
-            try {
-                stream = root.newDirectoryStream();
-            } catch (IOException x) {
-                continue; // skip root directories that aren't accessible
-            }
-            try {
-                for (Path entry: stream) {
-                    try {
-                        entry.checkAccess();
-                    } catch (AccessDeniedException ignore) { }
-                }
-            } finally {
-                stream.close();
-            }
-        }
-
-        /**
-         * Test: File does not exist
-         */
-        Path doesNotExist = dir.resolve("thisDoesNotExists");
-        try {
-            doesNotExist.checkAccess();
-            throw new RuntimeException("NoSuchFileException expected");
-        } catch (NoSuchFileException x) {
-        }
-        try {
-            doesNotExist.checkAccess(AccessMode.READ);
-            throw new RuntimeException("NoSuchFileException expected");
-        } catch (NoSuchFileException x) {
-        }
-        try {
-            doesNotExist.checkAccess(AccessMode.WRITE);
-            throw new RuntimeException("NoSuchFileException expected");
-        } catch (NoSuchFileException x) {
-        }
-        try {
-            doesNotExist.checkAccess(AccessMode.EXECUTE);
-            throw new RuntimeException("NoSuchFileException expected");
-        } catch (NoSuchFileException x) {
-        }
-
-        /**
-         * Test: Edit ACL to deny WRITE and EXECUTE
-         */
-        AclFileAttributeView view = file
-            .getFileAttributeView(AclFileAttributeView.class);
-        if (view != null &&
-            file.getFileStore().supportsFileAttributeView("acl"))
-        {
-            UserPrincipal owner = view.getOwner();
-            List<AclEntry> acl = view.getAcl();
-
-            // Insert entry to deny WRITE and EXECUTE
-            AclEntry entry = AclEntry.newBuilder()
-                .setType(AclEntryType.DENY)
-                .setPrincipal(owner)
-                .setPermissions(AclEntryPermission.WRITE_DATA,
-                    AclEntryPermission.EXECUTE)
-                .build();
-            acl.add(0, entry);
-            view.setAcl(acl);
-
-            try {
-                file.checkAccess(AccessMode.WRITE);
-                throw new RuntimeException("AccessDeniedException expected");
-            } catch (AccessDeniedException x) {
-            }
-
-            try {
-                file.checkAccess(AccessMode.EXECUTE);
-                throw new RuntimeException("AccessDeniedException expected");
-            } catch (AccessDeniedException x) {
-            }
-
-
-            // Restore ACL
-            acl.remove(0);
-            view.setAcl(acl);
-        }
-
-        /**
-         * Test: Windows DOS read-only attribute
-         */
-        if (isWindows) {
-            DosFileAttributeView dview =
-                file.getFileAttributeView(DosFileAttributeView.class);
-            dview.setReadOnly(true);
-            try {
-                file.checkAccess(AccessMode.WRITE);
-                throw new RuntimeException("AccessDeniedException expected");
-            } catch (AccessDeniedException x) {
-            }
-            dview.setReadOnly(false);
-
-            // Read-only attribute does not make direcory read-only
-            dview = dir.getFileAttributeView(DosFileAttributeView.class);
-            boolean save = dview.readAttributes().isReadOnly();
-            dview.setReadOnly(true);
-            dir.checkAccess(AccessMode.WRITE);
-            dview.setReadOnly(save);
-        }
-
-        /**
-         * Test: null
-         */
-        try {
-            file.checkAccess((AccessMode)null);
-            throw new RuntimeException("NullPointerException expected");
-        } catch (NullPointerException ignore) { }
-
-        // clean-up
-        file.delete();
+    static void testToFile(Path dir) throws IOException {
+        File d = dir.toFile();
+        assertTrue(d.toString().equals(dir.toString()));
+        assertTrue(d.toPath().equals(dir));
     }
 
     /**
-     * Exercise getFileAttributeFile methods
-     */
-    static void getFileAttributeViewTests(Path dir) {
-        assertTrue(dir.getFileAttributeView(BasicFileAttributeView.class)
-            instanceof BasicFileAttributeView);
-        assertTrue(dir.getFileAttributeView(BasicFileAttributeView.class, NOFOLLOW_LINKS)
-            instanceof BasicFileAttributeView);
-        assertTrue(dir.getFileAttributeView(BogusFileAttributeView.class) == null);
-        try {
-            dir.getFileAttributeView((Class<FileAttributeView>)null);
-        } catch (NullPointerException ignore) { }
-        try {
-            dir.getFileAttributeView(BasicFileAttributeView.class, (LinkOption[])null);
-        } catch (NullPointerException ignore) { }
-        try {
-            dir.getFileAttributeView(BasicFileAttributeView.class, (LinkOption)null);
-        } catch (NullPointerException ignore) { }
-
-    }
-    interface BogusFileAttributeView extends FileAttributeView { }
-
-    /**
      * Exercise toRealPath method
      */
-    static void toRealPathTests(Path dir) throws IOException {
-        final Path file = dir.resolve("foo").createFile();
+    static void testToRealPath(Path dir) throws IOException {
+        final Path file = Files.createFile(dir.resolve("foo"));
         final Path link = dir.resolve("link");
 
         /**
-         * Test: toRealPath(true) will access same file as toRealPath(false)
+         * Test: totRealPath(true) will access same file as toRealPath(false)
          */
-        assertTrue(file.toRealPath(true).isSameFile(file.toRealPath(false)));
+        assertTrue(Files.isSameFile(file.toRealPath(true), file.toRealPath(false)));
 
         /**
          * Test: toRealPath should fail if file does not exist
@@ -279,29 +119,27 @@
          * Test: toRealPath(true) should resolve links
          */
         if (supportsLinks) {
-            link.createSymbolicLink(file.toAbsolutePath());
+            Files.createSymbolicLink(link, file.toAbsolutePath());
             assertTrue(link.toRealPath(true).equals(file.toRealPath(true)));
-            link.delete();
+            Files.delete(link);
         }
 
-
         /**
          * Test: toRealPath(false) should not resolve links
          */
         if (supportsLinks) {
-            link.createSymbolicLink(file.toAbsolutePath());
-            assertTrue(link.toRealPath(false).getName().equals(link.getName()));
-            link.delete();
+            Files.createSymbolicLink(link, file.toAbsolutePath());
+            assertTrue(link.toRealPath(false).getFileName().equals(link.getFileName()));
+            Files.delete(link);
         }
 
         /**
          * Test: toRealPath(false) with broken link
          */
         if (supportsLinks) {
-            Path broken = dir.resolve("doesNotExist");
-            link.createSymbolicLink(broken);
-            assertTrue(link.toRealPath(false).getName().equals(link.getName()));
-            link.delete();
+            Path broken = Files.createSymbolicLink(link, doesNotExist);
+            assertTrue(link.toRealPath(false).getFileName().equals(link.getFileName()));
+            Files.delete(link);
         }
 
         /**
@@ -314,105 +152,13 @@
          * Test: toRealPath should eliminate ".." when it doesn't follow a
          *       symbolic link
          */
-        Path subdir = dir.resolve("subdir").createDirectory();
+        Path subdir = Files.createDirectory(dir.resolve("subdir"));
         assertTrue(subdir.resolve("..").toRealPath(true).equals(dir.toRealPath(true)));
         assertTrue(subdir.resolve("..").toRealPath(false).equals(dir.toRealPath(false)));
-        subdir.delete();
+        Files.delete(subdir);
 
         // clean-up
-        file.delete();
-    }
-
-    /**
-     * Exercise isSameFile method
-     */
-    static void isSameFileTests(Path dir) throws IOException {
-        Path thisFile = dir.resolve("thisFile");
-        Path thatFile = dir.resolve("thatFile");
-
-        /**
-         * Test: isSameFile for self and null
-         */
-        assertTrue(thisFile.isSameFile(thisFile));
-        assertTrue(!thisFile.isSameFile(null));
-
-        /**
-         * Test: Neither files exist
-         */
-        try {
-            thisFile.isSameFile(thatFile);
-            throw new RuntimeException("IOException not thrown");
-        } catch (IOException x) {
-        }
-        try {
-            thatFile.isSameFile(thisFile);
-            throw new RuntimeException("IOException not thrown");
-        } catch (IOException x) {
-        }
-
-        thisFile.createFile();
-        try {
-            /**
-             * Test: One file exists
-             */
-            try {
-                thisFile.isSameFile(thatFile);
-                throw new RuntimeException("IOException not thrown");
-            } catch (IOException x) {
-            }
-            try {
-                thatFile.isSameFile(thisFile);
-                throw new RuntimeException("IOException not thrown");
-            } catch (IOException x) {
-            }
-
-            thatFile.createFile();
-
-            /**
-             * Test: Both file exists
-             */
-            try {
-                assertTrue(!thisFile.isSameFile(thatFile));
-                assertTrue(!thatFile.isSameFile(thisFile));
-            } finally {
-                TestUtil.deleteUnchecked(thatFile);
-            }
-
-            /**
-             * Test: Symbolic links
-             */
-            if (supportsLinks) {
-                thatFile.createSymbolicLink(thisFile);
-                try {
-                    assertTrue(thisFile.isSameFile(thatFile));
-                    assertTrue(thatFile.isSameFile(thisFile));
-                } finally {
-                    TestUtil.deleteUnchecked(thatFile);
-                }
-            }
-        } finally {
-            thisFile.delete();
-        }
-    }
-
-    /**
-     * Exercise isHidden method
-     */
-    static void isHiddenTests(Path dir) throws IOException {
-        assertTrue(!dir.isHidden());
-
-        Path file = dir.resolve(".foo");
-        if (isWindows) {
-            file.createFile();
-            try {
-                file.setAttribute("dos:hidden", true);
-                assertTrue(file.isHidden());
-            } finally {
-                file.delete();
-            }
-        } else {
-            assertTrue(file.isHidden());
-        }
+        Files.delete(file);
     }
 
     static void assertTrue(boolean okay) {
--- a/jdk/test/java/nio/file/Path/PassThroughFileSystem.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,554 +0,0 @@
-/*
- * Copyright (c) 2010, 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.
- */
-
-import java.nio.file.*;
-import java.nio.file.attribute.*;
-import java.nio.file.spi.FileSystemProvider;
-import java.nio.channels.SeekableByteChannel;
-import java.net.URI;
-import java.util.*;
-import java.io.*;
-
-/**
- * A "pass through" file system implementation that passes through, or delegates,
- * everything to the default file system.
- */
-
-class PassThroughFileSystem extends FileSystem {
-    private final FileSystemProvider provider;
-    private final FileSystem delegate;
-
-    PassThroughFileSystem(FileSystemProvider provider, FileSystem delegate) {
-        this.provider = provider;
-        this.delegate = delegate;
-    }
-
-    /**
-     * Creates a new "pass through" file system. Useful for test environments
-     * where the provider might not be deployed.
-     */
-    static FileSystem create() throws IOException {
-        FileSystemProvider provider = new PassThroughProvider();
-        Map<String,?> env = Collections.emptyMap();
-        URI uri = URI.create("pass:///");
-        return provider.newFileSystem(uri, env);
-    }
-
-    @Override
-    public FileSystemProvider provider() {
-        return provider;
-    }
-
-    @Override
-    public void close() throws IOException {
-        delegate.close();
-    }
-
-    @Override
-    public boolean isOpen() {
-        return delegate.isOpen();
-    }
-
-    @Override
-    public boolean isReadOnly() {
-        return delegate.isReadOnly();
-    }
-
-    @Override
-    public String getSeparator() {
-        return delegate.getSeparator();
-    }
-
-    @Override
-    public Iterable<Path> getRootDirectories() {
-        final Iterable<Path> roots = delegate.getRootDirectories();
-        return new Iterable<Path>() {
-            @Override
-            public Iterator<Path> iterator() {
-                final Iterator<Path> itr = roots.iterator();
-                return new Iterator<Path>() {
-                    @Override
-                    public boolean hasNext() {
-                        return itr.hasNext();
-                    }
-                    @Override
-                    public Path next() {
-                        return new PassThroughPath(delegate, itr.next());
-                    }
-                    @Override
-                    public void remove() {
-                        itr.remove();
-                    }
-                };
-            }
-        };
-    }
-
-    @Override
-    public Iterable<FileStore> getFileStores() {
-        // assume that unwrapped objects aren't exposed
-        return delegate.getFileStores();
-    }
-
-    @Override
-    public Set<String> supportedFileAttributeViews() {
-        // assume that unwrapped objects aren't exposed
-        return delegate.supportedFileAttributeViews();
-    }
-
-    @Override
-    public Path getPath(String path) {
-        return new PassThroughPath(this, delegate.getPath(path));
-    }
-
-    @Override
-    public PathMatcher getPathMatcher(String syntaxAndPattern) {
-        final PathMatcher matcher = delegate.getPathMatcher(syntaxAndPattern);
-        return new PathMatcher() {
-            @Override
-            public boolean matches(Path path) {
-                return matcher.matches(PassThroughPath.unwrap(path));
-            }
-        };
-    }
-
-    @Override
-    public UserPrincipalLookupService getUserPrincipalLookupService() {
-        // assume that unwrapped objects aren't exposed
-        return delegate.getUserPrincipalLookupService();
-    }
-
-    @Override
-    public WatchService newWatchService() throws IOException {
-        // to keep it simple
-        throw new UnsupportedOperationException();
-    }
-
-    static class PassThroughProvider extends FileSystemProvider {
-        private static final String SCHEME = "pass";
-        private static volatile PassThroughFileSystem delegate;
-
-        public PassThroughProvider() { }
-
-        @Override
-        public String getScheme() {
-            return SCHEME;
-        }
-
-        private void checkScheme(URI uri) {
-            if (!uri.getScheme().equalsIgnoreCase(SCHEME))
-                throw new IllegalArgumentException();
-        }
-
-        private void checkUri(URI uri) {
-            checkScheme(uri);
-            if (!uri.getSchemeSpecificPart().equals("///"))
-                throw new IllegalArgumentException();
-        }
-
-        @Override
-        public FileSystem newFileSystem(URI uri, Map<String,?> env)
-            throws IOException
-        {
-            checkUri(uri);
-            synchronized (PassThroughProvider.class) {
-                if (delegate != null)
-                    throw new FileSystemAlreadyExistsException();
-                PassThroughFileSystem result =
-                    new PassThroughFileSystem(this, FileSystems.getDefault());
-                delegate = result;
-                return result;
-            }
-        }
-
-        @Override
-        public FileSystem getFileSystem(URI uri) {
-            checkUri(uri);
-            FileSystem result = delegate;
-            if (result == null)
-                throw new FileSystemNotFoundException();
-            return result;
-        }
-
-        @Override
-        public Path getPath(URI uri) {
-            checkScheme(uri);
-            if (delegate == null)
-                throw new FileSystemNotFoundException();
-            uri = URI.create(delegate.provider().getScheme() + ":" +
-                             uri.getSchemeSpecificPart());
-            return new PassThroughPath(delegate, delegate.provider().getPath(uri));
-        }
-    }
-
-    static class PassThroughPath extends Path {
-        private final FileSystem fs;
-        private final Path delegate;
-
-        PassThroughPath(FileSystem fs, Path delegate) {
-            this.fs = fs;
-            this.delegate = delegate;
-        }
-
-        private Path wrap(Path path) {
-            return (path != null) ? new PassThroughPath(fs, path) : null;
-        }
-
-        static Path unwrap(Path wrapper) {
-            if (!(wrapper instanceof PassThroughPath))
-                throw new ProviderMismatchException();
-            return ((PassThroughPath)wrapper).delegate;
-        }
-
-        @Override
-        public FileSystem getFileSystem() {
-            return fs;
-        }
-
-        @Override
-        public boolean isAbsolute() {
-            return delegate.isAbsolute();
-        }
-
-        @Override
-        public Path getRoot() {
-            return wrap(delegate.getRoot());
-        }
-
-
-        @Override
-        public Path getName() {
-            return wrap(delegate.getName());
-        }
-
-        @Override
-        public Path getParent() {
-            return wrap(delegate.getParent());
-        }
-
-        @Override
-        public int getNameCount() {
-            return delegate.getNameCount();
-        }
-
-        @Override
-        public Path getName(int index) {
-            return wrap(delegate.getName(index));
-        }
-
-        @Override
-        public Path subpath(int beginIndex, int endIndex) {
-            return wrap(delegate.subpath(beginIndex, endIndex));
-        }
-
-        @Override
-        public boolean startsWith(Path other) {
-            return delegate.startsWith(unwrap(other));
-        }
-
-        @Override
-        public boolean endsWith(Path other) {
-            return delegate.endsWith(unwrap(other));
-        }
-
-        @Override
-        public Path normalize() {
-            return wrap(delegate.normalize());
-        }
-
-        @Override
-        public Path resolve(Path other) {
-            return wrap(delegate.resolve(unwrap(other)));
-        }
-
-        @Override
-        public Path resolve(String other) {
-            return wrap(delegate.resolve(other));
-        }
-
-        @Override
-        public Path relativize(Path other) {
-            return wrap(delegate.relativize(unwrap(other)));
-        }
-
-        @Override
-        public void setAttribute(String attribute, Object value, LinkOption... options)
-            throws IOException
-        {
-            delegate.setAttribute(attribute, value, options);
-        }
-
-        @Override
-        public Object getAttribute(String attribute, LinkOption... options)
-            throws IOException
-        {
-            // assume that unwrapped objects aren't exposed
-            return delegate.getAttribute(attribute, options);
-        }
-
-        @Override
-        public Map<String,?> readAttributes(String attributes, LinkOption... options)
-            throws IOException
-        {
-            // assume that unwrapped objects aren't exposed
-            return delegate.readAttributes(attributes, options);
-        }
-
-        @Override
-        public <V extends FileAttributeView> V getFileAttributeView(Class<V> type,
-                                                                    LinkOption... options)
-        {
-            return delegate.getFileAttributeView(type, options);
-        }
-
-        @Override
-        public void delete() throws IOException {
-            delegate.delete();
-        }
-
-        @Override
-        public void deleteIfExists() throws IOException {
-            delegate.deleteIfExists();
-        }
-
-        @Override
-        public Path createSymbolicLink(Path target, FileAttribute<?>... attrs)
-            throws IOException
-        {
-            delegate.createSymbolicLink(unwrap(target), attrs);
-            return this;
-        }
-
-        @Override
-        public Path createLink(Path existing) throws IOException {
-            delegate.createLink(unwrap(existing));
-            return this;
-        }
-
-        @Override
-        public Path readSymbolicLink() throws IOException {
-            return wrap(delegate.readSymbolicLink());
-        }
-
-        @Override
-        public URI toUri() {
-            String ssp = delegate.toUri().getSchemeSpecificPart();
-            return URI.create(fs.provider().getScheme() + ":" + ssp);
-        }
-
-        @Override
-        public Path toAbsolutePath() {
-            return wrap(delegate.toAbsolutePath());
-        }
-
-        @Override
-        public Path toRealPath(boolean resolveLinks) throws IOException {
-            return wrap(delegate.toRealPath(resolveLinks));
-        }
-
-        @Override
-        public Path copyTo(Path target, CopyOption... options) throws IOException {
-            return wrap(delegate.copyTo(unwrap(target), options));
-        }
-
-        @Override
-        public Path moveTo(Path target, CopyOption... options) throws IOException {
-            return wrap(delegate.copyTo(unwrap(target), options));
-        }
-
-        private DirectoryStream<Path> wrap(final DirectoryStream<Path> stream) {
-            return new DirectoryStream<Path>() {
-                @Override
-                public Iterator<Path> iterator() {
-                    final Iterator<Path> itr = stream.iterator();
-                    return new Iterator<Path>() {
-                        @Override
-                        public boolean hasNext() {
-                            return itr.hasNext();
-                        }
-                        @Override
-                        public Path next() {
-                            return wrap(itr.next());
-                        }
-                        @Override
-                        public void remove() {
-                            itr.remove();
-                        }
-                    };
-                }
-                @Override
-                public void close() throws IOException {
-                    stream.close();
-                }
-            };
-        }
-
-        @Override
-        public DirectoryStream<Path> newDirectoryStream() throws IOException {
-            return wrap(delegate.newDirectoryStream());
-        }
-
-        @Override
-        public DirectoryStream<Path> newDirectoryStream(String glob)
-            throws IOException
-        {
-            return wrap(delegate.newDirectoryStream(glob));
-        }
-
-        @Override
-        public DirectoryStream<Path> newDirectoryStream(DirectoryStream.Filter<? super Path> filter)
-            throws IOException
-        {
-            return wrap(delegate.newDirectoryStream(filter));
-        }
-
-        @Override
-        public Path createFile(FileAttribute<?>... attrs) throws IOException {
-            delegate.createFile(attrs);
-            return this;
-        }
-
-        @Override
-        public Path createDirectory(FileAttribute<?>... attrs)
-            throws IOException
-        {
-            delegate.createDirectory(attrs);
-            return this;
-        }
-
-        @Override
-        public SeekableByteChannel newByteChannel(Set<? extends OpenOption> options,
-                                                       FileAttribute<?>... attrs)
-            throws IOException
-        {
-            return delegate.newByteChannel(options, attrs);
-        }
-
-        @Override
-        public SeekableByteChannel newByteChannel(OpenOption... options)
-            throws IOException
-        {
-            return delegate.newByteChannel(options);
-        }
-
-        @Override
-        public InputStream newInputStream(OpenOption... options) throws IOException {
-            return delegate.newInputStream();
-        }
-
-        @Override
-        public OutputStream newOutputStream(OpenOption... options)
-            throws IOException
-        {
-            return delegate.newOutputStream(options);
-        }
-
-        @Override
-        public boolean isHidden() throws IOException {
-            return delegate.isHidden();
-        }
-
-        @Override
-        public void checkAccess(AccessMode... modes) throws IOException {
-            delegate.checkAccess(modes);
-        }
-
-        @Override
-        public boolean exists() {
-            return delegate.exists();
-        }
-
-        @Override
-        public boolean notExists() {
-            return delegate.notExists();
-        }
-
-        @Override
-        public FileStore getFileStore() throws IOException {
-            return delegate.getFileStore();
-        }
-
-        @Override
-        public WatchKey register(WatchService watcher,
-                                      WatchEvent.Kind<?>[] events,
-                                      WatchEvent.Modifier... modifiers)
-        {
-            throw new UnsupportedOperationException();
-        }
-
-        @Override
-        public  WatchKey register(WatchService watcher,
-                                      WatchEvent.Kind<?>... events)
-        {
-            throw new UnsupportedOperationException();
-        }
-
-
-        @Override
-        public Iterator<Path> iterator() {
-            final Iterator<Path> itr = delegate.iterator();
-            return new Iterator<Path>() {
-                @Override
-                public boolean hasNext() {
-                    return itr.hasNext();
-                }
-                @Override
-                public Path next() {
-                    return wrap(itr.next());
-                }
-                @Override
-                public void remove() {
-                    itr.remove();
-                }
-            };
-        }
-
-        @Override
-        public int compareTo(Path other) {
-            return delegate.compareTo(unwrap(other));
-        }
-
-        @Override
-        public boolean isSameFile(Path other) throws IOException {
-            return delegate.isSameFile(unwrap(other));
-        }
-
-
-        @Override
-        public boolean equals(Object other) {
-            if (!(other instanceof PassThroughPath))
-                return false;
-            return delegate.equals(unwrap((PassThroughPath)other));
-        }
-
-        @Override
-        public int hashCode() {
-            return delegate.hashCode();
-        }
-
-        @Override
-        public String toString() {
-            return delegate.toString();
-        }
-    }
-}
--- a/jdk/test/java/nio/file/Path/PathOps.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/file/Path/PathOps.java	Wed Jul 05 17:35:13 2017 +0200
@@ -22,7 +22,7 @@
  */
 
 /* @test
- * @bug 4313887 6838333 6925932
+ * @bug 4313887 6838333 6925932 7006126
  * @summary Unit test for java.nio.file.Path path operations
  */
 
@@ -36,15 +36,15 @@
     private Path path;
     private Exception exc;
 
-    private PathOps(String s) {
+    private PathOps(String first, String... more) {
         out.println();
-        input = s;
+        input = first;
         try {
-            path = FileSystems.getDefault().getPath(s);
-            out.format("%s -> %s", s, path);
+            path = FileSystems.getDefault().getPath(first, more);
+            out.format("%s -> %s", first, path);
         } catch (Exception x) {
             exc = x;
-            out.format("%s -> %s", s, x);
+            out.format("%s -> %s", first, x);
         }
         out.println();
     }
@@ -97,7 +97,7 @@
     PathOps name(String expected) {
         out.println("check name");
         checkPath();
-        check(path.getName(), expected);
+        check(path.getFileName(), expected);
         return this;
     }
 
@@ -168,6 +168,13 @@
         return this;
     }
 
+    PathOps resolveSibling(String other, String expected) {
+        out.format("test resolveSibling %s\n", other);
+        checkPath();
+        check(path.resolveSibling(other), expected);
+        return this;
+    }
+
     PathOps relativize(String other, String expected) {
         out.format("test relativize %s\n", other);
         checkPath();
@@ -198,8 +205,8 @@
         return this;
     }
 
-    static PathOps test(String s) {
-        return new PathOps(s);
+    static PathOps test(String first, String... more) {
+        return new PathOps(first, more);
     }
 
     // -- PathOpss --
@@ -213,6 +220,26 @@
     static void doWindowsTests() {
         header("Windows specific tests");
 
+        // construction
+        test("C:\\")
+            .string("C:\\");
+        test("C:\\", "")
+            .string("C:\\");
+        test("C:\\", "foo")
+            .string("C:\\foo");
+        test("C:\\", "\\foo")
+            .string("C:\\foo");
+        test("C:\\", "foo\\")
+            .string("C:\\foo");
+        test("foo", "bar", "gus")
+            .string("foo\\bar\\gus");
+        test("")
+            .string("");
+        test("", "C:\\")
+            .string("C:\\");
+        test("", "foo", "", "bar", "", "\\gus")
+            .string("foo\\bar\\gus");
+
         // all components present
         test("C:\\a\\b\\c")
             .root("C:\\")
@@ -252,17 +279,23 @@
             .root(null)
             .parent(null)
             .name("foo");
+        test("")
+            .root(null)
+            .parent(null)
+            .name("");
 
         // startsWith
         test("C:\\")
             .starts("C:\\")
             .starts("c:\\")
             .notStarts("C")
-            .notStarts("C:");
+            .notStarts("C:")
+            .notStarts("");
         test("C:")
             .starts("C:")
             .starts("c:")
-            .notStarts("C");
+            .notStarts("C")
+            .notStarts("");
         test("\\")
             .starts("\\");
         test("C:\\foo\\bar")
@@ -273,7 +306,8 @@
             .starts("C:\\Foo\\Bar")
             .notStarts("C:")
             .notStarts("C")
-            .notStarts("C:foo");
+            .notStarts("C:foo")
+            .notStarts("");
         test("\\foo\\bar")
             .starts("\\")
             .starts("\\foo")
@@ -281,26 +315,35 @@
             .starts("\\foo\\bar")
             .starts("\\fOo\\BaR")
             .notStarts("foo")
-            .notStarts("foo\\bar");
+            .notStarts("foo\\bar")
+            .notStarts("");
         test("foo\\bar")
             .starts("foo")
             .starts("foo\\bar")
-            .notStarts("\\");
+            .notStarts("\\")
+            .notStarts("");
         test("\\\\server\\share")
             .starts("\\\\server\\share")
             .starts("\\\\server\\share\\")
+            .notStarts("\\")
+            .notStarts("");
+        test("")
+            .starts("")
             .notStarts("\\");
 
         // endsWith
         test("C:\\")
             .ends("C:\\")
             .ends("c:\\")
-            .notEnds("\\");
+            .notEnds("\\")
+            .notEnds("");
         test("C:")
             .ends("C:")
-            .ends("c:");
+            .ends("c:")
+            .notEnds("");
         test("\\")
-            .ends("\\");
+            .ends("\\")
+            .notEnds("");
         test("C:\\foo\\bar")
             .ends("bar")
             .ends("BAR")
@@ -309,7 +352,8 @@
             .ends("C:\\foo\\bar")
             .ends("c:\\foO\\baR")
             .notEnds("r")
-            .notEnds("\\foo\\bar");
+            .notEnds("\\foo\\bar")
+            .notEnds("");
         test("\\foo\\bar")
             .ends("bar")
             .ends("BaR")
@@ -317,17 +361,23 @@
             .ends("foO\\baR")
             .ends("\\foo\\bar")
             .ends("\\Foo\\Bar")
-            .notEnds("oo\\bar");
+            .notEnds("oo\\bar")
+            .notEnds("");
         test("foo\\bar")
             .ends("bar")
             .ends("BAR")
             .ends("foo\\bar")
             .ends("Foo\\Bar")
-            .notEnds("ar");
+            .notEnds("ar")
+            .notEnds("");
         test("\\\\server\\share")
             .ends("\\\\server\\share")
             .ends("\\\\server\\share\\")
             .notEnds("shared")
+            .notEnds("\\")
+            .notEnds("");
+        test("")
+            .ends("")
             .notEnds("\\");
 
         // elements
@@ -338,6 +388,8 @@
         test("foo.bar\\gus.alice")
             .element(0, "foo.bar")
             .element(1, "gus.alice");
+        test("")
+            .element(0, "");
 
         // subpath
         test("C:\\foo")
@@ -355,6 +407,8 @@
             .subpath(2, 3, "gus");
         test("\\\\server\\share\\foo")
             .subpath(0, 1, "foo");
+        test("")
+            .subpath(0, 1, "");
 
         // isAbsolute
         test("foo").notAbsolute();
@@ -362,6 +416,7 @@
         test("C:\\").absolute();
         test("C:\\abc").absolute();
         test("\\\\server\\share\\").absolute();
+        test("").notAbsolute();
 
         // resolve
         test("C:\\")
@@ -369,42 +424,99 @@
             .resolve("D:\\bar", "D:\\bar")
             .resolve("\\\\server\\share\\bar", "\\\\server\\share\\bar")
             .resolve("C:foo", "C:\\foo")
-            .resolve("D:foo", "D:foo");
+            .resolve("D:foo", "D:foo")
+            .resolve("", "C:\\");
         test("\\")
             .resolve("foo", "\\foo")
             .resolve("D:bar", "D:bar")
             .resolve("C:\\bar", "C:\\bar")
             .resolve("\\\\server\\share\\bar", "\\\\server\\share\\bar")
-            .resolve("\\foo", "\\foo");
+            .resolve("\\foo", "\\foo")
+            .resolve("", "\\");
         test("\\foo")
             .resolve("bar", "\\foo\\bar")
             .resolve("D:bar", "D:bar")
             .resolve("C:\\bar", "C:\\bar")
             .resolve("\\\\server\\share\\bar", "\\\\server\\share\\bar")
-            .resolve("\\bar", "\\bar");
+            .resolve("\\bar", "\\bar")
+            .resolve("", "\\foo");
         test("foo")
             .resolve("bar", "foo\\bar")
             .resolve("D:\\bar", "D:\\bar")
             .resolve("\\\\server\\share\\bar", "\\\\server\\share\\bar")
             .resolve("C:bar", "C:bar")
-            .resolve("D:foo", "D:foo");
+            .resolve("D:foo", "D:foo")
+            .resolve("", "foo");
         test("C:")
-            .resolve("foo", "C:foo");
+            .resolve("foo", "C:foo")
+            .resolve("", "C:");
         test("\\\\server\\share\\foo")
             .resolve("bar", "\\\\server\\share\\foo\\bar")
             .resolve("\\bar", "\\\\server\\share\\bar")
             .resolve("D:\\bar", "D:\\bar")
             .resolve("\\\\other\\share\\bar", "\\\\other\\share\\bar")
-            .resolve("D:bar", "D:bar");
+            .resolve("D:bar", "D:bar")
+            .resolve("", "\\\\server\\share\\foo");
+        test("")
+            .resolve("", "")
+            .resolve("foo", "foo")
+            .resolve("C:\\", "C:\\")
+            .resolve("C:foo", "C:foo")
+            .resolve("\\\\server\\share\\bar", "\\\\server\\share\\bar");
+
+        // resolveSibling
+        test("foo")
+            .resolveSibling("bar", "bar")
+            .resolveSibling("D:\\bar", "D:\\bar")
+            .resolveSibling("\\\\server\\share\\bar", "\\\\server\\share\\bar")
+            .resolveSibling("C:bar", "C:bar")
+            .resolveSibling("D:foo", "D:foo")
+            .resolveSibling("", "");
+        test("foo\\bar")
+            .resolveSibling("gus", "foo\\gus")
+            .resolveSibling("D:\\bar", "D:\\bar")
+            .resolveSibling("\\\\server\\share\\bar", "\\\\server\\share\\bar")
+            .resolveSibling("C:bar", "C:bar")
+            .resolveSibling("D:foo", "D:foo")
+            .resolveSibling("", "foo");
+        test("C:\\foo")
+            .resolveSibling("gus", "C:\\gus")
+            .resolveSibling("D:\\bar", "D:\\bar")
+            .resolveSibling("\\\\server\\share\\bar", "\\\\server\\share\\bar")
+            .resolveSibling("C:bar", "C:\\bar")
+            .resolveSibling("D:foo", "D:foo")
+            .resolveSibling("", "C:\\");
+        test("C:\\foo\\bar")
+            .resolveSibling("gus", "C:\\foo\\gus")
+            .resolveSibling("D:\\bar", "D:\\bar")
+            .resolveSibling("\\\\server\\share\\bar", "\\\\server\\share\\bar")
+            .resolveSibling("C:bar", "C:\\foo\\bar")
+            .resolveSibling("D:foo", "D:foo")
+            .resolveSibling("", "C:\\foo");
+        test("\\\\server\\share\\foo")
+            .resolveSibling("bar", "\\\\server\\share\\bar")
+            .resolveSibling("\\bar", "\\\\server\\share\\bar")
+            .resolveSibling("D:\\bar", "D:\\bar")
+            .resolveSibling("\\\\other\\share\\bar", "\\\\other\\share\\bar")
+            .resolveSibling("D:bar", "D:bar")
+            .resolveSibling("", "\\\\server\\share\\");
+        test("")
+            .resolveSibling("", "")
+            .resolveSibling("foo", "foo")
+            .resolveSibling("C:\\", "C:\\");
 
         // relativize
         test("foo\\bar")
-            .relativize("foo\\bar", null)
+            .relativize("foo\\bar", "")
             .relativize("foo", "..");
         test("C:\\a\\b\\c")
-            .relativize("C:\\a", "..\\..");
+            .relativize("C:\\a", "..\\..")
+            .relativize("C:\\a\\b\\c", "");
         test("\\\\server\\share\\foo")
-            .relativize("\\\\server\\share\\bar", "..\\bar");
+            .relativize("\\\\server\\share\\bar", "..\\bar")
+            .relativize("\\\\server\\share\\foo", "");
+        test("")
+            .relativize("", "");
 
         // normalize
         test("C:\\")
@@ -436,7 +548,7 @@
         test("foo\\.")
             .normalize("foo");
         test("foo\\..")
-            .normalize(null);
+            .normalize("");
         test("C:\\foo")
             .normalize("C:\\foo");
         test("C:\\foo\\.")
@@ -478,7 +590,7 @@
         test("\\..\\foo")
             .normalize("\\foo");
         test(".")
-            .normalize(null);
+            .normalize("");
         test("..")
             .normalize("..");
         test("\\..\\..")
@@ -493,6 +605,8 @@
             .normalize("foo");
         test(".\\foo\\.\\bar\\.\\gus\\..\\.\\..")
             .normalize("foo");
+        test("")
+            .normalize("");
 
         // UNC corner cases
         test("\\\\server\\share\\")
@@ -557,6 +671,26 @@
     static void doUnixTests() {
         header("Unix specific tests");
 
+        // construction
+        test("/")
+            .string("/");
+        test("/", "")
+            .string("/");
+        test("/", "foo")
+            .string("/foo");
+        test("/", "/foo")
+            .string("/foo");
+        test("/", "foo/")
+            .string("/foo");
+        test("foo", "bar", "gus")
+            .string("foo/bar/gus");
+        test("")
+            .string("");
+        test("", "/")
+            .string("/");
+        test("", "foo", "", "bar", "", "/gus")
+            .string("foo/bar/gus");
+
         // all components
         test("/a/b/c")
             .root("/")
@@ -580,10 +714,15 @@
             .root(null)
             .parent(null)
             .name("foo");
+        test("")
+             .root(null)
+             .parent(null)
+             .name("");
 
         // startsWith
         test("/")
             .starts("/")
+            .notStarts("")
             .notStarts("/foo");
         test("/foo")
             .starts("/")
@@ -598,6 +737,7 @@
             .notStarts("foo/bar");
         test("foo")
             .starts("foo")
+            .notStarts("")
             .notStarts("f");
         test("foo/bar")
             .starts("foo")
@@ -605,10 +745,14 @@
             .notStarts("f")
             .notStarts("/foo")
             .notStarts("/foo/bar");
+        test("")
+             .starts("")
+             .notStarts("/");
 
         // endsWith
         test("/")
             .ends("/")
+            .notEnds("")
             .notEnds("foo")
             .notEnds("/foo");
         test("/foo")
@@ -625,6 +769,7 @@
             .notEnds("o/bar");
         test("foo")
             .ends("foo")
+            .notEnds("")
             .notEnds("oo")
             .notEnds("oola");
         test("foo/bar")
@@ -642,12 +787,47 @@
             .notEnds("r/gus")
             .notEnds("barack/gus")
             .notEnds("bar/gust");
+        test("")
+            .ends("")
+            .notEnds("/");
 
         // elements
         test("a/b/c")
-            .element(0,"a")
-            .element(1,"b")
-            .element(2,"c");
+            .element(0, "a")
+            .element(1, "b")
+            .element(2, "c");
+        test("")
+            .element(0, "");
+
+        // subpath
+        test("/foo")
+            .subpath(0, 1, "foo");
+        test("foo")
+            .subpath(0, 1, "foo");
+        test("/foo/bar")
+            .subpath(0, 1, "foo")
+            .subpath(1, 2, "bar")
+            .subpath(0, 2, "foo/bar");
+        test("foo/bar")
+            .subpath(0, 1, "foo")
+            .subpath(1, 2, "bar")
+            .subpath(0, 2, "foo/bar");
+        test("/foo/bar/gus")
+            .subpath(0, 1, "foo")
+            .subpath(1, 2, "bar")
+            .subpath(2, 3, "gus")
+            .subpath(0, 2, "foo/bar")
+            .subpath(1, 3, "bar/gus")
+            .subpath(0, 3, "foo/bar/gus");
+        test("foo/bar/gus")
+            .subpath(0, 1, "foo")
+            .subpath(1, 2, "bar")
+            .subpath(2, 3, "gus")
+            .subpath(0, 2, "foo/bar")
+            .subpath(1, 3, "bar/gus")
+            .subpath(0, 3, "foo/bar/gus");
+        test("")
+            .subpath(0, 1, "");
 
         // isAbsolute
         test("/")
@@ -656,20 +836,61 @@
             .absolute();
         test("tmp")
             .notAbsolute();
+        test("")
+            .notAbsolute();
+
 
         // resolve
         test("/tmp")
             .resolve("foo", "/tmp/foo")
-            .resolve("/foo", "/foo");
+            .resolve("/foo", "/foo")
+            .resolve("", "/tmp");
         test("tmp")
             .resolve("foo", "tmp/foo")
+            .resolve("/foo", "/foo")
+            .resolve("", "tmp");
+        test("")
+            .resolve("", "")
+            .resolve("foo", "foo")
             .resolve("/foo", "/foo");
 
+        // resolveSibling
+        test("foo")
+            .resolveSibling("bar", "bar")
+            .resolveSibling("/bar", "/bar")
+            .resolveSibling("", "");
+        test("foo/bar")
+            .resolveSibling("gus", "foo/gus")
+            .resolveSibling("/gus", "/gus")
+            .resolveSibling("", "foo");
+        test("/foo")
+            .resolveSibling("gus", "/gus")
+            .resolveSibling("/gus", "/gus")
+            .resolveSibling("", "/");
+        test("/foo/bar")
+            .resolveSibling("gus", "/foo/gus")
+            .resolveSibling("/gus", "/gus")
+            .resolveSibling("", "/foo");
+        test("")
+            .resolveSibling("foo", "foo")
+            .resolveSibling("/foo", "/foo")
+            .resolve("", "");
+
         // relativize
         test("/a/b/c")
-            .relativize("/a/b/c", null)
+            .relativize("/a/b/c", "")
             .relativize("/a/b/c/d/e", "d/e")
-            .relativize("/a/x", "../../x");
+            .relativize("/a/x", "../../x")
+            .relativize("/x", "../../../x");
+        test("a/b/c")
+            .relativize("a/b/c/d", "d")
+            .relativize("a/x", "../../x")
+            .relativize("x", "../../../x")
+            .relativize("", "../../..");
+        test("")
+            .relativize("a", "a")
+            .relativize("a/b/c", "a/b/c")
+            .relativize("", "");
 
         // normalize
         test("/")
@@ -679,7 +900,7 @@
         test("/foo")
             .normalize("/foo");
         test(".")
-            .normalize(null);
+            .normalize("");
         test("..")
             .normalize("..");
         test("/..")
@@ -691,7 +912,7 @@
         test("./foo")
             .normalize("foo");
         test("foo/..")
-            .normalize(null);
+            .normalize("");
         test("../foo")
             .normalize("../foo");
         test("../../foo")
@@ -717,7 +938,7 @@
         test("//bar\u0000")
             .invalid();
 
-        // normalization
+        // normalization of input
         test("//foo//bar")
             .string("/foo/bar")
             .root("/")
@@ -749,13 +970,13 @@
         }
 
         try {
-            path.startsWith(null);
+            path.startsWith((Path)null);
             throw new RuntimeException("NullPointerException not thrown");
         } catch (NullPointerException npe) {
         }
 
         try {
-            path.endsWith(null);
+            path.endsWith((Path)null);
             throw new RuntimeException("NullPointerException not thrown");
         } catch (NullPointerException npe) {
         }
--- a/jdk/test/java/nio/file/Path/SBC.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,468 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-/* @test
- * @bug 4313887
- * @summary Unit test for java.nio.file.Path.newByteChannel
- * @library ..
- */
-
-import java.nio.ByteBuffer;
-import java.nio.file.*;
-import static java.nio.file.StandardOpenOption.*;
-import static com.sun.nio.file.ExtendedOpenOption.*;
-import java.nio.file.attribute.FileAttribute;
-import java.nio.channels.*;
-import java.io.IOException;
-import java.util.*;
-
-public class SBC {
-
-    static boolean supportsLinks;
-
-    public static void main(String[] args) throws Exception {
-        Path dir = TestUtil.createTemporaryDirectory();
-        try {
-            supportsLinks = TestUtil.supportsLinks(dir);
-
-            // open options
-            createTests(dir);
-            appendTests(dir);
-            truncateExistingTests(dir);
-            noFollowLinksTests(dir);
-
-            // SeekableByteChannel methods
-            sizeTruncatePositionTests(dir);
-
-            // platform specific
-            if (System.getProperty("os.name").startsWith("Windows"))
-                dosSharingOptionTests(dir);
-
-            // misc. tests
-            badCombinations(dir);
-            unsupportedOptions(dir);
-            nullTests(dir);
-
-        } finally {
-            TestUtil.removeAll(dir);
-        }
-    }
-
-    // test CREATE and CREATE_NEW options
-    static void createTests(Path dir) throws Exception {
-        Path file = dir.resolve("foo");
-
-        // CREATE
-        try {
-            // create file (no existing file)
-            file.newByteChannel(CREATE, WRITE).close();
-            if (file.notExists())
-                throw new RuntimeException("File not created");
-
-            // create file (existing file)
-            file.newByteChannel(CREATE, WRITE).close();
-
-            // create file where existing file is a sym link
-            if (supportsLinks) {
-                Path link = dir.resolve("link").createSymbolicLink(file);
-                try {
-                    // file already exists
-                    link.newByteChannel(CREATE, WRITE).close();
-
-                    // file does not exist
-                    file.delete();
-                    link.newByteChannel(CREATE, WRITE).close();
-                    if (file.notExists())
-                        throw new RuntimeException("File not created");
-
-                } finally {
-                    TestUtil.deleteUnchecked(link);
-                }
-            }
-
-        } finally {
-            TestUtil.deleteUnchecked(file);
-        }
-
-        // CREATE_NEW
-        try {
-            // create file
-            file.newByteChannel(CREATE_NEW, WRITE).close();
-            if (file.notExists())
-                throw new RuntimeException("File not created");
-
-            // create should fail
-            try {
-                SeekableByteChannel sbc =
-                    file.newByteChannel(CREATE_NEW, WRITE);
-                sbc.close();
-                throw new RuntimeException("FileAlreadyExistsException not thrown");
-            } catch (FileAlreadyExistsException x) { }
-
-            // create should fail
-            if (supportsLinks) {
-                Path link = dir.resolve("link");
-                Path target = dir.resolve("thisDoesNotExist");
-                link.createSymbolicLink(target);
-                try {
-
-                    try {
-                        SeekableByteChannel sbc =
-                            file.newByteChannel(CREATE_NEW, WRITE);
-                        sbc.close();
-                        throw new RuntimeException("FileAlreadyExistsException not thrown");
-                    } catch (FileAlreadyExistsException x) { }
-
-                } finally {
-                    TestUtil.deleteUnchecked(link);
-                }
-            }
-
-
-        } finally {
-            TestUtil.deleteUnchecked(file);
-        }
-
-        // CREATE_NEW + SPARSE
-        try {
-            SeekableByteChannel sbc = file
-                .newByteChannel(CREATE_NEW, WRITE, SPARSE);
-            try {
-                final long hole = 2L * 1024L * 1024L * 1024L;
-                sbc.position(hole);
-                write(sbc, "hello");
-                long size = sbc.size();
-                if (size != (hole + 5))
-                    throw new RuntimeException("Unexpected size");
-            } finally {
-                sbc.close();
-            }
-        } finally {
-            TestUtil.deleteUnchecked(file);
-        }
-    }
-
-    // test APPEND option
-    static void appendTests(Path dir) throws Exception {
-        Path file = dir.resolve("foo");
-        try {
-            // "hello there" should be written to file
-            SeekableByteChannel sbc = file
-                .newByteChannel(CREATE_NEW, WRITE, APPEND);
-            try {
-                write(sbc, "hello ");
-                sbc.position(0L);
-                write(sbc, "there");
-            } finally {
-                sbc.close();
-            }
-
-            // check file
-            Scanner s = new Scanner(file);
-            try {
-                String line = s.nextLine();
-                if (!line.equals("hello there"))
-                    throw new RuntimeException("Unexpected file contents");
-            } finally {
-                s.close();
-            }
-
-            // check that read is not allowed
-            sbc = file.newByteChannel(APPEND);
-            try {
-                sbc.read(ByteBuffer.allocate(100));
-            } catch (NonReadableChannelException x) {
-            } finally {
-                sbc.close();
-            }
-        } finally {
-            // clean-up
-            TestUtil.deleteUnchecked(file);
-        }
-    }
-
-    // test TRUNCATE_EXISTING option
-    static void truncateExistingTests(Path dir) throws Exception {
-        Path file = dir.resolve("foo");
-        try {
-            SeekableByteChannel sbc =
-                file.newByteChannel(CREATE_NEW, WRITE);
-            try {
-                write(sbc, "Have a nice day!");
-            } finally {
-                sbc.close();
-            }
-
-            // re-open with truncate option
-            // write short message and check
-            sbc = file.newByteChannel(WRITE, TRUNCATE_EXISTING);
-            try {
-                write(sbc, "Hello there!");
-            } finally {
-                sbc.close();
-            }
-            Scanner s = new Scanner(file);
-            try {
-                String line = s.nextLine();
-                if (!line.equals("Hello there!"))
-                    throw new RuntimeException("Unexpected file contents");
-            } finally {
-                s.close();
-            }
-
-            // re-open with create + truncate option
-            // check file is of size 0L
-            sbc = file.newByteChannel(WRITE, CREATE, TRUNCATE_EXISTING);
-            try {
-                long size = ((FileChannel)sbc).size();
-                if (size != 0L)
-                    throw new RuntimeException("File not truncated");
-            } finally {
-                sbc.close();
-            }
-
-        } finally {
-            // clean-up
-            TestUtil.deleteUnchecked(file);
-        }
-
-    }
-
-    // test NOFOLLOW_LINKS option
-    static void noFollowLinksTests(Path dir) throws Exception {
-        if (!supportsLinks)
-            return;
-        Path file = dir.resolve("foo").createFile();
-        try {
-            // ln -s foo link
-            Path link = dir.resolve("link").createSymbolicLink(file);
-
-            // open with NOFOLLOW_LINKS option
-            try {
-                link.newByteChannel(READ, LinkOption.NOFOLLOW_LINKS);
-                throw new RuntimeException();
-            } catch (IOException x) {
-            } finally {
-                TestUtil.deleteUnchecked(link);
-            }
-
-        } finally {
-            // clean-up
-            TestUtil.deleteUnchecked(file);
-        }
-    }
-
-    // test size/truncate/position methods
-    static void sizeTruncatePositionTests(Path dir) throws Exception {
-        Path file = dir.resolve("foo");
-        try {
-            SeekableByteChannel sbc = file
-                .newByteChannel(CREATE_NEW, READ, WRITE);
-            try {
-                if (sbc.size() != 0L)
-                    throw new RuntimeException("Unexpected size");
-
-                // check size
-                write(sbc, "hello");
-                if (sbc.size() != 5L)
-                    throw new RuntimeException("Unexpected size");
-
-                // truncate (size and position should change)
-                sbc.truncate(4L);
-                if (sbc.size() != 4L)
-                    throw new RuntimeException("Unexpected size");
-                if (sbc.position() != 4L)
-                    throw new RuntimeException("Unexpected position");
-
-                // truncate (position should not change)
-                sbc.position(2L).truncate(3L);
-                if (sbc.size() != 3L)
-                    throw new RuntimeException("Unexpected size");
-                if (sbc.position() != 2L)
-                    throw new RuntimeException("Unexpected position");
-            } finally {
-                sbc.close();
-            }
-        } finally {
-            TestUtil.deleteUnchecked(file);
-        }
-    }
-
-    // Windows specific options for the use by applications that really want
-    // to use legacy DOS sharing options
-    static void dosSharingOptionTests(Path dir) throws Exception {
-        Path file = dir.resolve("foo").createFile();
-        try {
-            SeekableByteChannel ch;
-
-            // no sharing
-            ch = file.newByteChannel(READ,
-                NOSHARE_READ, NOSHARE_WRITE, NOSHARE_DELETE);
-            try {
-                try {
-                    file.newByteChannel(READ);
-                    throw new RuntimeException("Sharing violation expected");
-                } catch (IOException ignore) { }
-                try {
-                    file.newByteChannel(WRITE);
-                    throw new RuntimeException("Sharing violation expected");
-                } catch (IOException ignore) { }
-                try {
-                    file.delete();
-                    throw new RuntimeException("Sharing violation expected");
-                } catch (IOException ignore) { }
-            } finally {
-                ch.close();
-            }
-
-            // read allowed
-            ch = file.newByteChannel(READ, NOSHARE_WRITE, NOSHARE_DELETE);
-            try {
-                file.newByteChannel(READ).close();
-                try {
-                    file.newByteChannel(WRITE);
-                    throw new RuntimeException("Sharing violation expected");
-                } catch (IOException ignore) { }
-                try {
-                    file.delete();
-                    throw new RuntimeException("Sharing violation expected");
-                } catch (IOException ignore) { }
-            } finally {
-                ch.close();
-            }
-
-            // write allowed
-            ch = file.newByteChannel(READ, NOSHARE_READ, NOSHARE_DELETE);
-            try {
-                try {
-                    file.newByteChannel(READ);
-                    throw new RuntimeException("Sharing violation expected");
-                } catch (IOException ignore) { }
-                file.newByteChannel(WRITE).close();
-                try {
-                    file.delete();
-                    throw new RuntimeException("Sharing violation expected");
-                } catch (IOException ignore) { }
-            } finally {
-                ch.close();
-            }
-
-            // delete allowed
-            ch = file.newByteChannel(READ, NOSHARE_READ, NOSHARE_WRITE);
-            try {
-                try {
-                    file.newByteChannel(READ);
-                    throw new RuntimeException("Sharing violation expected");
-                } catch (IOException ignore) { }
-                try {
-                    file.newByteChannel(WRITE);
-                    throw new RuntimeException("Sharing violation expected");
-                } catch (IOException ignore) { }
-                file.delete();
-            } finally {
-                ch.close();
-            }
-
-        } finally {
-            TestUtil.deleteUnchecked(file);
-        }
-    }
-
-    // invalid combinations of options
-    static void badCombinations(Path dir) throws Exception {
-        Path file = dir.resolve("bad");
-
-        try {
-            file.newByteChannel(READ, APPEND);
-            throw new RuntimeException("IllegalArgumentException expected");
-        } catch (IllegalArgumentException x) { }
-
-        try {
-            file.newByteChannel(WRITE, APPEND, TRUNCATE_EXISTING);
-            throw new RuntimeException("IllegalArgumentException expected");
-        } catch (IllegalArgumentException x) { }
-    }
-
-    // unsupported operations
-    static void unsupportedOptions(Path dir) throws Exception {
-        Path file = dir.resolve("bad");
-
-        OpenOption badOption = new OpenOption() { };
-        try {
-            file.newByteChannel(badOption);
-            throw new RuntimeException("UnsupportedOperationException expected");
-        } catch (UnsupportedOperationException e) { }
-        try {
-            file.newByteChannel(READ, WRITE, badOption);
-            throw new RuntimeException("UnsupportedOperationException expected");
-        } catch (UnsupportedOperationException e) { }
-    }
-
-    // null handling
-    static void nullTests(Path dir) throws Exception {
-        Path file = dir.resolve("foo");
-
-        try {
-            file.newByteChannel((OpenOption[])null);
-            throw new RuntimeException("NullPointerException expected");
-        } catch (NullPointerException x) { }
-
-        try {
-            OpenOption[] opts = { READ, null };
-            file.newByteChannel(opts);
-            throw new RuntimeException("NullPointerException expected");
-        } catch (NullPointerException x) { }
-
-        try {
-            file.newByteChannel((Set<OpenOption>)null);
-            throw new RuntimeException("NullPointerException expected");
-        } catch (NullPointerException x) { }
-
-        try {
-            Set<OpenOption> opts = new HashSet<OpenOption>();
-            opts.add(READ);
-            opts.add(null);
-            file.newByteChannel(opts);
-            throw new RuntimeException("NullPointerException expected");
-        } catch (NullPointerException x) { }
-
-        try {
-            EnumSet<StandardOpenOption> opts = EnumSet.of(READ);
-            file.newByteChannel(opts, (FileAttribute[])null);
-            throw new RuntimeException("NullPointerException expected");
-        } catch (NullPointerException x) { }
-
-        try {
-            EnumSet<StandardOpenOption> opts = EnumSet.of(READ);
-            FileAttribute[] attrs = { null };
-            file.newByteChannel(opts, attrs);
-            throw new RuntimeException("NullPointerException expected");
-        } catch (NullPointerException x) { }
-    }
-
-    static void write(WritableByteChannel wbc, String msg) throws IOException {
-        ByteBuffer buf = ByteBuffer.wrap(msg.getBytes());
-        while (buf.hasRemaining())
-            wbc.write(buf);
-    }
-}
--- a/jdk/test/java/nio/file/Path/TemporaryFiles.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-/* @test
- * @bug 4313887 6838333
- * @summary Unit test for File.createTemporaryXXX (to be be moved to test/java/io/File)
- * @library ..
- */
-
-import java.nio.file.*;
-import static java.nio.file.StandardOpenOption.*;
-import java.nio.file.attribute.*;
-import java.io.File;
-import java.io.IOException;
-import java.util.Set;
-
-public class TemporaryFiles {
-
-    static void checkInTempDirectory(Path file) {
-        Path tmpdir = Paths.get(System.getProperty("java.io.tmpdir"));
-        if (!file.getParent().equals(tmpdir))
-            throw new RuntimeException("Not in temporary directory");
-    }
-
-    static void checkFile(Path file) throws IOException {
-        // check file is in temporary directory
-        checkInTempDirectory(file);
-
-        // check that file can be opened for reading and writing
-        file.newByteChannel(READ).close();
-        file.newByteChannel(WRITE).close();
-        file.newByteChannel(READ,WRITE).close();
-
-        // check file permissions are 0600 or more secure
-        if (file.getFileStore().supportsFileAttributeView("posix")) {
-            Set<PosixFilePermission> perms = Attributes
-                .readPosixFileAttributes(file).permissions();
-            perms.remove(PosixFilePermission.OWNER_READ);
-            perms.remove(PosixFilePermission.OWNER_WRITE);
-            if (!perms.isEmpty())
-                throw new RuntimeException("Temporary file is not secure");
-        }
-    }
-
-    static void checkDirectory(Path dir) throws IOException {
-        // check directory is in temporary directory
-        checkInTempDirectory(dir);
-
-        // check directory is empty
-        DirectoryStream<Path> stream = dir.newDirectoryStream();
-        try {
-            if (stream.iterator().hasNext())
-                throw new RuntimeException("Tempory directory not empty");
-        } finally {
-            stream.close();
-        }
-
-        // check file permissions are 0700 or more secure
-        if (dir.getFileStore().supportsFileAttributeView("posix")) {
-            Set<PosixFilePermission> perms = Attributes
-                .readPosixFileAttributes(dir).permissions();
-            perms.remove(PosixFilePermission.OWNER_READ);
-            perms.remove(PosixFilePermission.OWNER_WRITE);
-            perms.remove(PosixFilePermission.OWNER_EXECUTE);
-            if (!perms.isEmpty())
-                throw new RuntimeException("Temporary directory is not secure");
-        }
-    }
-
-    public static void main(String[] args) throws IOException {
-        Path file = File.createTemporaryFile("blah", null).toPath();
-        try {
-            checkFile(file);
-        } finally {
-            TestUtil.deleteUnchecked(file);
-        }
-    }
-}
--- a/jdk/test/java/nio/file/Path/UriImportExport.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/file/Path/UriImportExport.java	Wed Jul 05 17:35:13 2017 +0200
@@ -22,7 +22,7 @@
  */
 
 /* @test
- * @bug 4313887
+ * @bug 4313887 7003155
  * @summary Unit test for java.nio.file.Path
  */
 
@@ -36,42 +36,105 @@
     static final PrintStream log = System.out;
     static int failures = 0;
 
-    static void test(String fn, String expected) {
+    /**
+     * Test Path -> URI -> Path
+     */
+    static void testPath(String s) {
+        Path path = Paths.get(s);
+        log.println(path);
+        URI uri = path.toUri();
+        log.println("  --> " + uri);
+        Path result = Paths.get(uri);
+        log.println("  --> " + result);
+        if (!result.equals(path.toAbsolutePath())) {
+            log.println("FAIL: Expected " + path + ", got " + result);
+            failures++;
+        }
         log.println();
-        Path p = Paths.get(fn);
-        log.println(p);
-        URI u = p.toUri();
-        log.println("  --> " + u);
-        if (expected != null && !(u.toString().equals(expected))) {
-            log.println("FAIL: Expected " + expected);
-            failures++;
-            return;
-        }
-        Path q = Paths.get(u);
-        log.println("  --> " + q);
-        if (!p.toAbsolutePath().equals(q)) {
-            log.println("FAIL: Expected " + p + ", got " + q);
+    }
+
+    /**
+     * Test Path -> (expected) URI -> Path
+     */
+    static void testPath(String s, String expectedUri) {
+        Path path = Paths.get(s);
+        log.println(path);
+        URI uri = path.toUri();
+        log.println("  --> " + uri);
+        if (!uri.toString().equals(expectedUri)) {
+            log.println("FAILED: Expected " + expectedUri + ", got " + uri);
             failures++;
             return;
         }
+        Path result = Paths.get(uri);
+        log.println("  --> " + result);
+        if (!result.equals(path.toAbsolutePath())) {
+            log.println("FAIL: Expected " + path + ", got " + result);
+            failures++;
+        }
+        log.println();
     }
 
-    static void test(String fn) {
-        test(fn, null);
+    /**
+     * Test URI -> Path -> URI
+     */
+    static void testUri(String s) throws Exception {
+        URI uri = URI.create(s);
+        log.println(uri);
+        Path path = Paths.get(uri);
+        log.println("  --> " + path);
+        URI result = path.toUri();
+        log.println("  --> " + result);
+        if (!result.equals(uri)) {
+            log.println("FAIL: Expected " + uri + ", got " + result);
+            failures++;
+        }
+        log.println();
+    }
+
+    /**
+     * Test URI -> Path fails with IllegalArgumentException
+     */
+    static void testBadUri(String s) throws Exception {
+        URI uri = URI.create(s);
+        log.println(uri);
+        try {
+            Path path = Paths.get(uri);
+            log.format(" --> %s  FAIL: Expected IllegalArgumentException\n", path);
+            failures++;
+        } catch (IllegalArgumentException expected) {
+            log.println("  --> IllegalArgumentException (expected)");
+        }
+        log.println();
     }
 
     public static void main(String[] args) throws Exception {
-        test("foo");
-        test("/foo");
-        test("/foo bar");
+        testBadUri("file:foo");
+        testBadUri("file:/foo?q");
+        testBadUri("file:/foo#f");
 
         String osname = System.getProperty("os.name");
         if (osname.startsWith("Windows")) {
-            test("C:\\foo");
-            test("C:foo");
-            test("\\\\rialto.dublin.com\\share\\");
-            test("\\\\fe80--203-baff-fe5a-749ds1.ipv6-literal.net\\share\\missing",
+            testPath("C:\\doesnotexist");
+            testPath("C:doesnotexist");
+            testPath("\\\\server.nowhere.oracle.com\\share\\");
+            testPath("\\\\fe80--203-baff-fe5a-749ds1.ipv6-literal.net\\share\\missing",
                 "file://[fe80::203:baff:fe5a:749d%1]/share/missing");
+        } else {
+            testPath("doesnotexist");
+            testPath("/doesnotexist");
+            testPath("/does not exist");
+            testUri("file:///");
+            testUri("file:///foo/bar/doesnotexist");
+            testUri("file:/foo/bar/doesnotexist");
+
+            // file:///foo/bar/\u0440\u0443\u0441\u0441\u043A\u0438\u0439 (Russian)
+            testUri("file:///foo/bar/%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9");
+
+            // invalid
+            testBadUri("file:foo");
+            testBadUri("file://server/foo");
+            testBadUri("file:///foo%00");
         }
 
         if (failures > 0)
--- a/jdk/test/java/nio/file/Path/delete_on_close.sh	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-#
-# Copyright (c) 2008, 2010, 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.
-#
-
-# @test
-# @bug 4313887
-# @summary Unit test for DELETE_ON_CLOSE open option
-# @library ..
-# @build DeleteOnClose
-# @run shell delete_on_close.sh
-
-# if TESTJAVA isn't set then we assume an interactive run.
-
-if [ -z "$TESTJAVA" ]; then
-    TESTSRC=.
-    TESTCLASSES=.
-    JAVA=java
-else
-    JAVA="${TESTJAVA}/bin/java"
-fi
-
-OS=`uname -s`
-case "$OS" in
-    Windows_* | CYGWIN* )
-        CLASSPATH="${TESTCLASSES};${TESTSRC}"
-        ;;
-    * )
-        CLASSPATH=${TESTCLASSES}:${TESTSRC}
-        ;;
-esac
-export CLASSPATH
-
-TMPFILE="$$.tmp"
-touch $TMPFILE
-$JAVA DeleteOnClose $TMPFILE 2>&1
-if [ $? != 0 ]; then exit 1; fi
-if [ -f $TMPFILE ]; then
-    echo "$TMPFILE was not deleted"
-    exit 1
-fi
-
-exit 0
--- a/jdk/test/java/nio/file/TestUtil.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/file/TestUtil.java	Wed Jul 05 17:35:13 2017 +0200
@@ -31,17 +31,12 @@
     }
 
     static Path createTemporaryDirectory(String where) throws IOException {
-        Path top = FileSystems.getDefault().getPath(where);
-        Random r = new Random();
-        Path dir;
-        do {
-            dir = top.resolve("name" + r.nextInt());
-        } while (dir.exists());
-        return dir.createDirectory();
+        Path dir = FileSystems.getDefault().getPath(where);
+        return Files.createTempDirectory(dir, "name");
     }
 
     static Path createTemporaryDirectory() throws IOException {
-        return createTemporaryDirectory(System.getProperty("java.io.tmpdir"));
+        return Files.createTempDirectory("name");
     }
 
     static void removeAll(Path dir) throws IOException {
@@ -53,7 +48,7 @@
             @Override
             public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
                 try {
-                    file.delete();
+                    Files.delete(file);
                 } catch (IOException x) {
                     System.err.format("Unable to delete %s: %s\n", file, x);
                 }
@@ -62,7 +57,7 @@
             @Override
             public FileVisitResult postVisitDirectory(Path dir, IOException exc) {
                 try {
-                    dir.delete();
+                    Files.delete(dir);
                 } catch (IOException x) {
                     System.err.format("Unable to delete %s: %s\n", dir, x);
                 }
@@ -78,7 +73,7 @@
 
     static void deleteUnchecked(Path file) {
         try {
-            file.delete();
+            Files.delete(file);
         } catch (IOException exc) {
             System.err.format("Unable to delete %s: %s\n", file, exc);
         }
@@ -99,7 +94,7 @@
         String name = sb.toString();
         do {
             dir = dir.resolve(name).resolve(".");
-            dir.createDirectory();
+            Files.createDirectory(dir);
         } while (dir.toString().length() < 2048);
         return dir;
     }
@@ -111,8 +106,8 @@
         Path link = dir.resolve("testlink");
         Path target = dir.resolve("testtarget");
         try {
-            link.createSymbolicLink(target);
-            link.delete();
+            Files.createSymbolicLink(link, target);
+            Files.delete(link);
             return true;
         } catch (UnsupportedOperationException x) {
             return false;
--- a/jdk/test/java/nio/file/WatchService/Basic.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/file/WatchService/Basic.java	Wed Jul 05 17:35:13 2017 +0200
@@ -41,8 +41,9 @@
 
 public class Basic {
 
-    static void createFile(Path file) throws IOException {
-        file.newOutputStream().close();
+    static void checkKey(WatchKey key, Path dir) {
+        if (!key.isValid())
+            throw new RuntimeException("Key is not valid");
     }
 
     static void takeExpectedKey(WatchService watcher, WatchKey expected) {
@@ -80,19 +81,19 @@
         FileSystem fs = FileSystems.getDefault();
         Path name = fs.getPath("foo");
 
-        WatchService watcher = fs.newWatchService();
-        try {
+        try (WatchService watcher = fs.newWatchService()) {
             // --- ENTRY_CREATE ---
 
             // register for event
             System.out.format("register %s for ENTRY_CREATE\n", dir);
             WatchKey myKey = dir.register(watcher,
                 new WatchEvent.Kind<?>[]{ ENTRY_CREATE });
+            checkKey(myKey, dir);
 
             // create file
             Path file = dir.resolve("foo");
             System.out.format("create %s\n", file);
-            createFile(file);
+            Files.createFile(file);
 
             // remove key and check that we got the ENTRY_CREATE event
             takeExpectedKey(watcher, myKey);
@@ -112,9 +113,10 @@
                 new WatchEvent.Kind<?>[]{ ENTRY_DELETE });
             if (deleteKey != myKey)
                 throw new RuntimeException("register did not return existing key");
+            checkKey(deleteKey, dir);
 
             System.out.format("delete %s\n", file);
-            file.delete();
+            Files.delete(file);
             takeExpectedKey(watcher, myKey);
             checkExpectedEvent(myKey.pollEvents(),
                 StandardWatchEventKind.ENTRY_DELETE, name);
@@ -126,7 +128,7 @@
             System.out.println("OKAY");
 
             // create the file for the next test
-            createFile(file);
+            Files.createFile(file);
 
             // --- ENTRY_MODIFY ---
 
@@ -135,13 +137,11 @@
                 new WatchEvent.Kind<?>[]{ ENTRY_MODIFY });
             if (newKey != myKey)
                 throw new RuntimeException("register did not return existing key");
+            checkKey(newKey, dir);
 
             System.out.format("update: %s\n", file);
-            OutputStream out = file.newOutputStream(StandardOpenOption.APPEND);
-            try {
+            try (OutputStream out = Files.newOutputStream(file, StandardOpenOption.APPEND)) {
                 out.write("I am a small file".getBytes("UTF-8"));
-            } finally {
-                out.close();
             }
 
             // remove key and check that we got the ENTRY_MODIFY event
@@ -151,10 +151,7 @@
             System.out.println("OKAY");
 
             // done
-            file.delete();
-
-        } finally {
-            watcher.close();
+            Files.delete(file);
         }
     }
 
@@ -164,12 +161,12 @@
     static void testCancel(Path dir) throws IOException {
         System.out.println("-- Cancel --");
 
-        WatchService watcher = FileSystems.getDefault().newWatchService();
-        try {
+        try (WatchService watcher = FileSystems.getDefault().newWatchService()) {
 
             System.out.format("register %s for events\n", dir);
             WatchKey myKey = dir.register(watcher,
                 new WatchEvent.Kind<?>[]{ ENTRY_CREATE });
+            checkKey(myKey, dir);
 
             System.out.println("cancel key");
             myKey.cancel();
@@ -177,7 +174,7 @@
             // create a file in the directory
             Path file = dir.resolve("mars");
             System.out.format("create: %s\n", file);
-            createFile(file);
+            Files.createFile(file);
 
             // poll for keys - there will be none
             System.out.println("poll...");
@@ -190,12 +187,9 @@
             }
 
             // done
-            file.delete();
+            Files.delete(file);
 
             System.out.println("OKAY");
-
-        } finally {
-            watcher.close();
         }
     }
 
@@ -206,17 +200,16 @@
     static void testAutomaticCancel(Path dir) throws IOException {
         System.out.println("-- Automatic Cancel --");
 
-        Path subdir = dir.resolve("bar").createDirectory();
+        Path subdir = Files.createDirectory(dir.resolve("bar"));
 
-        WatchService watcher = FileSystems.getDefault().newWatchService();
-        try {
+        try (WatchService watcher = FileSystems.getDefault().newWatchService()) {
 
             System.out.format("register %s for events\n", subdir);
             WatchKey myKey = subdir.register(watcher,
                 new WatchEvent.Kind<?>[]{ ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY });
 
             System.out.format("delete: %s\n", subdir);
-            subdir.delete();
+            Files.delete(subdir);
             takeExpectedKey(watcher, myKey);
 
             System.out.println("reset key");
@@ -227,8 +220,6 @@
 
             System.out.println("OKAY");
 
-        } finally {
-            watcher.close();
         }
     }
 
@@ -411,7 +402,7 @@
             // create gus1
             Path file1 = dir.resolve(name1);
             System.out.format("create %s\n", file1);
-            createFile(file1);
+            Files.createFile(file1);
 
             // register with both watch services (different events)
             System.out.println("register for different events");
@@ -426,7 +417,7 @@
             // create gus2
             Path file2 = dir.resolve(name2);
             System.out.format("create %s\n", file2);
-            createFile(file2);
+            Files.createFile(file2);
 
             // check that key1 got ENTRY_CREATE
             takeExpectedKey(watcher1, key1);
@@ -439,7 +430,7 @@
                 throw new RuntimeException("key not expected");
 
             // delete gus1
-            file1.delete();
+            Files.delete(file1);
 
             // check that key2 got ENTRY_DELETE
             takeExpectedKey(watcher2, key2);
@@ -462,7 +453,7 @@
 
             // create file and key2 should be queued
             System.out.format("create %s\n", file1);
-            createFile(file1);
+            Files.createFile(file1);
             takeExpectedKey(watcher2, key2);
             checkExpectedEvent(key2.pollEvents(),
                 StandardWatchEventKind.ENTRY_CREATE, name1);
--- a/jdk/test/java/nio/file/WatchService/FileTreeModifier.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/file/WatchService/FileTreeModifier.java	Wed Jul 05 17:35:13 2017 +0200
@@ -62,10 +62,7 @@
         WatchService watcher = fs.newWatchService();
 
         // create directories
-        Path subdir = top
-           .resolve("a").createDirectory()
-           .resolve("b").createDirectory()
-           .resolve("c").createDirectory();
+        Path subdir = Files.createDirectories(top.resolve("a").resolve("b").resolve("c"));
 
         // Test ENTRY_CREATE with FILE_TREE modifier.
 
@@ -73,7 +70,7 @@
             new WatchEvent.Kind<?>[]{ ENTRY_CREATE }, FILE_TREE);
 
         // create file in a/b/c and check we get create event
-        Path file = subdir.resolve("foo").createFile();
+        Path file = Files.createFile(subdir.resolve("foo"));
         checkExpectedEvent(watcher, ENTRY_CREATE, top.relativize(file));
         key.reset();
 
@@ -85,7 +82,7 @@
             throw new RuntimeException("Existing key not returned");
 
         // delete a/b/c/foo and check we get delete event
-        file.delete();
+        Files.delete(file);
         checkExpectedEvent(watcher, ENTRY_DELETE, top.relativize(file));
         key.reset();
 
@@ -96,19 +93,20 @@
             throw new RuntimeException("Existing key not returned");
 
         // create a/b/c/foo
-        file.createFile();
+        Files.createFile(file);
 
         // check that key is not queued
+        WatchKey nextKey;
         try {
-            k = watcher.poll(3, TimeUnit.SECONDS);
+            nextKey = watcher.poll(3, TimeUnit.SECONDS);
         } catch (InterruptedException e) {
             throw new RuntimeException();
         }
-        if (k != null)
+        if (nextKey != null)
             throw new RuntimeException("WatchKey not expected to be polled");
 
         // create bar and check we get create event
-        file = top.resolve("bar").createFile();
+        file = Files.createFile(top.resolve("bar"));
         checkExpectedEvent(watcher, ENTRY_CREATE, top.relativize(file));
         key.reset();
 
@@ -121,11 +119,8 @@
             throw new RuntimeException("Existing key not returned");
 
         // modify bar and check we get modify event
-        OutputStream out = file.newOutputStream();
-        try {
+        try (OutputStream out = Files.newOutputStream(file)) {
             out.write("Double shot expresso please".getBytes("UTF-8"));
-        } finally {
-            out.close();
         }
         checkExpectedEvent(watcher, ENTRY_MODIFY, top.relativize(file));
         key.reset();
--- a/jdk/test/java/nio/file/WatchService/LotsOfEvents.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/file/WatchService/LotsOfEvents.java	Wed Jul 05 17:35:13 2017 +0200
@@ -55,15 +55,14 @@
     static void testOverflowEvent(Path dir)
         throws IOException, InterruptedException
     {
-        WatchService watcher = dir.getFileSystem().newWatchService();
-        try {
+        try (WatchService watcher = dir.getFileSystem().newWatchService()) {
             dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE);
 
             // create a lot of files
             int n = 1024;
             Path[] files = new Path[n];
             for (int i=0; i<n; i++) {
-                files[i] = dir.resolve("foo" + i).createFile();
+                files[i] = Files.createFile(dir.resolve("foo" + i));
             }
 
             // give time for events to accumulate (improve chance of overflow)
@@ -74,7 +73,7 @@
 
             // delete the files
             for (int i=0; i<n; i++) {
-                files[i].delete();
+                Files.delete(files[i]);
             }
 
             // give time for events to accumulate (improve chance of overflow)
@@ -82,8 +81,6 @@
 
             // check that we see the delete events (or overflow)
             drainAndCheckOverflowEvents(watcher, ENTRY_DELETE, n);
-        } finally {
-            watcher.close();
         }
     }
 
@@ -147,8 +144,7 @@
                 entries[i].create();
         }
 
-        WatchService watcher = dir.getFileSystem().newWatchService();
-        try {
+        try (WatchService watcher = dir.getFileSystem().newWatchService()) {
             dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
 
             // do several rounds of noise and test
@@ -169,7 +165,7 @@
                 // events for the same file.
                 WatchKey key = watcher.poll(15, TimeUnit.SECONDS);
                 while (key != null) {
-                    Set<Path> modified = new HashSet<Path>();
+                    Set<Path> modified = new HashSet<>();
                     for (WatchEvent<?> event: key.pollEvents()) {
                         WatchEvent.Kind<?> kind = event.kind();
                         Path file = (kind == OVERFLOW) ? null : (Path)event.context();
@@ -188,9 +184,6 @@
                     key = watcher.poll(2, TimeUnit.SECONDS);
                 }
             }
-
-        } finally {
-            watcher.close();
         }
     }
 
@@ -200,20 +193,17 @@
             this.file = file;
         }
         void create() throws IOException {
-            if (file.notExists())
-                file.createFile();
+            if (Files.notExists(file))
+                Files.createFile(file);
 
         }
         void deleteIfExists() throws IOException {
-            file.deleteIfExists();
+            Files.deleteIfExists(file);
         }
         void modifyIfExists() throws IOException {
-            if (file.exists()) {
-                OutputStream out = file.newOutputStream(StandardOpenOption.APPEND);
-                try {
+            if (Files.exists(file)) {
+                try (OutputStream out = Files.newOutputStream(file, StandardOpenOption.APPEND)) {
                     out.write("message".getBytes());
-                } finally {
-                    out.close();
                 }
             }
         }
--- a/jdk/test/java/nio/file/WatchService/SensitivityModifier.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/file/WatchService/SensitivityModifier.java	Wed Jul 05 17:35:13 2017 +0200
@@ -51,6 +51,7 @@
         }
     }
 
+    @SuppressWarnings("unchecked")
     static void doTest(Path top) throws Exception {
         FileSystem fs = top.getFileSystem();
         WatchService watcher = fs.newWatchService();
@@ -61,11 +62,11 @@
         Path[] dirs = new Path[nDirs];
         Path[] files = new Path[nFiles];
         for (int i=0; i<nDirs; i++) {
-            dirs[i] = top.resolve("dir" + i).createDirectory();
+            dirs[i] = Files.createDirectory(top.resolve("dir" + i));
         }
         for (int i=0; i<nFiles; i++) {
             Path dir = dirs[rand.nextInt(nDirs)];
-            files[i] = dir.resolve("file" + i).createFile();
+            files[i] = Files.createFile(dir.resolve("file" + i));
         }
 
         // register the directories (random sensitivity)
@@ -80,11 +81,8 @@
         for (int i=0; i<10; i++) {
             Path file = files[rand.nextInt(nFiles)];
             System.out.println("Modify: " + file);
-            OutputStream out = file.newOutputStream();
-            try {
+            try (OutputStream out = Files.newOutputStream(file)) {
                 out.write(new byte[100]);
-            } finally {
-                out.close();
             }
             System.out.println("Waiting for event...");
             WatchKey key = watcher.take();
@@ -92,7 +90,7 @@
             if (event.kind() != ENTRY_MODIFY)
                 throw new RuntimeException("Unexpected event: " + event);
             Path name = ((WatchEvent<Path>)event).context();
-            if (!name.equals(file.getName()))
+            if (!name.equals(file.getFileName()))
                 throw new RuntimeException("Unexpected context: " + name);
             System.out.println("Event OK");
 
--- a/jdk/test/java/nio/file/attribute/AclFileAttributeView/Basic.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/file/attribute/AclFileAttributeView/Basic.java	Wed Jul 05 17:35:13 2017 +0200
@@ -47,11 +47,11 @@
     // sanity check read and writing ACL
     static void testReadWrite(Path dir) throws IOException {
         Path file = dir.resolve("foo");
-        if (file.notExists())
-            file.createFile();
+        if (Files.notExists(file))
+            Files.createFile(file);
 
-        AclFileAttributeView view = file
-            .getFileAttributeView(AclFileAttributeView.class);
+        AclFileAttributeView view =
+            Files.getFileAttributeView(file, AclFileAttributeView.class);
 
         // print existing ACL
         List<AclEntry> acl = view.getAcl();
@@ -79,7 +79,7 @@
         }
 
         // if PosixFileAttributeView then repeat test with OWNER@
-        if (file.getFileStore().supportsFileAttributeView("posix")) {
+        if (Files.getFileStore(file).supportsFileAttributeView("posix")) {
             owner = file.getFileSystem().getUserPrincipalLookupService()
                 .lookupPrincipalByName("OWNER@");
             entry = AclEntry.newBuilder(entry).setPrincipal(owner).build();
@@ -115,7 +115,8 @@
 
     // sanity check create a file or directory with initial ACL
     static void testCreateFile(Path dir) throws IOException {
-        UserPrincipal user = Attributes.getOwner(dir);
+        UserPrincipal user = Files.getOwner(dir);
+        AclFileAttributeView view;
 
         // create file with initial ACL
         System.out.println("-- create file with initial ACL --");
@@ -127,8 +128,9 @@
                 .setPermissions(SYNCHRONIZE, READ_DATA, WRITE_DATA,
                     READ_ATTRIBUTES, READ_ACL, WRITE_ATTRIBUTES, DELETE)
                 .build());
-        file.createFile(asAclAttribute(fileAcl));
-        assertEquals(Attributes.getAcl(file), fileAcl);
+        Files.createFile(file, asAclAttribute(fileAcl));
+        view = Files.getFileAttributeView(file, AclFileAttributeView.class);
+        assertEquals(view.getAcl(), fileAcl);
 
         // create directory with initial ACL
         System.out.println("-- create directory with initial ACL --");
@@ -142,17 +144,18 @@
             AclEntry.newBuilder(fileAcl.get(0))
                 .setFlags(FILE_INHERIT)
                 .build());
-        subdir.createDirectory(asAclAttribute(dirAcl));
-        assertEquals(Attributes.getAcl(subdir), dirAcl);
+        Files.createDirectory(subdir, asAclAttribute(dirAcl));
+        view = Files.getFileAttributeView(subdir, AclFileAttributeView.class);
+        assertEquals(view.getAcl(), dirAcl);
     }
 
     public static void main(String[] args) throws IOException {
         // use work directory rather than system temporary directory to
         // improve chances that ACLs are supported
-        Path dir = Paths.get("./work" + new Random().nextInt())
-            .createDirectory();
+        Path dir = Paths.get("./work" + new Random().nextInt());
+        Files.createDirectory(dir);
         try {
-            if (!dir.getFileStore().supportsFileAttributeView("acl")) {
+            if (!Files.getFileStore(dir).supportsFileAttributeView("acl")) {
                 System.out.println("ACLs not supported - test skipped!");
                 return;
             }
--- a/jdk/test/java/nio/file/attribute/BasicFileAttributeView/Basic.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/file/attribute/BasicFileAttributeView/Basic.java	Wed Jul 05 17:35:13 2017 +0200
@@ -43,7 +43,7 @@
     static void checkAttributesOfDirectory(Path dir)
         throws IOException
     {
-        BasicFileAttributes attrs = Attributes.readBasicFileAttributes(dir);
+        BasicFileAttributes attrs = Files.readAttributes(dir, BasicFileAttributes.class);
         check(attrs.isDirectory(), "is a directory");
         check(!attrs.isRegularFile(), "is not a regular file");
         check(!attrs.isSymbolicLink(), "is not a link");
@@ -58,7 +58,7 @@
     static void checkAttributesOfFile(Path dir, Path file)
         throws IOException
     {
-        BasicFileAttributes attrs = Attributes.readBasicFileAttributes(file);
+        BasicFileAttributes attrs = Files.readAttributes(file, BasicFileAttributes.class);
         check(attrs.isRegularFile(), "is a regular file");
         check(!attrs.isDirectory(), "is not a directory");
         check(!attrs.isSymbolicLink(), "is not a link");
@@ -73,8 +73,8 @@
         // copy last-modified time and file create time from directory to file,
         // re-read attribtues, and check they match
         BasicFileAttributeView view =
-            file.getFileAttributeView(BasicFileAttributeView.class);
-        BasicFileAttributes dirAttrs = Attributes.readBasicFileAttributes(dir);
+            Files.getFileAttributeView(file, BasicFileAttributeView.class);
+        BasicFileAttributes dirAttrs = Files.readAttributes(dir, BasicFileAttributes.class);
         view.setTimes(dirAttrs.lastModifiedTime(), null, null);
         if (dirAttrs.creationTime() != null) {
             view.setTimes(null, null, dirAttrs.creationTime());
@@ -95,8 +95,8 @@
     static void checkAttributesOfLink(Path link)
         throws IOException
     {
-        BasicFileAttributes attrs = Attributes
-            .readBasicFileAttributes(link, LinkOption.NOFOLLOW_LINKS);
+        BasicFileAttributes attrs =
+            Files.readAttributes(link, BasicFileAttributes.class, LinkOption.NOFOLLOW_LINKS);
         check(attrs.isSymbolicLink(), "is a link");
         check(!attrs.isDirectory(), "is a directory");
         check(!attrs.isRegularFile(), "is not a regular file");
@@ -108,11 +108,8 @@
     {
         // create file
         Path file = dir.resolve("foo");
-        OutputStream out = file.newOutputStream();
-        try {
+        try (OutputStream out = Files.newOutputStream(file)) {
             out.write("this is not an empty file".getBytes("UTF-8"));
-        } finally {
-            out.close();
         }
 
         // check attributes of directory and file
@@ -122,7 +119,7 @@
         // symbolic links may be supported
         Path link = dir.resolve("link");
         try {
-            link.createSymbolicLink( file );
+            Files.createSymbolicLink(link, file);
         } catch (UnsupportedOperationException x) {
             return;
         } catch (IOException x) {
--- a/jdk/test/java/nio/file/attribute/DosFileAttributeView/Basic.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/file/attribute/DosFileAttributeView/Basic.java	Wed Jul 05 17:35:13 2017 +0200
@@ -74,27 +74,25 @@
     static void readWriteTests(Path dir) throws IOException {
 
         // create "foo" and test that we can read/write each FAT attribute
-        Path file = dir.resolve("foo");
-        file.createFile();
+        Path file = Files.createFile(dir.resolve("foo"));
         try {
-            testAttributes(file
-                .getFileAttributeView(DosFileAttributeView.class));
+            testAttributes(Files.getFileAttributeView(file, DosFileAttributeView.class));
 
             // Following tests use a symbolic link so skip if not supported
             if (!TestUtil.supportsLinks(dir))
                 return;
 
-            Path link = dir.resolve("link").createSymbolicLink(file);
+            Path link = dir.resolve("link");
+            Files.createSymbolicLink(link, file);
 
             // test following links
-            testAttributes(link
-                .getFileAttributeView(DosFileAttributeView.class));
+            testAttributes(Files.getFileAttributeView(link, DosFileAttributeView.class));
 
             // test not following links
             try {
                 try {
-                    testAttributes(link
-                        .getFileAttributeView(DosFileAttributeView.class, NOFOLLOW_LINKS));
+                    testAttributes(Files
+                        .getFileAttributeView(link, DosFileAttributeView.class, NOFOLLOW_LINKS));
                 } catch (IOException x) {
                     // access to link attributes not supported
                     return;
@@ -103,32 +101,32 @@
                 // set all attributes on link
                 // run test on target of link (which leaves them all un-set)
                 // check that attributes of link remain all set
-                setAll(link
-                    .getFileAttributeView(DosFileAttributeView.class, NOFOLLOW_LINKS), true);
-                testAttributes(link
-                    .getFileAttributeView(DosFileAttributeView.class));
-                DosFileAttributes attrs = Attributes.readDosFileAttributes(link, NOFOLLOW_LINKS);
+                setAll(Files
+                    .getFileAttributeView(link, DosFileAttributeView.class, NOFOLLOW_LINKS), true);
+                testAttributes(Files
+                    .getFileAttributeView(link, DosFileAttributeView.class));
+                DosFileAttributes attrs =
+                    Files.getFileAttributeView(link, DosFileAttributeView.class, NOFOLLOW_LINKS)
+                         .readAttributes();
                 check(attrs.isReadOnly());
                 check(attrs.isHidden());
                 check(attrs.isArchive());
                 check(attrs.isSystem());
-                setAll(link
-                    .getFileAttributeView(DosFileAttributeView.class, NOFOLLOW_LINKS), false);
+                setAll(Files
+                    .getFileAttributeView(link, DosFileAttributeView.class, NOFOLLOW_LINKS), false);
 
                 // set all attributes on target
                 // run test on link (which leaves them all un-set)
                 // check that attributes of target remain all set
-                setAll(link
-                    .getFileAttributeView(DosFileAttributeView.class), true);
-                testAttributes(link
-                    .getFileAttributeView(DosFileAttributeView.class, NOFOLLOW_LINKS));
-                attrs = Attributes.readDosFileAttributes(link);
+                setAll(Files.getFileAttributeView(link, DosFileAttributeView.class), true);
+                testAttributes(Files
+                    .getFileAttributeView(link, DosFileAttributeView.class, NOFOLLOW_LINKS));
+                attrs = Files.getFileAttributeView(link, DosFileAttributeView.class).readAttributes();
                 check(attrs.isReadOnly());
                 check(attrs.isHidden());
                 check(attrs.isArchive());
                 check(attrs.isSystem());
-                setAll(link
-                    .getFileAttributeView(DosFileAttributeView.class), false);
+                setAll(Files.getFileAttributeView(link, DosFileAttributeView.class), false);
             } finally {
                 TestUtil.deleteUnchecked(link);
             }
@@ -143,7 +141,7 @@
 
         try {
             // skip test if DOS file attributes not supported
-            if (!dir.getFileStore().supportsFileAttributeView("dos")) {
+            if (!Files.getFileStore(dir).supportsFileAttributeView("dos")) {
                 System.out.println("DOS file attribute not supported.");
                 return;
             }
--- a/jdk/test/java/nio/file/attribute/FileStoreAttributeView/Basic.java	Tue Feb 15 12:34:33 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 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.
- */
-
-/* @test
- * @bug 4313887 6838333
- * @summary Unit test for java.nio.file.attribute.FileStoreAttributeView
- * @library ../..
- */
-
-import java.nio.file.*;
-import java.nio.file.attribute.*;
-import java.io.File;
-import java.io.IOException;
-import java.util.*;
-
-/**
- * Simple unit test for FileStoreAttributeView that checks that the disk space
- * attribtues are "close" to the equivalent values reported by java.io.File.
- */
-
-public class Basic {
-
-    static final long K = 1024L;
-    static final long G = 1024L * 1024L * 1024L;
-
-    /**
-     * Print out the disk space information for the given file system
-     */
-    static void printFileStore(FileStore fs) throws IOException {
-        FileStoreSpaceAttributeView view =
-            fs.getFileStoreAttributeView(FileStoreSpaceAttributeView.class);
-        FileStoreSpaceAttributes attrs = view.readAttributes();
-
-        long total = attrs.totalSpace() / K;
-        long used = (attrs.totalSpace() - attrs.unallocatedSpace()) / K;
-        long avail = attrs.usableSpace() / K;
-
-        String s = fs.toString();
-        if (s.length() > 20) {
-            System.out.println(s);
-            s = "";
-        }
-        System.out.format("%-20s %12d %12d %12d\n", s, total, used, avail);
-    }
-
-    /**
-     * Check that two values are within 1GB of each other
-     */
-    static void checkWithin1GB(long value1, long value2) {
-        long diff = Math.abs(value1 - value2);
-        if (diff > G)
-            throw new RuntimeException("values differ by more than 1GB");
-    }
-
-    /**
-     * Check disk space on the file system of the given file
-     */
-    static void checkSpace(Path file) throws IOException {
-        System.out.println(" -- check space -- ");
-        System.out.println(file);
-
-        FileStore fs = file.getFileStore();
-        System.out.format("Filesystem: %s\n", fs);
-
-        // get values reported by java.io.File
-        File f = new File(file.toString());
-        long total = f.getTotalSpace();
-        long free = f.getFreeSpace();
-        long usable = f.getUsableSpace();
-        System.out.println("java.io.File");
-        System.out.format("    Total: %d\n", total);
-        System.out.format("     Free: %d\n", free);
-        System.out.format("   Usable: %d\n", usable);
-
-        // get values reported by the FileStoreSpaceAttributeView
-        FileStoreSpaceAttributes attrs = fs
-            .getFileStoreAttributeView(FileStoreSpaceAttributeView.class)
-            .readAttributes();
-        System.out.println("java.nio.file.FileStoreSpaceAttributeView:");
-        System.out.format("    Total: %d\n", attrs.totalSpace());
-        System.out.format("     Free: %d\n", attrs.unallocatedSpace());
-        System.out.format("   Usable: %d\n", attrs.usableSpace());
-
-        // check values are "close"
-        checkWithin1GB(total, attrs.totalSpace());
-        checkWithin1GB(free, attrs.unallocatedSpace());
-        checkWithin1GB(usable, attrs.usableSpace());
-
-        // get values by name
-        checkWithin1GB(total, (Long)fs.getAttribute("space:totalSpace"));
-        checkWithin1GB(free, (Long)fs.getAttribute("space:unallocatedSpace"));
-        checkWithin1GB(usable, (Long)fs.getAttribute("space:usableSpace"));
-    }
-
-    public static void main(String[] args) throws IOException {
-        // print out the disk space information for all file systems
-        FileSystem fs = FileSystems.getDefault();
-        for (FileStore store: fs.getFileStores()) {
-            printFileStore(store);
-        }
-
-        Path dir = TestUtil.createTemporaryDirectory();
-        try {
-            // check space using directory
-            checkSpace(dir);
-
-            // check space using file
-            Path file = dir.resolve("foo").createFile();
-            checkSpace(file);
-
-        } finally {
-            TestUtil.removeAll(dir);
-        }
-    }
-}
--- a/jdk/test/java/nio/file/attribute/FileTime/Basic.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/file/attribute/FileTime/Basic.java	Wed Jul 05 17:35:13 2017 +0200
@@ -29,13 +29,16 @@
 import java.nio.file.attribute.FileTime;
 import java.util.concurrent.TimeUnit;
 import static java.util.concurrent.TimeUnit.*;
-import java.io.IOException;
+import java.util.Random;
 
 public class Basic {
 
-    public static void main(String[] args) throws IOException {
+    static final Random rand = new Random();
+
+    public static void main(String[] args) {
         long now = System.currentTimeMillis();
         long tomorrowInDays = TimeUnit.DAYS.convert(now, MILLISECONDS) + 1;
+        long yesterdayInDays = TimeUnit.DAYS.convert(now, MILLISECONDS) - 1;
 
         // equals
         eq(now, MILLISECONDS, now, MILLISECONDS);
@@ -50,6 +53,29 @@
         cmp(now, MILLISECONDS, now+1234, MILLISECONDS, -1);
         cmp(tomorrowInDays, DAYS, now, MILLISECONDS, 1);
         cmp(now, MILLISECONDS, tomorrowInDays, DAYS, -1);
+        cmp(yesterdayInDays, DAYS, now, MILLISECONDS, -1);
+        cmp(now, MILLISECONDS, yesterdayInDays, DAYS, 1);
+        cmp(yesterdayInDays, DAYS, now, MILLISECONDS, -1);
+        cmp(Long.MAX_VALUE, DAYS, Long.MAX_VALUE, NANOSECONDS, 1);
+        cmp(Long.MAX_VALUE, DAYS, Long.MIN_VALUE, NANOSECONDS, 1);
+        cmp(Long.MIN_VALUE, DAYS, Long.MIN_VALUE, NANOSECONDS, -1);
+        cmp(Long.MIN_VALUE, DAYS, Long.MAX_VALUE, NANOSECONDS, -1);
+
+        // to(TimeUnit)
+        to(MILLISECONDS.convert(1, DAYS) - 1, MILLISECONDS);
+        to(MILLISECONDS.convert(1, DAYS) + 0, MILLISECONDS);
+        to(MILLISECONDS.convert(1, DAYS) + 1, MILLISECONDS);
+        to(1, MILLISECONDS);
+        to(0, MILLISECONDS);
+        to(1, MILLISECONDS);
+        to(MILLISECONDS.convert(-1, DAYS) - 1, MILLISECONDS);
+        to(MILLISECONDS.convert(-1, DAYS) + 0, MILLISECONDS);
+        to(MILLISECONDS.convert(-1, DAYS) + 1, MILLISECONDS);
+        for (TimeUnit unit: TimeUnit.values()) {
+            for (int i=0; i<100; i++) { to(rand.nextLong(), unit); }
+            to(Long.MIN_VALUE, unit);
+            to(Long.MAX_VALUE, unit);
+        }
 
         // toString
         ts(1L, DAYS, "1970-01-02T00:00:00Z");
@@ -59,6 +85,8 @@
         ts(1L, MILLISECONDS, "1970-01-01T00:00:00.001Z");
         ts(1L, MICROSECONDS, "1970-01-01T00:00:00.000001Z");
         ts(1L, NANOSECONDS, "1970-01-01T00:00:00.000000001Z");
+        ts(999999999L, NANOSECONDS, "1970-01-01T00:00:00.999999999Z");
+        ts(9999999999L, NANOSECONDS, "1970-01-01T00:00:09.999999999Z");
 
         ts(-1L, DAYS, "1969-12-31T00:00:00Z");
         ts(-1L, HOURS, "1969-12-31T23:00:00Z");
@@ -67,6 +95,8 @@
         ts(-1L, MILLISECONDS, "1969-12-31T23:59:59.999Z");
         ts(-1L, MICROSECONDS, "1969-12-31T23:59:59.999999Z");
         ts(-1L, NANOSECONDS, "1969-12-31T23:59:59.999999999Z");
+        ts(-999999999L, NANOSECONDS, "1969-12-31T23:59:59.000000001Z");
+        ts(-9999999999L, NANOSECONDS, "1969-12-31T23:59:50.000000001Z");
 
         ts(-62135596799999L, MILLISECONDS, "0001-01-01T00:00:00.001Z");
         ts(-62135596800000L, MILLISECONDS, "0001-01-01T00:00:00Z");
@@ -114,9 +144,24 @@
             throw new RuntimeException("should not be equal");
     }
 
-    static void ts(long v, TimeUnit y, String expected) {
-        String s = FileTime.from(v, y).toString();
-        if (!s.equals(expected))
-            throw new RuntimeException("unexpected format");
+    static void to(long v, TimeUnit unit) {
+        FileTime t = FileTime.from(v, unit);
+        for (TimeUnit u: TimeUnit.values()) {
+            long result = t.to(u);
+            long expected = u.convert(v, unit);
+            if (result != expected) {
+                throw new RuntimeException("unexpected result");
+            }
+        }
+    }
+
+    static void ts(long v, TimeUnit unit, String expected) {
+        String result = FileTime.from(v, unit).toString();
+        if (!result.equals(expected)) {
+            System.err.format("FileTime.from(%d, %s).toString() failed\n", v, unit);
+            System.err.format("Expected: %s\n", expected);
+            System.err.format("     Got: %s\n", result);
+            throw new RuntimeException();
+        }
     }
 }
--- a/jdk/test/java/nio/file/attribute/PosixFileAttributeView/Basic.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/file/attribute/PosixFileAttributeView/Basic.java	Wed Jul 05 17:35:13 2017 +0200
@@ -49,9 +49,8 @@
         Set<PosixFilePermission> perms = PosixFilePermissions.fromString(mode);
 
         // change permissions and re-read them.
-        Attributes.setPosixFilePermissions(file, perms);
-        Set<PosixFilePermission> current = Attributes
-            .readPosixFileAttributes(file).permissions();
+        Files.setPosixFilePermissions(file, perms);
+        Set<PosixFilePermission> current = Files.getPosixFilePermissions(file);
         if (!current.equals(perms)) {
             throw new RuntimeException("Actual permissions: " +
                 PosixFilePermissions.toString(current) + ", expected: " +
@@ -59,8 +58,8 @@
         }
 
         // repeat test using setAttribute/getAttribute
-        file.setAttribute("posix:permissions", perms);
-        current = (Set<PosixFilePermission>)file.getAttribute("posix:permissions");
+        Files.setAttribute(file, "posix:permissions", perms);
+        current = (Set<PosixFilePermission>)Files.getAttribute(file, "posix:permissions");
         if (!current.equals(perms)) {
             throw new RuntimeException("Actual permissions: " +
                 PosixFilePermissions.toString(current) + ", expected: " +
@@ -97,25 +96,25 @@
         FileAttribute<Set<PosixFilePermission>> attr =
             PosixFilePermissions.asFileAttribute(requested);
         System.out.format("create file with mode: %s\n", mode);
-        file.createFile(attr);
+        Files.createFile(file, attr);
         try {
-            checkSecure(requested,  file
-                .getFileAttributeView(PosixFileAttributeView.class)
-                .readAttributes()
-                .permissions());
+            checkSecure(requested,
+                Files.getFileAttributeView(file, PosixFileAttributeView.class)
+                     .readAttributes()
+                     .permissions());
         } finally {
-            file.delete();
+            Files.delete(file);
         }
 
         System.out.format("create directory with mode: %s\n", mode);
-        file.createDirectory(attr);
+        Files.createDirectory(file, attr);
         try {
-            checkSecure(requested,  file
-                .getFileAttributeView(PosixFileAttributeView.class)
-                .readAttributes()
-                .permissions());
+            checkSecure(requested,
+                Files.getFileAttributeView(file, PosixFileAttributeView.class)
+                     .readAttributes()
+                     .permissions());
         } finally {
-            file.delete();
+            Files.delete(file);
         }
     }
 
@@ -130,11 +129,11 @@
         // create file and test updating and reading its permissions
         Path file = dir.resolve("foo");
         System.out.format("create %s\n", file);
-        file.createFile();
+        Files.createFile(file);
         try {
             // get initial permissions so that we can restore them later
-            PosixFileAttributeView view = file
-                .getFileAttributeView(PosixFileAttributeView.class);
+            PosixFileAttributeView view =
+                Files.getFileAttributeView(file, PosixFileAttributeView.class);
             Set<PosixFilePermission> save = view.readAttributes()
                 .permissions();
 
@@ -165,7 +164,7 @@
                 view.setPermissions(save);
             }
         } finally {
-            file.delete();
+            Files.delete(file);
         }
 
         // create link (to file that doesn't exist) and test reading of
@@ -173,15 +172,18 @@
         if (TestUtil.supportsLinks(dir)) {
             Path link = dir.resolve("link");
             System.out.format("create link %s\n", link);
-            link.createSymbolicLink(file);
+            Files.createSymbolicLink(link, file);
             try {
-                PosixFileAttributes attrs = Attributes
-                    .readPosixFileAttributes(link, NOFOLLOW_LINKS);
+                PosixFileAttributes attrs =
+                    Files.getFileAttributeView(link,
+                                               PosixFileAttributeView.class,
+                                               NOFOLLOW_LINKS)
+                         .readAttributes();
                 if (!attrs.isSymbolicLink()) {
                     throw new RuntimeException("not a link");
                 }
             } finally {
-                link.delete();
+                Files.delete(link);
             }
         }
 
@@ -235,12 +237,12 @@
         Path file = dir.resolve("gus");
         System.out.format("create %s\n", file);
 
-        file.createFile();
+        Files.createFile(file);
         try {
 
             // read attributes of directory to get owner/group
-            PosixFileAttributeView view = file
-                .getFileAttributeView(PosixFileAttributeView.class);
+            PosixFileAttributeView view =
+                Files.getFileAttributeView(file, PosixFileAttributeView.class);
             PosixFileAttributes attrs = view.readAttributes();
 
             // set to existing owner/group
@@ -248,13 +250,13 @@
             view.setGroup(attrs.group());
 
             // repeat test using set/getAttribute
-            UserPrincipal owner = (UserPrincipal)file.getAttribute("posix:owner");
-            file.setAttribute("posix:owner", owner);
-            UserPrincipal group = (UserPrincipal)file.getAttribute("posix:group");
-            file.setAttribute("posix:group", group);
+            UserPrincipal owner = (UserPrincipal)Files.getAttribute(file, "posix:owner");
+            Files.setAttribute(file, "posix:owner", owner);
+            UserPrincipal group = (UserPrincipal)Files.getAttribute(file, "posix:group");
+            Files.setAttribute(file, "posix:group", group);
 
         } finally {
-            file.delete();
+            Files.delete(file);
         }
 
         System.out.println("OKAY");
@@ -272,7 +274,7 @@
             .getUserPrincipalLookupService();
 
         // read attributes of directory to get owner/group
-        PosixFileAttributes attrs = Attributes.readPosixFileAttributes(dir);
+        PosixFileAttributes attrs = Files.readAttributes(dir, PosixFileAttributes.class);
 
         // lookup owner and check it matches file's owner
         System.out.format("lookup: %s\n", attrs.owner().getName());
@@ -322,8 +324,8 @@
     {
         System.out.println("-- Exceptions --");
 
-        PosixFileAttributeView view = dir
-            .getFileAttributeView(PosixFileAttributeView.class);
+        PosixFileAttributeView view =
+            Files.getFileAttributeView(dir,PosixFileAttributeView.class);
 
         // NullPointerException
         try {
@@ -355,7 +357,7 @@
         } catch (NullPointerException x) {
         }
         try {
-            Set<PosixFilePermission> perms = new HashSet<PosixFilePermission>();
+            Set<PosixFilePermission> perms = new HashSet<>();
             perms.add(null);
             view.setPermissions(perms);
             throw new RuntimeException("NullPointerException not thrown");
@@ -377,7 +379,7 @@
     public static void main(String[] args) throws IOException {
         Path dir = TestUtil.createTemporaryDirectory();
         try {
-            if (!dir.getFileStore().supportsFileAttributeView("posix")) {
+            if (!Files.getFileStore(dir).supportsFileAttributeView("posix")) {
                 System.out.println("PosixFileAttributeView not supported");
                 return;
             }
--- a/jdk/test/java/nio/file/attribute/UserDefinedFileAttributeView/Basic.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/file/attribute/UserDefinedFileAttributeView/Basic.java	Wed Jul 05 17:35:13 2017 +0200
@@ -79,8 +79,8 @@
     }
 
     static void test(Path file, LinkOption... options) throws IOException {
-        final UserDefinedFileAttributeView view = file
-            .getFileAttributeView(UserDefinedFileAttributeView.class, options);
+        final UserDefinedFileAttributeView view =
+            Files.getFileAttributeView(file, UserDefinedFileAttributeView.class, options);
         ByteBuffer buf = rand.nextBoolean() ?
             ByteBuffer.allocate(100) : ByteBuffer.allocateDirect(100);
 
@@ -131,24 +131,24 @@
         // Test: dynamic access
         String name = "user:" + ATTR_NAME;
         byte[] valueAsBytes = ATTR_VALUE.getBytes();
-        file.setAttribute(name, valueAsBytes);
-        byte[] actualAsBytes = (byte[])file.getAttribute(name);
+        Files.setAttribute(file, name, valueAsBytes);
+        byte[] actualAsBytes = (byte[])Files.getAttribute(file, name);
         if (!Arrays.equals(valueAsBytes, actualAsBytes))
             throw new RuntimeException("Unexpected attribute value");
-        Map<String,?> map = file.readAttributes(name);
+        Map<String,?> map = Files.readAttributes(file, name);
         if (!Arrays.equals(valueAsBytes, (byte[])map.get(ATTR_NAME)))
             throw new RuntimeException("Unexpected attribute value");
-        map = file.readAttributes("user:*");
+        map = Files.readAttributes(file, "user:*");
         if (!Arrays.equals(valueAsBytes, (byte[])map.get(ATTR_NAME)))
             throw new RuntimeException("Unexpected attribute value");
-        map = file.readAttributes("user:DoesNotExist");
+        map = Files.readAttributes(file, "user:DoesNotExist");
         if (!map.isEmpty())
             throw new RuntimeException("Map expected to be empty");
     }
 
     static void miscTests(final Path file) throws IOException {
-        final UserDefinedFileAttributeView view = file
-            .getFileAttributeView(UserDefinedFileAttributeView.class);
+        final UserDefinedFileAttributeView view =
+            Files.getFileAttributeView(file, UserDefinedFileAttributeView.class);
         view.write(ATTR_NAME, ByteBuffer.wrap(ATTR_VALUE.getBytes()));
 
         // NullPointerException
@@ -180,31 +180,31 @@
             }});
         expectNullPointerException(new Task() {
             public void run() throws IOException {
-                file.getAttribute(null);
+                Files.getAttribute(file, null);
             }});
         expectNullPointerException(new Task() {
             public void run() throws IOException {
-                file.getAttribute("user:" + ATTR_NAME, (LinkOption[])null);
+                Files.getAttribute(file, "user:" + ATTR_NAME, (LinkOption[])null);
             }});
         expectNullPointerException(new Task() {
             public void run() throws IOException {
-                file.setAttribute("user:" + ATTR_NAME, null);
+                Files.setAttribute(file, "user:" + ATTR_NAME, null);
             }});
         expectNullPointerException(new Task() {
             public void run() throws IOException {
-                file.setAttribute(null, new byte[0]);
+                Files.setAttribute(file, null, new byte[0]);
             }});
         expectNullPointerException(new Task() {
             public void run() throws IOException {
-                file.setAttribute("user: " + ATTR_NAME, new byte[0], (LinkOption[])null);
+                Files.setAttribute(file, "user: " + ATTR_NAME, new byte[0], (LinkOption[])null);
             }});
         expectNullPointerException(new Task() {
             public void run() throws IOException {
-                file.readAttributes((String)null);
+                Files.readAttributes(file, (String)null);
             }});
         expectNullPointerException(new Task() {
             public void run() throws IOException {
-                file.readAttributes("*", (LinkOption[])null);
+                Files.readAttributes(file, "*", (LinkOption[])null);
             }});
 
         // Read-only buffer
@@ -229,46 +229,50 @@
         // create temporary directory to run tests
         Path dir = TestUtil.createTemporaryDirectory();
         try {
-            if (!dir.getFileStore().supportsFileAttributeView("user")) {
+            if (!Files.getFileStore(dir).supportsFileAttributeView("user")) {
                 System.out.println("UserDefinedFileAttributeView not supported - skip test");
                 return;
             }
 
             // test access to user defined attributes of regular file
-            Path file = dir.resolve("foo.html").createFile();
+            Path file = dir.resolve("foo.html");
+            Files.createFile(file);
             try {
                 test(file);
             } finally {
-                file.delete();
+                Files.delete(file);
             }
 
-            // test access to user define attributes of directory
-            file = dir.resolve("foo").createDirectory();
+            // test access to user defined attributes of directory
+            Path subdir = dir.resolve("foo");
+            Files.createDirectory(subdir);
             try {
-                test(file);
+                test(subdir);
             } finally {
-                file.delete();
+                Files.delete(subdir);
             }
 
             // test access to user defined attributes of sym link
             if (TestUtil.supportsLinks(dir)) {
                 Path target = dir.resolve("doesnotexist");
-                Path link = dir.resolve("link").createSymbolicLink(target);
+                Path link = dir.resolve("link");
+                Files.createSymbolicLink(link, target);
                 try {
                     test(link, NOFOLLOW_LINKS);
                 } catch (IOException x) {
                     // access to attributes of sym link may not be supported
                 } finally {
-                    link.delete();
+                    Files.delete(link);
                 }
             }
 
             // misc. tests
             try {
-                file = dir.resolve("foo.txt").createFile();
+                file = dir.resolve("foo.txt");
+                Files.createFile(file);
                 miscTests(dir);
             } finally {
-                file.delete();
+                Files.delete(file);
             }
 
         } finally {
--- a/jdk/test/java/nio/file/spi/SetDefaultProvider.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/file/spi/SetDefaultProvider.java	Wed Jul 05 17:35:13 2017 +0200
@@ -22,14 +22,13 @@
  */
 
 /* @test
- * @bug 4313887
+ * @bug 4313887 7006126
  * @summary Unit test for java.nio.file.spi.FileSystemProvider
  * @build TestProvider SetDefaultProvider
  * @run main/othervm -Djava.nio.file.spi.DefaultFileSystemProvider=TestProvider SetDefaultProvider
  */
 
 import java.nio.file.*;
-import java.nio.file.spi.*;
 
 public class SetDefaultProvider {
     public static void main(String[] args) throws Exception {
--- a/jdk/test/java/nio/file/spi/TestProvider.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/nio/file/spi/TestProvider.java	Wed Jul 05 17:35:13 2017 +0200
@@ -24,6 +24,7 @@
 import java.nio.file.spi.FileSystemProvider;
 import java.nio.file.*;
 import java.nio.file.attribute.*;
+import java.nio.channels.SeekableByteChannel;
 import java.net.URI;
 import java.util.*;
 import java.io.IOException;
@@ -34,7 +35,6 @@
 
     public TestProvider(FileSystemProvider defaultProvider) {
         theFileSystem = new TestFileSystem(this);
-
     }
 
     @Override
@@ -57,6 +57,124 @@
         throw new RuntimeException("not implemented");
     }
 
+    @Override
+    public void setAttribute(Path file, String attribute, Object value,
+                             LinkOption... options)
+        throws IOException
+    {
+        throw new RuntimeException("not implemented");
+    }
+
+    @Override
+    public Map<String,Object> readAttributes(Path file, String attributes,
+                                             LinkOption... options)
+        throws IOException
+    {
+        throw new RuntimeException("not implemented");
+    }
+
+    @Override
+    public <A extends BasicFileAttributes> A readAttributes(Path file,
+                                                            Class<A> type,
+                                                            LinkOption... options)
+        throws IOException
+    {
+        throw new RuntimeException("not implemented");
+    }
+
+    @Override
+    public <V extends FileAttributeView> V getFileAttributeView(Path file,
+                                                                Class<V> type,
+                                                                LinkOption... options)
+    {
+        throw new RuntimeException("not implemented");
+    }
+
+
+    @Override
+    public void delete(Path file) throws IOException {
+        throw new RuntimeException("not implemented");
+    }
+
+    @Override
+    public void createSymbolicLink(Path link, Path target, FileAttribute<?>... attrs)
+        throws IOException
+    {
+        throw new RuntimeException("not implemented");
+    }
+
+    @Override
+    public void createLink(Path link, Path existing) throws IOException {
+        throw new RuntimeException("not implemented");
+    }
+
+    @Override
+    public Path readSymbolicLink(Path link) throws IOException {
+        throw new RuntimeException("not implemented");
+    }
+
+
+    @Override
+    public void copy(Path source, Path target, CopyOption... options)
+        throws IOException
+    {
+        throw new RuntimeException("not implemented");
+    }
+
+    @Override
+    public void move(Path source, Path target, CopyOption... options)
+        throws IOException
+    {
+        throw new RuntimeException("not implemented");
+    }
+
+    @Override
+    public DirectoryStream<Path> newDirectoryStream(Path dir,
+                                                    DirectoryStream.Filter<? super Path> filter)
+        throws IOException
+    {
+        throw new RuntimeException("not implemented");
+    }
+
+    @Override
+    public void createDirectory(Path dir, FileAttribute<?>... attrs)
+        throws IOException
+    {
+        throw new RuntimeException("not implemented");
+    }
+
+    @Override
+    public SeekableByteChannel newByteChannel(Path file,
+                                              Set<? extends OpenOption> options,
+                                              FileAttribute<?>... attrs)
+        throws IOException
+    {
+        throw new RuntimeException("not implemented");
+    }
+
+
+    @Override
+    public boolean isHidden(Path file) throws IOException {
+        throw new RuntimeException("not implemented");
+    }
+
+    @Override
+    public FileStore getFileStore(Path file) throws IOException {
+        throw new RuntimeException("not implemented");
+    }
+
+    @Override
+    public boolean isSameFile(Path file, Path other) throws IOException {
+        throw new RuntimeException("not implemented");
+    }
+
+    @Override
+    public void checkAccess(Path file, AccessMode... modes)
+        throws IOException
+    {
+        throw new RuntimeException("not implemented");
+    }
+
     static class TestFileSystem extends FileSystem {
         private final TestProvider provider;
 
@@ -105,7 +223,7 @@
         }
 
         @Override
-        public Path getPath(String path) {
+        public Path getPath(String first, String... more) {
             throw new RuntimeException("not implemented");
         }
 
@@ -124,5 +242,4 @@
             throw new RuntimeException("not implemented");
         }
     }
-
 }
--- a/jdk/test/java/util/Arrays/Sorting.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/util/Arrays/Sorting.java	Wed Jul 05 17:35:13 2017 +0200
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 6880672 6896573 6899694 6976036
+ * @bug 6880672 6896573 6899694 6976036 7013585 7018258
  * @summary Exercise Arrays.sort
  * @build Sorting
  * @run main Sorting -shortrun
@@ -66,7 +66,7 @@
         }
         long end = System.currentTimeMillis();
 
-        out.format("\nPASSED in %d sec.\n", Math.round((end - start) / 1E3));
+        out.format("PASSED in %d sec.\n", Math.round((end - start) / 1E3));
     }
 
     private static void testAndCheck(int[] lengths, long[] randoms) {
@@ -78,46 +78,19 @@
         testEmptyAndNullFloatArray();
         testEmptyAndNullDoubleArray();
 
-        for (long random : randoms) {
-            reset(random);
-
-            for (int length : lengths) {
-                testAndCheckWithInsertionSort(length, random);
-            }
-            reset(random);
-
-            for (int length : lengths) {
-                testAndCheckWithCheckSum(length, random);
-            }
-            reset(random);
-
-            for (int length : lengths) {
-                testAndCheckWithScrambling(length, random);
-            }
-            reset(random);
-
+        for (int length : lengths) {
+            testMergeSort(length);
+            testAndCheckRange(length);
+            testAndCheckSubArray(length);
+        }
+        for (long seed : randoms) {
             for (int length : lengths) {
-                testAndCheckFloat(length, random);
-            }
-            reset(random);
-
-            for (int length : lengths) {
-                testAndCheckDouble(length, random);
-            }
-            reset(random);
-
-            for (int length : lengths) {
-                testAndCheckRange(length, random);
-            }
-            reset(random);
-
-            for (int length : lengths) {
-                testAndCheckSubArray(length, random);
-            }
-            reset(random);
-
-            for (int length : lengths) {
-                testStable(length, random);
+                testAndCheckWithInsertionSort(length, new MyRandom(seed));
+                testAndCheckWithCheckSum(length, new MyRandom(seed));
+                testAndCheckWithScrambling(length, new MyRandom(seed));
+                testAndCheckFloat(length, new MyRandom(seed));
+                testAndCheckDouble(length, new MyRandom(seed));
+                testStable(length, new MyRandom(seed));
             }
         }
     }
@@ -255,7 +228,7 @@
         failed("Arrays.sort(double[]) shouldn't catch null array");
     }
 
-    private static void testAndCheckSubArray(int length, long random) {
+    private static void testAndCheckSubArray(int length) {
         ourDescription = "Check sorting of subarray";
         int[] golden = new int[length];
         boolean newLine = false;
@@ -282,7 +255,7 @@
         }
     }
 
-    private static void testAndCheckRange(int length, long random) {
+    private static void testAndCheckRange(int length) {
         ourDescription = "Check range check";
         int[] golden = new int[length];
 
@@ -300,15 +273,16 @@
         out.println();
     }
 
-    private static void testStable(int length, long random) {
+    private static void testStable(int length, MyRandom random) {
         ourDescription = "Check if sorting is stable";
-        Pair[] a = build(length);
+        Pair[] a = build(length, random);
 
-        out.println("Test 'stable': " + "random = " +  random +
+        out.println("Test 'stable': " + "random = " + random.getSeed() +
             ", length = " + length);
         Arrays.sort(a);
         checkSorted(a);
         checkStable(a);
+        out.println();
     }
 
     private static void checkSorted(Pair[] a) {
@@ -342,11 +316,11 @@
         }
     }
 
-    private static Pair[] build(int length) {
+    private static Pair[] build(int length, Random random) {
         Pair[] a = new Pair[length * 4];
 
         for (int i = 0; i < a.length; ) {
-            int key = ourRandom.nextInt();
+            int key = random.nextInt();
             a[i++] = new Pair(key, 1);
             a[i++] = new Pair(key, 2);
             a[i++] = new Pair(key, 3);
@@ -389,7 +363,7 @@
     }
 
 
-    private static void testAndCheckWithInsertionSort(int length, long random) {
+    private static void testAndCheckWithInsertionSort(int length, MyRandom random) {
         if (length > 1000) {
             return;
         }
@@ -398,13 +372,13 @@
 
         for (int m = 1; m < 2 * length; m *= 2) {
             for (UnsortedBuilder builder : UnsortedBuilder.values()) {
-                builder.build(golden, m);
+                builder.build(golden, m, random);
                 int[] test = golden.clone();
 
                 for (TypeConverter converter : TypeConverter.values()) {
-                    out.println("Test 'insertion sort': " + converter + " " +
-                        builder + "random = " +  random + ", length = " +
-                        length + ", m = " + m);
+                    out.println("Test 'insertion sort': " + converter +
+                        " " + builder + "random = " + random.getSeed() +
+                        ", length = " + length + ", m = " + m);
                     Object convertedGolden = converter.convert(golden);
                     Object convertedTest1 = converter.convert(test);
                     Object convertedTest2 = converter.convert(test);
@@ -417,19 +391,44 @@
         out.println();
     }
 
-    private static void testAndCheckWithCheckSum(int length, long random) {
+    private static void testMergeSort(int length) {
+        if (length < 1000) {
+            return;
+        }
+        ourDescription = "Check merge sorting";
+        int[] golden = new int[length];
+        int period = 67; // java.util.DualPivotQuicksort.MAX_RUN_COUNT
+
+        for (int m = period - 2; m <= period + 2; m++) {
+            for (MergeBuilder builder : MergeBuilder.values()) {
+                builder.build(golden, m);
+                int[] test = golden.clone();
+
+                for (TypeConverter converter : TypeConverter.values()) {
+                    out.println("Test 'merge sort': " + converter + " " +
+                        builder + "length = " + length + ", m = " + m);
+                    Object convertedGolden = converter.convert(golden);
+                    sort(convertedGolden);
+                    checkSorted(convertedGolden);
+                }
+            }
+        }
+        out.println();
+    }
+
+    private static void testAndCheckWithCheckSum(int length, MyRandom random) {
         ourDescription = "Check sorting with check sum";
         int[] golden = new int[length];
 
         for (int m = 1; m < 2 * length; m *= 2) {
             for (UnsortedBuilder builder : UnsortedBuilder.values()) {
-                builder.build(golden, m);
+                builder.build(golden, m, random);
                 int[] test = golden.clone();
 
                 for (TypeConverter converter : TypeConverter.values()) {
-                    out.println("Test 'check sum': " + converter + " " +
-                        builder + "random = " +  random + ", length = " +
-                        length + ", m = " + m);
+                    out.println("Test 'check sum': " + converter +
+                        " " + builder + "random = " + random.getSeed() +
+                        ", length = " + length + ", m = " + m);
                     Object convertedGolden = converter.convert(golden);
                     Object convertedTest = converter.convert(test);
                     sort(convertedTest);
@@ -440,7 +439,7 @@
         out.println();
     }
 
-    private static void testAndCheckWithScrambling(int length, long random) {
+    private static void testAndCheckWithScrambling(int length, MyRandom random) {
         ourDescription = "Check sorting with scrambling";
         int[] golden = new int[length];
 
@@ -451,12 +450,12 @@
             for (SortedBuilder builder : SortedBuilder.values()) {
                 builder.build(golden, m);
                 int[] test = golden.clone();
-                scramble(test);
+                scramble(test, random);
 
                 for (TypeConverter converter : TypeConverter.values()) {
-                    out.println("Test 'scrambling': " + converter + " " +
-                       builder + "random = " +  random + ", length = " +
-                       length + ", m = " + m);
+                    out.println("Test 'scrambling': " + converter +
+                       " " + builder + "random = " + random.getSeed() +
+                       ", length = " + length + ", m = " + m);
                     Object convertedGolden = converter.convert(golden);
                     Object convertedTest = converter.convert(test);
                     sort(convertedTest);
@@ -467,7 +466,7 @@
         out.println();
     }
 
-    private static void testAndCheckFloat(int length, long random) {
+    private static void testAndCheckFloat(int length, MyRandom random) {
         ourDescription = "Check float sorting";
         float[] golden = new float[length];
         final int MAX = 10;
@@ -485,13 +484,12 @@
                                 continue;
                             }
                             for (FloatBuilder builder : FloatBuilder.values()) {
-                                out.println("Test 'float': random = " + random +
-                                   ", length = " + length + ", a = " + a +
-                                   ", g = " + g + ", z = " + z + ", n = " + n +
-                                   ", p = " + p);
-                                builder.build(golden, a, g, z, n, p);
+                                out.println("Test 'float': random = " + random.getSeed() +
+                                   ", length = " + length + ", a = " + a + ", g = " +
+                                   g + ", z = " + z + ", n = " + n + ", p = " + p);
+                                builder.build(golden, a, g, z, n, p, random);
                                 float[] test = golden.clone();
-                                scramble(test);
+                                scramble(test, random);
                                 sort(test);
                                 compare(test, golden, a, n, g);
                             }
@@ -506,7 +504,7 @@
         }
     }
 
-    private static void testAndCheckDouble(int length, long random) {
+    private static void testAndCheckDouble(int length, MyRandom random) {
         ourDescription = "Check double sorting";
         double[] golden = new double[length];
         final int MAX = 10;
@@ -524,12 +522,12 @@
                                 continue;
                             }
                             for (DoubleBuilder builder : DoubleBuilder.values()) {
-                                out.println("Test 'double': random = " + random +
+                                out.println("Test 'double': random = " + random.getSeed() +
                                    ", length = " + length + ", a = " + a + ", g = " +
                                    g + ", z = " + z + ", n = " + n + ", p = " + p);
-                                builder.build(golden, a, g, z, n, p);
+                                builder.build(golden, a, g, z, n, p, random);
                                 double[] test = golden.clone();
-                                scramble(test);
+                                scramble(test, random);
                                 sort(test);
                                 compare(test, golden, a, n, g);
                             }
@@ -546,31 +544,37 @@
 
     private static void prepareSubArray(int[] a, int fromIndex, int toIndex, int m) {
         for (int i = 0; i < fromIndex; i++) {
-            a[i] = 0xBABA;
+            a[i] = 0xDEDA;
         }
-        for (int i = fromIndex; i < toIndex; i++) {
-            a[i] = -i + m;
+        int middle = (fromIndex + toIndex) >>> 1;
+        int k = 0;
+
+        for (int i = fromIndex; i < middle; i++) {
+            a[i] = k++;
+        }
+        for (int i = middle; i < toIndex; i++) {
+            a[i] = k--;
         }
         for (int i = toIndex; i < a.length; i++) {
-            a[i] = 0xDEDA;
+            a[i] = 0xBABA;
         }
     }
 
-    private static void scramble(int[] a) {
+    private static void scramble(int[] a, Random random) {
         for (int i = 0; i < a.length * 7; i++) {
-            swap(a, ourRandom.nextInt(a.length), ourRandom.nextInt(a.length));
+            swap(a, random.nextInt(a.length), random.nextInt(a.length));
         }
     }
 
-    private static void scramble(float[] a) {
+    private static void scramble(float[] a, Random random) {
         for (int i = 0; i < a.length * 7; i++) {
-            swap(a, ourRandom.nextInt(a.length), ourRandom.nextInt(a.length));
+            swap(a, random.nextInt(a.length), random.nextInt(a.length));
         }
     }
 
-    private static void scramble(double[] a) {
+    private static void scramble(double[] a, Random random) {
         for (int i = 0; i < a.length * 7; i++) {
-            swap(a, ourRandom.nextInt(a.length), ourRandom.nextInt(a.length));
+            swap(a, random.nextInt(a.length), random.nextInt(a.length));
         }
     }
 
@@ -683,10 +687,10 @@
 
     private static enum FloatBuilder {
         SIMPLE {
-            void build(float[] x, int a, int g, int z, int n, int p) {
+            void build(float[] x, int a, int g, int z, int n, int p, Random random) {
                 int fromIndex = 0;
-                float negativeValue = -ourRandom.nextFloat();
-                float positiveValue =  ourRandom.nextFloat();
+                float negativeValue = -random.nextFloat();
+                float positiveValue =  random.nextFloat();
 
                 writeValue(x, negativeValue, fromIndex, n);
                 fromIndex += n;
@@ -704,15 +708,15 @@
             }
         };
 
-        abstract void build(float[] x, int a, int g, int z, int n, int p);
+        abstract void build(float[] x, int a, int g, int z, int n, int p, Random random);
     }
 
     private static enum DoubleBuilder {
         SIMPLE {
-            void build(double[] x, int a, int g, int z, int n, int p) {
+            void build(double[] x, int a, int g, int z, int n, int p, Random random) {
                 int fromIndex = 0;
-                double negativeValue = -ourRandom.nextFloat();
-                double positiveValue =  ourRandom.nextFloat();
+                double negativeValue = -random.nextFloat();
+                double positiveValue =  random.nextFloat();
 
                 writeValue(x, negativeValue, fromIndex, n);
                 fromIndex += n;
@@ -730,7 +734,7 @@
             }
         };
 
-        abstract void build(double[] x, int a, int g, int z, int n, int p);
+        abstract void build(double[] x, int a, int g, int z, int n, int p, Random random);
     }
 
     private static void writeValue(float[] a, float value, int fromIndex, int count) {
@@ -806,7 +810,6 @@
                 }
             }
         },
-
         ORGAN_PIPES {
             void build(int[] a, int m) {
                 int i = 0;
@@ -835,37 +838,85 @@
         }
     }
 
+    private static enum MergeBuilder {
+        ASCENDING {
+            void build(int[] a, int m) {
+                int period = a.length / m;
+                int v = 1, i = 0;
+
+                for (int k = 0; k < m; k++) {
+                    v = 1;
+                    for (int p = 0; p < period; p++) {
+                        a[i++] = v++;
+                    }
+                }
+                for (int j = i; j < a.length - 1; j++) {
+                    a[j] = v++;
+                }
+                a[a.length - 1] = 0;
+            }
+        },
+        DESCENDING {
+            void build(int[] a, int m) {
+                int period = a.length / m;
+                int v = -1, i = 0;
+
+                for (int k = 0; k < m; k++) {
+                    v = -1;
+                    for (int p = 0; p < period; p++) {
+                        a[i++] = v--;
+                    }
+                }
+                for (int j = i; j < a.length - 1; j++) {
+                    a[j] = v--;
+                }
+                a[a.length - 1] = 0;
+            }
+        };
+
+        abstract void build(int[] a, int m);
+
+        @Override public String toString() {
+            String name = name();
+
+            for (int i = name.length(); i < 12; i++) {
+                name += " ";
+            }
+            return name;
+        }
+    }
+
     private static enum UnsortedBuilder {
         RANDOM {
-            void build(int[] a, int m) {
+            void build(int[] a, int m, Random random) {
                 for (int i = 0; i < a.length; i++) {
-                    a[i] = ourRandom.nextInt();
+                    a[i] = random.nextInt();
                 }
             }
         },
         ASCENDING {
-            void build(int[] a, int m) {
+            void build(int[] a, int m, Random random) {
                 for (int i = 0; i < a.length; i++) {
                     a[i] = m + i;
                 }
             }
         },
         DESCENDING {
-            void build(int[] a, int m) {
+            void build(int[] a, int m, Random random) {
                 for (int i = 0; i < a.length; i++) {
                     a[i] = a.length - m - i;
                 }
             }
         },
         ALL_EQUAL {
-            void build(int[] a, int m) {
+            void build(int[] a, int m, Random random) {
                 for (int i = 0; i < a.length; i++) {
                     a[i] = m;
                 }
             }
         },
         SAW {
-            void build(int[] a, int m) {
+            void build(int[] a, int m, Random random) {
                 int incCount = 1;
                 int decCount = a.length;
                 int i = 0;
@@ -891,21 +942,21 @@
             }
         },
         REPEATED {
-            void build(int[] a, int m) {
+            void build(int[] a, int m, Random random) {
                 for (int i = 0; i < a.length; i++) {
                     a[i] = i % m;
                 }
             }
         },
         DUPLICATED {
-            void build(int[] a, int m) {
+            void build(int[] a, int m, Random random) {
                 for (int i = 0; i < a.length; i++) {
-                    a[i] = ourRandom.nextInt(m);
+                    a[i] = random.nextInt(m);
                 }
             }
         },
         ORGAN_PIPES {
-            void build(int[] a, int m) {
+            void build(int[] a, int m, Random random) {
                 int middle = a.length / (m + 1);
 
                 for (int i = 0; i < middle; i++) {
@@ -917,28 +968,29 @@
             }
         },
         STAGGER {
-            void build(int[] a, int m) {
+            void build(int[] a, int m, Random random) {
                 for (int i = 0; i < a.length; i++) {
                     a[i] = (i * m + i) % a.length;
                 }
             }
         },
         PLATEAU {
-            void build(int[] a, int m) {
+            void build(int[] a, int m, Random random) {
                 for (int i = 0; i < a.length; i++) {
                     a[i] = Math.min(i, m);
                 }
             }
         },
         SHUFFLE {
-            void build(int[] a, int m) {
+            void build(int[] a, int m, Random random) {
+                int x = 0, y = 0;
                 for (int i = 0; i < a.length; i++) {
-                    a[i] = ourRandom.nextBoolean() ? (ourFirst += 2) : (ourSecond += 2);
+                    a[i] = random.nextBoolean() ? (x += 2) : (y += 2);
                 }
             }
         };
 
-        abstract void build(int[] a, int m);
+        abstract void build(int[] a, int m, Random random);
 
         @Override public String toString() {
             String name = name();
@@ -1518,9 +1570,9 @@
 
     private static void checkSubArray(Integer[] a, int fromIndex, int toIndex, int m) {
         for (int i = 0; i < fromIndex; i++) {
-            if (a[i].intValue() != 0xBABA) {
+            if (a[i].intValue() != 0xDEDA) {
                 failed("Range sort changes left element on position " + i +
-                    ": " + a[i] + ", must be " + 0xBABA);
+                    ": " + a[i] + ", must be " + 0xDEDA);
             }
         }
 
@@ -1531,18 +1583,18 @@
         }
 
         for (int i = toIndex; i < a.length; i++) {
-            if (a[i].intValue() != 0xDEDA) {
+            if (a[i].intValue() != 0xBABA) {
                 failed("Range sort changes right element on position " + i +
-                    ": " + a[i] + ", must be " + 0xDEDA);
+                    ": " + a[i] + ", must be " + 0xBABA);
             }
         }
     }
 
     private static void checkSubArray(int[] a, int fromIndex, int toIndex, int m) {
         for (int i = 0; i < fromIndex; i++) {
-            if (a[i] != 0xBABA) {
+            if (a[i] != 0xDEDA) {
                 failed("Range sort changes left element on position " + i +
-                    ": " + a[i] + ", must be " + 0xBABA);
+                    ": " + a[i] + ", must be " + 0xDEDA);
             }
         }
 
@@ -1553,18 +1605,18 @@
         }
 
         for (int i = toIndex; i < a.length; i++) {
-            if (a[i] != 0xDEDA) {
+            if (a[i] != 0xBABA) {
                 failed("Range sort changes right element on position " + i +
-                    ": " + a[i] + ", must be " + 0xDEDA);
+                    ": " + a[i] + ", must be " + 0xBABA);
             }
         }
     }
 
     private static void checkSubArray(byte[] a, int fromIndex, int toIndex, int m) {
         for (int i = 0; i < fromIndex; i++) {
-            if (a[i] != (byte) 0xBABA) {
+            if (a[i] != (byte) 0xDEDA) {
                 failed("Range sort changes left element on position " + i +
-                    ": " + a[i] + ", must be " + 0xBABA);
+                    ": " + a[i] + ", must be " + 0xDEDA);
             }
         }
 
@@ -1575,18 +1627,18 @@
         }
 
         for (int i = toIndex; i < a.length; i++) {
-            if (a[i] != (byte) 0xDEDA) {
+            if (a[i] != (byte) 0xBABA) {
                 failed("Range sort changes right element on position " + i +
-                    ": " + a[i] + ", must be " + 0xDEDA);
+                    ": " + a[i] + ", must be " + 0xBABA);
             }
         }
     }
 
     private static void checkSubArray(long[] a, int fromIndex, int toIndex, int m) {
         for (int i = 0; i < fromIndex; i++) {
-            if (a[i] != (long) 0xBABA) {
+            if (a[i] != (long) 0xDEDA) {
                 failed("Range sort changes left element on position " + i +
-                    ": " + a[i] + ", must be " + 0xBABA);
+                    ": " + a[i] + ", must be " + 0xDEDA);
             }
         }
 
@@ -1597,18 +1649,18 @@
         }
 
         for (int i = toIndex; i < a.length; i++) {
-            if (a[i] != (long) 0xDEDA) {
+            if (a[i] != (long) 0xBABA) {
                 failed("Range sort changes right element on position " + i +
-                    ": " + a[i] + ", must be " + 0xDEDA);
+                    ": " + a[i] + ", must be " + 0xBABA);
             }
         }
     }
 
     private static void checkSubArray(char[] a, int fromIndex, int toIndex, int m) {
         for (int i = 0; i < fromIndex; i++) {
-            if (a[i] != (char) 0xBABA) {
+            if (a[i] != (char) 0xDEDA) {
                 failed("Range sort changes left element on position " + i +
-                    ": " + a[i] + ", must be " + 0xBABA);
+                    ": " + a[i] + ", must be " + 0xDEDA);
             }
         }
 
@@ -1619,18 +1671,18 @@
         }
 
         for (int i = toIndex; i < a.length; i++) {
-            if (a[i] != (char) 0xDEDA) {
+            if (a[i] != (char) 0xBABA) {
                 failed("Range sort changes right element on position " + i +
-                    ": " + a[i] + ", must be " + 0xDEDA);
+                    ": " + a[i] + ", must be " + 0xBABA);
             }
         }
     }
 
     private static void checkSubArray(short[] a, int fromIndex, int toIndex, int m) {
         for (int i = 0; i < fromIndex; i++) {
-            if (a[i] != (short) 0xBABA) {
+            if (a[i] != (short) 0xDEDA) {
                 failed("Range sort changes left element on position " + i +
-                    ": " + a[i] + ", must be " + 0xBABA);
+                    ": " + a[i] + ", must be " + 0xDEDA);
             }
         }
 
@@ -1641,18 +1693,18 @@
         }
 
         for (int i = toIndex; i < a.length; i++) {
-            if (a[i] != (short) 0xDEDA) {
+            if (a[i] != (short) 0xBABA) {
                 failed("Range sort changes right element on position " + i +
-                    ": " + a[i] + ", must be " + 0xDEDA);
+                    ": " + a[i] + ", must be " + 0xBABA);
             }
         }
     }
 
     private static void checkSubArray(float[] a, int fromIndex, int toIndex, int m) {
         for (int i = 0; i < fromIndex; i++) {
-            if (a[i] != (float) 0xBABA) {
+            if (a[i] != (float) 0xDEDA) {
                 failed("Range sort changes left element on position " + i +
-                    ": " + a[i] + ", must be " + 0xBABA);
+                    ": " + a[i] + ", must be " + 0xDEDA);
             }
         }
 
@@ -1663,18 +1715,18 @@
         }
 
         for (int i = toIndex; i < a.length; i++) {
-            if (a[i] != (float) 0xDEDA) {
+            if (a[i] != (float) 0xBABA) {
                 failed("Range sort changes right element on position " + i +
-                    ": " + a[i] + ", must be " + 0xDEDA);
+                    ": " + a[i] + ", must be " + 0xBABA);
             }
         }
     }
 
     private static void checkSubArray(double[] a, int fromIndex, int toIndex, int m) {
         for (int i = 0; i < fromIndex; i++) {
-            if (a[i] != (double) 0xBABA) {
+            if (a[i] != (double) 0xDEDA) {
                 failed("Range sort changes left element on position " + i +
-                    ": " + a[i] + ", must be " + 0xBABA);
+                    ": " + a[i] + ", must be " + 0xDEDA);
             }
         }
 
@@ -1685,9 +1737,9 @@
         }
 
         for (int i = toIndex; i < a.length; i++) {
-            if (a[i] != (double) 0xDEDA) {
+            if (a[i] != (double) 0xBABA) {
                 failed("Range sort changes right element on position " + i +
-                    ": " + a[i] + ", must be " + 0xDEDA);
+                    ": " + a[i] + ", must be " + 0xBABA);
             }
         }
     }
@@ -1947,18 +1999,6 @@
         }
     }
 
-    private static void prepareRandom(int[] a) {
-        for (int i = 0; i < a.length; i++) {
-            a[i] = ourRandom.nextInt();
-        }
-    }
-
-    private static void reset(long seed) {
-        ourRandom = new Random(seed);
-        ourFirst = 0;
-        ourSecond = 0;
-    }
-
     private static void outArray(Object[] a) {
         for (int i = 0; i < a.length; i++) {
             out.print(a[i] + " ");
@@ -1987,8 +2027,18 @@
         out.println();
     }
 
-    private static int ourFirst;
-    private static int ourSecond;
-    private static Random ourRandom;
+    private static class MyRandom extends Random {
+        MyRandom(long seed) {
+            super(seed);
+            mySeed = seed;
+        }
+
+        long getSeed() {
+            return mySeed;
+        }
+
+        private long mySeed;
+    }
+
     private static String ourDescription;
 }
--- a/jdk/test/java/util/Locale/LocaleEnhanceTest.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/util/Locale/LocaleEnhanceTest.java	Wed Jul 05 17:35:13 2017 +0200
@@ -478,6 +478,23 @@
             Locale locale = new Locale(test[0], test[1], test[2]);
             assertEquals("case " + i, test[3], locale.toLanguageTag());
         }
+
+        // test locales created from forLanguageTag
+        String[][] tests1 = {
+            // case is normalized during the round trip
+            { "EN-us", "en-US" },
+            { "en-Latn-US", "en-Latn-US" },
+            // reordering Unicode locale extensions
+            { "de-u-co-phonebk-ca-gregory", "de-u-ca-gregory-co-phonebk" },
+            // private use only language tag is preserved (no extra "und")
+            { "x-elmer", "x-elmer" },
+            { "x-lvariant-JP", "x-lvariant-JP" },
+        };
+        for (String[] test : tests1) {
+            Locale locale = Locale.forLanguageTag(test[0]);
+            assertEquals("case " + test[0], test[1], locale.toLanguageTag());
+        }
+
     }
 
     public void testForLanguageTag() {
@@ -488,9 +505,9 @@
 
         String[][] tests = {
             // private use tags only
-            { "x-abc", "und-x-abc" },
-            { "x-a-b-c", "und-x-a-b-c" },
-            { "x-a-12345678", "und-x-a-12345678" },
+            { "x-abc", "x-abc" },
+            { "x-a-b-c", "x-a-b-c" },
+            { "x-a-12345678", "x-a-12345678" },
 
             // grandfathered tags with preferred mappings
             { "i-ami", "ami" },
@@ -517,7 +534,7 @@
             // grandfathered irregular tags, no preferred mappings, drop illegal fields
             // from end.  If no subtag is mappable, fallback to 'und'
             { "i-default", "en-x-i-default" },
-            { "i-enochian", "und-x-i-enochian" },
+            { "i-enochian", "x-i-enochian" },
             { "i-mingo", "see-x-i-mingo" },
             { "en-GB-oed", "en-GB-x-oed" },
             { "zh-min", "nan-x-zh-min" },
--- a/jdk/test/java/util/Objects/BasicObjectsTest.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/util/Objects/BasicObjectsTest.java	Wed Jul 05 17:35:13 2017 +0200
@@ -164,7 +164,7 @@
 
         // Test 1-arg variant
         try {
-            s = Objects.nonNull("pants");
+            s = Objects.requireNonNull("pants");
             if (s != "pants") {
                 System.err.printf("1-arg non-null failed to return its arg");
                 errors++;
@@ -175,7 +175,7 @@
         }
 
         try {
-            s = Objects.nonNull(null);
+            s = Objects.requireNonNull(null);
             System.err.printf("1-arg nonNull failed to throw NPE");
             errors++;
         } catch (NullPointerException e) {
@@ -184,7 +184,7 @@
 
         // Test 2-arg variant
         try {
-            s = Objects.nonNull("pants", "trousers");
+            s = Objects.requireNonNull("pants", "trousers");
             if (s != "pants") {
                 System.err.printf("2-arg nonNull failed to return its arg");
                 errors++;
@@ -195,7 +195,7 @@
         }
 
         try {
-            s = Objects.nonNull(null, "pantaloons");
+            s = Objects.requireNonNull(null, "pantaloons");
             System.err.printf("2-arg nonNull failed to throw NPE");
             errors++;
         } catch (NullPointerException e) {
--- a/jdk/test/java/util/regex/RegExTest.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/java/util/regex/RegExTest.java	Wed Jul 05 17:35:13 2017 +0200
@@ -32,7 +32,7 @@
  * 4872664 4803179 4892980 4900747 4945394 4938995 4979006 4994840 4997476
  * 5013885 5003322 4988891 5098443 5110268 6173522 4829857 5027748 6376940
  * 6358731 6178785 6284152 6231989 6497148 6486934 6233084 6504326 6635133
- * 6350801 6676425 6878475 6919132 6931676 6948903
+ * 6350801 6676425 6878475 6919132 6931676 6948903 7014645
  */
 
 import java.util.regex.*;
@@ -136,6 +136,7 @@
         namedGroupCaptureTest();
         nonBmpClassComplementTest();
         unicodePropertiesTest();
+        unicodeHexNotationTest();
         if (failure)
             throw new RuntimeException("Failure in the RE handling.");
         else
@@ -161,18 +162,19 @@
 
     private static void check(Matcher m, String result, boolean expected) {
         m.find();
-        if (m.group().equals(result))
-            failCount += (expected) ? 0 : 1;
-        else
-            failCount += (expected) ? 1 : 0;
+        if (m.group().equals(result) != expected)
+            failCount++;
     }
 
     private static void check(Pattern p, String s, boolean expected) {
-        Matcher matcher = p.matcher(s);
-        if (matcher.find())
-            failCount += (expected) ? 0 : 1;
-        else
-            failCount += (expected) ? 1 : 0;
+        if (p.matcher(s).find() != expected)
+            failCount++;
+    }
+
+    private static void check(String p, String s, boolean expected) {
+        Matcher matcher = Pattern.compile(p).matcher(s);
+        if (matcher.find() != expected)
+            failCount++;
     }
 
     private static void check(String p, char c, boolean expected) {
@@ -3614,4 +3616,45 @@
         }
         report("unicodeProperties");
     }
+
+    private static void unicodeHexNotationTest() throws Exception {
+
+        // negative
+        checkExpectedFail("\\x{-23}");
+        checkExpectedFail("\\x{110000}");
+        checkExpectedFail("\\x{}");
+        checkExpectedFail("\\x{AB[ef]");
+
+        // codepoint
+        check("^\\x{1033c}$",              "\uD800\uDF3C", true);
+        check("^\\xF0\\x90\\x8C\\xBC$",    "\uD800\uDF3C", false);
+        check("^\\x{D800}\\x{DF3c}+$",     "\uD800\uDF3C", false);
+        check("^\\xF0\\x90\\x8C\\xBC$",    "\uD800\uDF3C", false);
+
+        // in class
+        check("^[\\x{D800}\\x{DF3c}]+$",   "\uD800\uDF3C", false);
+        check("^[\\xF0\\x90\\x8C\\xBC]+$", "\uD800\uDF3C", false);
+        check("^[\\x{D800}\\x{DF3C}]+$",   "\uD800\uDF3C", false);
+        check("^[\\x{DF3C}\\x{D800}]+$",   "\uD800\uDF3C", false);
+        check("^[\\x{D800}\\x{DF3C}]+$",   "\uDF3C\uD800", true);
+        check("^[\\x{DF3C}\\x{D800}]+$",   "\uDF3C\uD800", true);
+
+        for (int cp = 0; cp <= 0x10FFFF; cp++) {
+             String s = "A" + new String(Character.toChars(cp)) + "B";
+             String hexUTF16 = (cp <= 0xFFFF)? String.format("\\u%04x", cp)
+                                             : String.format("\\u%04x\\u%04x",
+                                               (int) Character.toChars(cp)[0],
+                                               (int) Character.toChars(cp)[1]);
+             String hexCodePoint = "\\x{" + Integer.toHexString(cp) + "}";
+             if (!Pattern.matches("A" + hexUTF16 + "B", s))
+                 failCount++;
+             if (!Pattern.matches("A[" + hexUTF16 + "]B", s))
+                 failCount++;
+             if (!Pattern.matches("A" + hexCodePoint + "B", s))
+                 failCount++;
+             if (!Pattern.matches("A[" + hexCodePoint + "]B", s))
+                 failCount++;
+         }
+         report("unicodeHexNotation");
+     }
 }
--- a/jdk/test/javax/script/CauseExceptionTest.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/javax/script/CauseExceptionTest.java	Wed Jul 05 17:35:13 2017 +0200
@@ -34,6 +34,10 @@
     public static void main(String[] args) throws ScriptException, NoSuchMethodException {
         ScriptEngineManager sem = new ScriptEngineManager();
         ScriptEngine engine = sem.getEngineByName("js");
+        if (engine == null) {
+            System.out.println("Warning: No js engine found; test vacuously passes.");
+            return;
+        }
         engine.eval("function hello_world() { println('hello world'); throw 'out of here'; } ");
         Invocable invocable = (Invocable) engine;
         try {
--- a/jdk/test/javax/script/StringWriterPrintTest.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/javax/script/StringWriterPrintTest.java	Wed Jul 05 17:35:13 2017 +0200
@@ -34,6 +34,10 @@
     public static void main(String[] args) throws ScriptException {
         ScriptEngineManager sem = new ScriptEngineManager();
         ScriptEngine engine = sem.getEngineByName("js");
+        if (engine == null) {
+            System.out.println("Warning: No js engine found; test vacuously passes.");
+            return;
+        }
         StringWriter sw = new StringWriter();
         engine.eval("print(\"hello world 1\\n\")");
         engine.getContext().setWriter(sw);
--- a/jdk/test/javax/script/UnescapedBracketRegExTest.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/javax/script/UnescapedBracketRegExTest.java	Wed Jul 05 17:35:13 2017 +0200
@@ -34,6 +34,10 @@
     public static void main(String[] args) throws ScriptException {
         ScriptEngineManager sem = new ScriptEngineManager();
         ScriptEngine engine = sem.getEngineByName("js");
+        if (engine == null) {
+            System.out.println("Warning: No js engine found; test vacuously passes.");
+            return;
+        }
         // the following throws exception
         engine.eval("var x = /[a-zA-Z+/=]/;");
     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/RepaintManager/7013453/bug7013453.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 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.
+ */
+
+/* @test
+   @bug 7013453
+   @summary BufferStrategyPaintManager.dispose will cause IllegalMonitorStateException in event thread
+   @author Pavel Porvatov
+*/
+
+import javax.swing.*;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+public class bug7013453 {
+    public static void main(String[] args) throws Exception {
+        SwingUtilities.invokeAndWait(new Runnable() {
+            public void run() {
+                try {
+                    Method getPaintManagerMethod = RepaintManager.class.getDeclaredMethod("getPaintManager");
+
+                    getPaintManagerMethod.setAccessible(true);
+
+                    final Object paintManager = getPaintManagerMethod.invoke(RepaintManager.currentManager(new JLabel()));
+
+                    String paintManagerName = paintManager.getClass().getCanonicalName();
+
+                    if (!paintManagerName.equals("javax.swing.BufferStrategyPaintManager")) {
+                        System.out.println("The test is not suitable for the " + paintManagerName +
+                                " paint manager. The test skipped.");
+
+                        return;
+                    }
+
+                    final Field showingField = paintManager.getClass().getDeclaredField("showing");
+
+                    showingField.setAccessible(true);
+
+                    synchronized (paintManager) {
+                        showingField.setBoolean(paintManager, true);
+                    }
+
+                    // Postpone reset the showing field
+                    Thread thread = new Thread(new Runnable() {
+                        public void run() {
+                            try {
+                                Thread.sleep(500);
+                            } catch (InterruptedException e) {
+                                throw new RuntimeException(e);
+                            }
+
+                            synchronized (paintManager) {
+                                try {
+                                    showingField.setBoolean(paintManager, false);
+                                } catch (IllegalAccessException e) {
+                                    throw new RuntimeException(e);
+                                }
+                            }
+                        }
+                    });
+
+                    thread.start();
+
+                    Method disposeMethod = paintManager.getClass().getDeclaredMethod("dispose");
+
+                    disposeMethod.setAccessible(true);
+
+                    disposeMethod.invoke(paintManager);
+
+                    System.out.println("The test passed.");
+                } catch (NoSuchMethodException e) {
+                    throw new RuntimeException(e);
+                } catch (InvocationTargetException e) {
+                    throw new RuntimeException(e);
+                } catch (IllegalAccessException e) {
+                    throw new RuntimeException(e);
+                } catch (NoSuchFieldException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+        });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/Basic.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,464 @@
+/*
+ * Copyright (c) 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.
+ */
+
+/*
+ * @test
+ * @bug 6887710
+ * @summary Verify the impact of sun.misc.JarIndex.metaInfFilenames on Service loaders
+ * @run main/othervm Basic
+ */
+
+import java.io.IOException;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.net.InetSocketAddress;
+import java.net.URI;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.ServiceLoader;
+import com.sun.net.httpserver.Headers;
+import com.sun.net.httpserver.HttpExchange;
+import com.sun.net.httpserver.HttpHandler;
+import com.sun.net.httpserver.HttpServer;
+
+/**
+ * Verifies the impact of sun.misc.JarIndex.metaInfFilenames on service loaders
+ * (sun.misc.Service & java.util.ServiceLoader), as well as finding resources
+ * through Class.getResouce.
+ *
+ * 1) Compile the test sources:
+ *   jarA:
+ *     META-INF/services/my.happy.land
+ *     com/message/spi/MessageService.java
+ *     a/A.java
+ *   jarB:
+ *     META-INF/JAVA2.DS
+ *     META-INF/services/no.name.service
+ *     b/B.java
+ *   jarC:
+ *     META-INF/fonts.mf
+ *     META-INF/fonts/Company-corporate.ttf
+ *     META-INF/fonts/kidpr.ttf
+ *     META-INF/services/com.message.spi.MessageService
+ *     my/impl/StandardMessageService.java
+ *
+ * 2) Build three jar files a.jar, b.jar, c.jar
+ *
+ * 3) Create an index in a.jar (jar -i a.jar b.jar c.jar)
+ *      with sun.misc.JarIndex.metaInfFilenames=true
+ *
+ * 4) Start a HTTP server serving out the three jars.
+ *
+ * The test then tries to locate services/resources within the jars using
+ * URLClassLoader. Each request to the HTTP server is recorded to ensure
+ * only the correct amount of requests are being made.
+ *
+ * Note: Needs jdk/lib/tools.jar in the classpath to compile and run.
+ */
+
+public class Basic {
+    static final String slash = File.separator;
+    static final String[] testSources =  {
+         "jarA" + slash + "a" + slash + "A.java",
+         "jarA" + slash + "com" + slash + "message" + slash + "spi" + slash + "MessageService.java",
+         "jarB" + slash + "b" + slash + "B.java",
+         "jarC" + slash + "my" + slash + "impl" + slash + "StandardMessageService.java"};
+
+    static final String testSrc = System.getProperty("test.src");
+    static final String testSrcDir = testSrc != null ? testSrc : ".";
+    static final String testClasses = System.getProperty("test.classes");
+    static final String testClassesDir = testClasses != null ? testClasses : ".";
+
+    static JarHttpServer httpServer;
+
+    public static void main(String[] args) throws Exception {
+
+        // Set global url cache to false so that we can track every jar request.
+        (new URL("http://localhost/")).openConnection().setDefaultUseCaches(false);
+
+        buildTest();
+
+        try {
+            httpServer = new JarHttpServer(testClassesDir);
+            httpServer.start();
+
+            doTest(httpServer.getAddress());
+
+        } catch (IOException ioe) {
+            ioe.printStackTrace();
+        } finally {
+            if (httpServer != null) { httpServer.stop(2); }
+        }
+    }
+
+    static void buildTest() {
+        /* compile the source that will be used to generate the jars */
+        for (int i=0; i<testSources.length; i++)
+            testSources[i] = testSrcDir + slash + testSources[i];
+
+        compile("-d" , testClassesDir,
+                "-sourcepath", testSrcDir,
+                testSources[0], testSources[1], testSources[2], testSources[3]);
+
+        /* build the 3 jar files */
+        jar("-cf", testClassesDir + slash + "a.jar",
+            "-C", testClassesDir, "a",
+            "-C", testClassesDir, "com",
+            "-C", testSrcDir + slash + "jarA", "META-INF");
+        jar("-cf", testClassesDir + slash + "b.jar",
+            "-C", testClassesDir, "b",
+            "-C", testSrcDir + slash + "jarB", "META-INF");
+        jar("-cf", testClassesDir + slash + "c.jar",
+            "-C", testClassesDir, "my",
+            "-C", testSrcDir + slash + "jarC", "META-INF");
+
+        /* Create an index in a.jar for b.jar and c.jar */
+        createIndex(testClassesDir);
+    }
+
+    /* run jar <args> */
+    static void jar(String... args) {
+        debug("Running: jar " + Arrays.toString(args));
+        sun.tools.jar.Main jar = new sun.tools.jar.Main(System.out, System.err, "jar");
+        if (!jar.run(args)) {
+            throw new RuntimeException("jar failed: args=" + Arrays.toString(args));
+        }
+    }
+
+    /* run javac <args> */
+    static void compile(String... args) {
+        debug("Running: javac " + Arrays.toString(args));
+        com.sun.tools.javac.main.Main compiler = new com.sun.tools.javac.main.Main("javac");
+        if (compiler.compile(args) != 0) {
+             throw new RuntimeException("javac failed: args=" + Arrays.toString(args));
+        }
+    }
+
+    static String jar;
+    static {
+        String javaHome = System.getProperty("java.home");
+        if (javaHome.endsWith("jre")) {
+            int index = javaHome.lastIndexOf(slash);
+            if (index != -1)
+                javaHome = javaHome.substring(0, index);
+        }
+
+        jar = javaHome + slash+  "bin" + slash + "jar";
+    }
+
+    /* create the index */
+    static void createIndex(String workingDir) {
+        // ProcessBuilder is used so that the current directory can be set
+        // to the directory that directly contains the jars.
+        debug("Running jar to create the index");
+        ProcessBuilder pb = new ProcessBuilder(
+           jar, "-J-Dsun.misc.JarIndex.metaInfFilenames=true", "-i", "a.jar", "b.jar", "c.jar");
+        pb.directory(new File(workingDir));
+        //pd.inheritIO();
+        try {
+            Process p = pb.start();
+            if(p.waitFor() != 0)
+                throw new RuntimeException("jar indexing failed");
+
+            if(debug && p != null) {
+                String line = null;
+                BufferedReader reader =
+                         new BufferedReader(new InputStreamReader(p.getInputStream()));
+                while((line = reader.readLine()) != null)
+                    debug(line);
+                reader = new BufferedReader(new InputStreamReader(p.getErrorStream()));
+                while((line = reader.readLine()) != null)
+                    debug(line);
+            }
+        } catch(InterruptedException ie) { throw new RuntimeException(ie);
+        } catch(IOException e) { throw new RuntimeException(e); }
+    }
+
+    static final boolean debug = true;
+
+    static void debug(Object message) { if (debug) System.out.println(message); }
+
+    /* service define in c.jar */
+    static final String messageService = "com.message.spi.MessageService";
+
+    /* a service that is not defined in any of the jars */
+    static final String unknownService = "java.lang.Object";
+
+    static void doTest(InetSocketAddress serverAddress) throws IOException {
+        URL baseURL = new URL("http://localhost:" + serverAddress.getPort() + "/");
+
+        int failed = 0;
+
+        // Tests using sun.misc.Service
+        if (!sunMiscServiceTest(baseURL, messageService, true, false, true)) {
+            System.out.println("Test: sun.misc.Service looking for " + messageService + ", failed");
+            failed++;
+        }
+        if (!sunMiscServiceTest(baseURL, unknownService, false, false, false)) {
+            System.out.println("Test: sun.misc.Service looking for " + unknownService + " failed");
+            failed++;
+        }
+
+        // Tests using java.util.SerivceLoader
+        if (!javaUtilServiceLoaderTest(baseURL, messageService, true, false, true)) {
+            System.out.println("Test: sun.misc.Service looking for " + messageService + ", failed");
+            failed++;
+        }
+        if (!javaUtilServiceLoaderTest(baseURL, unknownService, false, false, false)) {
+            System.out.println("Test: sun.misc.Service looking for " + unknownService + " failed");
+            failed++;
+        }
+
+        // Tests using java.lang.Class (similar to the FontManager in javafx)
+        if (!klassLoader(baseURL, "/META-INF/fonts.mf", true, false, true)) {
+            System.out.println("Test: klassLoader looking for /META-INF/fonts.mf failed");
+            failed++;
+        }
+        if (!klassLoader(baseURL, "/META-INF/unknown.mf", false, false, false)) {
+            System.out.println("Test: klassLoader looking for /META-INF/unknown.mf failed");
+            failed++;
+        }
+
+        if (failed > 0)
+            throw new RuntimeException("Failed: " + failed + " tests");
+    }
+
+    static boolean sunMiscServiceTest(URL baseURL,
+                                      String serviceClass,
+                                      boolean expectToFind,
+                                      boolean expectbDotJar,
+                                      boolean expectcDotJar) throws IOException {
+        debug("----------------------------------");
+        debug("Running test with sun.misc.Service looking for " + serviceClass);
+        URLClassLoader loader = getLoader(baseURL);
+        httpServer.reset();
+
+        Class messageServiceClass = null;
+        try {
+            messageServiceClass = loader.loadClass(serviceClass);
+        } catch (ClassNotFoundException cnfe) {
+            System.err.println(cnfe);
+            throw new RuntimeException("Error in test: " + cnfe);
+        }
+
+        Iterator<Class<?>> iterator = sun.misc.Service.providers(messageServiceClass, loader);
+        if (expectToFind && !iterator.hasNext()) {
+            debug(messageServiceClass + " NOT found.");
+            return false;
+        }
+
+        while (iterator.hasNext()) {
+            debug("found " + iterator.next() + " " + messageService);
+        }
+
+        debug("HttpServer: " + httpServer);
+
+        if (!expectbDotJar && httpServer.bDotJar > 0) {
+            debug("Unexpeced request sent to the httpserver for b.jar");
+            return false;
+        }
+        if (!expectcDotJar && httpServer.cDotJar > 0) {
+            debug("Unexpeced request sent to the httpserver for c.jar");
+            return false;
+        }
+
+        return true;
+    }
+
+    static boolean javaUtilServiceLoaderTest(URL baseURL,
+                                             String serviceClass,
+                                             boolean expectToFind,
+                                             boolean expectbDotJar,
+                                             boolean expectcDotJar) throws IOException {
+        debug("----------------------------------");
+        debug("Running test with java.util.ServiceLoader looking for " + serviceClass);
+        URLClassLoader loader = getLoader(baseURL);
+        httpServer.reset();
+
+        Class messageServiceClass = null;
+        try {
+            messageServiceClass = loader.loadClass(serviceClass);
+        } catch (ClassNotFoundException cnfe) {
+            System.err.println(cnfe);
+            throw new RuntimeException("Error in test: " + cnfe);
+        }
+
+        Iterator<Class<?>> iterator = (ServiceLoader.load(messageServiceClass, loader)).iterator();
+        if (expectToFind && !iterator.hasNext()) {
+            debug(messageServiceClass + " NOT found.");
+            return false;
+        }
+
+        while (iterator.hasNext()) {
+            debug("found " + iterator.next() + " " + messageService);
+        }
+
+        debug("HttpServer: " + httpServer);
+
+        if (!expectbDotJar && httpServer.bDotJar > 0) {
+            debug("Unexpeced request sent to the httpserver for b.jar");
+            return false;
+        }
+        if (!expectcDotJar && httpServer.cDotJar > 0) {
+            debug("Unexpeced request sent to the httpserver for c.jar");
+            return false;
+        }
+
+        return true;
+    }
+
+    /* Tries to find a resource in a similar way to the font manager in javafx
+     * com.sun.javafx.scene.text.FontManager */
+    static boolean klassLoader(URL baseURL,
+                               String resource,
+                               boolean expectToFind,
+                               boolean expectbDotJar,
+                               boolean expectcDotJar) throws IOException {
+        debug("----------------------------------");
+        debug("Running test looking for " + resource);
+        URLClassLoader loader = getLoader(baseURL);
+        httpServer.reset();
+
+        Class ADotAKlass = null;
+        try {
+            ADotAKlass = loader.loadClass("a.A");
+        } catch (ClassNotFoundException cnfe) {
+            System.err.println(cnfe);
+            throw new RuntimeException("Error in test: " + cnfe);
+        }
+
+        URL u = ADotAKlass.getResource(resource);
+        if (expectToFind && u == null) {
+            System.out.println("Expected to find " + resource + " but didn't");
+            return false;
+        }
+
+        debug("HttpServer: " + httpServer);
+
+        if (!expectbDotJar && httpServer.bDotJar > 0) {
+            debug("Unexpeced request sent to the httpserver for b.jar");
+            return false;
+        }
+        if (!expectcDotJar && httpServer.cDotJar > 0) {
+            debug("Unexpeced request sent to the httpserver for c.jar");
+            return false;
+        }
+
+        return true;
+    }
+
+    static URLClassLoader getLoader(URL baseURL) throws IOException {
+        ClassLoader loader = Basic.class.getClassLoader();
+
+        while (loader.getParent() != null)
+            loader = loader.getParent();
+
+        return new URLClassLoader( new URL[]{
+            new URL(baseURL, "a.jar"),
+            new URL(baseURL, "b.jar"),
+            new URL(baseURL, "c.jar")}, loader );
+    }
+
+    /**
+     * HTTP Server to server the jar files.
+     */
+    static class JarHttpServer implements HttpHandler {
+        final String docsDir;
+        final HttpServer httpServer;
+        int aDotJar, bDotJar, cDotJar;
+
+        JarHttpServer(String docsDir) throws IOException {
+            this.docsDir = docsDir;
+
+            httpServer = HttpServer.create(new InetSocketAddress(0), 0);
+            httpServer.createContext("/", this);
+        }
+
+        void start() throws IOException {
+            httpServer.start();
+        }
+
+        void stop(int delay) {
+            httpServer.stop(delay);
+        }
+
+        InetSocketAddress getAddress() {
+            return httpServer.getAddress();
+        }
+
+        void reset() {
+            aDotJar = bDotJar = cDotJar = 0;
+        }
+
+        @Override
+        public String toString() {
+            return "aDotJar=" + aDotJar + ", bDotJar=" + bDotJar + ", cDotJar=" + cDotJar;
+        }
+
+        public void handle(HttpExchange t) throws IOException {
+            InputStream is = t.getRequestBody();
+            Headers map = t.getRequestHeaders();
+            Headers rmap = t.getResponseHeaders();
+            URI uri = t.getRequestURI();
+
+            debug("Server: received request for " + uri);
+            String path = uri.getPath();
+            if (path.endsWith("a.jar"))
+                aDotJar++;
+            else if (path.endsWith("b.jar"))
+                bDotJar++;
+            else if (path.endsWith("c.jar"))
+                cDotJar++;
+            else
+                System.out.println("Unexpected resource request" + path);
+
+            while (is.read() != -1);
+            is.close();
+
+            File file = new File(docsDir, path);
+            if (!file.exists())
+                throw new RuntimeException("Error: request for " + file);
+            long clen = file.length();
+            t.sendResponseHeaders (200, clen);
+            OutputStream os = t.getResponseBody();
+            FileInputStream fis = new FileInputStream(file);
+            try {
+                byte[] buf = new byte [16 * 1024];
+                int len;
+                while ((len=fis.read(buf)) != -1) {
+                    os.write (buf, 0, len);
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+            fis.close();
+            os.close();
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarA/META-INF/services/my.happy.land	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,23 @@
+# Copyright (c) 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.
+ 
+# The contents of this file do not matter. It exists
+# simply to have a service defined in META-INF/services.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarA/a/A.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 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.
+ */
+
+package a;
+
+public class A {
+    public static void hello() throws Exception {
+        System.out.println("Hello from a.A");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarA/com/message/spi/MessageService.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 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.
+ */
+
+package com.message.spi;
+
+public interface MessageService {
+    String message();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarB/META-INF/JAVA2.DS	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,23 @@
+# Copyright (c) 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.
+
+# The contents of this file do not matter. It exists
+# simply to have a file under META-INF.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarB/META-INF/services/no.name.service	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,23 @@
+# Copyright (c) 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.
+
+# The contents of this file do not matter. It exists
+# simply to have a service defined in META-INF/services.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarB/b/B.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 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.
+ */
+
+package b;
+
+public class B {
+    public static void hello() {
+        System.out.println("Hello from b.B");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarC/META-INF/fonts.mf	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,23 @@
+# Copyright (c) 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.
+
+corporate=/fonts/Company-corporate.ttf
+crazy-looking=/fonts/kidpr.ttf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarC/META-INF/fonts/Company-corporate.ttf	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,22 @@
+# Copyright (c) 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.
+
+This is not a real font.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarC/META-INF/fonts/kidpr.ttf	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,22 @@
+# Copyright (c) 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.
+
+This is not a real font.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarC/META-INF/services/com.message.spi.MessageService	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,22 @@
+# Copyright (c) 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.
+
+my.impl.StandardMessageService
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/jarC/my/impl/StandardMessageService.java	Wed Jul 05 17:35:13 2017 +0200
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 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.
+ */
+
+package my.impl;
+
+public class StandardMessageService implements com.message.spi.MessageService {
+    @Override
+    public String message() {
+        return "This is a message from the standard message service";
+    }
+}
--- a/jdk/test/sun/security/provider/SeedGenerator/SeedGeneratorChoice.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/sun/security/provider/SeedGenerator/SeedGeneratorChoice.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,6 +1,6 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
- * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright (c) 2010, 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
--- a/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPValidatorEndEntity.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPValidatorEndEntity.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -24,8 +24,10 @@
 /**
  * @test
  *
- * @bug 6861062
- * @summary Disable MD2 support
+ * @bug 6861062 7011497
+ * @summary Disable MD2 support.
+ *          New CertPathValidatorException.BasicReason enum constant for
+ *     constrained algorithm.
  *
  * @author Xuelei Fan
  */
@@ -35,6 +37,7 @@
 import java.util.*;
 import java.security.Security;
 import java.security.cert.*;
+import java.security.cert.CertPathValidatorException.*;
 
 public class CPValidatorEndEntity {
 
@@ -329,6 +332,13 @@
                                     intermediate_SHA1withRSA_1024_1024);
             throw new Exception("expected algorithm disabled exception");
         } catch (CertPathValidatorException cpve) {
+            // we may get ClassCastException here
+            BasicReason reason = (BasicReason)cpve.getReason();
+            if (reason != BasicReason.ALGORITHM_CONSTRAINED) {
+                throw new Exception(
+                    "Expect to get ALGORITHM_CONSTRAINED CPVE", cpve);
+            }
+
             System.out.println("Get the expected exception " + cpve);
         }
 
@@ -337,6 +347,13 @@
                                     intermediate_SHA1withRSA_512_1024);
             throw new Exception("expected algorithm disabled exception");
         } catch (CertPathValidatorException cpve) {
+            // we may get ClassCastException here
+            BasicReason reason = (BasicReason)cpve.getReason();
+            if (reason != BasicReason.ALGORITHM_CONSTRAINED) {
+                throw new Exception(
+                    "Expect to get ALGORITHM_CONSTRAINED CPVE", cpve);
+            }
+
             System.out.println("Get the expected exception " + cpve);
         }
     }
--- a/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPValidatorIntermediate.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPValidatorIntermediate.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -24,8 +24,10 @@
 /**
  * @test
  *
- * @bug 6861062
+ * @bug 6861062 7011497
  * @summary Disable MD2 support
+ *          new CertPathValidatorException.BasicReason enum constant for
+ *     constrained algorithm
  *
  * @author Xuelei Fan
  */
@@ -35,6 +37,7 @@
 import java.util.*;
 import java.security.Security;
 import java.security.cert.*;
+import java.security.cert.CertPathValidatorException.*;
 
 public class CPValidatorIntermediate {
 
@@ -223,6 +226,13 @@
             validate(intermediate_MD2withRSA_1024_1024);
             throw new Exception("expected algorithm disabled exception");
         } catch (CertPathValidatorException cpve) {
+            // we may get ClassCastException here
+            BasicReason reason = (BasicReason)cpve.getReason();
+            if (reason != BasicReason.ALGORITHM_CONSTRAINED) {
+                throw new Exception(
+                    "Expect to get ALGORITHM_CONSTRAINED CPVE", cpve);
+            }
+
             System.out.println("Get the expected exception " + cpve);
         }
 
@@ -230,6 +240,13 @@
             validate(intermediate_MD2withRSA_1024_512);
             throw new Exception("expected algorithm disabled exception");
         } catch (CertPathValidatorException cpve) {
+            // we may get ClassCastException here
+            BasicReason reason = (BasicReason)cpve.getReason();
+            if (reason != BasicReason.ALGORITHM_CONSTRAINED) {
+                throw new Exception(
+                    "Expect to get ALGORITHM_CONSTRAINED CPVE", cpve);
+            }
+
             System.out.println("Get the expected exception " + cpve);
         }
     }
--- a/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPValidatorTrustAnchor.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPValidatorTrustAnchor.java	Wed Jul 05 17:35:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -24,8 +24,10 @@
 /**
  * @test
  *
- * @bug 6861062
+ * @bug 6861062 7011497
  * @summary Disable MD2 support
+ *          new CertPathValidatorException.BasicReason enum constant for
+ *     constrained algorithm
  *
  * @author Xuelei Fan
  */
@@ -35,6 +37,7 @@
 import java.util.*;
 import java.security.Security;
 import java.security.cert.*;
+import java.security.cert.CertPathValidatorException.*;
 
 public class CPValidatorTrustAnchor {
 
@@ -142,6 +145,13 @@
             validate(trustAnchor_MD2withRSA_2048);
             throw new Exception("expected algorithm disabled exception");
         } catch (CertPathValidatorException cpve) {
+            // we may get ClassCastException here
+            BasicReason reason = (BasicReason)cpve.getReason();
+            if (reason != BasicReason.ALGORITHM_CONSTRAINED) {
+                throw new Exception(
+                    "Expect to get ALGORITHM_CONSTRAINED CPVE", cpve);
+            }
+
             System.out.println("Get the expected exception " + cpve);
         }
     }
--- a/jdk/test/tools/launcher/Arrrghs.java	Tue Feb 15 12:34:33 2011 -0800
+++ b/jdk/test/tools/launcher/Arrrghs.java	Wed Jul 05 17:35:13 2017 +0200
@@ -24,7 +24,7 @@
 /**
  * @test
  * @bug 5030233 6214916 6356475 6571029 6684582 6742159 4459600 6758881 6753938
- *      6894719
+ *      6894719 6968053
  * @summary Argument parsing validation.
  * @compile -XDignore.symbol.file Arrrghs.java TestHelper.java
  * @run main Arrrghs
@@ -250,13 +250,11 @@
         TestHelper.createJar("MIA", new File("some.jar"), new File("Foo"),
                 (String[])null);
         tr = TestHelper.doExec(TestHelper.javaCmd, "-jar", "some.jar");
-        tr.contains("Error: Could not find main class MIA");
-        tr.contains("java.lang.NoClassDefFoundError: MIA");
+        tr.contains("Error: Could not find or load main class MIA");
         System.out.println(tr);
         // use classpath to check
         tr = TestHelper.doExec(TestHelper.javaCmd, "-cp", "some.jar", "MIA");
-        tr.contains("Error: Could not find main class MIA");
-        tr.contains("java.lang.NoClassDefFoundError: MIA");
+        tr.contains("Error: Could not find or load main class MIA");
         System.out.println(tr);
 
         // incorrect method access
@@ -305,12 +303,12 @@
 
         // amongst a potpourri of kindred main methods, is the right one chosen ?
         TestHelper.createJar(new File("some.jar"), new File("Foo"),
-        "void main(Object[] args){}",
-        "int  main(Float[] args){return 1;}",
-        "private void main() {}",
-        "private static void main(int x) {}",
-        "public int main(int argc, String[] argv) {return 1;}",
-        "public static void main(String[] args) {System.out.println(\"THE_CHOSEN_ONE\");}");
+            "void main(Object[] args){}",
+            "int  main(Float[] args){return 1;}",
+            "private void main() {}",
+            "private static void main(int x) {}",
+            "public int main(int argc, String[] argv) {return 1;}",
+            "public static void main(String[] args) {System.out.println(\"THE_CHOSEN_ONE\");}");
         tr = TestHelper.doExec(TestHelper.javaCmd, "-jar", "some.jar");
         tr.contains("THE_CHOSEN_ONE");
         System.out.println(tr);
@@ -326,6 +324,30 @@
         tr.checkPositive();
         System.out.println(tr);
     }
+    // tests 6968053, ie. we turn on the -Xdiag (for now) flag and check if
+    // the suppressed stack traces are exposed.
+    static void runDiagOptionTests() throws FileNotFoundException {
+        TestHelper.TestResult tr = null;
+        // a missing class
+        TestHelper.createJar("MIA", new File("some.jar"), new File("Foo"),
+                (String[])null);
+        tr = TestHelper.doExec(TestHelper.javaCmd, "-Xdiag", "-jar", "some.jar");
+        tr.contains("Error: Could not find or load main class MIA");
+        tr.contains("java.lang.ClassNotFoundException: MIA");
+        System.out.println(tr);
+
+        // use classpath to check
+        tr = TestHelper.doExec(TestHelper.javaCmd,  "-Xdiag", "-cp", "some.jar", "MIA");
+        tr.contains("Error: Could not find or load main class MIA");
+        tr.contains("java.lang.ClassNotFoundException: MIA");
+        System.out.println(tr);
+
+        // a missing class on the classpath
+        tr = TestHelper.doExec(TestHelper.javaCmd, "-Xdiag", "NonExistentClass");
+        tr.contains("Error: Could not find or load main class NonExistentClass");
+        tr.contains("java.lang.ClassNotFoundException: NonExistentClass");
+        System.out.println(tr);
+    }
 
     static void test6894719() {
         // test both arguments to ensure they exist
@@ -352,6 +374,7 @@
         runBasicErrorMessageTests();
         runMainMethodTests();
         test6894719();
+        runDiagOptionTests();
         if (TestHelper.testExitValue > 0) {
             System.out.println("Total of " + TestHelper.testExitValue + " failed");
             System.exit(1);